0% found this document useful (0 votes)
18 views21 pages

Tutorial 9 DB Normalization

The document discusses database normalization concepts including: - Testing if a relation decomposition is lossless-join by checking if common attributes between relations can derive other attributes. - Testing if a decomposition preserves dependencies by constructing functional dependencies from decomposed relations. - Checking if a relation is in BCNF by testing if the left-hand side of every non-trivial functional dependency is a superkey. - Decomposing relations not in BCNF by picking a non-trivial dependency and splitting the relation until all are in BCNF.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views21 pages

Tutorial 9 DB Normalization

The document discusses database normalization concepts including: - Testing if a relation decomposition is lossless-join by checking if common attributes between relations can derive other attributes. - Testing if a decomposition preserves dependencies by constructing functional dependencies from decomposed relations. - Checking if a relation is in BCNF by testing if the left-hand side of every non-trivial functional dependency is a superkey. - Decomposing relations not in BCNF by picking a non-trivial dependency and splitting the relation until all are in BCNF.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 21

DB Normalization COMP3278A 2023

Overview
• Check if a decomposition is lossless-join
• Check if a decomposition is dependency preserving
• Check if a decomposition is in BCNF
• Perform lossless join decomposition into relations in BCNF

2
Testing lossless join
• Given relation 𝑅 decomposed into 𝑅1 and 𝑅2.
• Let 𝐴𝑡𝑡 𝑅 be the set of attributes in relation 𝑅. Decomposition is
lossless if
𝐴𝑡𝑡 𝑅1 ∩ 𝐴𝑡𝑡 𝑅2 → 𝐴𝑡𝑡 𝑅1
Or
𝐴𝑡𝑡 𝑅1 ∩ 𝐴𝑡𝑡 𝑅2 → 𝐴𝑡𝑡 𝑅2

We test if the common attributes of R1 and R2 could be used to


derive attributes in either R1 or R2.

3
Reflexivity – if 𝛽 ⊆ 𝛼, then 𝛼 → 𝛽.
Transitivity – if 𝛼 → 𝛽 and 𝛽 → 𝛾, then 𝛼 → 𝛾

Example Augmentation – if 𝛼 → 𝛽, then 𝛾𝛼 → 𝛾𝛽


Union – if 𝛼 → 𝛽 and 𝛼 → 𝛾, then 𝛼 → 𝛽𝛾
Decomposition – if 𝛼 → 𝛽𝛾, then 𝛼 → 𝛽 and 𝛼 → 𝛾
lossless join Pseudo-transitivity – if 𝛼 → 𝛽 and 𝛾𝛽 → 𝛿, then 𝛼𝛾 → 𝛿

• Consider relation 𝑅 𝐴, 𝐵, 𝐶 with functional dependencies


𝑭 = {𝐴 → 𝐵}.
• Is 𝑅1 𝐴, 𝐵 , 𝑅2 𝐴, 𝐶 a lossless join decomposition?
• Common attribute is 𝐴
• 𝐴 → 𝐵 ⇒ 𝐴 → 𝐴𝐵 (Augmentation)
• It is a lossless join decomposition as common attribute 𝐴 could derives attributes in 𝑅1.
• Is 𝑅3 𝐴, 𝐵 , 𝑅4 𝐵, 𝐶 a lossless join decomposition?
• Common attribute is 𝐵 We need to find attribute closure to show that
• Attribute closure of 𝐵, 𝐵 + = {𝐵}. a decomposition is not a lossless join.
• It is not a lossless join decomposition as common attribute could not derive 3 and 4.

𝐵
𝑅
𝑅
4
Testing dependency preserving
• Given relation 𝑅 with FD 𝑭 decomposed into 𝑅1 , 𝑅2 , … let 𝑭𝑖 be the
set of FDs in 𝑭+ that include only attributes in 𝑅𝑖
• Decomposition is dependency preserving if

+
𝑭1 ∪ 𝑭2 ∪ ⋯ = 𝑭+

We test if 𝑭+ could be constructed by combining the FDs in the


decomposed relations.

5
Reflexivity – if 𝛽 ⊆ 𝛼, then 𝛼 → 𝛽.
Transitivity – if 𝛼 → 𝛽 and 𝛽 → 𝛾, then 𝛼 → 𝛾

Example Augmentation – if 𝛼 → 𝛽, then 𝛾𝛼 → 𝛾𝛽


Union – if 𝛼 → 𝛽 and 𝛼 → 𝛾, then 𝛼 → 𝛽𝛾
Decomposition – if 𝛼 → 𝛽𝛾, then 𝛼 → 𝛽 and 𝛼 → 𝛾
dependency preserving Pseudo-transitivity – if 𝛼 → 𝛽 and 𝛾𝛽 → 𝛿, then 𝛼𝛾 → 𝛿

• Consider relation 𝑅 𝐴, 𝐵, 𝐶 with functional dependencies


𝑭 = {𝐴 → 𝐵, 𝐵 → 𝐶}.
• 𝑭+ = {𝐴 → 𝐵, 𝐵 → 𝐶, and trivials/derived FDs}
• Is 𝑅1 𝐴, 𝐵 , 𝑅2 𝐵, 𝐶 a dependency preserving decomposition?
• 𝑭1 = 𝐴 → 𝐵, and trivials FD𝑠
• 𝑭2 = 𝐵 → 𝐶, and trivials FD𝑠
• 𝑭1 ∪ 𝑭2 = 𝑭 ⇒ 𝑭1 ∪ 𝑭2 + = 𝑭+ , it is a dependency preserving decomposition.
• Is 𝑅3 𝐴, 𝐵 , 𝑅4 𝐴, 𝐶 a dependency preserving decomposition?
• 𝑭3 = 𝐴 → 𝐵, and trivials FD𝑠
+ due to transitivity.
• 𝑭4 = 𝐴 → 𝐶, and trivials FD𝑠 Note that 𝐴 → 𝐶 is in 𝑭
• 𝑭3 ∪ 𝑭4 = 𝐴 → 𝐵, 𝐴 → 𝐶, and trivials FDs , we need to check if 𝐵 → 𝐶 is preserved.
• In 𝑭3 ∪ 𝑭4 + , 𝐵 + = 𝐵 and so 𝐵 → 𝐶 is not in 𝑭3 ∪ 𝑭4 + , it is not a dependency
preserving decomposition.

6
Testing BCNF for relation
• Given relation 𝑅 with FD 𝑭
• 𝑅 is in BCNF if for all non-trivial dependency 𝛼 → 𝛽 in 𝑭,

+
𝛼 = 𝐴𝑡𝑡(𝑅)

We test if LHS of each non-trivial dependencies is a superkey.

Similar to the case in dependency preserving, if R is


decomposed, we need to construct the corresponding
FDs in the decomposed relation by considering 𝑭+

7
Testing for BCNF
 To check if a non-trivial dependency a®b causes a violation of BCNF
1. compute a+ (the attribute closure of a), and
2. verify that it includes all attributes of R, that is, it is a superkey of R.
 Simplified test: To check if a relation schema R is in BCNF, it suffices
to check only the dependencies in the given set F for violation of BCNF,
rather than checking all dependencies in F+.
 If none of the dependencies in F causes a violation of BCNF, then
none of the dependencies in F+ will cause a violation of BCNF
either.
 However, simplified test using only F is incorrect when testing a
relation in a decomposition of R
 Consider R = (A, B, C, D, E), with F = { A ® B, BC ® D}
4 Decompose R into R1 = (A,B) and R2 = (A,C,D, E)

4 Neither of the dependencies in F contain only attributes from


(A,C,D,E) so we might be mislead into thinking R2 satisfies
BCNF.
4 In fact, dependency AC ® D in F+ shows R2 is not in BCNF.

Database System Concepts - 6th Edition 8.45 ©Silberschatz, Korth and Sudarshan
Reflexivity – if 𝛽 ⊆ 𝛼, then 𝛼 → 𝛽.
Transitivity – if 𝛼 → 𝛽 and 𝛽 → 𝛾, then 𝛼 → 𝛾

Example Augmentation – if 𝛼 → 𝛽, then 𝛾𝛼 → 𝛾𝛽


Union – if 𝛼 → 𝛽 and 𝛼 → 𝛾, then 𝛼 → 𝛽𝛾
Decomposition – if 𝛼 → 𝛽𝛾, then 𝛼 → 𝛽 and 𝛼 → 𝛾
BCNF (1) Pseudo-transitivity – if 𝛼 → 𝛽 and 𝛾𝛽 → 𝛿, then 𝛼𝛾 → 𝛿

• Consider relation 𝑅 𝐴, 𝐵, 𝐶 with functional dependencies


𝑭 = {𝐴 → 𝐵, 𝐵 → 𝐶}.
• Is 𝑅 in BCNF?
+
• 𝐵 = 𝐵, 𝐶 ≠ {𝐴, 𝐵, 𝐶} so it is not in BCNF.
• Consider relation 𝑅 𝐴, 𝐵, 𝐶 with functional dependencies
𝑭 = {𝐴 → 𝐵}.
• Is 𝑅 in BCNF?
+
• 𝐴 = 𝐴, 𝐵 ≠ {𝐴, 𝐵, 𝐶}, so it is not in BCNF.
• Consider relation 𝑅 𝐴, 𝐵, 𝐶 with functional dependencies
𝑭 = {} (trivial FDs only).
• Is 𝑅 in BCNF?
• There is no non-trivial dependency. It is in BCNF. No non-trivial dependency ⇒ BCNF

8
Reflexivity – if 𝛽 ⊆ 𝛼, then 𝛼 → 𝛽.
Transitivity – if 𝛼 → 𝛽 and 𝛽 → 𝛾, then 𝛼 → 𝛾

Example Augmentation – if 𝛼 → 𝛽, then 𝛾𝛼 → 𝛾𝛽


Union – if 𝛼 → 𝛽 and 𝛼 → 𝛾, then 𝛼 → 𝛽𝛾
Decomposition – if 𝛼 → 𝛽𝛾, then 𝛼 → 𝛽 and 𝛼 → 𝛾
BCNF (2) Pseudo-transitivity – if 𝛼 → 𝛽 and 𝛾𝛽 → 𝛿, then 𝛼𝛾 → 𝛿

• Consider relation 𝑅 𝐴, 𝐵, 𝐶, 𝐷 with functional dependencies


𝑭 = {𝐴 → 𝐵, 𝐵 → 𝐶}.
• Is 𝑅 in BCNF?
+
• 𝐴 = 𝐴, 𝐵, 𝐶 ≠ 𝐴, 𝐵, 𝐶, 𝐷 , so it is not in BCNF.
• Suppose 𝑅 is decomposed into 𝑅1 𝐴, 𝐶, 𝐷 , 𝑅2 𝐵, 𝐷 , is 𝑅1 in BCNF?
• 𝑭1 = 𝐴 → 𝐶, and trivials FD𝑠
Again, 𝐴 → 𝐶 is in 𝑭+ due to transitivity.
• 𝐴 + = 𝐴, 𝐶 ≠ 𝐴, 𝐶, 𝐷 , it is not in BCNF
• Is 𝑅2 in BCNF?
• 𝑅2 has no non-trivial FD, it is in BCNF

9
Decomposing relations
• Given relation 𝑅 with FD 𝑭. (where 𝑅 is not in BCNF)
• Pick a dependency 𝛼 → 𝛽 in 𝑭.
• Split 𝑅 into relation 𝑅1 = 𝛼 ∪ 𝛽 and 𝑅2 = 𝛼 ∪ 𝛼 ∪ 𝛽 𝑐 .
• Check that 𝑅1 is in BCNF, decompose 𝑅1 if not.
• Check that 𝑅2 is in BCNF, decompose 𝑅2 if not.

We pick one rule for decomposition, repeat until all


relations are in BCNF.

10
Reflexivity – if 𝛽 ⊆ 𝛼, then 𝛼 → 𝛽.
Transitivity – if 𝛼 → 𝛽 and 𝛽 → 𝛾, then 𝛼 → 𝛾

Example Augmentation – if 𝛼 → 𝛽, then 𝛾𝛼 → 𝛾𝛽


Union – if 𝛼 → 𝛽 and 𝛼 → 𝛾, then 𝛼 → 𝛽𝛾
Decomposition – if 𝛼 → 𝛽𝛾, then 𝛼 → 𝛽 and 𝛼 → 𝛾
BCNF (2) Pseudo-transitivity – if 𝛼 → 𝛽 and 𝛾𝛽 → 𝛿, then 𝛼𝛾 → 𝛿

• Consider relation 𝑅 𝐴, 𝐵, 𝐶, 𝐷 with functional dependencies


𝑭 = {𝐴 → 𝐵, 𝐵 → 𝐶}. Decompose R into relations in BCNF.
• Pick dependency 𝐴 → 𝐵.
• Decompose 𝑅 into 𝑅1 = 𝐴, 𝐵 and 𝑅2 = 𝐴, 𝐶, 𝐷 .
• 𝑅1 is in BCNF as 𝐴 + = {𝐴, 𝐵}.
• 𝑭2 = 𝐴 → 𝐶, and trivials FDs , 𝐴 + = 𝐴, 𝐶 ≠ 𝐴, 𝐶, 𝐷 , it is not in BCNF.
• Pick rule 𝐴 → 𝐶.
• Decompose 𝑅2 into 𝑅3 = 𝐴, 𝐶 and 𝑅4 = 𝐴, 𝐷 .
• 𝑅3 is in BCNF as 𝐴 + = {𝐴, 𝐶}.
• 𝑅4 has no non-trivial FD, it is in BCNF.

• 𝑅 is decomposed into 𝑅1 = 𝐴, 𝐵 , 𝑅3 = 𝐴, 𝐶 , and 𝑅4 = 𝐴, 𝐷


11
Exercise
Given 𝑅 𝐴, 𝐵, 𝐶, 𝐷 , 𝑭 = 𝐴 → 𝐵, 𝐵𝐶 → 𝐷, 𝐷 → 𝐴
1. If 𝑅 is decomposed into 𝑅1(𝐴, 𝐶, 𝐷) and 𝑅2 𝐵, 𝐶 , is it a lossless
join decomposition? If so, is it dependency preserving?
2. If 𝑅 is decomposed into 𝑅3(𝐴, 𝐵, 𝐶) and 𝑅4 𝐵, 𝐶, 𝐷 , is it a lossless
join decomposition? If so, is it dependency preserving?
3. Show that 𝑅 in not in BCNF.
4. Give a lossless join decomposition of 𝑅 into relations in BCNF. Check
if the decomposition is dependency preserving.
• Try to repeat this question by picking different dependency to split.
An extra question if you have time
• Given 𝑅 𝐴, 𝐵, 𝐶, 𝐷, 𝐸 , 𝑭 = 𝐴 → 𝐵, 𝐴𝐷 → 𝐸, 𝐶 → 𝐴𝐷𝐸 .
• Give a lossless join decomposition of 𝑅 into relations in BCNF.
• Check if the decomposition is dependency preserving.
12
Given 𝑅 𝐴, 𝐵, 𝐶, 𝐷 , 𝑭 = 𝐴 → 𝐵, 𝐵𝐶 → 𝐷, 𝐷 → 𝐴
Answer – 1 If 𝑅 is decomposed into 𝑅1(𝐴, 𝐶, 𝐷) and 𝑅2 𝐵, 𝐶 , is it a
lossless join decomposition? If so, is it dependency preserving?

• Common attributes: 𝐶
• 𝐶 + = 𝐶 , which doesn’t cover 𝑅1 nor 𝑅2.
• It is not a lossless join decomposition.

13
Given 𝑅 𝐴, 𝐵, 𝐶, 𝐷 , 𝑭 = 𝐴 → 𝐵, 𝐵𝐶 → 𝐷, 𝐷 → 𝐴
Answer – 2 If 𝑅 is decomposed into 𝑅3(𝐴, 𝐵, 𝐶) and 𝑅4 𝐵, 𝐶, 𝐷 , is it a
lossless join decomposition? If so, is it dependency preserving?

• Common attributes: 𝐵, 𝐶
• 𝐵, 𝐶 + = 𝐵, 𝐶, 𝐷 , which covers 𝑅4.
• It is a lossless join decomposition.
• Consider FDs in 𝑅3 (𝑭3 ) = 𝐴 → 𝐵, 𝐵𝐶 → 𝐴, and trivials FDs
• Consider FDs in 𝑅4 (𝑭4 ) = 𝐵𝐶 → 𝐷, and trivials FDs
• Now consider 𝐷 + for 𝑭3 ∪ 𝑭4 + , 𝐷 + = 𝐷 . Dependency 𝐷 → 𝐴
is gone. Therefore, it is not dependency preserving.

14
Given 𝑅 𝐴, 𝐵, 𝐶, 𝐷 , 𝑭 = 𝐴 → 𝐵, 𝐵𝐶 → 𝐷, 𝐷 → 𝐴
Answer – 3 Show that 𝑅 in not in BCNF.

• 𝐴 is not a superkey as 𝐴 + = 𝐴, 𝐵 , so 𝑅 is not in BCNF.


• You can also check 𝐷 + .
• Note that 𝐵, 𝐶 + = 𝐴, 𝐵, 𝐶, 𝐷 , so this could not be used here.

15
Answer – 4 Given 𝑅 𝐴, 𝐵, 𝐶, 𝐷 , 𝑭 = 𝐴 → 𝐵, 𝐵𝐶 → 𝐷, 𝐷 → 𝐴
Give a lossless join decomposition of 𝑅 into relations in BCNF.
Pick 𝐴 → 𝐵 Check if the decomposition is dependency preserving.

• Pick 𝐴 → 𝐵, 𝑅 is decomposed into 𝑅1 𝐴, 𝐵 and 𝑅2 𝐴, 𝐶, 𝐷 .


• FDs in 𝑅1 (𝐹1 ) = {𝐴 → 𝐵, … }, 𝐴 + = 𝐴, 𝐵 , 𝑅1 is in BCNF.
• FDs in 𝑅2 (𝐹2 ) = {𝐷 → 𝐴, … }, 𝐷 + = 𝐴, 𝐷 ≠ {𝐴, 𝐶, 𝐷}, 𝑅2 is not in BCNF.
• Pick 𝐷 → 𝐴 for 𝑅2, 𝑅2 is decomposed into 𝑅3(𝐴, 𝐷) and 𝑅4 𝐶, 𝐷 .
• FDs in 𝑅3 (𝐹3 ) = {𝐷 → 𝐴, … }, 𝐷 + = 𝐴, 𝐷 , 𝑅3 is in BCNF.
• There is no non-trivial FDs in 𝑅4, 𝑅4 is in BCNF.
• 𝑅 is decomposed into 𝑅1 𝐴, 𝐵 , 𝑅3(𝐴, 𝐷), and 𝑅4 𝐶, 𝐷 .
• We can see that dependency 𝐵𝐶 → 𝐷 is not preserved in the
decomposition. What if we pick 𝐵𝐶 → 𝐷 first?

16
Answer – 4 Given 𝑅 𝐴, 𝐵, 𝐶, 𝐷 , 𝑭 = 𝐴 → 𝐵, 𝐵𝐶 → 𝐷, 𝐷 → 𝐴
Give a lossless join decomposition of 𝑅 into relations in BCNF.
Pick 𝐵𝐶 → 𝐷 Check if the decomposition is dependency preserving.

• Pick 𝐵𝐶 → 𝐷, 𝑅 is decomposed into 𝑅1 𝐵, 𝐶, 𝐷 and 𝑅2 𝐴, 𝐵, 𝐶 .


• FDs in 𝑅1 (𝐹1 ) = {𝐵𝐶 → 𝐷, 𝐷 → 𝐵, … }, 𝐷 + = 𝐵, 𝐷 ≠ {𝐵, 𝐶, 𝐷}, 𝑅1 is not in BCNF.
• FDs in 𝑅2 (𝐹2 ) = {𝐴 → 𝐵, 𝐵𝐶 → 𝐴, … }, 𝐴 + = 𝐴, 𝐵 ≠ {𝐴, 𝐵, 𝐶}, 𝑅2 is not in BCNF.
• Pick 𝐴 → 𝐵 for 𝑅2, 𝑅2 is decomposed into 𝑅3(𝐴, 𝐵) and 𝑅4 𝐴, 𝐶 .
• FDs in 𝑅3 (𝐹3 ) = {𝐴 → 𝐵, … }, 𝐴 + = 𝐴, 𝐵 , 𝑅3 is in BCNF.
• There is no non-trivial FDs in 𝑅4, 𝑅4 is in BCNF.
• Pick 𝐷 → 𝐵 for 𝑅1, 𝑅1 is decomposed into 𝑅5(𝐵, 𝐷) and 𝑅6 𝐶, 𝐷
• Both are in BCNF.
• 𝑅 is decomposed into, 𝑅3 𝐴, 𝐵 , 𝑅4 𝐴, 𝐶 , 𝑅5(𝐵, 𝐷) and 𝑅6 𝐶, 𝐷 .
• We can see that dependency 𝐷 → 𝐴 is not preserved in the decomposition.
(Shown in Q2) What if we pick 𝐷 → 𝐴 first?

17
Answer – 4 Given 𝑅 𝐴, 𝐵, 𝐶, 𝐷 , 𝑭 = 𝐴 → 𝐵, 𝐵𝐶 → 𝐷, 𝐷 → 𝐴
Give a lossless join decomposition of 𝑅 into relations in BCNF.
Pick 𝐷 → 𝐴 Check if the decomposition is dependency preserving.

• Pick 𝐷 → 𝐴, 𝑅 is decomposed into 𝑅1 𝐴, 𝐷 and 𝑅2 𝐵, 𝐶, 𝐷 .


• FDs in 𝑅1 (𝐹1 ) = {𝐷 → 𝐴, … }, 𝐷 + = 𝐴, 𝐷 , 𝑅1 is in BCNF.
• FDs in 𝑅2 (𝐹2 ) = {𝐵𝐶 → 𝐷, 𝐷 → 𝐵, … }, 𝐷 + = 𝐵, 𝐷 , 𝑅2 is not in BCNF.
• Pick 𝐷 → 𝐵 for 𝑅2, 𝑅2 is decomposed into 𝑅3(𝐵, 𝐷) and 𝑅4 𝐶, 𝐷
• Both are in BCNF.
• 𝑅 is decomposed into 𝑅1 𝐴, 𝐷 , 𝑅3 𝐵, 𝐷 and 𝑅4 𝐶, 𝐷 .
• We can see that dependency 𝐴 → 𝐵 is not preserved in the
decomposition.

18
Answer – 5 Given 𝑅 𝐴, 𝐵, 𝐶, 𝐷, 𝐸 , 𝑭 = 𝐴 → 𝐵, 𝐴𝐷 → 𝐸, 𝐶 → 𝐴𝐷𝐸 .
Give a lossless join decomposition of 𝑅 into relations in BCNF.
Pick 𝐴 → 𝐵 Check if the decomposition is dependency preserving.

• Pick 𝐴 → 𝐵, decompose 𝑅 into 𝑅1 𝐴, 𝐵 and 𝑅2 𝐴, 𝐶, 𝐷, 𝐸 .


• 𝑅1 is in BCNF. (proof skipped)
+
• FDs in 𝑅2 (𝐹2 ) = {𝐴𝐷 → 𝐸, 𝐶 → 𝐴𝐷𝐸, … }, 𝐴, 𝐷 = 𝐴, 𝐷, 𝐸 ≠ {𝐴, 𝐶, 𝐷, 𝐸},
𝑅2 is not in BCNF.
• Pick 𝐴𝐷 → 𝐸 for 𝑅2, 𝑅2 is decomposed into 𝑅3(𝐴, 𝐷, 𝐸) and
𝑅4 𝐴, 𝐶, 𝐷 . Found using Armstrong’s Axioms
• 𝑅3 is in BCNF. (proof skipped)
• FDs in 𝑅4 (𝐹4 ) = {𝐶 → 𝐴𝐷, … }, 𝐶 + = 𝐴, 𝐶, 𝐷 , 𝑅4 is in BCNF.
• 𝑅 is decomposed to 𝑅1 𝐴, 𝐵 , 𝑅3(𝐴, 𝐷, 𝐸) and 𝑅4 𝐴, 𝐶, 𝐷 .
• Is 𝐶 → 𝐴𝐷𝐸 preserved in the decomposition?
19
Answer – 5 Given 𝑅 𝐴, 𝐵, 𝐶, 𝐷, 𝐸 , 𝑭 = 𝐴 → 𝐵, 𝐴𝐷 → 𝐸, 𝐶 → 𝐴𝐷𝐸 .
Give a lossless join decomposition of 𝑅 into relations in BCNF.
Analysis Check if the decomposition is dependency preserving.

• Note that some of the dependencies could be reduced or


transformed.
Must be two-way implications
• 𝐶 → 𝐴𝐷𝐸 ⇔ 𝐶 → 𝐴, 𝐶 → 𝐷, 𝐶 → 𝐸
• And some is redundant, e.g.,
• 𝐶 → 𝐴, 𝐶 → 𝐷, 𝐴𝐷 → 𝐸 ⇒ 𝐶 → 𝐸
+
• Consider 𝑭′ = 𝐴 → 𝐵, 𝐴𝐷 → 𝐸, 𝐶 → 𝐴, 𝐶 → 𝐷 , then 𝑭+ = ′
𝑭 .
• Now if 𝑅 is decomposed into 𝑅1 𝐴, 𝐵 , 𝑅3(𝐴, 𝐷, 𝐸) and 𝑅4 𝐴, 𝐶, 𝐷 , you can
see that all dependencies are preserved.
In order to check if the decomposition is dependency preserving, you must consider
𝑭1 ∪ 𝑭2 ∪ ⋯ + = 𝑭+ instead of just checking the given dependencies!

You can also find an equivalent (but simpler)


set of FDs first before normalizing. 20

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy