ITPEC FE Subject A October 2025 Question 19
When the functional dependencies shown below are satisfied, which of the following is the transitive functional dependency that holds? Here, “A→B” indicates that B is functionally dependent on A, and “A→{B, C}” indicates that “A→B” and “A→C” both hold.
[Functional dependencies]
{OrderCode, ProductCode} → {CustomerOrderQuantity, OrderAmount}
OrderCode → {OrderDate, CustomerCode, OrderManagerCode}
ProductCode → {ProductName, SupplierCode, ProductSalePrice}
SupplierCode → {SupplierName, SupplierAddress, SupplierManagerCode}
CustomerCode → {CustomerName, CustomerAddress}
Explanation
OrderCode → CustomerCode → CustomerAddress — both steps are given dependencies, and the middle attribute does not determine OrderCode.
A transitive functional dependency X → Y → Z needs X → Y and Y → Z to hold while Y does not determine X; Z then depends on X only through Y.
- •OrderCode → CustomerCode: given in the second line
- •CustomerCode → CustomerAddress: given in the fifth line
- •CustomerCode does not determine OrderCode, since one customer places many orders
Answer (a)
Why not others:
- •(b) — OrderCode does not determine ProductCode: one order holds several products, and CustomerOrderQuantity depends on the pair {OrderCode, ProductCode}
- •(c) — SupplierCode does not determine ProductSalePrice: one supplier supplies many products at different prices, and the price depends on ProductCode directly
- •(d) — SupplierManagerCode → SupplierAddress is not given; SupplierAddress depends on SupplierCode directly, and one manager may handle several suppliers
Key rule: Check every arrow of a proposed chain against the given dependencies, since one missing arrow breaks it; transitive dependencies are what third normal form removes.
Databases · AI-written, may contain errors
This question comes from an official ITPEC past paper. ITPEC Practice is an independent study tool and is not affiliated with ITPEC. See the official FE past-paper collection or Report an issue.