1. Functional Dependencies
Definition:
If two tuples agree on the attributes
A , A , … A
1 2 n
then they must also agree on the attributes
B , B , … B
1 2 m
Formally:
A , A , … A
1 2 n
B , B , … B
1 2 m
Motivating example for the study of functional dependencies:
Name Social Security Number Phone Number
2. Examples
Product: name price, manufacturer
Person: ssn name, age
Company: name stock price, president
Key of a relation is a set of attributes that:
- functionally determines all the attributes of the relation
- none of its subsets determines all the attributes.
Superkey: a set of attributes that contains a key.
3. Finding the Attributes of a
Relation
Given a relation constructed from an E/R diagram, what is its key?
Rules:
1. If the relation comes from an entity set,
the key of the relation is the set of attributes which is the
key of the entity set.
address name ssn
Person
4. Rules for Binary Relationships
Several cases are possible for a binary relationship E1 - E2:
1. Many-many: the key includes the key of E1 together with the
key of E2.
What happens for:
2. Many-one:
3. One-one:
Person
buys
Product
name
price name ssn
5. Rules for Multiway Relationships
None, really.
Except: if there is an arrow from the relationship to E, then
we don’t need the key of E as part of the relation key.
Purchase
Product
Person
Store
Payment Method
6. Some Properties of FD’s
A , A , … A
1 2 n
B , B , … B
1 2 m
A , A , … A
1 2 n 1
Is equivalent to
B
A , A , … A
1 2 n 2
B
A , A , … A
1 2 n m
B
…
A , A , … A
1 2 n i
A Always holds.
Splitting rule
and
Combing rule
7. Comparing Functional
Dependencies
Functional dependencies: a statement about the set of allowable
databases.
Entailment and equivalence: comparing sets of functional dependencies
Entailment: a set of functional dependencies S1 entails a set S2 if:
any database that satisfies S1 much also satisfy S2.
Example: {A B, B C}
entails
A C
Equivalence: two sets of FD’s are equivalent if each entails the
other.
{A B, B C } is equivalent to {A B, A C, B C}
8. Closure of a set of Attributes
Given a set of attributes A and a set of dependencies C,
we want to find all the other attributes that are functionally
determined by A.
In other words, we want to find the maximal set of attributes B,
such that for every B in B,
C entails A B.
9. Closure Algorithm
Start with Closure=A.
Until closure doesn’t change do:
if is in C, and
B is not in Closure
then
add B to closure.
A , A , … A
1 2 n
B
A , A , … A
1 2 n
are all in the closure, and
10. Example
A B C
A D E
B D
A F B
Closure of {A,B}:
Closure of {A, F}:
11. Problems in Designing Schema
Name SSN Phone Number
Fred 123-321-99 (201) 555-1234
Fred 123-321-99 (206) 572-4312
Joe 909-438-44 (908) 464-0028
Joe 909-438-44 (212) 555-4000
Problems:
- redundancy
- update anomalies
- deletion anomalies
12. Relation Decomposition
Name SSN
Fred 123-321-99
Joe 909-438-44
Name Phone Number
Fred (201) 555-1234
Fred (206) 572-4312
Joe (908) 464-0028
Joe (212) 555-4000
Break the relation into two relations:
13. Decompositions in General
A , A , … A
1 2 n
Let R be a relation with attributes
Create two relations R1 and R2 with attributes
B , B , … B
1 2 m
C , C , … C
1 2 l
Such that:
B , B , … B
1 2 m
C , C , … C
1 2 l
= A , A , … A
1 2 n
And
-- R1 is the projection of R on
-- R2 is the projection of R on
B , B , … B
1 2 m
C , C , … C
1 2 l
14. Boyce-Codd Normal Form
A simple condition for removing anomalies from relations:
A relation R is in BCNF if and only if:
Whenever there is a nontrivial dependency
for R , it is the case that { }
a super-key for R.
A , A , … A
1 2 n
B
A , A , … A
1 2 n
In English (though a bit vague):
Whenever a set of attributes of R is determining another attribute,
should determine all the attributes of R.
15. Example
Name SSN Phone Number
Fred 123-321-99 (201) 555-1234
Fred 123-321-99 (206) 572-4312
Joe 909-438-44 (908) 464-0028
Joe 909-438-44 (212) 555-4000
What are the dependencies?
What are the keys?
Is it in BCNF?
16. And Now?
SSN Name
123-321-99 Fred
909-438-44 Joe
SSN Phone Number
123-321-99 (201) 555-1234
123-321-99 (206) 572-4312
909-438-44 (908) 464-0028
909-438-44 (212) 555-4000
17. What About This?
Name Price Category
Gizmo $19.99 gadgets
Question:
Find an example of a 2-attribute relation that is not in BCNF.
19. More Careful Strategy
Find a dependency that violates the BCNF condition:
A , A , … A
1 2 n
B , B , … B
1 2 m
A’s
Others B’s
R1 R2
20. Example Decomposition
Name Social-security-number Age Eye Color Phone Number
Functional dependencies:
Name + Social-security-number Age, Eye Color
What if we also had an attribute Draft-worthy, and the FD:
Age Draft-worthy
21. Decomposition Based on BCNF
is Necessarily Correct
Attributes A, B, C. FD: A C
Relations R1[A,B] R2[A,C]
Tuples in R1: (a,b)
Tuples in R2: (a,c), (a,d)
Tuples in the join of R1 and R2: (a,b,c), (a,b,d)
Can (a,b,d) be a bogus tuple?
22. Multivalued Dependencies
Name SSN Phone Number Course
Fred 123-321-99 (206) 572-4312 CSE-444
Fred 123-321-99 (206) 572-4312 CSE-341
Fred 123-321-99 (206) 432-8954 CSE-444
Fred 123-321-99 (206) 432-8954 CSE-341
The multivalued dependencies are:
Name, SSN Phone Number
Name, SSN Course
4th Normal form: replace FD by MVD.