Understanding Attribute Closure, Superkeys, and Candidate Keys in Database Design
What Is Attribute Closure?
Easy Definition:
Attribute closure lets you figure out all the columns (attributes) you can determine if you know certain columns and apply the rules about how columns depend on each other.
Why It Matters:
You’ll use attribute closure to:
- Find candidate keys and superkeys
- Check for functional dependencies
How We Write It:
If you have a set of attributes X, the closure is shown as X⁺ (X plus).
What Does It Mean?
X⁺ means all columns “reachable” from X by repeatedly applying the functional dependencies.
Superkey vs. Candidate Key
Superkey:
Any set of one or more columns that can uniquely identify every row. Superkeys might include extra columns you don’t strictly need.
Candidate Key:
A superkey, but minimal—no extra columns. If you remove any column, it stops uniquely identifying rows.
There can be several candidate keys for a single table.
Simple Example
Suppose you have a table with columns:
StudentID, Email, Name
Functional Dependencies:
- StudentID → Email, Name
- Email → StudentID, Name
Superkeys:
- {StudentID}
- {Email}
- {StudentID, Email}
- {StudentID, Name}
- {Email, Name}
- {StudentID, Email, Name}
Candidate Keys:
- {StudentID} (if you remove it, you lose uniqueness)
- {Email} (same principle)
Key Point:
Some superkeys have extra columns ({StudentID, Email}, etc.), but only the smallest possible sets are candidate keys.
In Summary
- Superkey: Any combination that lets you tell rows apart (may have extras)
- Candidate Key: The smallest combo that still works (no extras)
- All candidate keys are superkeys, but not all superkeys are candidate keys.
Example 1: Attribute Closure Step by Step
Suppose you have a table:
R(A, B, C, D, E)
Functional Dependencies:
- A → B
- B → C
- C → D
- D → E
Find the closure of {A}, i.e., A⁺:
Steps:
- Start with A: {A}
- A → B: add B ⇒ {A, B}
- B → C: add C ⇒ {A, B, C}
- C → D: add D ⇒ {A, B, C, D}
- D → E: add E ⇒ {A, B, C, D, E}
Result:
A⁺ = {A, B, C, D, E}
All attributes are included—so A is a candidate key!
Example 2: Candidate Keys vs. Superkeys
Suppose you have:
R(A, B, C, D)
Dependencies:
- A → B
- B → C
- D → A
Analyzing {D}:
- D⁺ = {D, A, B, C} (applying dependencies)
- Covers all attributes, can’t remove anything—so {D} is a candidate key
Analyzing {A, D}:
- {A, D}⁺ covers all attributes, so a superkey
- But you can remove A and still cover all attributes—so not minimal, not a candidate key
Visual Summary:
- {D}: Candidate key
- {A, D}: Superkey (not minimal)
Final Thoughts
All candidate keys are superkeys, but not all superkeys are candidate keys.
Understanding attribute closure helps you find these keys effectively—and design better databases!
Comments
Post a Comment