Rrelational Roots The State of the World * COBOL (and precursors) ruled!! * Heavy industry standardization efforts around network model. * Strong devotees of the hierarchical model. * Codd published paper in 1970, got Turing award in 1981. * Bachman got Turing award in 1973. When you think "out of the box" Very hard to give up baggage of the past completely. For example: * Columns are identified by position.(Notion of column names is introduced, but very weakly, for "user interface") * Entity-relationship model casts a shadow.("relationships" relation) But some fundamental ideas can be thought through much more clearly. Ideas in this paper that have been lost over time: * All rows are distinct-set semantics. * A semantics driven non-algebraic definition of join, allowing the possibility of a "plurality" of joins. (Notion of "point of ambiguity" -- e.g. which supplier sourced the part used in a particular assembly). Ideas in this paper that have been expanded and developed: * Normalization and Redundancy * Consistency Main Point The case for physical independence. * Order independence * Index independence * Access Path independence Defeated (partially) as DB admins carefully tune large DBMS installations. Relational Implementations * System R and Ingres were the the two first decent implementations of a relational database. * "Green-fields" design means - Many novel concepts were introduced - Many of which have been widely adopted - Others have quickly been discarded. * Even so, note the influence of circumstances. System R * A lot of the ideas remain in today's systems * PL/1 and COBOL host languages * VM/370 operating system Major Influences * SQL, including cursors, duplicates, NULLs. * RSS/RDS divide remains in many systems * Cost-based optimizer * Updatable single-table views * Begin/end xact at user level * Savepoints and restore * Catalogs as relations * Flexible security (GRANT/REVOKE) * Integrity constraints * Triggers * Clustering * Compiled queries * B-trees * Nested-loop & sort-merge (2-way) joins * Dual logs to support log failure Wrong Design Decisions * Shadow paging * Predicate locking * SQL language * Rejected hashing