Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
The Relational Model Chapter 3 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Why Study the Relational Model? Most widely Vendors: IBM, Informix, Microsoft, Oracle, Sybase, etc. “Legacy used model systems” in older models Examples: IBM’s IMS Recent competitor: object-oriented model ObjectStore, Versant, Ontos A synthesis emerging: object-relational model • Informix Universal Server, UniSQL, O2, Oracle, DB2 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2 Relational Database: Definitions Relational Relation: database: a set of relations made up of 2 parts: Schema: specifies name of relation, plus name and type of each column. • Example: Students(sid: string, name: string, login: string, age: integer, gpa: real). Instance: a table, with rows and columns. #Rows = cardinality, #fields = degree/arity. Can think of a relation as a set of rows or tuples (i.e., all rows are distinct). Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 3 Example Instance of “Students” Relation sid 53666 53688 53650 name login Jones jones@cs Smith smith@eecs Smith smith@math age 18 18 19 gpa 3.4 3.2 3.8 Cardinality = 3, degree = 5, all rows distinct* *In practice, commercial systems allows duplicate rows Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 4 Relational Query Languages A major strength of the relational model: supports simple, powerful querying of data. Queries can be written intuitively, and the DBMS is responsible for efficient evaluation. The key: precise semantics for relational queries. Allows the optimizer to extensively re-order operations, and still ensure that the answer does not change. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 5 The SQL Query Language Developed by IBM (system R) in the 1970s Need for a standard since it is used by many vendors Standards: SQL-86 SQL-89 (minor revision) SQL-92 (major revision) SQL-99 (major extensions) SQL-03 (includes XML-related features) SQL-08 (Data compression/encryption, etc.) Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 6 The SQL Query Language To find all 18 year old students, we can SELECT * FROM Students S WHERE S.age=18 sid name 53666 Jones login jones@cs age gpa 18 3.4 53688 Smith smith@ee 18 3.2 To find just names and logins, replace the first line: SELECT S.name, S.login FROM Students S WHERE S.age=18 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke sid login 53666 jones@cs 53688 smith@ee 7 Querying Multiple Relations (1) What does the following query compute? Enrolled sid 53831 53831 53650 53666 cid grade Carnatic101 C Reggae203 B Topology112 A History105 B SELECT S.name, E.cid FROM Students S, Enrolled E WHERE S.sid=E.sid AND E.grade=“A” A student with “sid” has an entry in Enrolled Students sid name login age gpa 53831 Zhang zhang@ee 19 3.2 53650 Smith smith@cs 21 3.9 53666 Jones jones@cs 20 3.5 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke The Enrolled entry has a grade of “A” Retrieve names of students and the courses they received an “A” grade 8 Querying Multiple Relations (2) Enrolled sid 53831 53831 53650 53666 cid grade Carnatic101 C Reggae203 B Topology112 A History105 B Students sid name login age gpa 53831 Zhang zhang@ee 19 3.2 53650 Smith smith@cs 21 3.9 53666 Jones jones@cs 20 3.5 SELECT S.name, E.cid FROM Students S, Enrolled E WHERE S.sid=E.sid AND E.grade=“A” S.name E.cid Smith Topology112 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 9 Creating Relations in SQL CREATE TABLE Students (sid: CHAR(20), name: CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL) A data field Relation “Students” has five columns (data fields) sid name login age gpa 53831 Zhang zhang@ee 19 3.2 53650 Smith smith@cs 21 3.9 53666 Jones jones@cs 20 3.5 Domain (type) of the field – enforced by DBMS Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 10 Creating Relations in SQL As another example, the Enrolled table holds information about courses that students take. CREATE TABLE Enrolled (sid: CHAR(20), cid: CHAR(20), grade: CHAR(2)) sid 53831 53831 53650 53666 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke cid grade Carnatic101 C Reggae203 B Topology112 A History105 B 11 Destroying and Altering Relations DROP TABLE Students Destroys the relation Students. The schema information and the tuples are deleted. ALTER TABLE Students ADD COLUMN firstyear: integer • • The schema of Students is altered by adding a new field Every tuple in the current instance is extended with a null value in the new field. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 12 Adding and Deleting Tuples Can insert a single tuple using: INSERT INTO Students (sid, name, login, age, gpa) VALUES (53688, ‘Smith’, ‘smith@ee’, 18, 3.2) Can delete all tuples satisfying some condition (e.g., name = Smith): DELETE FROM Students S WHERE S.name = ‘Smith’ * Powerful variants of these commands are available; more later! Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 13 Integrity Constraints (ICs) IC: condition that must be true for any instance of the database; e.g., domain constraints. ICs are specified when schema is defined. ICs are checked when relations are modified. A legal instance of a relation is one that satisfies all specified ICs. DBMS should not allow illegal instances. If the DBMS checks ICs, stored data is more faithful to real-world meaning. Avoids data entry errors, too! Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 14 Primary Key Constraints A set of fields is a key for a relation if : 1. No two distinct tuples can have same values in all key fields, and 2. This is not true for any subset of the key. • Part 2 false ? → A superkey • <SSN> is a key → <SSN, NAME> is a superkey If there is more than one key for a relation, one of the keys is chosen (by DBA) to be the primary key. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 15 Primary Key Constraint Example sid is a key for Students. (What about name?) The set {sid, gpa} is a superkey (i.e., set of fields that contains a key) 023 CREATE TABLE Students (sid: CHAR(20), name: CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL) Key No two students can have the same sid 136 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 16 Primary and Candidate Keys in SQL Possibly many candidate keys (specified using UNIQUE), one of which is chosen as the primary key. CREATE TABLE Enrolled (sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid) ) CREATE TABLE Enrolled (sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid), UNIQUE (cid, grade) ) There is only one candidate key, chosen as the primary key Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke There are two candidate keys 17 Primary and Candidate Keys in SQL CREATE TABLE Enrolled (sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid) ) Students can take only one course, and receive a single grade for that course Further, no two students in a course receive the same grade For a given student and course, there is a single grade CREATE TABLE Enrolled (sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid), UNIQUE (cid, grade) ) Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 18 Foreign Keys Foreign key : Set of fields in one relation that is used to `refer’ to a tuple in another relation. Must correspond to primary key of the second relation Like a `logical pointer’ (for retrieving additional data) Primary key sid name 53666 Jones Foreign key login jones@cs Students age gpa 18 3.4 53650 Smith smith@ee 18 3.2 “logical pointer” Enrolled sid 53666 53650 53650 53666 cid Carnatic101 Reggae203 Topology112 History105 grade C B A B Retrieve information about student 53650 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 19 DBMS Ensures Referential Integrity sid is a foreign key in Enrolled referring to Students Primary key sid name 53666 Jones Foreign key login jones@cs age gpa 18 3.4 53650 Smith smith@ee 18 3.2 sid 53666 53650 53650 53666 cid Carnatic101 Reggae203 Topology112 History105 grade C B A B Referential Integrity: If all foreign key constraints are enforced, referential integrity is achieved, i.e., no dangling references. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 20 Foreign Keys in SQL CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid), FOREIGN KEY (sid) REFERENCES Students ) Only students listed in the Students relation should be allowed to enroll for courses Enrolled sid 53666 53666 53650 53666 cid grade Carnatic101 C Reggae203 B Topology112 A History105 B Students sid 53666 53688 53650 name login Jones jones@cs Smith smith@eecs Smith smith@math Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke age 18 18 19 gpa 3.4 3.2 3.8 21 Enforcing Referential Integrity Consider Students and Enrolled; sid in Enrolled is a foreign key that references Students. What should be done if an Enrolled tuple with a nonexistent student id is inserted? (Reject it !) Enrolled sid 53666 53666 53650 53666 cid grade Carnatic101 C Reggae203 B Topology112 A History105 B 12345 CS101 Students sid 53666 53688 53650 name login Jones jones@cs Smith smith@eecs Smith smith@math age 18 18 19 gpa 3.4 3.2 3.8 A Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 22 Enforcing Referential Integrity What should be done if a Students tuple is deleted? Option 1: Students sid 53666 53688 53650 Also delete name login Jones jones@cs Smith smith@eecs Smith smith@math age 18 18 19 gpa 3.4 3.2 3.8 Enrolled sid 53666 53666 53650 53666 cid grade Carnatic101 C Reggae203 B Topology112 A History105 B Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 23 Enforcing Referential Integrity What should be done if a Students tuple is deleted? Option 2: Students sid 53666 53688 53650 name login Jones jones@cs Smith smith@eecs Smith smith@math age 18 18 19 gpa 3.4 3.2 3.8 Enrolled Disallow ! sid 53666 53666 53650 53666 cid grade Carnatic101 C Reggae203 B Topology112 A History105 B Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 24 Enforcing Referential Integrity What should be done if a Students tuple is deleted? Option 3: Students sid 53666 53688 53650 name login Jones jones@cs Smith smith@eecs Smith smith@math age 18 18 19 gpa 3.4 3.2 3.8 Enrolled 99999 sid Default 99999 99999 sid 53666 53666 53650 53666 cid grade Carnatic101 C Reggae203 B Topology112 A History105 B Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 25 Enforcing Referential Integrity What should be done if a Students tuple is deleted? Option 4: Students sid 53666 53688 53650 name login Jones jones@cs Smith smith@eecs Smith smith@math age 18 18 19 gpa 3.4 3.2 3.8 Enrolled null null null sid 53666 53666 53650 53666 cid grade Carnatic101 C Reggae203 B Topology112 A History105 B Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 26 Enforcing Referential Integrity Consider Students and Enrolled; sid in Enrolled is a foreign key that references Students. What should be done if an Enrolled tuple with a nonexistent student id is inserted? (Reject it!) What should be done if a Students tuple is deleted? Also delete all Enrolled tuples that refer to it. Disallow deletion of a Students tuple that is referred to. Set sid in Enrolled tuples that refer to it to a default sid. (In SQL, also: Set sid in Enrolled tuples that refer to it to a special value null, denoting `unknown’ or `inapplicable’.) Similar if primary key of Students tuple is updated. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 27 Referential Integrity in SQL SQL/92 and SQL:1999 Example: support all 4 options on deletes and updates. CREATE TABLE Enrolled Default is NO ACTION (sid CHAR(20), (delete/update is cid CHAR(20), rejected) grade CHAR(2), CASCADE (also delete all PRIMARY KEY (sid,cid), tuples that refer to FOREIGN KEY (sid) deleted tuple) REFERENCES Students SET NULL / SET DEFAULT ON DELETE CASCADE (sets foreign key value of ON UPDATE SET DEFAULT ) referencing tuple) Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 28 Where do ICs Come From? ICs are based upon the semantics of the realworld enterprise that is being described in the database relations. We can check a database instance to see if an IC is violated, but we can NEVER infer that an IC is true by looking at an instance. An IC is a statement about all possible instances! sid 53666 53688 53650 name login Jones jones@cs Lee smith@eecs Smith smith@math Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke age 18 18 19 Name is a key ? gpa 3.4 3.2 3.8 29 Logical DB Design: ER to Relational Entity sets to tables: ssn name lot Employees Employees CREATE TABLE Employees (ssn CHAR(11), name CHAR(20), lot INTEGER, PRIMARY KEY (ssn)) ssn Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke name lot 30 Relationship Sets to Tables (1) In translating a relationship set to a relation, attributes of the relation must include: Keys for each participating entity set (as foreign keys). • This set of attributes forms a superkey for the relation. All descriptive attributes. since name ssn did lot Employees dname Works_In budget Departments Descriptive attribute Works_In Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 31 Relationship Sets to Tables (2) since name ssn did lot Employees dname Works_In budget Departments CREATE TABLE Works_In( Works_In ssn CHAR(1), ssn did did INTEGER, since DATE, PRIMARY KEY (ssn, did), FOREIGN KEY (ssn) REFERENCES Employees, FOREIGN KEY (did) REFERENCES Departments) Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke since 32 Review: Key Constraints Each dept has at most one manager, according to the key constraint on Manages. Employees Departments since name ssn dname lot Employees did Manages budget Departments 1-to Many Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 33 Translating ER Diagrams with Key Constraints Map relationship to a table: Note that did is the key now! Separate tables for Employees and Departments. CREATE TABLE Manages( ssn CHAR(11), Note that did is the key did INTEGER, now – Each department can have since DATE, only one manager PRIMARY KEY (did), FOREIGN KEY (ssn) REFERENCES Employees, FOREIGN KEY (did) REFERENCES Departments) name ssn dname since lot Employees did Manages Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke budget Departments 34 Translating ER Diagrams with Key Constraints Since each department has a unique manager, we could instead combine Manages and Departments. name ssn CREATE TABLE Dept_Mgr( did INTEGER, dname CHAR(20), budget REAL, ssn CHAR(11), since DATE, PRIMARY KEY (did), FOREIGN KEY (ssn) REFERENCES Employees) dname since lot Employees did Manages budget Departments Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke Can also use one table for both “Manages” and “Departments” Folding them into one table 35 Review: Participation Constraints Does every department have a manager? If so, this is a participation constraint: the participation of Departments in Manages is said to be total (vs. partial). Every did value in Departments table must appear in a row of the Manages table (with a non-null ssn value!) since name ssn did lot Employees dname Manages Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke budget Departments 36 Participation Constraints in SQL since name ssn did lot Employees dname Manages budget Departments CREATE TABLE Dept_Mgr( Total participation did INTEGER, i.e., Every dname CHAR(20), department must budget REAL, have a manager ssn CHAR(11) NOT NULL, since DATE, PRIMARY KEY (did), FOREIGN KEY (ssn) REFERENCES Employees, ON DELETE NO ACTION) Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 37 Participation Constraints in SQL We can capture participation constraints involving one entity set in a binary relationship, but little else (without resorting to CHECK constraints – discussed later). since name ssn did lot Employees dname Manages Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke budget Departments 38 Review: Weak Entities A weak entity can be identified uniquely only by considering the primary key of another (owner) entity. Owner entity set and weak entity set must participate in a one-to-many relationship set (1 owner, many weak entities). Weak entity set must have total participation in this identifying relationship set. name ssn lot Employees cost Policy Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke pname age Dependents 39 Translating Weak Entity Sets name ssn lot Employees cost pname Policy CREATE TABLE Dep_Policy ( ssn is part of pname CHAR(20), primary key → Implicit NOT NULL age INTEGER, cost REAL, Weak entity set ssn CHAR(11), PRIMARY KEY (pname, ssn), FOREIGN KEY (ssn) REFERENCES Employees, ON DELETE CASCADE) Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke age Dependents Map into one table When the owner entity is deleted, all owned weak entities must also be deleted 40 Review: ISA Hierarchies As in C++, or other PLs, attributes are inherited. If we declare A ISA B, every A entity is also considered to be a B entity. name ssn lot Employees hours_worked ISA hourly_wages contractid Hourly_Emps Contract_Emps Overlap constraints: Can Joe be an Hourly_Emps as well as a Contract_Emps entity? (Allowed/disallowed) Covering constraints: Does every Employees entity also have to be an Hourly_Emps or a Contract_Emps entity? (Yes/no) Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 41 Mapping ISA to Relations Two approaches: Using three tables Using two tables name ssn lot Employees hourly_wages hours_worked ISA contractid Hourly_Emps Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke Contract_Emps 42 Mapping Using Three Relations Employees ssn name lot Every employee is recorded in Employees ssn name lot Employees Contract_Emps ssn contractid hours_worked ISA contractid hourly_wages Hourly_Emps ssn Hourly_wages Hours_worked For hourly employees, extra information (i.e., Hourly_Wages and Hours_worked) recorded in Hourly_Emps Hourly_Emps Contract_Emps must delete Hourly_Emps tuple if referenced Employees tuple is deleted. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 43 Mapping Using Three Relations Employees ssn name lot Every employee is recorded in Employees ssn name lot Employees Contract_Emps ssn contratid hours_worked ISA contractid hourly_wages Hourly_Emps ssn Hourly_wages Hours_worked For hourly employees, extra information (i.e., Hourly_Wages and Hours_worked) recorded in Hourly_Emps Hourly_Emps Contract_Emps • Queries involving all employees easy, • those involving just Hourly_Emps require a join to get some attributes (e.g., name). Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 44 ISA Mapping Using Two Relations ssn name lot Employees Each employee must be in one of these two relations hours_worked ISA contractid hourly_wages Hourly_Emps Contract_Emps Hourly_Emps ssn name lot hourly_wages lot Contractid hours_worked Contract_Emps ssn name Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 45 Mapping ISA Constraints Overlap and covering constraints in ISA relationships can be expressed in SQL using assertions We will discuss assertions later Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 46 Mapping Two Binary Relationships (1) The key constraints allow us to combine Purchaser with Policies, and Beneficiary and Dependents. name ssn pname age CREATE TABLE Policies ( policyid INTEGER, Dependents Employees cost REAL, ssn CHAR(11) NOT NULL, Purchaser Beneficiary PRIMARY KEY (policyid). FOREIGN KEY (ssn) REFERENCES Employees, ON DELETE CASCADE) Policies lot policyid cost CREATE TABLE Dependents ( pname CHAR(20), age INTEGER, policyid INTEGER, PRIMARY KEY (pname, policyid), FOREIGN KEY (policyid) REFERENCES Policies, ON DELETE CASCADE) Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 47 Chain of Weak Entity Sets What if Policies is also a weak entity set name ssn pname lot Employees age Primary key: (pname, policyid, ssn) Dependents Purchaser Beneficiary Policies policyid cost Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 48 Chain of Identifying Relationships for pname Weak Entity Sets name ssn lot age Dependents CREATE TABLE Dependents ( Employees pname CHAR(20), Beneficiary from Policies age INTEGER, Purchaser policyid INTEGER, PRIMARY KEY (pname, policyid), Policies FOREIGN KEY (policyid) REFERENCES Policies, policyid ON DELETE CASCADE) cost CREATE TABLE Dependents ( pname CHAR(20), from age INTEGER, Employees policyid INTEGER, ssn INTEGER, What if Policies is also PRIMARY KEY (pname, policyid, ssn), a weak entity set ? FOREIGN KEY (policyid, ssn) REFERENCES Policies, ON DELETE CASCADE) Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 49 Views A view is just a relation, but we store a definition, rather than a set of tuples. A relation View 2 View 1 CREATE VIEW YoungStudents (name, grade) AS SELECT S.name, E.grade FROM Students S, Enrolled E WHERE S.sid = E.sid and S.age<20 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke View definition is a query 50 Drop A View Views can be dropped using the DROP VIEW command. How to handle DROP TABLE if there’s a view on the table? DROP TABLE command has options to let the user specify this. “DROP TABLE Students RESTRICT” - Removes Students unless there are related views “DROP TABLE Students CASCADE” - Also removes any referencing views Students View Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 51 Views and Security Views can be used to present necessary information (or a summary), while hiding details in underlying relation(s). Example: Given YoungStudents, but not Students or Enrolled, we can find young students who have enrolled, but not the cid’s of the courses they are enrolled in. CREATE VIEW YoungStudents (name, grade) AS SELECT S.name, E.grade FROM Students S, Enrolled E WHERE S.sid = E.sid and S.age<20 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 52 Summary: ER to Relational Mapping Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 53 ER to Relational Mapping (1) KEY KEY KEY KEY KEY KEY KEY KEY KEY Foreign Key Merge Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 54 ER to Relational Mapping (2) KEY KEY KEY Foreign Key Merge KEY KEY KEY Foreign Key NOT NULL Merge KEY PKEY KEY KEY NOT NULL PKEY: Partial key Merge Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 55 ER to Relational Mapping (3) KEY Use three tables KEY OR ISA Use two tables Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke KEY 56 ER to Relational Mapping (4) KEY PKEY Primary key: KEY PKEY KEY PKEY Primary key: KEY PKEY PKEY Primary key: KEY PKEY KEY PKEY Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 57 ER to Relational Mapping (5) KEY KEY KEY KEY KEY Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke KEY 58 Mapping Example – ER Design address phone Place ssn name Home Telephone albumID Lives Musicians Plays speed copyrightDate Producer Album Appears Perform Instrument instrID dname key title Songs songID Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke title author 59 Mapping Example address phone Place ssn name Musicians Plays Home Telephone albumID Lives speed copyrightDate CREAT TABLE Home_Telephone title ( phone Producer CHAR(11) , Album address CHAR(30) NOT NULL, PRIMARY KEY (phone), Appears FOREIGN KEY address REFERENCES Place Perform ) Instrument instrID dname key Songs songID Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke title author 60 Mapping Example address Place ssn name phone Phone_no Home Home_Telephone Telephone address albumID Lives Musicians Plays Instrument instrID dname key speed copyrightDate title CREAT TABLE Lives ( Producer ssn Album CHAR(10), phone CHAR(11), PRIMARY KEY (ssn, phone), Appears FOREIGN KEY phone Perform REFERENCES Home_Telephone, FOREIGN KEYSongs ssn REFERENCES Musicians ) songID Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke title author 61 Mapping Example address phone Home Place ssn name Telephone albumID Lives Musicians Plays Instrument instrID dname key speed copyrightDate title CREAT TABLE Plays ( Producer ssn Album CHAR(10), instrID INTEGER PRIMARY KEY (ssn, instrID), Appears FOREIGN KEY (ssn) Perform REFERENCES Musicians, FOREIGN KEYSongs (instrID) REFERENCES Instruments ) songID Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke title author 62 Mapping Example address phone Home Place ssn name Musicians Telephone albumID Lives speed copyrightDate Producer title Album CREAT TABLE Album_Producer ( Appears albumID INTEGER, Perform ssn CHAR(10) NOT NULL, copyrightDate DATE, Songs Instrument speed INTEGER, title CHAR(30) instrID dname key songID title author PRIMARY KEY (albumID), FOREIGN KEY (ssn) REFERENCES Musicians ) Plays Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 63 Mapping Example address phone Place ssn name Lives Musicians Plays CREAT TABLE Perform ( Home songID TelephoneINTEGER, ssn CHAR(10), PRIMARY songID), albumID KEY (ssn, speed FOREIGN KEY (ssn) copyrightDate title REFERENCES Musicians, FOREIGN KEY (songID) Producer Album REFERENCES Songs ) Appears Perform Instrument instrID dname key Songs songID Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke title author 64 Mapping Example address phone Place ssn name Musicians Home Telephone albumID Lives speed copyrightDate Producer title Album CREAT TABLE Plays Songs_Appears ( Appears Perform songID INTEGER, author CHAR(30), title Instrument CHAR(30), Songs albumID INTEGER NOT NULL, PRIMARY KEY (songID), instrID dname key songID title author FOREIGN KEY (albumID) REFERENCES Album_Producer ) Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 65 Relational Model: Summary A tabular representation of data. Simple and intuitive, currently the most widely used. Integrity constraints can be specified by the DBA, based on application semantics. DBMS checks for violations. Two important ICs: primary and foreign keys In addition, we always have domain constraints. Powerful and natural query languages exist. Rules to translate ER to relational model Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 66