TERM 2008-09
B. Tech II/IT
II Semester
S.NO
INDEX
UNIT-3 PPT SLIDES
Module as per
Lecture
PPT
Session planner
No
Slide NO
-----------------------------------------------------------------------------------------1. Introduction to relational model L1
L1- 1 to L1- 13
2. Enforcing integrity constraints
L2
L2- 1 to L2- 3
3. Logical Database Design
L3 L3- 1 to L3- 6
4. Logical Database Design
L4 L4- 1 to L4 -6
5. Introduction to Views
L5
L5- 1 to
L5- 10
6. Relational Algebra
L6
L6- 1 to L6- 17
7. Tuple Relational Calculus
L7
L7- 1 to L7- 3
8. Domain Relational Calculus
L8
L8- 1 to L8- 7
Can think of a relation as a set of rows or tuples (i.e., all rows are
distinct).
Slide No:L1-1
sid
53666
53688
53650
name
login
Jones jones@cs
Smith smith@eecs
Smith smith@math
age gpa
18 3.4
18 3.2
19 3.8
Slide No:L1-2
Slide No:L1-3
name
login
age gpa
SELECT *
53666 Jones jones@cs 18 3.4
FROM Students S 53688 Smith smith@ee 18 3.2
WHERE S.age=18
S.name, S.login
Slide No:L1-4
18
18
19
3.4
3.2
3.8
we get:
sid
53831
53831
53650
53666
cid
grade
Carnatic101
C
Reggae203
B
Topology112
A
History105
B
S.name E.cid
Smith
Topology112
Slide No:L1-5
grade:
CHAR(2))
Slide No:L1-6
integer
Slide No:L1-7
S
= Smith
Slide No:L1-8
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!
Slide No:L1-9
Slide No:L1-10
Slide No:L1-11
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!
Slide No:L1-12
cid
grade
Carnatic101
C
Reggae203
B
Topology112
A
History105
B
Students
sid
53666
53688
53650
name
login
Jones jones@cs
Smith smith@eecs
Smith smith@math
Slide No:L1-13
age gpa
18 3.4
18 3.2
19 3.8
Slide No:L2-1
Slide No:L2-2
Slide No:L2-3
CREATE TABLE
ssn
name
Employees
(ssn CHAR(11),
name CHAR(20),
lot INTEGER,
lot
Employees
PRIMARY KEY
(ssn))
Slide No:L3-1
Slide No:L3-2
since
name
ssn
dname
lot
Employees
did
Manages
budget
Departments
Translation to
relational model?
1-to-1
1-to Many
Many-to-1
Many-to-Many
Slide No:L3-3
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.
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)
Slide No:L3-4
name
ssn
did
lot
Employees
dname
Manages
Works_In
since
Slide No:L3-5
budget
Departments
Employees,
name
ssn
lot
Employees
cost
Policy
Slide No:L4-1
pname
age
Dependents
Slide No:L4-2
Employees,
name
ssn
lot
Employees
hourly_wages
hours_worked
ISA
Hourly_Emps
contractid
Contract_Emps
Slide No:L4-3
Slide No:L4-4
ssn
name
pname
lot
Employees
Covers
Dependents
Bad design
Policies
policyid
ssn
name
age
cost
pname
lot
age
Dependents
Employees
Purchaser
Better design
Beneficiary
Policies
Slidepolicyid
No:L4-5
cost
Participation
constraints lead
to NOT NULL
constraints.
What if Policies
is a weak entity
set?
Employee
Policie
Views
grade)
Slide No:L5-2
View Definition
A relation that is not of the conceptual model but is
made visible to a user as a virtual relation is called
a view.
A view is defined using the create view statement
which has the form
create view v as < query expression >
where <query expression> is any legal SQL
expression. The view name is represented by v.
Once a view is defined, the view name can be used to
refer to the virtual relation that the view generates.
Slide No:L5-3
Example Queries
A view consisting of branches and their customers
create view all_customer as
(select branch_name, customer_name
from depositor, account
where depositor.account_number =
account.account_number )
union
(select branch_name, customer_name
from borrower, loan
where borrower.loan_number = loan.loan_number )
Find all customers of the Perryridge branch
select customer_name
from all_customer
where branch_name = 'Perryridge'
Slide No:L5-4
Uses of Views
Slide No:L5-5
Processing of Views
When a view is created
the query expression is stored in the database along with the
view name
the expression is substituted into any query using the view
from v1 to v2
Slide No:L5-6
View Expansion
A way to define the meaning of views defined in terms of
other views.
Let view v1 be defined by an expression e1 that may itself
contain uses of view relations.
View expansion of an expression repeats the following
replacement step:
repeat
Find any view relation vi in e1
Replace the view relation vi by the expression defining vi
until no more view relations are present in e1
As long as the view definitions are not recursive, this loop
will terminate
Slide No:L5-7
With Clause
The with clause provides a way of defining a
temporary view whose definition is available only to
the query in which the with clause occurs.
Find all accounts with the maximum balance
with max_balance (value) as
select max (balance)
from account
select account_number
from account, max_balance
where account.balance = max_balance.value
Slide No:L5-8
Slide No:L5-9
Update of a View
Create a view of all loan data in the loan relation,
hiding the amount attribute
create view loan_branch as
select loan_number, branch_name
from loan
Add a new tuple to loan_branch
insert into loan_branch
values ('L-37, 'Perryridge)
This insertion must be represented by the insertion
of the tuple
('L-37', 'Perryridge', null )
into the loan relation
Slide No:L5-10
Slide No:L6-1
Preliminaries
A query is applied to relation instances, and the result of a
query is also a relation instance.
Schemas of input relations for a query are fixed (but query
will run regardless of instance!)
The schema for the result of a given query is also fixed!
Determined by definition of query language constructs.
Positional vs. named-field notation:
Positional notation easier for formal definitions, namedfield notation more readable.
Both used in SQL
Slide No:L6-2
Example Instances
R1 sid
S2
28
31
44
58
22
58
bid
day
101 10/10/96
103 11/12/96
Slide No:L6-3
Relational Algebra
Basic operations:
Selection (
) Selects a subset of rows from relation.
Projection (
) Deletes unwanted columns from relation.
Cross-product (
) Allows us to combine two relations.
Set-difference (
) Tuples in reln. 1, but not in reln. 2.
Union ( ) Tuples in reln. 1 and in reln. 2.
Additional operations:
Slide No:L6-4
Projection
Deletes attributes that are not
in projection list.
Schema of result contains
exactly the fields in the
projection list, with the same
names that they had in the
(only) input relation.
Projection operator has to
eliminate duplicates! (Why??)
sname
rating
yuppy
lubber
guppy
rusty
9
8
5
10
sname,rating(S2)
Slide No:L6-5
age
35.0
55.5
age(S2)
Selection
sid
28
58
rating 8(S2)
sname rating
yuppy 9
rusty
10
Slide No:L6-6
S1 S2
dustin
lubber
rusty
guppy
yuppy
7
8
10
5
9
S1 S2
45.0
55.5
35.0
35.0
35.0
S1 S2
Slide No:L6-7
Cross-Product
Each row of S1 is paired with each row of R1.
Result schema has one field per field of S1 and R1,
with field names `inherited if possible.
Conflict: Both S1 and R1 have a field called sid.
(sid) sname rating age
(sid) bid
day
22
dustin
45.0
22
22
dustin
45.0
58
31
lubber
55.5
22
31
lubber
55.5
58
58
rusty
10
35.0
22
58
rusty
10
35.0
58
Renaming operator:
(C(1 sid1, 5 sid 2), S1 R1)
Slide No:L6-8
Joins
R c S c ( R S)
Condition Join:
(sid)
22
31
sname
dustin
lubber
rating
7
8
S1
age
45.0
55.5
(sid)
58
58
bid
103
103
day
11/ 12/ 96
11/ 12/ 96
R1
Joins
Equi-Join: A special case of condition join where the
condition c contains only equalities.
sid
22
58
S1
sid
R1
Division
Not supported as a primitive operator, but useful for
expressing queries like:
Find sailors who have
reserved all boats.
Let A have 2xfields,
only
| xx, and
y y;A Bhave
y
B field y:
A/B =
Slide No:L6-11
pno
p1
p2
p3
p4
p1
p2
p2
p2
p4
pno
p2
B
1
sno
s1
s2
s3
s4
A/B1
pno
p2
p4
B2
sno
s1
s4
A/B2
Slide No:L6-12
pno
p1
p2
p4
B3
sno
s1
A/B3
Disqualified x values:
A/B:
x ( A)
x (( x ( A) B) A)
Slide No:L6-13
sname((
bid 103
Solution 2: (Temp1,
Reserves) Sailors)
bid 103
Re serves)
Slide No:L6-14
sname ((
Boats) Re serves Sailors)
color ' red '
A more efficient solution:
sname ( ((
Boats) Re s) Sailors)
sid bid color ' red '
Slide No:L6-15
Can identify all red or green boats, then find sailors whove
reserved one of these boats:
(Tempboats, (
Boats))
What happens if
is replacedby
Slide No:L6-16
in this qu
(Tempred,
sid
(Tempgreen,
((
sid
((
Boats) Re serves))
Boats) Re serves))
Relational Calculus
x1, x2,..., xn
Answer includes all tuples
p x1, x2,..., xn
make the formula
t
be true
DRC Formulas
Atomic formula:
or X op Y, or X op constant
Formula:
an atomic formula, or
p, p q, p q
X ( p( X ))
X ( p( X ))
X
Slide No:L7-3
I, N,T, A Sailors
The condition
ensures that
the domain variables I, N, T and A are bound to fields
of the same Sailors tuple.
The term
I, N,T, A to the left of `| (which should be
read as such that) says that every tuple I, N,T, A
that satisfies T>7 is in the answer.
Modify this query to answer:
Find sailors who are older than 18 or have a rating
under 9, and are called Joe.
Slide No:L8-2
I, N,T, A | I, N, T, A Sailors T 7
We have used
Ir , Br , D . . . as a shorthand for
Ir Br D . . .
Slide No:L8-3
I, N, T, A | I, N, T, A Sailors T 7
Slide No:L8-4
I, N,T, A | I, N, T, A Sailors
Ir, Br, D
Slide No:L8-5
I, N,T, A | I, N, T, A Sailors
B, BN, C Boats
...
..
Slide No:L8-6
e.g., S | S Sailors
Slide No:L8-7