Module 5 Flashcards
What is a canonical cover?
A minimal and equivalent set of functional dependencies (FDs) with no redundancy.
Why is a canonical cover important?
It simplifies functional dependencies and improves efficiency in decomposition algorithms.
What are the three properties of a canonical cover?
1) It is equivalent to the original FD set, 2) It has no redundant FDs, 3) Each FD has a single attribute on the right-hand side.
How do you compute a canonical cover?
Remove redundant attributes from FDs, split FDs with multiple attributes on the RHS, and remove unnecessary FDs.
What is an equivalent set of functional dependencies?
Two sets of FDs that imply the same dependencies.
What does it mean for an FD to be redundant?
An FD is redundant if it can be derived from other FDs in the set.
What is a minimal cover?
A set of FDs that is equivalent to the original but contains no redundant FDs or attributes.
How does redundancy affect database design?
It leads to storage waste, inconsistencies, and anomalies.
What is a decomposition in database normalization?
Breaking a relation into smaller relations to remove redundancy while preserving constraints.
What are the two key properties of a good decomposition?
Lossless join and dependency preservation.
What is a lossless join decomposition?
A decomposition where the original relation can be reconstructed without losing information.
What is the formal condition for a lossless join?
For decomposition {R1, R2}, if R1 ∩ R2 → R1 or R1 ∩ R2 → R2, then the decomposition is lossless.
Why is lossless join decomposition important?
It ensures that no information is lost when relations are recombined.
What is a dependency-preserving decomposition?
A decomposition where all FDs in the original relation can be enforced without recombining tables.
Why is dependency preservation important?
It ensures that functional dependencies can be enforced without needing to perform joins.
What is the difference between lossless join and dependency-preserving decomposition?
Lossless join ensures no data is lost, while dependency preservation ensures all FDs can be enforced within the decomposed relations.
What happens if a decomposition is not lossless?
Joining the decomposed tables may result in missing or incorrect tuples.
What happens if a decomposition is not dependency-preserving?
Some functional dependencies may require costly joins to enforce.
What is the projection of functional dependencies?
The set of FDs that hold in a decomposed relation.
What is the importance of finding the projection of FDs?
It helps determine if a decomposition is dependency-preserving.
How do you check if a decomposition preserves dependencies?
Compute the closure of FDs in the decomposed relations and compare it to the original set of FDs.
What are the key steps in finding a minimal cover of FDs?
1) Minimize RHS attributes, 2) Remove redundant LHS attributes, 3) Remove redundant FDs.
What is an example of an unnecessary FD?
If FDs include {A → B, B → C, A → C}, then A → C is redundant because it follows from transitivity.
What is an example of reducing RHS attributes in an FD?
If {A → BC}, we can split it into two separate FDs: {A → B, A → C}.