the relational model
play

The Relational Model Ramakrishnan&Gehrke, Chapter 3 CS4320 1 - PowerPoint PPT Presentation

The Relational Model Ramakrishnan&Gehrke, Chapter 3 CS4320 1 Why Study the Relational Model? Most widely used model. Vendors: IBM, Informix, Microsoft, Oracle, Sybase, etc. Legacy systems in older models E.G., IBMs


  1. The Relational Model Ramakrishnan&Gehrke, Chapter 3 CS4320 1

  2. Why Study the Relational Model? � Most widely used model. � Vendors: IBM, Informix, Microsoft, Oracle, Sybase, etc. � “Legacy systems” in older models � E.G., IBM’s IMS � Recent competitor: object-oriented model � ObjectStore, Versant, Ontos � A synthesis emerging: object-relational model • Informix Universal Server, UniSQL, O2, Oracle, DB2 CS4320 2

  3. Relational Database: Definitions � Relational database: a set of relations � Relation: made up of 2 parts: � Instance : a table , with rows and columns. #Rows = cardinality , #fields per row = degree/arity. � Schema : specifies name of relation, plus name and type of each column. • E.G. Students( sid : string, name : string, login : string, age : integer, gpa : real). � Can think of a relation as a set of rows or tuples (i.e., all rows are distinct). CS4320 3

  4. Example Instance of Students Relation sid name login age gpa 53666 Jones jones@cs 18 3.4 53688 Smith smith@eecs 18 3.2 53650 Smith smith@math 19 3.8 � Cardinality = 3, degree = 5, all rows distinct � Do all columns in a relation instance have to be distinct? CS4320 4

  5. 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. CS4320 5

  6. 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 2003 (major revision) CS4320 6

  7. The SQL Query Language � To find all 18 year old students, we can write: sid name login age gpa SELECT * FROM Students S 53666 Jones jones@cs 18 3.4 WHERE S.age=18 53688 Smith smith@ee 18 3.2 •To find just names and logins, replace the first line: SELECT S.name, S.login CS4320 7

  8. Querying Multiple Relations � What does the SELECT S.name, E.cid following query FROM Students S, Enrolled E compute? WHERE S.sid=E.sid AND E.grade=“A” Enrolled Given the following instances sid cid grade of Students and Enrolled: 53831 Carnatic101 C 53831 Reggae203 B Students 53650 Topology112 A sid name login age gpa 53666 History105 B 53666 Jones jones@cs 18 3.4 we get: 53688 Smith smith@eecs 18 3.2 53650 Smith smith@math 19 3.8 S.name E.cid Smith Topology112 CS4320 8

  9. Creating Relations in SQL � Creates the Students CREATE TABLE Students relation. Observe that the (sid: CHAR(20) , name: CHAR(20) , type (domain) of each field login: CHAR(10), is specified, and enforced by age: INTEGER , the DBMS whenever tuples gpa: REAL ) are added or modified. � As another example, the CREATE TABLE Enrolled Enrolled table holds (sid: CHAR(20) , information about courses cid: CHAR(20) , that students take. grade: CHAR (2)) CS4320 9

  10. 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. CS4320 10

  11. 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! CS4320 11

  12. 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! CS4320 12

  13. 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 . � If there’s >1 key for a relation, one of the keys is chosen (by DBA) to be the primary key . � E.g., sid is a key for Students. (What about name ?) The set { sid, gpa } is a superkey. CS4320 13

  14. 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 � “For a given student and course, (sid CHAR (20) there is a single grade.” vs. cid CHAR(20) , “Students can take only one grade CHAR (2), course, and receive a single grade PRIMARY KEY (sid,cid) ) for that course; further, no two CREATE TABLE Enrolled students in a course receive the (sid CHAR (20) same grade.” cid CHAR(20) , � Used carelessly, an IC can prevent grade CHAR (2), the storage of database instances PRIMARY KEY (sid), that arise in practice! UNIQUE (cid, grade) ) CS4320 14

  15. Foreign Keys, Referential Integrity � 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’. � E.g. sid is a foreign key referring to Students: � Enrolled( sid : string, cid : string, grade : string) � If all foreign key constraints are enforced, referential integrity is achieved, i.e., no dangling references. � Can you name a data model w/o referential integrity? • Links in HTML! CS4320 15

  16. Foreign Keys in SQL � Only students listed in the Students relation should be allowed to enroll for courses. CREATE TABLE Enrolled (sid CHAR (20), cid CHAR(20) , grade CHAR (2), PRIMARY KEY (sid,cid), FOREIGN KEY (sid) REFERENCES Students ) Enrolled Students sid cid grade sid name login age gpa 53666 Carnatic101 C 53666 Jones jones@cs 18 3.4 53666 Reggae203 B 53688 Smith smith@eecs 18 3.2 53650 Topology112 A 53650 Smith smith@math 19 3.8 53666 History105 B CS4320 16

  17. 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 non-existent 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. CS4320 17

  18. Referential Integrity in SQL � SQL/92 and SQL:1999 CREATE TABLE Enrolled support all 4 options on (sid CHAR (20), deletes and updates. cid CHAR(20) , grade CHAR (2), � Default is NO ACTION PRIMARY KEY (sid,cid), ( delete/update is rejected ) FOREIGN KEY (sid) � CASCADE (also delete REFERENCES Students all tuples that refer to ON DELETE CASCADE deleted tuple) ON UPDATE SET DEFAULT ) � SET NULL / SET DEFAULT (sets foreign key value of referencing tuple) CS4320 18

  19. Where do ICs Come From? � ICs are based upon the semantics of the real- world 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! � From example, we know name is not a key, but the assertion that sid is a key is given to us. � Key and foreign key ICs are the most common; more general ICs supported too. CS4320 19

  20. Logical DB Design: ER to Relational � Entity sets to tables: CREATE TABLE Employees (ssn CHAR (11), name name CHAR (20), ssn lot lot INTEGER , PRIMARY KEY (ssn)) Employees CS4320 20

  21. Relationship Sets to Tables � In translating a relationship CREATE TABLE Works_In( set to a relation, attributes of ssn CHAR (11), the relation must include: did INTEGER , � Keys for each since DATE , participating entity set PRIMARY KEY (ssn, did), (as foreign keys). FOREIGN KEY (ssn) •This set of attributes REFERENCES Employees, forms a superkey for FOREIGN KEY (did) the relation . REFERENCES Departments) � All descriptive attributes. CS4320 21

  22. Review: Key Constraints since � Each dept has at name dname most one manager, ssn budget lot did according to the key constraint on Employees Manages Departments Manages. Translation to relational model? 1-to-1 1-to Many Many-to-1 Many-to-Many CS4320 22

Recommend


More recommend