ホーム > データベーススペシャリスト試験 > 2018年
データベーススペシャリスト試験 2018年 午前2 問03
関係Rは属性{A, B, C, D, E}から成り、関数従属A → {B, C}、{C, D} → Eが成立する。これらの関数従属から決定できるRの候補キーはどれか。
ア:{A, C}
イ:{A, C, D}
ウ:{A, D}(正解)
エ:{C, D}
解説
解説:関数従属から候補キーを決定する方法
問題の整理
- 関係 ( R ) の属性集合は ({A, B, C, D, E})。
- 与えられた関数従属は以下の2つ:
- ( A \to {B, C} )
- ( {C, D} \to E )
求めたいのは、この情報から決定できる候補キー。
用語の確認
- 候補キー(candidate key)とは、関係の全ての属性を関数従属で決定できる、最小の属性集合のこと。
- つまり、候補キー (K) は、
- ( K^+ = {A, B, C, D, E} ) を満たし(全属性決定)
- ( K ) の真部分集合で全属性決定できるものがない(最小性)
候補キーの候補を順に検討する
1. ア: ({A, C})
- ( {A, C}^+ ) を求める
- 初期:({A, C})
- ( A \to B, C ) より、(B) が追加(ただし (C) は既にある)
- ({A, C, B})
- ({C, D} \to E) なので、(D)がないため (E) は決定できない
- 結果:({A, B, C})
- 属性 (D, E) が含まれず、すべての属性決定できない → 候補キーではない。
2. イ: ({A, C, D})
- ({A, C, D}^+) を求める
- 初期:({A, C, D})
- ( A \to B, C ) より、 (B)を追加
- ({A, B, C, D})
- ({C, D} \to E) より、(E)を追加
- ({A, B, C, D, E})
- すべての属性が含まれる → 候補キーの条件は満たす
しかし、このキーの真部分集合を調べる必要がある。
特に、「({A, D})」が候補キーかどうかを調べることで、それよりも小さいキーがあれば、こちらは最小ではないため候補キーにならない。
3. ウ: ({A, D})
- ({A, D}^+) を求める
- 初期:({A, D})
- (A \to B, C) より、(B, C)を追加
- ({A, B, C, D})
- ({C, D} \to E) より、(E)を追加
- ({A, B, C, D, E})
- 全属性決定できる → 候補キーの条件を満たす
また、({A}) や ({D}) では決定できないため、最小性も満たす。
4. エ: ({C, D})
- ({C, D}^+) を求める
- 初期:({C, D})
- ({C, D} \to E) より、(E)追加
- ({C, D, E})
- (A)と(B)がないため全属性は決定できない
- したがって、候補キーではない。
結論
- 候補キーとなるのは ( {A, D} ) (選択肢ウ)のみ。
- ( {A, C, D} ) は全属性を決定するが、より小さなキー ( {A, D} ) が存在するため候補キーとは言えない。
まとめ
以上より、関数従属からわかる候補キーは (\boxed{{A, D}}) であり、選択肢ウが正解です。