Title: BCNF
1BCNF Lossless Decomposition
CS157B Lecture 13
- Prof. Sin-Min Lee
- Department of Computer Science
2Normalization
- Review on Keys
- superkey a set of attributes which will uniquely
identify each tuple in a relation - candidate key a minimal superkey
- primary key a chosen candidate key
- secondary key all the rest of candiate keys
- prime attribute an attribute that is a part of a
candidate key (key column) - nonprime attribute a nonkey column
3Normalization
- Functional Dependency Type by Keys
- whole (candidate) key ? nonprime attribute
full FD (no violation) - partial key ? nonprime attribute partial FD
(violation of 2NF) - nonprime attribute ? nonprime attribute
transitive FD (violation of 3NF) - not a whole key ? prime attribute violation of
BCNF
4Functional Dependencies
- Let R be a relation schema
- ? ? R and ? ? R
- The functional dependency
- ? ? ?holds on R iff for any legal relations
r(R), whenever two tuples t1 and t2 of r have
same values for ?, they have same values for ?.
- t1? t2 ? ? t1? t2 ?
- On this instance, A ? B does NOT hold, but B ? A
does hold.
A B
51. Closure
- Given a set of functional dependencies, F, its
closure, F , is all FDs that are implied by FDs
in F. - e.g. If A ? B, and B ? C,
- then clearly A ? C
6Armstrongs Axioms
- We can find F by applying Armstrongs Axioms
- if ? ? ?, then ? ? ?
(reflexivity) - if ? ? ?, then ? ? ? ? ?
(augmentation) - if ? ? ?, and ? ? ?, then ? ? ? (transitivity)
- These rules are
- sound (generate only functional dependencies that
actually hold) and - complete (generate all functional dependencies
that hold).
7Additional rules
- If ? ? ? and ? ? ?, then ? ? ? ? (union)
- If ? ? ? ?, then ? ? ? and ? ? ? (decomposition)
- If ? ? ? and ? ? ? ?, then ? ? ? ?
(pseudotransitivity) - The above rules can be inferred from Armstrongs
axioms.
8Example
- R (A, B, C, G, H, I)F A ? B A ? C CG
? H CG ? I B ? H - Some members of F
- A ? H
- by transitivity from A ? B and B ? H
- AG ? I
- by augmenting A ? C with G, to get AG ? CG
and then transitivity with CG ? I - CG ? HI
- by augmenting CG ? I to infer CG ? CGI,
- and augmenting of CG ? H to infer CGI ? HI,
- and then transitivity
92. Closure of an attribute set
- Given a set of attributes A and a set of FDs F,
closure of A under F is the set of all attributes
implied by A - In other words, the largest B such that
- A ? B
- Redefining super keys
- The closure of a super key is the entire
relation schema - Redefining candidate keys
- 1. It is a super key
- 2. No subset of it is a super key
10Computing the closure for A
- Simple algorithm
- 1. Start with B A.
- 2. Go over all functional dependencies, ? ? ? ,
in F - 3. If ? ? B, then
- Add ? to B
- 4. Repeat till B changes
11Example
- R (A, B, C, G, H, I)F A ? B A ? C CG
? H CG ? I B ? H - (AG) ?
- 1. result AG
- 2. result ABCG (A ? C and A ? B)
- 3. result ABCGH (CG ? H and CG ? AGBC)
- 4. result ABCGHI (CG ? I and CG ? AGBCH
- Is (AG) a candidate key ?
- 1. It is a super key.
- 2. (A) BC, (G) G.
- YES.
12Uses of attribute set closures
- Determining superkeys and candidate keys
- Determining if A ? B is a valid FD
- Check if A contains B
- Can be used to compute F
13Database Normalization
- Functional dependency (FD) means that
if - there is only one possible value of Y for
every value of X, then - Y is Functionally dependent on X.
- Is the following FDs hold?
X Y Z
10 B1 C1
10 B2 C2
11 B4 C1
12 B3 C4
13 B1 C1
14 B3 C4
14Database Normalization
- Functional Dependency is good. With functional
dependency the primary key (Attribute A)
determines the value of all the other non-key
attributes (Attributes B,C,D,etc.) - Transitive dependency is bad. Transitive
dependency exists if the primary/candidate key
(Attribute A) determines non-key Attribute B, and
Attribute B determines non-key Attribute C. - If a relation schema has more than one key, each
is called a candidate key - An attribute in a relation schema R is called
prim if it is a member of some candidate key of R
15First Normal Form (1NF)
- Each attribute must be atomic (single value)
- No repeating columns within a row (composite
attributes) - No multi-valued columns.
- 1NF simplifies attributes
- Queries become easier.
161NF
Deptno Dname Location
10 IT Leeds, Bradford, Kent
20 Research Hundredfold
30 Marketing Leeds
Deptno Location
10 Leeds
10 Bradfprd
10 Kent
20 Hundredfold
30 Leeds
Deptno Dname
10 IT
20 Research
30 Marketing
17Second Normal Form (2NF)
- Each attribute must be functionally dependent on
the primary key. - If the primary key is a single attribute, then
the relation is in 2NF - The test for 2NF involves testing for FDs whose
left-hand-side - attribute are part of the primary key
- Disallow partial dependency, where non-keys
attributes depend on - part of a composite primary key
- In short, remove partial dependencies
- 2NF improves data integrity.
- Prevents update, insert, and delete anomalies.
182NF
PNo PName PLoc EmpNo EName Salary Address HoursNo
Given the following FDs Assuming all
attributes are atomic, is the above relation in
the 1NF, 2NF ? Relation X1 Relation
X3 Relation X2
PNo EmpNo HoursNo
PNo PName PLoc
EmpNo EName Salary Address
19Third Normal Form (3NF)
- Remove transitive dependencies.
- Transitive dependency
- A non-prime attribute is dependent on another,
non-prime attribute or attributes - Attribute is the result of a calculation
- Examples
- Area code attribute based on City attribute of a
customer - Total price attribute of order entry based on
quantity attribute and unit price attribute
(calculated value) - Solution
- Any transitive dependencies are moved into a
smaller table.
20Transitive Dependence
Give a relation R, Assume the following FD
hold Note Both Ename and Address attributes
are non-key attributes in R, and since Address
depends on a non-Prime attribute Name, which
depends on the primary key(EmpNo), a transitive
dependency exists
EmpNo EName Salary Address
R2
R1
Ename Address
EmpNo EName Salary
Note If address is a prime attribute Then R is
in 3NF
21Modification Anomalies
- What happens when you want to
- add a new book?
- change the address of a patron?
- delete a patron record?
22Modification Anomalies
- Deletion anomaly
- deleting one fact about an entity deletes a fact
about another entity - Insertion anomaly
- cannot insert one fact about an entity unless a
fact about another entity is also added - Update anomaly
- changing one fact about an entity requires
multiple changes to a table
23Referential Integrity Constraint
- When we split a relation, we must pay attention
to the references across the newly formed
relations - E.g., a book must exist before it can be checked
out - CHECKOUT BookID Í BOOK BookID
- The DBMS or the applications will have to
check/enforce constraints
24Boyce-Codd Normal Form
- Every determinant is a candidate key
- ADVISER(SID,Major,Fname)
- STU-ADV(SID,Fname)ADV-SUBJ(Fname,Subject)
25Multi-valued Dependency
- Two or more functionally independent multi-valued
attributes are dependent on another attribute - EMPLOYEE(Name,Dependent,Project)
- Data redundancy and modification anomalies
- 4NF BCNF no multi-valued dependencies
- EMPLOYEE(Name,Dependent)
- EMPLOYEE(Name, Project)
26Database Normalization
- Boyce-Codd Normal Form (BCNF)
- A relation is in Boyce-Codd normal form (BCNF) if
every determinant in the table is a candidate
key. - (A determinant is any attribute whose value
determines other values with a row.) - If a table contains only one candidate key, the
3NF and the BCNF are equivalent. - BCNF is a special case of 3NF.
27A Table That Is In 3NF But Not In BCNF
Figure 5.7
28The Decomposition of a Table Structure to Meet
BCNF Requirements
Figure 5.8
29Lossless-join Decomposition
- For the case of R (R1, R2), we require that for
all possible relations r on schema R - r ?R1 (r ) X ?R2 (r )
- A decomposition of R into R1 and R2 is lossless
join if and only if at least one of the following
dependencies is in F - R1 ? R2 ? R1
- R1 ? R2 ? R2
30- R (A, B, C) F A ? B, B ? C)
- Can be decomposed in two different ways
- R1 (A, B), R2 (B, C)
- Lossless-join decomposition
- R1 ? R2 B and B ? BC
- Dependency preserving
- R1 (A, B), R2 (A, C)
- Lossless-join decomposition
- R1 ? R2 A and A ? AB
- Not dependency preserving (cannot check B ? C
without computing R1 X R2)
31Dependency Preservation
- Let Fi be the set of dependencies F that
include only attributes in Ri. - A decomposition is dependency preserving, if
- (F1 ? F2 ? ? Fn ) F
- If it is not, then checking updates for violation
of functional dependencies may require computing
joins, which is expensive.
32Dependency Preservation
- To check if a dependency ? ? ? is preserved in a
decomposition of R into R1, R2, , Rn we apply
the following test (with attribute closure done
with respect to F) - result ?while (changes to result) do for each
Ri in the decomposition t (result ? Ri) ?
Ri result result ? t - If result contains all attributes in ?, then the
functional dependency ? ? ? is preserved.
33Dependency Preservation
- We apply the test on all dependencies in F to
check if a decomposition is dependency preserving - This procedure takes polynomial time, instead of
the exponential time required to compute F and
(F1 ? F2 ? ? Fn)
34FD Example
- R (A, B, C )F A ? B, B ? CKey A
- R is not in BCNF
- Decomposition R1 (A, B), R2 (B, C)
- R1 and R2 now in BCNF
- Lossless-join decomposition
- Dependency preserving
35A Lossy Decomposition
36Aim of Normalization
- Goal for a relational database design is
- BCNF.
- Lossless join.
- Dependency preservation.
- If we cannot achieve this, we accept one of
- Lack of dependency preservation
- Redundancy due to use of 3NF
37Sample Data for a BCNF Conversion
Table 5.2
38Decomposition into BCNF
39(No Transcript)
40(No Transcript)
41Perform lossless-join decompositions of each of
the following scheme into BCNF schemes R(A, B,
C, D, E) with dependency set AB ? CDE, C ? D, D
? E
A B C D
A B C D
C D
A B C E
A B C D
D E
A B C
C D
A B C
D E
42Given the FDs B ? D, AB ? C, D ? B and the
relation A, B, C, D, give a two distinct
lossless join decomposition to BNCF indicating
the keys of each of the resulting relations.
A B C D
A B C D
B D
A B C
B D
A C D
43Definition of MVD
- A multivalued dependency (MVD) X
-gt-gtY is an assertion that if two tuples of a
relation agree on all the attributes of X, then
their components in the set of attributes Y may
be swapped, and the result will be two tuples
that are also in the relation.
44Example
- The name-addr-phones-beersLiked example
illustrated the MVD - name-gt-gtphones
- and the MVD
- name -gt-gt beersLiked.
45Picture of MVD X -gt-gtY
X Y others equal exchange
46MVD Rules
- Every FD is an MVD.
- If X -gtY, then swapping Y s between two tuples
that agree on X doesnt change the tuples. - Therefore, the new tuples are surely in the
relation, and we know X -gt-gtY. - Complementation If X -gt-gtY, and Z is all the
other attributes, then X -gt-gtZ.
47(No Transcript)
48(No Transcript)
49(No Transcript)
50Fourth Normal Form
- The redundancy that comes from MVDs is not
removable by putting the database schema in BCNF. - There is a stronger normal form, called 4NF, that
(intuitively) treats MVDs as FDs when it comes
to decomposition, but not when determining keys
of the relation.
514NF Definition
- A relation R is in 4NF if whenever X
-gt-gtY is a nontrivial MVD, then X is a
superkey. - Nontrivial means that
- Y is not a subset of X, and
- X and Y are not, together, all the attributes.
- Note that the definition of superkey still
depends on FDs only.
52BCNF Versus 4NF
- Remember that every FD X -gtY is also an MVD, X
-gt-gtY. - Thus, if R is in 4NF, it is certainly in BCNF.
- Because any BCNF violation is a 4NF violation.
- But R could be in BCNF and not 4NF, because
MVDs are invisible to BCNF.
53Normalization
- Good Decomposition
- dependency preserving decomposition
- - it is undesirable to lose functional
dependencies during decomposition - lossless join decomposition
- - join of decomposed relations should be able to
create the original relation (no spurious tuples)
54(No Transcript)
55Decomposition and 4NF
- If X -gt-gtY is a 4NF violation for relation R, we
can decompose R using the same technique as for
BCNF. - XY is one of the decomposed relations.
- All but Y X is the other.
56(No Transcript)
57(No Transcript)
58Example
- Drinkers(name, addr, phones, beersLiked)
- FD name -gt addr
- MVDs name -gt-gt phones
- name -gt-gt beersLiked
- Key is name, phones, beersLiked.
- All dependencies violate 4NF.
59Example, Continued
- Decompose using name -gt addr
- Drinkers1(name, addr)
- In 4NF, only dependency is name -gt addr.
- Drinkers2(name, phones, beersLiked)
- Not in 4NF. MVDs name -gt-gt phones and name -gt-gt
beersLiked apply. No FDs, so all three
attributes form the key.
60Example Decompose Drinkers2
- Either MVD name -gt-gt phones or name -gt-gt
beersLiked tells us to decompose to - Drinkers3(name, phones)
- Drinkers4(name, beersLiked)
61BCNF
- Given a relation schema R, and a set of
functional dependencies F, if every FD, A ? B, is
either - 1. Trivial
- 2. A is a superkey of R
- Then, R is in BCNF (Boyce-Codd Normal Form)
- Why is BCNF good ?
62BCNF
- What if the schema is not in BCNF ?
- Decompose (split) the schema into two pieces.
- Careful you want the decomposition to be
lossless
63Achieving BCNF Schemas
- For all dependencies A ? B in F, check if A is a
superkey - By using attribute closure
- If not, then
- Choose a dependency in F that breaks the BCNF
rules, say A ? B - Create R1 A B
- Create R2 A (R B A)
- Note that R1 n R2 A and A ? AB ( R1), so this
is lossless decomposition - Repeat for R1, and R2
- By defining F1 to be all dependencies in F that
contain only attributes in R1 - Similarly F2
64Example 1
- R (A, B, C)
- F A ? B, B ? C
- Candidate keys A
- BCNF No. B ? C violates.
- R1 (B, C)
- F1 B ? C
- Candidate keys B
- BCNF true
- R2 (A, B)
- F2 A ? B
- Candidate keys A
- BCNF true
65Example 2-1
- R (A, B, C, D, E)
- F A ? B, BC ? D
- Candidate keys ACE
- BCNF Violated by A ? B, BC ? D etc
- R1 (A, B)
- F1 A ? B
- Candidate keys A
- BCNF true
- R2 (A, C, D, E)
- F2 AC ? D
- Candidate keys ACE
- BCNF false (AC ? D)
- Dependency preservation ???
- We can check
- A ? B (R1), AC ? D (R3),
- but we lost BC ? D
- So this is not a dependency
- -preserving decomposition
- R4 (A, C, E)
- F4 only trivial
- Candidate keys ACE
- BCNF true
- R3 (A, C, D)
- F3 AC ? D
- Candidate keys AC
- BCNF true
66Example 2-2
- R (A, B, C, D, E)
- F A ? B, BC ? D
- Candidate keys ACE
- BCNF Violated by A ? B, BC ? D etc
- R1 (B, C, D)
- F1 BC ? D
- Candidate keys BC
- BCNF true
- R2 (B, C, A, E)
- F2 A ? B
- Candidate keys ACE
- BCNF false (A ? B)
- Dependency preservation ???
- We can check
- BC ? D (R1), A ? B (R3),
- Dependency-preserving
- decomposition
- R3 (A, B)
- F3 A ? B
- Candidate keys A
- BCNF true
- R4 (A, C, E)
- F4 only trivial
- Candidate keys ACE
- BCNF true
67Example 3
- R (A, B, C, D, E, H)
- F A ? BC, E ? HA
- Candidate keys DE
- BCNF Violated by A ? BC etc
- R1 (A, B, C)
- F1 A ? BC
- Candidate keys A
- BCNF true
- R2 (A, D, E, H)
- F2 E ? HA
- Candidate keys DE
- BCNF false (E ? HA)
- Dependency preservation ???
- We can check
- A ? BC (R1), E ? HA (R3),
- Dependency-preserving
- decomposition
- R4 (ED)
- F4 only trivial
- Candidate keys DE
- BCNF true
- R3 (E, H, A)
- F3 E ? HA
- Candidate keys E
- BCNF true