Bird
Raised Fist0
DBMS Theoryknowledge~10 mins

Boyce-Codd Normal Form (BCNF) in DBMS Theory - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to identify a candidate key in a relation.

DBMS Theory
A candidate key is a minimal set of attributes [1] uniquely identify tuples in a relation.
Drag options to blanks, or click blank then click option'
Awhere
Bthat
Cwhen
Dwhich
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'which' instead of 'that' can change the meaning.
2fill in blank
medium

Complete the sentence to explain BCNF condition.

DBMS Theory
A relation is in BCNF if for every functional dependency X [1] Y, X is a superkey.
Drag options to blanks, or click blank then click option'
A=
B<-
C<->
D->
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<-' reverses the dependency direction.
3fill in blank
hard

Fix the error in the BCNF definition.

DBMS Theory
In BCNF, every determinant [1] a superkey.
Drag options to blanks, or click blank then click option'
Ais
Bare
Cbe
Dwas
Attempts:
3 left
💡 Hint
Common Mistakes
Using plural verb 'are' with singular subject.
4fill in blank
hard

Fill in the blank to complete the BCNF condition statement.

DBMS Theory
If a relation has a functional dependency [1], then the left side must be a superkey.
Drag options to blanks, or click blank then click option'
AX -> Y
BX <- Y
CX = Y
DX <-> Y
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect symbols like '<-' or '=' for functional dependencies.
5fill in blank
hard

Fill all three blanks to complete the BCNF example code snippet.

DBMS Theory
relation = { 'attributes': ['A', 'B'], 'functional_dependencies': [('[1]', '[2]')], 'candidate_keys': ['[3]'] }
Drag options to blanks, or click blank then click option'
AA
BB
CAB
DC
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing single attributes with candidate keys which can be multiple attributes.

Practice

(1/5)
1. What is the main goal of Boyce-Codd Normal Form (BCNF) in database design?
easy
A. To ensure every functional dependency is based on a candidate key
B. To allow duplicate rows in a table
C. To combine multiple tables into one
D. To remove all foreign keys from a table

Solution

  1. Step 1: Understand BCNF definition

    BCNF requires that for every functional dependency X -> Y, X must be a candidate key.
  2. Step 2: Analyze options

    Only To ensure every functional dependency is based on a candidate key correctly states this goal. Other options describe unrelated or incorrect concepts.
  3. Final Answer:

    To ensure every functional dependency is based on a candidate key -> Option A
  4. Quick Check:

    BCNF = dependencies from candidate keys [OK]
Hint: BCNF means all dependencies come from keys [OK]
Common Mistakes:
  • Thinking BCNF removes foreign keys
  • Confusing BCNF with merging tables
  • Believing BCNF allows duplicates
2. Which of the following functional dependencies violates BCNF in a relation?
easy
A. C -> D, where C is a candidate key
B. A -> B, where A is a candidate key
C. B -> C, where B is not a candidate key
D. D -> A, where D is a candidate key

Solution

  1. Step 1: Recall BCNF condition

    Every functional dependency's left side must be a candidate key.
  2. Step 2: Check each dependency

    Only B -> C has a left side (B) that is not a candidate key, violating BCNF.
  3. Final Answer:

    B -> C, where B is not a candidate key -> Option C
  4. Quick Check:

    Dependency from non-key violates BCNF [OK]
Hint: Check if left side of dependency is a candidate key [OK]
Common Mistakes:
  • Assuming all dependencies are allowed
  • Confusing candidate keys with foreign keys
  • Ignoring the key status of the left side
3. Consider a relation R(A, B, C) with functional dependencies: A -> B and B -> C. Which of the following is true about R?
medium
A. R is not in BCNF because B -> C violates BCNF
B. R is in BCNF because A is a candidate key
C. R is in BCNF because B determines C
D. R is not in BCNF because A -> B violates BCNF

Solution

  1. Step 1: Identify candidate keys

    A determines B, and B determines C, so A determines B and C. Thus, A is a candidate key.
  2. Step 2: Check BCNF condition

    Dependency B -> C has B on left, which is not a candidate key. This violates BCNF.
  3. Final Answer:

    R is not in BCNF because B -> C violates BCNF -> Option A
  4. Quick Check:

    Non-key dependency breaks BCNF [OK]
Hint: Check if all left sides are candidate keys [OK]
Common Mistakes:
  • Assuming A -> B means all dependencies are fine
  • Ignoring transitive dependencies
  • Confusing BCNF with 3NF
4. Given a relation with attributes (X, Y, Z) and dependencies: X -> Y and Y -> X, what is the problem if we say this relation is in BCNF?
medium
A. There is no problem; it is in BCNF
B. X and Y are candidate keys, so BCNF is satisfied
C. X and Y together form a candidate key, so BCNF is violated
D. X and Y are not candidate keys, so BCNF is violated

Solution

  1. Step 1: Analyze dependencies

    X -> Y and Y -> X mean X and Y determine each other, but neither determines Z. Candidate keys must include Z (e.g., {X, Z}, {Y, Z}).
  2. Step 2: Check BCNF condition

    X -> Y has X on left, but X is not a superkey (does not determine Z), violating BCNF. Similarly for Y -> X.
  3. Final Answer:

    X and Y are not candidate keys, so BCNF is violated -> Option D
  4. Quick Check:

    Determinants must be superkeys covering all attributes [OK]
Hint: Mutual dependencies don't make keys without covering all attributes [OK]
Common Mistakes:
  • Thinking mutual dependencies make X and Y candidate keys
  • Forgetting to verify determination of all attributes like Z
  • Ignoring that both sides can be keys
5. You have a relation R(A, B, C, D) with dependencies: A, B -> C, C -> D. To convert R into BCNF, what should you do?
hard
A. Remove dependency C -> D
B. Decompose R into R1(A, B, C) and R2(C, D)
C. Add C to the candidate key
D. Combine all attributes into one table

Solution

  1. Step 1: Identify violating dependency

    C -> D violates BCNF because C is not a candidate key (A,B is key).
  2. Step 2: Decompose relation

    Decompose into R1(A, B, C) with key (A,B) and R2(C, D) with key C to fix violation.
  3. Final Answer:

    Decompose R into R1(A, B, C) and R2(C, D) -> Option B
  4. Quick Check:

    Decompose on violating dependency to achieve BCNF [OK]
Hint: Decompose on dependencies with non-key left side [OK]
Common Mistakes:
  • Trying to remove dependencies instead of decomposing
  • Adding attributes incorrectly to keys
  • Merging tables instead of decomposing
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard