Penguin

A DataBase built around SetTheory and SQL.

A relation (AKA a table) is a set of rows. A row is a sequence of fixed length fields (AKA columns or attributes). A column is uniquely identified within the relation by a name. A row is uniquely identified within the relation by the values of it's primary key. The default primary key, which is a non-strict subset of the columns of the table.

A secondary key is a non-strict subset of the columns of any table that correspond to the primary key of another table.

A relation differs from a SpreadSheet in that the rows and columns are unordered.

SQL set-oriented is a language designed to build, maintain and query such DataBases. Because of the very clean mapping of tables and rows into set theory a large number of properties about relational databases have been proved in a mathematical sense and automatic query optimisation is now a standard option on many high-end relational databases. There are also formal proofs of correctness for a number of results in for locking relational databases at various levels of granularity, permitting parallel access.

RelationalDataBase quality revolves around five normal forms:

  1. first normal form requires that no relation have multiple-valued fields.
  2. second normal form requires first normal form and that no non-primary key fields are independant of any primary key fields.
  3. third normal form (AKA Boyce-Codd normal form) requires second normal form and that no non-primary key fields are dependant of any non-primary key fields.
  4. fourth normal form requires third normal form and that relations have at most only one independent multivalued dependency.
  5. fifth normal form requires fourth normal form and that relations cannot be decomposed into smaller realtions without loss of information.

These aren't very good explainations, but I didn't want to cut and paste. There are very large number of books and websites on relational database design.

There are very few real-world RelationalDataBases, most of the databases marketed as RelationalDataBases are actually PostRelationalDataBases.