EECE 433 Chapter 3, Spring 2012
American University of Beirut · Database Systems · 52 pages
Showing the first 10 of 52 pages. Download the PDF to see all of it.
More EECE 433 files
- Problems Chapter 3 · Spring 2012ChapterView
- Chapter 7 · Spring 2012ChapterView
- Chapter 8 · Spring 2012ChapterView
- Problems Chapter 1 & 2 · Spring 2012ChapterView
- Problems Chapter 5 · Spring 2012ChapterView
- Problems Chapter 6 Handout · Spring 2012ChapterView
- Chapter 19 · Spring 2012ChapterView
- Problems Chapter 4 · Spring 2012ChapterView
Show the text of this chapter
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
The Relational Model
Chapter 3
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Outline
What is a relation and how to crate it using SQL
How to access/retrieve/modify data from DBMS
using SQL
SQL commands to destroy/change tables
Integrity Constraints
How DBMS enforces integrity constraints
Converting ER diagram to Relation
Views using queries
Internet shop example
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Relational Database: Definitions
Relational database: a set of relations
Relation: made up of 2 parts:
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).
Instance of the schema: a table, with rows and
columns.
#Rows = cardinality, #fields = degree / arity.
Can think of a relation as a set of rows or
tuples (i.e., all rows are distinct).
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
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?
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
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.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
Outline
What is a relation and how to crate it using SQL
How to access/retrieve/modify data from DBMS
using SQL
SQL commands to create/destroy/change tables
Integrity Constraints
How DBMS enforces integrity constraints
Converting ER diagram to Relation
Views using queries
Internet shop example
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
SQL Overview (1/2)
SQL = Structured Query Language
SQL can be divided into two parts: The Data
Manipulation Language (DML) and the Data
Definition Language (DDL).
The query and update commands form the DML
part of SQL:
SELECT - extracts data from a database
UPDATE - updates data in a database
DELETE - deletes data from a database
INSERT INTO - inserts new data into a database
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
The SQL Query Language
To find all 18 year old students, we can
write:
SELECT *
FROM Students S
WHERE S.age=18
•To find just names and logins, replace the first line:
SELECT S.name, S.login
sid
name
login
age gpa
53666 Jones
jones@cs
18
3.4
53688 Smith
smith@ee
18
3.2
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
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=“A”
S.name
E.cid
Smith
Topology112
sid
cid
grade
53831 Carnatic101
C
53831 Reggae203
B
53650 Topology112
A
53666 History105
B
Given the following instance
of Enrolled :
we get:
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
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!
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Modifying column values (ie
rows)
UPDATE Students S
SET S.age = S.age + 1, S.gpa = S.gpa – 1
WHERE S.sid = 53688
Note: The WHERE is applied first to find
the desired row, then SET is applied to
change the specific fields.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Try SQL
http://www.w3schools.com/SQL/sql_t
ryit.asp
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Outline
What is a relation and how to crate it using SQL
How to access/retrieve data from DBMS using
SQL
SQL commands to create/destroy/change tables
Integrity Constraints
How DBMS enforces integrity constraints
Converting ER diagram to Relation
Views using queries
Internet shop example
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
SQL Overview (2/2)
The DDL part of SQL permits database tables to
be created or deleted. The most important DDL
statements in SQL are:
CREATE DATABASE - creates a new database
ALTER DATABASE - modifies a database
CREATE TABLE - creates a new table
ALTER TABLE - modifies a table
DROP TABLE - deletes a table
CREATE INDEX - creates an index (search key)
DROP INDEX - deletes an index
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
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.
As another example, the
Enrolled table holds
information about courses
that students take.
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 3ed, R. Ramakrishnan and J. Gehrke
1
Destroying and Altering Relations
Destroys the relation Students. The schema
information and the tuples are deleted.
DROP TABLE Students
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. You could also
DROP COLUMN.
ALTER TABLE Students
ADD COLUMN firstYear INTEGER
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
Outline
What is a relation and how to crate it using SQL
How to access/retrieve data from DBMS using
SQL
SQL commands to destroy/change tables
Integrity Constraints
How DBMS enforces integrity constraints
Converting ER diagram to Relation
Views using queries
Internet shop example
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
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!
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
1
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. (ie no subset
fields of the key can be a key)
If there’s >1 key for a relation, one of the keys is
chosen (by DBA) to be the primary key.
A key combined with another field is called a superkey.
E.g., sid is a key for Students. (What about
name?) The set {sid, gpa} is a superkey.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
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
(sid CHAR(20)
cid CHAR(20),
grade CHAR(2),
PRIMARY KEY (sid,cid) )
“For a given student and course,
there is a single grade.” vs.
“Students can take only one
course, and receive a single
grade for that course; further,
no two students in a course
receive the same grade.”
Used carelessly, an IC can
prevent the storage of database
instances that arise in practice!
CREATE TABLE Enrolled
(sid CHAR(20)
cid CHAR(20),
grade CHAR(2),
PRIMARY KEY (sid),
UNIQUE (cid, grade) )
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
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!
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
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 )
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
sid
cid
grade
53666 Carnatic101
C
53666 Reggae203
B
53650 Topology112
A
53666 History105
B
Enrolled
Students
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Outline
What is a relation and how to crate it using SQL
How to access/retrieve data from DBMS using
SQL
SQL commands to destroy/change tables
Integrity Constraints
How DBMS enforces integrity constraints
Converting ER diagram to Relation
Views using queries
Internet shop example
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
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.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Referential Integrity in SQL
SQL/92 and SQL:1999
support all 4 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)
CREATE TABLE Enrolled
(sid CHAR(20),
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 3ed, R. Ramakrishnan and J. Gehrke
2
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.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Outline
What is a relation and how to crate it using SQL
How to access/retrieve data from DBMS using
SQL
SQL commands to destroy/change tables
Integrity Constraints
How DBMS enforces integrity constraints
Converting ER diagram to Relation
Views using queries
Internet shop example
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Logical DB Design: ER to Relational
Entity sets to tables - straightforward
CREATE TABLE Employees
(ssn CHAR(11),
name CHAR(20),
lot INTEGER,
PRIMARY KEY (ssn))
Employees
ssn
name
lot
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
2
Relationship Sets to Tables
In translating a relationship
set to a relation, attributes
of the relation must include:
All descriptive attributes.
Keys for each
participating entity set
(as foreign keys).
• This set of attributes
forms a superkey for
the relation.
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)
dname
budget
did
since
lot
name
ssn
Works_In
Employees
Departments
• Simple case: No
participation constraint
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
3
Translating Many to one
constraint
Each dept has at
most one
manager,
according to the
key constraint on
Manages.
Translation to
relational model?
dname
budget
did
since
lot
name
ssn
Manages
Employees
Departments
We can not have two
rows with same did
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
3
Translating ER Diagrams with Key
Constraints
Map relationship to
a table:
Note that did is
the key now!
Separate tables
for Employees
and
Departments.
Since each
department has a
unique manager,
we could instead
combine Manages
and 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 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 3ed, R. Ramakrishnan and J. Gehrke
3
Review: 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!)
lot
name
dname
budget
did
since
name
dname
budget
did
since
Manages
since
Departments
Employees
ssn
Works_In
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
3
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)
Participation
Many to 1
Can not delete employee
if pointed by dept
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
3
Works_in particpation?
How would you implement it using
CHECK(..) constraint.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
3
Can we have total participation
with the first relation model?
CREATE TABLE Manages(
ssn CHAR(11) NOT NULL,
did INTEGER,
since DATE,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees,
FOREIGN KEY (did) REFERENCES Departments)
Key learning:
For many to one relationship, combine entity
with relationship into one relation. Especially
useful when we have total participation
constraint.
Does this
work?
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
3
Review: 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.
lot
name
age
pname
Dependents
Employees
ssn
Policy
cost
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
3
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)
Many to 1
Weak entity
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
3
Review: ISA Hierarchies
Contract_Emps
name
ssn
Employees
lot
hourly_wages
ISA
Hourly_Emps
contractid
hours_worked
As in C++, or other PLs,
attributes are inherited.
If we declare A ISA B, every A
entity is also considered to be a
B entity.
Overlap constraints: Can Joe be an Hourly_Emps as well
as a Contract_Emps entity? (Allowed/disallowed)
Covering constraints: Does every Employees entity also
have to be an Hourly_Emps or a Contract_Emps entity?
(Yes/no)
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
3
Translating ISA Hierarchies to
Relations
General approach:
3 relations: Employees, Hourly_Emps and
Contract_Emps.
• Hourly_Emps: Every employee is recorded in
Employees. For hourly emps, extra info recorded in
Hourly_Emps (hourly_wages, hours_worked, ssn); must
delete Hourly_Emps tuple if referenced Employees
tuple is deleted).
• Queries involving all employees easy, those involving
just Hourly_Emps require a join to get some
attributes.
Alternative: Just Hourly_Emps and Contract_Emps.
Hourly_Emps: ssn, name, lot, hourly_wages, hours_worked.
Each employee must be in one of these two subclasses.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
4
Review: Binary vs. Ternary
Relationships
Each policy is
owned by just
1 employee,
and each
dependent is
tied to the
covering
policy.
Every policy
has an owner.
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 3ed, R. Ramakrishnan and J. Gehrke
4
Binary vs. Ternary Relationships
(Contd.)
The key
constraints allow
us to combine
Purchaser with
Policies and
Beneficiary with
Dependents.
Participation
constraints lead to
NOT NULL
constraints.
What if Policies is
a weak entity set?
Add ssn to policyid
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 3ed, R. Ramakrishnan and J. Gehrke
4
Outline
What is a relation and how to crate it using SQL
How to access/retrieve data from DBMS using
SQL
SQL commands to destroy/change tables
Integrity Constraints
How DBMS enforces integrity constraints
Converting ER diagram to Relation
Views using queries
Internet shop example
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
4
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. Use: RESTRICT to disallow or CASCADE
to drop the views as well.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
4
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 3ed, R. Ramakrishnan and J. Gehrke
4
Outline
What is a relation and how to crate it using SQL
How to access/retrieve data from DBMS using
SQL
SQL commands to destroy/change tables
Integrity Constraints
How DBMS enforces integrity constraints
Converting ER diagram to Relation
Views using queries
Internet shop example
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
4
Case Study (cont-d): Conceptual
Schema
address
cid
isbn
price
Yr_publish
cname
Customers
Books
Orders
Order_date
Ship_Date
qty
cardnum
Qty_in_stock
Author
title
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
4
Internet Shop Example
CREATE TABLE Books(
isbn
CHAR(10),
title
CHAR(80),
author
CHAR(80),
qty_in_stock
INTEGRER,
price
REAL,
year_published
INTEGER,
PRIMARY KEY(isbn))
CREATE TABLE Orders(
isbn
CHAR(10),
cid
INTEGER,
cardnum CHAR(16),
qty
INTEGER,
order_date
DATE,
ship_date
DATE,
PRIMARY KEY(isbn, cid),
FOREIGN KEY (isbn) REFERENCES Books,
FOREIGN KEY (cid) REFERENCES Customers)
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
4
Internet Shop Example
CREATE TABLE Customers(cid
INTEGER,
cname
CHAR(80),
address
CHAR(200),
PRIMARY KEY(cid))
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
4
Internet Shop Example
New Requirement:
Purchase several books in a single order.
Customers should be able to distinguish
between several orders placed in the
same day.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
5
Internet Shop Example
Add an ordernum .
The combination of ordernum and ISBN will
uinquely identify an order. So we can have a
combination of multiple ISBNS for the same order
Note that the ordernum also uniquely identifies cid.
CREATE TABLE Orders(
ordernum
INTEGER,
isbn
CHAR(10),
cid
INTEGER,
cardnum CHAR(16),
qty
INTEGER,
order_date
DATE,
ship_date
DATE,
PRIMARY KEY(isbn, ordernum),
FOREIGN KEY (isbn) REFERENCES Books,
FOREIGN KEY (cid) REFERENCES Customers)
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
5
Internet Shop Example
New Requirement:
Protect credit card info from customer access
CREATE VIEW OrderInfo(isbn, cid, qty, order_date, ship_date)
AS SELECT O.isbn, O.cid, O.qty, O.order_date,
O.ship_date
FROM ORDERS O
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke
5
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