Skip to content
All papers

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