A Relational Model of Data for Large Shared Data Banks
E. F. Codd1970Communications of the ACM
Read it on doi.org(opens in a new tab)Why this one
Read this before Bigtable, Spanner, Cassandra, Dynamo, and The Log-Structured Merge-Tree, because Codd is the thing they are all reacting to, extending, or escaping. The big idea is not that data lives in tables. It is that users should describe what they want, while the system owns how to find it. That separation is why SQL optimizers, indexes, views, normalization, and half your backend arguments exist. People get this paper wrong when they treat the relational model as old enterprise ceremony, or as a storage layout. It is neither. It is a contract between application logic and data logic, with algebra as the boundary. If you have ever regretted baking access paths into an API, denormalized too early, or trusted an ORM to hide database design, spend the evening here.
What to take away
- Relations are logical sets of facts, not files, objects, or UI tables.
- Codd separates query meaning from access path, which makes optimization possible.
- Normalization is about reducing update anomalies, not pleasing a schema purist.
Reads with
- The Log-Structured Merge-Tree (LSM-Tree)
shows the storage machinery hidden beneath codd's logical interface
- Bigtable: A Distributed Storage System for Structured Data
keeps declarative separation but abandons full relational algebra for web scale
- Spanner: Google's Globally-Distributed Database
rebuilds relational transactions and sql on top of global distributed consensus