Presentation is loading. Please wait.

Presentation is loading. Please wait.

The Relational Model Relational Data Model

Similar presentations


Presentation on theme: "The Relational Model Relational Data Model"— Presentation transcript:

1 The Relational Model Relational Data Model
Relational Query Language (DDL + DML) Integrity Constraints (IC) 1

2 Why Study the Relational Model?
Most widely used model in Commercial DBMSs: Vendors: IBM, Microsoft, Oracle, … Competitors Object-oriented model e.g., O2, but also Oracle, DB2 XML Model e.g. Natix, but also IBM, Oracle Key-Value Stores/NonSQL e.g. BigTable, MongoDB, etc. 2

3 Example Instance of Students Relation
relation = rows (tuples) and columns (attributes). example: Cardinality = 3, degree = 5. Set not an ordered collection. 4

4 Relational Query Languages (SQL)
Developed by IBM (system R) in the 1970s Need for a standard since used by many vendors Standards: SQL-86 SQL-89 (minor revision) SQL-92 (major revision) SQL-99 (major extensions, current standard) . . .

5 Relational Query Languages (SQL)
A major strength of the relational model: supports simple, powerful querying of data. DBMS is responsible for efficient evaluation. SQL = DDL + DML + …… (Chap 5) 9

6 DDL ---- CREATE TABLE CREATE TABLE Students. (sid: CHAR(20),
DDL ---- CREATE TABLE CREATE TABLE Students (sid: CHAR(20), name: CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL CREATE TABLE Enrolled (sid: CHAR(20), cid: CHAR(20), grade: CHAR(2)) 15

7 DDL --- 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 (null value assigned) 16

8 DML --- Query single relation
To find all 18 year old students, we can write: SELECT * FROM Students S WHERE S.age=18

9 DML --- Querying Multiple Relations
SELECT S.name, E.cid FROM Students S, Enrolled E WHERE S.sid=E.sid AND E.grade=“A” we get:

10 DML --- Adding and Deleting Tuples
Can insert a single tuple : INSERT INTO Students (sid, name, login, age, gpa) VALUES (53688, ‘Smith’, 18, 3.2) Delete tuples: DELETE FROM Students S WHERE S.name = ‘Smith’ 10

11 Integrity Constraints (ICs)
IC condition that must be true for any instance of the database Fundamental constraints : Key Foreign Key, Domain Constraints General constraints: Single table constraints and triggers 5

12 Primary and Candidate Keys in SQL
One primary key, and Zero to many candidate keys (specified using UNIQUE), 6

13 Primary and Candidate Keys in SQL
Candidate keys and primary key: CREATE TABLE Student (sid CHAR(20), ssn CHAR(20), name CHAR(20), gpa INTEGER, PRIMARY KEY (sid), UNIQUE (ssn) ) 6

14 Primary and Candidate Keys in SQL
Candidate keys and primary key used carelessly : CREATE TABLE Enrolled (sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid) ) 6

15 Primary and Candidate Keys in SQL
Candidate keys and primary key used carelessly: CREATE TABLE Enrolled (sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid), UNIQUE (cid, grade) ) 6

16 Primary and Candidate Keys in SQL
Students can take only one course, and receive a single grade for that course. No two students in a course receive the same grade. CREATE TABLE Enrolled (sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid), UNIQUE (cid, grade) ) Used carelessly, an IC can prevent the storage of database instances that arise in practice! 6

17 Primary and Candidate Keys in SQL
Candidate keys and primary key : CREATE TABLE Enrolled ( sid CHAR(20) cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid) ) 6

18 Primary and Candidate Keys in SQL
“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,cid) ) 6

19 Foreign Keys, Referential Integrity
Foreign key : Set of fields in one relation that is used to "refer" to a tuple in another relation. (Like a `logical pointer’.) Foreign key : FK in referencing relation must match PK of referenced relation. Match = same number of columns, compatible data types (column names can be different). 7

20 Foreign Keys, Referential Integrity
Foreign key : Enrolled.sid  Students.sid Enrolled (referencing relation) Students (referenced relation) Primary Key Foreign Key 7

21 Foreign Keys in SQL Only students listed in 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 ) If all foreign key constraints are enforced, then referential integrity is achieved, i.e., no dangling references. 7

22 Enforcing Referential Integrity
sid in Enrolled is a foreign key that references Students. Insertion: What if a new Student tuple is inserted? Insertion: What should be done if an Enrolled tuple with a non-existent student id is inserted? Reject it Enrolled (referencing relation) Students (referenced relation) Primary Key Foreign Key 13

23 Enforcing Referential Integrity
Enrolled (referencing relation) Students (referenced relation) Deletion: What if an Enrolled tuple is deleted? Primary Key Foreign Key 13

24 Enforcing Referential Integrity
Enrolled (referencing relation) Students (referenced relation) Deletion: What if a Student tuple is deleted? Cascading -- Also delete all Enrolled tuples that refer to it. No Action -- Disallow deletion of a Students tuple that is referred to. Set Default -- Set sid in Enrolled tuples that refer to it to a default sid. Set Null -- Set sid in Enrolled tuples that refer to it to a special value null, denoting `unknown’ or `inapplicable’. (Not always applicable) Similar if primary key of Students tuple is updated. Primary Key Foreign Key 13

25 Referential Integrity in SQL
CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid), FOREIGN KEY (sid) REFERENCES Students (sid) ON DELETE CASCADE ON UPDATE SET DEFAULT ) 14

26 Referential Integrity in SQL
options on deletes and updates: Default is NO ACTION (delete/update is rejected) CASCADE (also delete all tuples that refer to deleted tuple) SET NULL / SET DEFAULT (sets foreign key value of referencing tuple) 14

27 Relational Model: Summary
Tabular representation of data. Simple, intuitive and 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 Powerful ‘natural’ query language exist. 15


Download ppt "The Relational Model Relational Data Model"

Similar presentations


Ads by Google