Databases & The Relational Model
- Codd's tables, keys, and relational algebranot yet tested
- SQL as the declarative query languagenot yet tested
- ACID guarantees on every transactionnot yet tested
- CAP, NoSQL, and the NewSQL returnnot yet tested
Edgar F. Codd, a British computer scientist at IBM Research San Jose in 1969, had spent years watching application programmers fight pointer-navigation through hierarchical and network databases — IBM's IMS and the CODASYL standard — where a change in physical storage silently broke working code. His response was a six-page paper in Communications of the ACM in June 1970, A Relational Model of Data for Large Shared Data Banks: data as relations (sets of tuples — tables of rows and columns), queries written declaratively, the access plan delegated to a query optimizer in the engine. Logical structure was decoupled from physical storage entirely. IBM was initially unenthusiastic; Codd pushed the work through against institutional resistance and won the 1981 Turing Award.
The relational model rests on a small set of abstractions. A relation is a set of tuples conforming to a schema; a primary key uniquely identifies each row, and a foreign key references a primary key in another table. The relational algebra — selection, projection, join, union, intersection, Cartesian product, rename — is the formal core. Codd's normal forms (first through Boyce-Codd) eliminate data redundancy and update anomalies. SQL, developed at IBM by Chamberlin and Boyce in the mid-1970s and standardized by ANSI in 1986, is the dominant declarative language across every relational database; the query optimizer that converts SQL to an execution plan using table statistics, cardinality estimation, and join-order enumeration is one of the deepest pieces of practical computer science. ACID transactions — Atomicity, Consistency, Isolation, Durability — are the correctness guarantees: a transaction commits or rolls back in full, concurrent transactions behave as if serial, committed effects survive crashes. Jim Gray's 1981 The Transaction Concept synthesized the framework; Gray won the 1998 Turing Award. The CAP theorem (Eric Brewer's 2000 conjecture, Gilbert-Lynch's 2002 proof) showed that in a distributed system you can have at most two of Consistency, Availability, and Partition tolerance; since partitions are inevitable, real systems trade C against A. The NoSQL movement of the late 2000s (MongoDB, Redis, Cassandra, DynamoDB) arose for web-scale workloads where ACID was unaffordable; the field has since substantially returned to SQL through NewSQL systems (Spanner, CockroachDB) that combine horizontal scalability with full ACID.