The Relational Model�
Chapter 3
Database Management Systems, R. Ramakrishnan and J. Gehrke
1
Why Study the Relational Model?
Database Management Systems, R. Ramakrishnan and J. Gehrke
2
Relational databases
Database Management Systems, R. Ramakrishnan and J. Gehrke
3
Relational databases
Database Management Systems, R. Ramakrishnan and J. Gehrke
4
Relational Database: Definitions
Database Management Systems, R. Ramakrishnan and J. Gehrke
5
Example Instance of Students Relation
be distinct?
Database Management Systems, R. Ramakrishnan and J. Gehrke
6
Relational Query Languages
Database Management Systems, R. Ramakrishnan and J. Gehrke
7
The SQL Query Language
Database Management Systems, R. Ramakrishnan and J. Gehrke
8
The SQL Query Language
SELECT *
FROM Students S
WHERE S.age=18
SELECT S.name, S.login
Database Management Systems, R. Ramakrishnan and J. Gehrke
9
Querying Multiple Relations
SELECT S.name, E.cid
FROM Students S, Enrolled E
WHERE S.sid=E.sid AND E.grade=“A”
Given the following instance of Enrolled (is this possible if the DBMS ensures referential integrity?):
we get:
Database Management Systems, R. Ramakrishnan and J. Gehrke
10
Creating Relations in SQL
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))
Database Management Systems, R. Ramakrishnan and J. Gehrke
11
Destroying and Altering Relations
DROP TABLE Students
ALTER TABLE Students
ADD COLUMN firstYear: integer
Database Management Systems, R. Ramakrishnan and J. Gehrke
12
Adding and Deleting Tuples
INSERT INTO Students (sid, name, login, age, gpa)
VALUES (53688, ‘Smith’, ‘smith@ee’, 18, 3.2)
DELETE
FROM Students S
WHERE S.name = ‘Smith’
Database Management Systems, R. Ramakrishnan and J. Gehrke
13
Integrity Constraints (ICs)
Database Management Systems, R. Ramakrishnan and J. Gehrke
14
Primary Key Constraints
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.
Database Management Systems, R. Ramakrishnan and J. Gehrke
15
Primary and Candidate Keys in SQL
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) )
Database Management Systems, R. Ramakrishnan and J. Gehrke
16
Foreign Keys, Referential Integrity
Database Management Systems, R. Ramakrishnan and J. Gehrke
17
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 )
Enrolled
Students
Database Management Systems, R. Ramakrishnan and J. Gehrke
18
Enforcing Referential Integrity
Database Management Systems, R. Ramakrishnan and J. Gehrke
19
Referential Integrity in SQL/92
CREATE TABLE Enrolled
(sid CHAR(20) default ‘11111’,
cid CHAR(20),
grade CHAR(2),
PRIMARY KEY (sid,cid),
FOREIGN KEY (sid)
REFERENCES Students
ON DELETE CASCADE
ON UPDATE SET DEFAULT )
Database Management Systems, R. Ramakrishnan and J. Gehrke
20
Where do ICs Come From?
Database Management Systems, R. Ramakrishnan and J. Gehrke
21
Logical DB Design: ER to Relational
CREATE TABLE Employees
(ssn CHAR(11),
name CHAR(20),
lot INTEGER,
PRIMARY KEY (ssn))
Employees
ssn
name
lot
Database Management Systems, R. Ramakrishnan and J. Gehrke
22
Relationship Sets to Tables
CREATE TABLE Works_In(
ssn CHAR(11),
did INTEGER,
since DATE,
PRIMARY KEY (ssn, did),
FOREIGN KEY (ssn)
REFERENCES Employees,
FOREIGN KEY (did)
REFERENCES Departments)
Database Management Systems, R. Ramakrishnan and J. Gehrke
23
Review: Key Constraints
Translation to
relational model?
Many-to-Many
1-to-1
1-to Many
Many-to-1
dname
budget
did
since
lot
name
ssn
Manages
Employees
Departments
Database Management Systems, R. Ramakrishnan and J. Gehrke
24
Translating ER Diagrams with Key Constraints
CREATE TABLE Manages(
ssn CHAR(11),
did INTEGER,
since DATE,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees,
FOREIGN KEY (did) REFERENCES Departments)
CREATE TABLE Dept_Mgr(
did INTEGER,
dname CHAR(20),
budget REAL,
ssn CHAR(11),
since DATE,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees)
Database Management Systems, R. Ramakrishnan and J. Gehrke
25
Review: Participation Constraints
lot
name
dname
budget
did
since
name
dname
budget
did
since
Manages
since
Departments
Employees
ssn
Works_In
Database Management Systems, R. Ramakrishnan and J. Gehrke
26
Participation Constraints in SQL
CREATE TABLE Dept_Mgr(
did INTEGER,
dname CHAR(20),
budget REAL,
ssn CHAR(11) NOT NULL,
since DATE,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees,
ON DELETE NO ACTION)
Database Management Systems, R. Ramakrishnan and J. Gehrke
27
Review: Weak Entities
lot
name
age
pname
Dependents
Employees
ssn
Policy
cost
Database Management Systems, R. Ramakrishnan and J. Gehrke
28
Translating Weak Entity Sets
CREATE TABLE Dep_Policy (
pname CHAR(20),
age INTEGER,
cost REAL,
ssn CHAR(11) NOT NULL,
PRIMARY KEY (pname, ssn),
FOREIGN KEY (ssn) REFERENCES Employees,
ON DELETE CASCADE)
Database Management Systems, R. Ramakrishnan and J. Gehrke
29
Review: ISA Hierarchies
Contract_Emps
name
ssn
Employees
lot
hourly_wages
ISA
Hourly_Emps
contractid
hours_worked
Database Management Systems, R. Ramakrishnan and J. Gehrke
30
Translating ISA Hierarchies to Relations
Database Management Systems, R. Ramakrishnan and J. Gehrke
31
Review: Binary vs. Ternary Relationships
age
pname
Dependents
Covers
name
Employees
ssn
lot
Policies
policyid
cost
Beneficiary
age
pname
Dependents
policyid
cost
Policies
Purchaser
name
Employees
ssn
lot
Bad design
Better design
Database Management Systems, R. Ramakrishnan and J. Gehrke
32
Binary vs. Ternary Relationships (Contd.)
CREATE TABLE Policies (
policyid INTEGER,
cost REAL,
ssn CHAR(11) NOT NULL,
PRIMARY KEY (policyid).
FOREIGN KEY (ssn) REFERENCES Employees,
ON DELETE CASCADE)
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, R. Ramakrishnan and J. Gehrke
33
Views
CREATE VIEW YoungActiveStudents (name, grade)
AS SELECT S.name, E.grade
FROM Students S, Enrolled E
WHERE S.sid = E.sid and S.age<21
Database Management Systems, R. Ramakrishnan and J. Gehrke
34
Views and Security
Database Management Systems, R. Ramakrishnan and J. Gehrke
35
Relational Model: Summary
Database Management Systems, R. Ramakrishnan and J. Gehrke
36