The Relational Model - Department of Computer Science | UNC
Download
Report
Transcript The Relational Model - Department of Computer Science | UNC
The Relational Model
Chapter 3
Instructor: Jianping Fan
Database Management Systems
Raghu Ramakrishnan
1
Why We Should 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
Database Management Systems
Raghu Ramakrishnan
2
Relational Database: Definitions
Relational database: a set of relations (tables).
Relation (table): consist of 2 parts:
– Instance : a table, with rows and columns. #rows =
cardinality = number of tuples, #fields = degree =
number of attributes
– Schema : specifies name of relation, plus name,
type of each column, and their domain.
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)
Database Management Systems
Raghu Ramakrishnan
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
Do all columns in a relation instance have to
be distinct?
Database Management Systems
Raghu Ramakrishnan
4
Example Instance of Bank Account
Acct
1005
1002
1003
1008
1010
1012
Name Address
Jones 11 First St
Smith 12 First St
Smith 12 First St
Green 14 Fourth St
Balance
$1023.22
$22.43
$11000.12
$1077.23
$5,000,000,000.00
Gates 20 Tenth St
Smith 15 Second St $443.77
Cardinality = 6, degree = 4 , all rows distinct
Database Management Systems
Raghu Ramakrishnan
5
Advantages of Relational Database
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.
Structured Query Language (SQL) is welldefined.
Database Management Systems
Raghu Ramakrishnan
6
Integrity Constraints (ICs)
Domain, primary key, foreign key constraints
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
Raghu Ramakrishnan
7
Integrity Constraints (ICs)
Domain, primary key, foreign key constraints
Domain Constraint:
Primary Key Constraint:
Single Table
Foreign Key Constraint:
Inter-Tables
Database Management Systems
Schema
Raghu Ramakrishnan
8
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.
Database Management Systems
Raghu Ramakrishnan
9
Primary and Candidate Keys in SQL
Possibly many candidate keys (specified using
UNIQUE), one of which is chosen as the primary key.
“For a given student and course, CREATE TABLE Enrolled
(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) )
Database Management Systems
Raghu Ramakrishnan
10
Primary and Candidate Keys in SQL
(continued)
For Students relation with SID as the primary key
CREATE TABLE Students
(sid CHAR(20), name CHAR(20),
login CHAR(10), age INTEGER,
gpa REAL, PRIMARY KEY (sid) )
Are there any separate fields or combinations of
fields which also are candidates for primary key?
– How about login?
– How about age?
– How about age & gpa?
Database Management Systems
Raghu Ramakrishnan
11
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!
– 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.
Database Management Systems
Raghu Ramakrishnan
12
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.
Database Management Systems
Raghu Ramakrishnan
13
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),
Enrolled
sid
53666
53666
53650
53666
FOREIGN KEY (cid) REFERENCES Courses
FOREIGN KEY (sid) REFERENCES Students )
cid
grade
Carnatic101
C
Reggae203
B
Topology112
A
History105
B
Database Management Systems
Students
sid
53666
53688
53650
Raghu Ramakrishnan
name
login
Jones jones@cs
Smith smith@eecs
Smith smith@math
age
18
18
19
gpa
3.4
3.2
3.8
14
Foreign Keys in SQL (continued)
Bank Account Example - Only allow accounts
opened for customers listed in the customer
information relation
First, an instance of customer information
Name Address
Phone
Email
6032223456 Jones@cs
Jones 11 First St
6033335567 Smith@cs
Smith 12 First St
Green 14 Fourth St 7814447890 Green@cs
1223336789 Gates@ms
Gates 11 First St
Smith 12 Second St 6039788765 Smith@ee
Database Management Systems
Raghu Ramakrishnan
15
Foreign Keys in SQL (continued)
Creates the customer information relation
CREATE TABLE Customer_Info
(name CHAR(20), addr CHAR(40),
phone CHAR(10), email char (40),
PRIMARY KEY (name, addr))
Now create the bank account relation with a
foreign key
CREATE TABLE Bank_Acct
(acct CHAR (4), name CHAR (20),
address char (40), balance REAL,
PRIMARY KEY (acct) ,
Foreign Key (name,
address) references Customer_Info)
Raghu Ramakrishnan
Database Management Systems
16
Foreign Keys in SQL (continued)
Acct
1005
1002
1003
1008
1010
1012
Name Address
Jones 11 First St
Smith 12 First St
Smith 12 First St
Green 14 Fourth St
Gates 20 Tenth St
Smith 15 Second St
Name Address
Jones 11 First St
Smith 12 First St
Green 14 Fourth St
Gates 11 First St
Smith 12 Second St
Database Management Systems
Balance
$1023.22
$22.43
$11000.12
$1077.23
$5,000,000,000.00
$443.77
Phone
6032223456
6033335567
7814447890
1223336789
6039788765
Raghu Ramakrishnan
Email
Jones@cs
Smith@cs
Green@cs
Gates@ms
Smith@ee
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 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
Raghu Ramakrishnan
18
Referential Integrity in SQL/92
SQL/92 supports all 4
CREATE TABLE Enrolled
options on deletes and
(sid CHAR(20),
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)
– SET NULL (sets foreign
key value of referencing
tuple)
Database Management Systems
Raghu Ramakrishnan
19
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, current standard)
SQL-99 (major extensions)
Database Management Systems
Raghu Ramakrishnan
20
The SQL Query Language
How to support database operations by using SQL?
a. How to generate (create) a relation (table) in database?
b. How to modify the table (relation) in database?
delete and insert? or modify one attribute?
c. How to realize the access (query) relation in database?
Database Management Systems
Raghu Ramakrishnan
21
Creating Relations in SQL
Creates the Students
relation. Observe that
the type (domain) of
each field is specified,
and enforced by the
DBMS whenever tuples
are added or modified.
sid
53666
53688
53650
Database Management Systems
CREATE TABLE Students
(sid CHAR(20),
name CHAR(20),
login CHAR(10),
age INTEGER,
gpa REAL,
Primary key (sid))
name
login
Jones jones@cs
Smith smith@eecs
Smith smith@math
Raghu Ramakrishnan
age
18
18
19
gpa
3.4
3.2
3.8
22
As
another example, the Enrolled table
holds information about courses
that students take.
sid
53831
53831
53650
53666
cid
Carnatic101
Reggae203
Topology112
History105
Database Management Systems
grade
C
B
A
B
CREATE TABLE Enrolled
(sid CHAR(20),
cid CHAR(20),
grade CHAR(2),
Raghu Ramakrishnan
Primary key (sid, cid))
23
Creating Relations in SQL (cont)
Creates the Bank Account
relation.
Acct
1005
1002
1003
1008
Name Address
Jones 11 First St
Smith 12 First St
Smith 12 First St
Green 14 Fourth St
1010
1025
Gates 20 Tenth St
Blue 14 Third St
Database Management Systems
CREATE TABLE Bank_Acct
(acct CHAR(4),
name CHAR(20),
Raghu Ramakrishnan
address char(40),
balance REAL,
Primary key (acct))
Balance
$1023.22
$22.43
$11000.12
$1077.23
$5,000,000,000.00
$2344.22
24
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
Raghu Ramakrishnan
25
Adding and Deleting Tuples
Can insert a single tuple using:
INSERT
INTO Students (sid, name, login, age, gpa)
VALUES (53699, 'Green ', 'green@ee', 18, 3.5)
More inserts:
INSERT INTO Students (sid, name, login, age, gpa)
VALUES (53666, 'Jones', 'jones@cs', 18, 3.4)
INSERT INTO Students (sid, name, login, age, gpa)
VALUES (53688, 'Smith ', 'smith@eecs', 18, 3.2)
INSERT INTO Students (sid, name, login, age, gpa)
VALUES (53650, 'Smith ', 'smith@math', 18, 3.5)
Database Management Systems
Raghu Ramakrishnan
26
Students relation before inserts:
sid
53666
53688
53650
name
Jones
Smith
Smith
login
jones@cs
smith@eecs
smith@math
age
18
18
19
gpa
3.4
3.2
3.8
Students relation after inserts:
sid
53666
53688
53650
53600
name
Jones
Smith
Smith
Green
Database Management Systems
login
jones@cs
smith@eecs
smith@math
green@ee
Raghu Ramakrishnan
age
18
18
19
18
gpa
3.4
3.2
3.8
3.5
27
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
53600 Green green@ee
18
3.5
Can delete all tuples satisfying some
condition (e.g., name = Smith):
DELETE
FROM Students S
WHERE S.name = 'Smith'
Students instance after delete:
sid name
login
53666 Jones jones@cs
53600 Green green@ee
Database Management Systems
Raghu Ramakrishnan
age
18
18
gpa
3.4
3.5
28
Adding and Deleting Tuples
(continued)
Insert a tuples into the Bank_Acct instance:
INSERT INTO Bank_Acct (acct, name, address, balance)
VALUES (1025, 'Blue', '14 Third St', 2344.22)
INSERT INTO Bank_Acct (acct, name, address, balance)
VALUES (1005, 'Jones', '11 First St', 1023.22)
INSERT INTO Bank_Acct (acct, name, address, balance)
VALUES (1002, 'Smith', '12 First St', 22.43)
INSERT INTO Bank_Acct (acct, name, address, balance)
VALUES (1003, 'Smith', '12 First St', 11000.12)
INSERT INTO Bank_Acct (acct, name, address, balance)
VALUES (1008, 'Green', '14 Fourth St', 1077.23)
INSERT INTO Bank_Acct (acct, name, address, balance)
VALUES (1010, 'Gates', '20 Tenth St', 5000000000.00)
Database Management Systems
Raghu Ramakrishnan
29
Adding and Deleting Tuples
(continued)
Bank_Acct instance after insert:
Acct Name Address
Balance
$1023.22
1005 Jones 11 First St
$22.43
1002 Smith 12 First St
1003 Smith 12 First St
$11000.12
1008 Green 14 Fourth St $1077.23
$5,000,000,000.00
1010 Gates 20 Tenth St
$2344.22
1025 Blue 14 Third St
Database Management Systems
Raghu Ramakrishnan
30
Adding and Deleting Tuples
(continued)
Delete all tuples satisfying some condition
(e.g., acct = 1008) from Bank_Acct instance:
DELETE
FROM Bank_Acct B
WHERE B.acct = 1008
Database Management Systems
Raghu Ramakrishnan
31
Adding and Deleting Tuples
(continued)
Bank_Acct instance after delete:
Acct
1005
1002
1003
1010
1012
1025
Name Address
Jones 11 First St
Smith 12 First St
Smith 12 First St
Gates 20 Tenth St
Smith 12 Second St
Blue 14 Third St
Balance
$1023.22
$22.43
$11000.12
$5,000,000,000.00
$443.77
$2344.22
Powerful variants of these commands are available; more later!
Database Management Systems
Raghu Ramakrishnan
32
The SQL Query Language
To find all 18 year old
students, we can write:
SELECT *
FROM Students S
WHERE S.age=18
sid
53666
53688
53650
sid
name
login
Jones jones@cs
Smith smith@eecs
Smith smith@math
name
53666 Jones
login
jones@cs
age gpa
18 3.4
18 3.2
19 3.8
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
Database Management Systems
Raghu Ramakrishnan
33
The SQL Query Language
(continued)
To find all bank customers whose name is
Smith :
SELECT *
FROM Bank_Acct B
WHERE B.name='Smith'
Name Address
Phone
6033335567
Smith 12 First St
Smith 12 Second St 6039788765
Database Management Systems
Raghu Ramakrishnan
Email
Smith@cs
Smith@ee
34
Adding and Deleting Tuples
(continued)
Insert tuples into the
Enrolled instance:
INSERT INTO Enrolled (sid, cid, grade)
VALUES ('53831', 'Carnatic 101', 'C')
INSERT INTO Enrolled (sid, cid, grade)
VALUES ('53831', 'Reggae 203', 'B')
INSERT INTO Enrolled (sid, cid, grade)
VALUES ('53650', 'Topology 112', 'A')
sid
cid
grade
INSERT INTO Enrolled (sid, cid, grade) 53831 Carnatic101
C
VALUES ('53666', 'History 105', 'B')
53831 Reggae203
B
53650 Topology112
A
53666 History105
B
Database Management Systems
Raghu Ramakrishnan
35
Querying Multiple Relations
What does the following query compute?
SELECT S.name, E.cid
FROM Students S, Enrolled E
WHERE S.sid=E.sid AND E.grade='B'
sid
53666
53688
53650
53600
sid
53831
53831
53650
53666
name
Jones
Smith
Smith
Green
cid
grade
Carnatic101
C
Reggae203
B
Topology112
A
History105
B
Database Management Systems
login
jones@cs
smith@eecs
smith@math
green@ee
age
18
18
19
18
gpa
3.4
3.2
3.8
3.5
we get:
S.name E.cid
Jones
History 105
Raghu Ramakrishnan
36
Querying Multiple Relations
(continued)
What does the following query compute?
SELECT B.name, C.email
FROM Bank_Acct B, Customer_Info C
WHERE B.name=C.name AND B.addr=C.addr
AND B.balance>$1000.00
Given the following instances of Bank_Acct
and Customer_Info
Database Management Systems
Raghu Ramakrishnan
37
Querying Multiple Relations
(continued)
Acct
1005
1002
1003
1008
1010
1012
Name
Jones
Smith
Smith
Green
Gates
Smith
Address
11 First St
12 First St
12 First St
14 Fourth St
20 Tenth St
15 Second St
Name Address
Jones 11 First St
Smith 12 First St
Green 14 Fourth St
Gates 11 First St
Smith 12 Second St
Database Management Systems
Balance
$1023.22
$22.43
$11000.12
$1077.23
$5,000,000,000.00
$443.77
Phone
6032223456
6033335567
7814447890
1223336789
6039788765
Raghu Ramakrishnan
Email
Jones@cs
Smith@cs
Green@cs
Gates@ms
Smith@ee
38
Querying Multiple Relations
(continued)
We get :
Name
Jones
Smith
Green
Database Management Systems
Email
Jones@cs
Smith@cs
Green@cs
Raghu Ramakrishnan
39
Logical DB Design: ER to Relational
Entity sets to tables.
sss
312-24-234
324-56-678
ssn
name
Employees
Database Management Systems
name
John
Jack
lot
18
2
lot
CREATE TABLE Employees
(ssn CHAR(11),
name CHAR(20),
lot INTEGER,
PRIMARY KEY (ssn))
Raghu Ramakrishnan
40
Relationship Sets to Tables
since
name
ssn
dname
lot
Employees
did
Works_In
budget
Departments
Relationship Set
Translate this E-R model into relation database
Database Management Systems
Raghu Ramakrishnan
41
Relationship Sets to Tables
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.
Database Management Systems
CREATE TABLE Works_In(
ssn CHAR(1),
did INTEGER,
since DATE,
PRIMARY KEY (ssn, did),
FOREIGN KEY (ssn)
REFERENCES Employees,
FOREIGN KEY (did)
REFERENCES Departments)
Raghu Ramakrishnan
42
Relationship Sets to Tables
since
name
ssn
dname
lot
Employees
did
Works_In
budget
Departments
Relationship Set
Translate this E-R model into relation database
Database Management Systems
Raghu Ramakrishnan
43
Entity Sets and their Relationship Set
CREATE TABLE Employees
(ssn CHAR(11),
name CHAR(20),
lot INTEGER,
PRIMARY KEY (ssn))
CREATE TABLE Departments
(did CHAR(11),
dname CHAR(20),
budget INTEGER,
PRIMARY KEY (did))
Database Management Systems
CREATE TABLE Works_In(
ssn CHAR(1),
did INTEGER,
since DATE,
PRIMARY KEY (ssn, did),
FOREIGN KEY (ssn)
REFERENCES Employees,
FOREIGN KEY (did)
REFERENCES Departments)
Raghu Ramakrishnan
44
Learning Example 1
Name
Id
Login
Students
Age
Id
GPA
Name
Credit
Courses
Enrolled_In
Grade
Translate this E-R model into relation database
Database Management Systems
45
Learning Example 2
Name
Addr
Patients
Phone
Name
Age
Manuf
Exp
Drug
Prescribed
Dosage
Database Management Systems
#days
46
Learning Example 3
from
name
ssn
Employees
to
dname
lot
did
Works_In2
budget
Departments
Translate this E-R model into relation database
Database Management Systems
47
Learning Example 4
name
dname
ssn
lot
Employees
from
did
Works_In3
Duration
budget
Departments
to
Translate this E-R model into relation database
Database Management Systems
48
Learning Example 5
since
name
ssn
dname
lot
Employees
address
did
Works_In
budget
Departments
Locations
capacity
Translate this E-R model into relation database
Database Management Systems
Raghu Ramakrishnan
49
CREATE TABLE Departments
(did CHAR(11),
dname CHAR(20),
budget INTEGER,
PRIMARY KEY (did))
CREATE TABLE Works_In(
ssn CHAR(11),
did INTEGER,
CREATE TABLE Employees
(ssn CHAR(11),
name CHAR(20),
lot INTEGER,
PRIMARY KEY (ssn))
CREATE TABLE Locations
(address CHAR(11),
capacity CHAR(20),
PRIMARY KEY (address))
address CHAR(20)
since DATE,
PRIMARY KEY (ssn, did, address),
FOREIGN KEY (ssn) REFERENCES Employees,
FOREIGN KEY (did) REFERENCES Departments)
FOREIGN KEY (address) REFERENCES Locations)
Database Management Systems
Raghu Ramakrishnan
50
Describe Key Constraints
since
name
dname
ssn
Each dept has at
most one
manager,
according to the
key constraint on
Manages.
lot
Employees
budget
did
Works_In
Departments
Relationship Set
since
name
ssn
dname
lot
Employees
Database Management Systems
Raghu Ramakrishnan
did
Manages
budget
Departments
key constraint
51
Translating ER Diagrams with Key Constraints
since
name
ssn
dname
lot
Employees
did
Manages
budget
Departments
Translate this E-R model into relation database
Database Management Systems
Raghu Ramakrishnan
52
Translating ER Diagrams with Key Constraints
Map relationship to a
table:
– Note that did is
the key now!
– Separate tables for
Employees and
Departments.
Database Management Systems
since
name
ssn
dname
lot
Employees
did
Manages
budget
Departments
CREATE TABLE Manages(
ssn CHAR(11),
did INTEGER,
since DATE,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees,
FOREIGN KEY (did) REFERENCES Departments)
Raghu Ramakrishnan
53
since
name
ssn
dname
lot
did
Employees
Manages
budget
Departments
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 Employees
(ssn CHAR(11),
name CHAR(20),
lot INTEGER,
PRIMARY KEY (ssn))
Database Management Systems
CREATE TABLE Departments
(did CHAR(11),
dname CHAR(20),
budget INTEGER,
PRIMARY KEY (did))
Raghu Ramakrishnan
54
Translating ER Diagrams with Key Constraints
Since each department
has a unique manager,
we could instead
combine Manages
and Departments.
since
name
ssn
dname
lot
Employees
Database Management Systems
did
Manages
budget
Departments
Raghu Ramakrishnan
55
Translating ER Diagrams with Key Constraints
CREATE TABLE Dept_Mgr(
did INTEGER,
dname CHAR(20),
budget REAL,
ssn CHAR(11),
since DATE,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees)
since
name
ssn
dname
lot
Employees
Database Management Systems
did
Manages
budget
Departments
Raghu Ramakrishnan
56
since
name
ssn
dname
lot
Employees
did
Manages
budget
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
CREATE TABLE Employees
(ssn CHAR(11),
name CHAR(20),
lot INTEGER,
PRIMARY KEY (ssn)) 57
Raghu Ramakrishnan
Can we do like this?
since
name
ssn
dname
lot
Employees
did
Works_In
budget
Departments
Each object in database should have a primary key!
Database Management Systems
Raghu Ramakrishnan
58
Learning Example 1
since
name
ssn
dbudget
lot
Employees
did
Manages2
dname
budget
Departments
Translate this E-R model into relation database
Database Management Systems
59
Learning Example 2
name
ssn
dname
lot
Employees
did
Manages3
budget
Departments
since
apptnum
Mgr_Appts
dbudget
Translate this E-R model into relation database
Database Management Systems
60
Learning Example 3
name
dname
ssn
lot
Employees
from
did
Works_In3
Duration
budget
Departments
to
Translate this E-R model into relation database
Database Management Systems
61
Learning Example 4
name
ssn
Employees
dname
lot
did
Works_In3
from
budget
Departments
to
Translate this E-R model into relation database
Database Management Systems
62
Describe 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
dname
did
lot
Employees
Manages
budget
Departments
Works_In
since
Database Management Systems
Raghu Ramakrishnan
63
Describe Participation Constraints
since
name
ssn
dname
did
lot
Employees
Manages
budget
Departments
Works_In
since
Translate this E-R model into relation database
Database Management Systems
64
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).
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
Raghu Ramakrishnan
65
CREATE TABLE Dept_Mgr(
Different?
Why?
did INTEGER,
dname CHAR(20),
budget REAL,
ssn CHAR(11),
since DATE,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees)
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
Raghu Ramakrishnan
66
Learning Example 1
since
name
ssn
dname
lot
Employees
did
Manages
budget
Departments
Translate this E-R model into relation database
Database Management Systems
Raghu Ramakrishnan
67
Learning Example 2
since
name
ssn
dname
did
lot
Employees
Manages
budget
Departments
Translate this E-R model into relation database
Database Management Systems
Raghu Ramakrishnan
68
Learning Example 3
since
name
ssn
dname
lot
Employees
did
Manages
budget
Departments
Works_In
Translate this E-R model into relation database
Database Management Systems
69
Learning Example 4
since
name
ssn
dname
Employees
budget
did
lot
Manages
Departments
Works_In
since
Translate this E-R model into relation database
Database Management Systems
70
Describe 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
Database Management Systems
cost
Policy
Raghu Ramakrishnan
pname
age
Dependents
71
Translating Weak Entity Sets
Weak entity set and identifying relationship
set are translated into a single table.
–
When the owner entity is deleted, all owned weak
entities must also be deleted.
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
Raghu Ramakrishnan
72
since
name
ssn
dname
did
lot
Employees
Manages
budget
Departments
name
ssn
lot
Employees
cost
Policy
pname
age
Dependents
Any Difference?
Database Management Systems
Raghu Ramakrishnan
73
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)
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
Raghu Ramakrishnan
74
Binary vs. Ternary Relationships
name
ssn
If each policy is
owned by just
1 employee:
–
Key
constraint on
Policies
would mean
policy can
only cover 1
dependent!
What are the
additional
constraints in
the 2nd
diagram?
Database Management Systems
pname
lot
Employees
Dependents
Covers
Bad design
Policies
policyid
cost
name
ssn
age
pname
lot
age
Dependents
Employees
Purchaser
Better design
policyid
Raghu Ramakrishnan
Beneficiary
Policies
cost
75
Review: Binary vs. Ternary Relationships
Why?
name
ssn
pname
lot
age
Dependents
Employees
Purchaser
Beneficiary
Policies
policyid
Database Management Systems
Raghu Ramakrishnan
cost
76
Binary vs. Ternary Relationships (Contd.)
CREATE TABLE Policies (
The key
policyid INTEGER,
constraints allow cost REAL,
us to combine
ssn CHAR(11) NOT NULL,
Purchaser with
PRIMARY KEY (policyid).
Policies and
FOREIGN KEY (ssn) REFERENCES Employees,
Beneficiary with
ON DELETE CASCADE)
Dependents.
Participation
CREATE TABLE Dependents (
constraints lead to pname CHAR(20),
NOT NULL
age INTEGER,
constraints.
policyid INTEGER,
PRIMARY KEY (pname, policyid).
FOREIGN KEY (policyid) REFERENCES Policies,
ON DELETE CASCADE)
Database Management Systems
Raghu Ramakrishnan
77
Learning Example 1
since
name
dname
ssn
did
lot
Employees
Manages
budget
Departments
Works_In
since
pname
Policy
age
Dependents
cost
Translate this E-R model into relation database
Database Management Systems
Raghu Ramakrishnan
78
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
Raghu Ramakrishnan
79
to
from
name
dname
ssn
lot
Employees
did
Departments
Works_In2
name
budget
dname
ssn
lot
Employees
from
did
Works_In3
Duration
budget
Departments
to
name
dname
ssn
lot
Employees
from
Database Management Systems
did
Works_In3
Duration
budget
Departments
to
80
to
from
name
dname
ssn
lot
Employees
did
Departments
Works_In2
name
budget
dname
ssn
lot
Employees
from
did
Works_In3
Duration
budget
Departments
to
name
dname
ssn
lot
Employees
from
Database Management Systems
did
Works_In3
Duration
budget
Departments
to
81
since
name
ssn
dname
lot
Employees
did
Manages
budget
Departments
Works_In
since
dname
name
ssn
did
lot
Employees
Manages
budget
Departments
Works_In
since
Database Management Systems
82
Views
A view is just a relation, but we store a
definition, rather than a set of tuples.
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
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.
Database Management Systems
Raghu Ramakrishnan
83
Views and Security
Views can be used to present necessary
information (or a summary), while hiding
details in underlying relation(s).
–
Given YoungStudents, but not Students or
Enrolled, we can find students s who have are
enrolled, but not the cid’s of the courses they are
enrolled in.
Database Management Systems
Raghu Ramakrishnan
84
Homework
Chapter 2, Exercise 2.4;
Transform your E-R model design to relational
database!
Due Day: Next Thursday.
Database Management Systems
Raghu Ramakrishnan
85
Homework: Describe E-R Design by SQL
since
name
dname
ssn
did
lot
Employees
Manages
budget
Departments
Works_In
since
pname
Policy
age
Dependents
cost
Database Management Systems
Raghu Ramakrishnan
86