Skip to main content

Compute canonical cover

Short answer

Fc = {A → B, B → C}. This minimal set is equivalent to F; A is the candidate key.

Compute canonical cover: R = (A, B, C), F = {A → BC, B → C, A → B, AB → C}.

A canonical cover Fc is a minimal set of FDs equivalent to F, with no extraneous attributes on any side, no redundant FDs, and a unique left side for each FD.

F = {A → BC, B → C, A → B, AB → C}

Step 1: split the right sides (decomposition)

F = {A → B, A → C, B → C, A → B, AB → C}. Remove the duplicate A → B:

F = {A → B, A → C, B → C, AB → C}

Step 2: remove extraneous attributes from left sides

Only AB → C has a multi-attribute left side. Test whether A is extraneous: compute B⁺ using F. B⁺ = {B, C} already contains C, so B → C holds and A is extraneous. Replace AB → C by B → C, which is already present:

F = {A → B, A → C, B → C}

Step 3: remove redundant FDs

Test A → C: remove it and compute A⁺ using {A → B, B → C}. A⁺ = {A, B, C}, which contains C. So A → C is implied by A → B and B → C (transitivity) and is redundant.

Test A → B: without it, A⁺ = {A, C}, no B, so it is needed. Test B → C: without it, B⁺ = {B}, so it is needed.

Step 4: combine right sides with equal left sides: nothing to combine.

Canonical cover: Fc = {A → B, B → C}

Check: A⁺ under Fc = {A, B, C}, so A → BC and A → C still follow. The original F and Fc are equivalent. The candidate key of R is A.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Database Management System chapter 4 questions →