The most popular data storage model is the relational database, which grew from the
seminal paper "A Relational Model of Data for Large Shared Data Banks," written by
Dr. E. F. Codd in 1970. SQL evolved to service the concepts of the relational database
model. Dr. Codd defined 13 rules, oddly enough referred to as Codd's 12 Rules, for the
0. A relational DBMS must be able to manage databases entirely through its
1. Information rule-- All information in a relational database (including table
and column names) is represented explicitly as values in tables.
2. Guaranteed access--Every value in a relational database is guaranteed to be
accessible by using a combination of the table name, primary key value, and
3. Systematic null value support--The DBMS provides systematic support for the
treatment of null values (unknown or inapplicable data), distinct from default
values, and independent of any domain.
4. Active, online relational catalog--The description of the database and its
contents is represented at the logical level as tables and can therefore be
queried using the database language.
5. Comprehensive data sublanguage--At least one supported language must have a
well-defined syntax and be comprehensive. It must support data definition,
manipulation, integrity rules, authorization, and transactions.
6. View updating rule--All views that are theoretically updatable can be updated
through the system.
7. Set-level insertion, update, and deletion--The DBMS supports not only setlevel
retrievals but also set-level inserts, updates, and deletes.
8. Physical data independence--Application programs and ad hoc programs are
logically unaffected when physical access methods or storage structures are
9. Logical data independence--Application programs and ad hoc programs are
logically unaffected, to the extent possible, when changes are made to the table
10. Integrity independence--The database language must be capable of defining
integrity rules. They must be stored in the online catalog, and they cannot be
11. Distribution independence--Application programs and ad hoc requests are
logically unaffected when data is first distributed or when it is redistributed.
12. Nonsubversion--It must not be possible to bypass the integrity rules defined
through the database language by using lower-level languages.