The Relational Model

Download Report

Transcript The Relational Model

The Relational Model
Chapter 3
Instructor: Xin Zhang
Database Management Systems
Raghu Ramakrishnan
1
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
Database Management Systems
Raghu Ramakrishnan
2
Relational Database: Definitions
Relational database: a set of relations.
 Relation: consist of 2 parts:

– Instance : a table, with rows and columns. #rows =
cardinality, #fields = degree
– 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.

Query Language (SQL) is well-defined.
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
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!

Key and foreign key ICs are the most
common; more general ICs supported too.
Database Management Systems
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),
grade CHAR(2),
PRIMARY KEY (sid),
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
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
12
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 (cid) REFERENCES Courses
Enrolled FOREIGN KEY (sid) REFERENCES Students )
Students
sid
cid
grade
53666
53666
53650
53666
Carnatic101
Reggae203
Topology112
History105
Database Management Systems
C
B
A
B
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
13
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
14
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
15
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
16
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
17
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 / SET DEFAULT
(sets foreign key value
of referencing tuple)
Database Management Systems
Raghu Ramakrishnan
18
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
19
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
20
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)
name
login
Jones jones@cs
Smith smith@eecs
Smith smith@math
Raghu Ramakrishnan
age
18
18
19
gpa
3.4
3.2
3.8
21
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
22
Creating Relations in SQL (cont)

Creates the Bank Account
relation.
CREATE TABLE Bank_Acct
(acct CHAR(4),
name CHAR(20),
address char(40),
balance REAL)
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
Raghu Ramakrishnan
Balance
$1023.22
$22.43
$11000.12
$1077.23
$5,000,000,000.00
$2344.22
23
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
24
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
25

Students relation before inserts:
sid
53666
53688
53650

name
Jones
Smith
Smith
age
18
18
19
gpa
3.4
3.2
3.8
Students relation after inserts:
sid
53666
53688
53650
53600

login
jones@cs
smith@eecs
smith@math
name
Jones
Smith
Smith
Green
login
jones@cs
smith@eecs
smith@math
green@ee
age
18
18
19
18
gpa
3.4
3.2
3.8
3.5
Question: what happens if you insert the
same info at a second time?
Database Management Systems
Raghu Ramakrishnan
26
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
27
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
28
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
29
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
30
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
31
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
32
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
33
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
34
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
35
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
36
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
37
Querying Multiple Relations
(continued)

We get :
Name
Jones
Smith
Green
Database Management Systems
Email
Jones@cs
Smith@cs
Green@cs
Raghu Ramakrishnan
38
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
39
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
40
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
41
Relationship Sets to Tables
since
name
ssn
dname
lot
Employees
did
Works_In
budget
Departments
Relationship Set
Database Management Systems
Raghu Ramakrishnan
42
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
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
since
name
ssn
dname
lot
Employees
address
budget
did
Works_In
Departments
Locations
capacity
CREATE TABLE Works_In(
ssn CHAR(11),
did INTEGER,
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
45
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
46
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
47
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
48
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
49
Translating ER Diagrams with Key Constraints
CREATE TABLE Dept_Mgr(
Since each department
has a unique manager,
we could instead
combine Manages
and Departments.
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
50
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)) 51
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
52
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
53
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
54
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
55
Different?
since
name
ssn
dname
lot
Employees
did
Manages
budget
Departments
Some departments may not have manager currently!
since
name
ssn
dname
did
lot
Employees
Manages
budget
Departments
Each department should always have manager!
Database Management Systems
Raghu Ramakrishnan
56
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
57
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
58
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
59
Review: Binary vs. Ternary Relationships
Why?
name
ssn
pname
lot
age
Dependents
Employees
Purchaser
Beneficiary
Policies
policyid
Database Management Systems
Raghu Ramakrishnan
cost
60
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
61
since
name
dname
ssn
did
lot
Employees
Manages
budget
Departments
Works_In
since
pname
Policy
age
Dependents
cost
Database Management Systems
Raghu Ramakrishnan
62
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
63
How to obtain your Oracle account?
https://servlets.uncc.edu/oracle-account/
Database Management Systems
Raghu Ramakrishnan
64