Functional Dependencies: R&G Chapter 19
Functional Dependencies: R&G Chapter 19
Functional Dependencies: R&G Chapter 19
Dependencies
R&G Chapter 19
ABCD
A
AB
CD
B
AC
BD
X (t1) = X (t2)
Y (t1) = Y (t2)
Explanation:
CAUTION: The opposite is not true.
X Y means:
If for 2 tuples X is the same, then Y must also be the
same.
Read as determines
FDs Continued
An FD is a statement about all allowable
relations.
Identified based on semantics, NOT
instances
Given an instance of R, we can disprove a
FD, but we cannot verify the validity of a FD.
Question: Are FDs related to keys?
if K all attributes of R then K is a
superkey for R
(does not require K to be minimal.)
FDs are a generalization of keys.
Hourly_Emps
Problems Due to R W
S
123-22-3666
231-31-5368
131-24-3650
434-26-3751
612-67-4134
N
Attishoo
Smiley
Smethurst
Guldu
Madayan
L
48
22
35
35
35
R
8
8
5
5
8
W
10
10
7
7
10
H
40
30
30
32
40
R=6, W=?
Hourly_Emps
Detecting Reduncancy
S
123-22-3666
231-31-5368
131-24-3650
434-26-3751
612-67-4134
N
Attishoo
Smiley
Smethurst
Guldu
Madayan
L
48
22
35
35
35
R
8
8
5
5
8
W
10
10
7
7
10
H
40
30
30
32
40
Decomposing a Relation
Redundancy can be removed by
chopping the relation into pieces
(vertically!)
FDs are used to drive this process.
R W is causing the problems, so
SNLRWH
what relations?
S decompose
N
L R into
H
123-22-3666 Attishoo
48 8
40
231-31-5368 Smiley
22 8
30
131-24-3650 Smethurst 35 5
30
434-26-3751 Guldu
35 5
32
612-67-4134 Madayan
35 8
40
Hourly_Emps2
R W
8 10
5 7
Wages
Refining an ER Diagram
Before:
1st diagram becomes:
Workers(S,N,L,D,Si)
name
Departments(D,M,B)
ssn
lot
Lots associated with
workers.
Employees
Suppose all workers in
a dept are
assigned the same lot:
DL
After:
Redundancy; fixed by:
Workers2(S,N,D,Si)
name
Dept_Lots(D,L)
ssn
Departments(D,M,B)
Can fine-tune this:
Employees
Workers2(S,N,D,Si)
Departments(D,M,B,L)
since
dname
did
Works_In
Departments
budget
since
dname
did
Works_In
budget
lot
Departments
Rules of Inference
Armstrongs Axioms (X, Y, Z are sets of attributes):
Reflexivity: If X Y, then X Y
Augmentation: If X Y, then XZ YZ for any Z
Transitivity: If X Y and Y Z, then X Z
These are sound and complete inference rules for FDs!
i.e., using AA you can compute all the FDs in F+ and only these
FDs.
Some additional rules (that follow from AA):
Union: If X Y and X Z, then X YZ
Decomposition: If X YZ, then X Y and X Z
Example
Contracts(cid,sid,jid,did,pid,qty,value), and:
C is the key: C CSJDPQV
Proj purchases each part using single contract: JP C
Dept purchases at most 1 part from a supplier: SD P
Problem: Prove that SDJ is a key for Contracts
JP C, C CSJDPQV imply JP CSJDPQV
(by transitivity) (shows that JP is a key)
SD P implies SDJ JP (by augmentation)
SDJ JP, JP CSJDPQV imply SDJ CSJDPQV
(by transitivity) thus SDJ is a key.
Attribute Closure
Computing the closure of a set of FDs can be expensive.
(Size of closure is exponential in # attrs!)
Typically, we just want to check if a given FD X Y is in
the closure of a set of FDs F. An efficient check:
Compute attribute closure of X (denoted X+) wrt F.
X+ = Set of all attributes A such that X A is in F+
X+ := X
Repeat until no change: if there is an FD U V in F such that U is
in X+, then add V to X+
Check if Y is in X+
Approach can also be used to find the keys of a relation.
If all attributes of R are in the closure of X then X is a
superkey for R.
Q: How to check if X is a candidate key?
Next Class
Normal forms and normalization
Table decompositions