„Viitorii utilizatori ai marilor bănci de date trebuie protejați de obligația de a ști cum sunt organizate datele în mașină (reprezentarea internă).”E. F. Codd · A Relational Model of Data for Large Shared Data Banks · 1970 · A Relational Model of Data for Large Shared Data Banks, Communications of the ACM 13(6), 1970 — prima propoziție a rezumatului
Fiecare atribut depinde de cheie, de toată cheia și numai de cheie.
Codd a propus în 1970 ceva ce azi pare evident: tabele (relații) cu rânduri și coloane, chei primare care identifică un rând și chei străine care leagă tabelele, plus un limbaj declarativ în care spui ce rezultat vrei, nu ce fișiere să deschidă mașina. Normalizarea vine din aceeași idee: dacă o adresă de client apare în o mie de comenzi, o corectezi în o mie de locuri sau în niciunul. A treia formă normală se ține minte într-o frază: fiecare atribut depinde de cheie, de toată cheia și numai de cheie. Pentru un depozit de date, normalizarea e o alegere, nu o lege. Sursele sunt normalizate ca să scrie fără anomalii; depozitul denormalizează deliberat ca să citească fără zece join-uri. Ce rămâne neatins e principiul lui Codd: modelul logic separat de cel fizic. De aceea poți schimba indecși, partiții și formatul de stocare fără să rescrii interogările — și de aceea lecțiile despre indecși și memorie, de mai târziu, nu ating deloc SQL-ul.
De ce contează Fiecare lecție de optimizare din acest curs se sprijină pe separarea logic–fizic. Cine o pierde ajunge să rescrie rapoartele de fiecare dată când mută un tabel.