History of Database Systems • File systems (before mid 1960s) Problems: Data redundancy update anomalies no abstract data model requires knowledge of storage details no standard query language Hierarchical Databases (mid 1960s) Developed by North American Rockwell and IBM as the IMS (Information Management System) Based on a tree structure Example: A Product assembled from components, which are assembled from subcomponents Problems: Changes in data structure require changes in application programs that access that structure No Many-to-Many relationships Programmers must be thoroughly familiar with the database structure. Network Databases • Extension of the hierarchical data model • Standardized (1971) by the CODASYL group (Conference on Data Systems Languages) Advantage: Many-to-Many relationships are implemented Problems: “Navigation” is even harder Relational Databases Proposed in 1970 by E.F. Codd while working at IBM. “IBM largely ignored his work, as the company was investing heavily at the time in commercializing IMS databases…. It was not until 1978 that Frank T. Cary, then chairman and CEO of IBM ordered the company to build a product based on Dr. Codd’s ideas. But IBM was beaten to the market by Lawrence J. Ellison, a Silicon Valley entrepreneur, who used Dr. Codd’s papers as the basis of a product around which he built a start-up company that has since become the Oracle Corporation.” New York Times April 23, 2003 Obituary of E. F. Codd (1923-2003) 1. Relational Databases Data Abstraction- allows people to forget unimportant details View Level – a way of presenting data to a group of users Logical Level – how data is understood to be when writing queries 1.1 The View Level Examples: • Charts • Graphs • Drawings • Maps 1.2 The Logical Level Example: Infinite relational data model • • • • Relation – table Relational schema – top row / list of attributes Arity – number of attributes Database schema – set of relation names and schemes • Tuple / Point – each row below the scheme • Instance – the set of tuples in a table Relation schemes are usually fixed Relation instances change with updates Example Scheme: Taxrecord(SSN,Wages,Interest,Capital_gain) Taxtable(Income,Tax) Example: Streets(Name, X, Y ) Streets contains pairs of street names and (x,y) points such that the point belongs to the street. There are an infinite number of (x, y) locations associated with each street. Example: Crops(Corn,Rye,Sunflower, Wheat) Crops contains all possible combinations of four crops that a farmer could plant. There are an infinite number of tuples in any instance of this relation. 1.3 Abstract Data Types Domain – range of values for an attribute. string, integers or real numbers Scalar Domain – always a single value (ex: string, integer or real number) Abstract data type domains – composed of scalar domains. Example: Vertices(Cities) The domain of Cities is a set of strings. Example: Streets(Name, Extent) The domain of Extent is a set of (x,y) points.