ホーム > データベーススペシャリスト試験 > 2017年
データベーススペシャリスト試験 2017年 午前2 問04
関係R(A, B, C, D, E)汇书℃, 関数従属{A, B}→C, {B, C}→D, D→{A, E}が成立する。これらから決定できるRの候補キーを全て挙げたものはどれか。
ア:{A, B, C}
イ:{A, B}, {B, C}
ウ:{A, B}, {B, C}, {B, D}(正解)
エ:{B, C}, {C, D}
解説
関係Rの候補キー判定問題【午前2 解説】
要点まとめ
- 結論:候補キーは{A, B}、{B, C}、{B, D}の3つが存在します。
- 根拠:与えられた関数従属から属性閉包を計算し、全属性を決定できる最小の属性集合を特定します。
- 差がつくポイント:属性閉包の計算ミスや、決定できる属性の見落としを防ぐことが重要です。
正解の理由
関数従属は以下の通りです。
- {A, B} → C
- {B, C} → D
- D → {A, E}
候補キーとは、関係のすべての属性を決定できる最小の属性集合です。
- {A, B}の閉包を計算すると、{A, B} → CよりCが決まり、さらに{B, C} → DよりDが決まり、D → {A, E}よりAとEも決まります。よって{A, B}の閉包は{A, B, C, D, E}で全属性を決定できるため候補キーです。
- {B, C}も同様に、{B, C} → DでDが決まり、D → {A, E}でAとEも決まり、元々BとCがあるので全属性が決定できます。
- {B, D}の閉包は、D → {A, E}でAとEが決まり、元々BとDがあるので{A, B, D, E}。さらに{A, B} → CでCも決まり、全属性が決定できます。
したがって、これら3つが候補キーとなり、選択肢ウが正解です。
よくある誤解
候補キーは単に関数従属の左辺の属性集合だけで判断しがちですが、属性閉包を計算し全属性を決定できるかを必ず確認する必要があります。
解法ステップ
- 与えられた関数従属を整理する。
- 各候補となる属性集合の属性閉包を計算する。
- 属性閉包が全属性集合{A, B, C, D, E}と一致するか確認する。
- 最小の属性集合であるかを検証し、候補キーを特定する。
- 選択肢と照合し、正解を選ぶ。
選択肢別の誤答解説
- ア: {A, B, C}は全属性を決定できるが、{A, B}や{B, C}の方がより小さいため候補キーではない。
- イ: {A, B}、{B, C}は正しいが{B, D}を含まないため不完全。
- ウ: {A, B}、{B, C}、{B, D}の3つがすべて候補キーで正解。
- エ: {B, C}は候補キーだが、{C, D}はD→{A, E}はあるがC単独ではAやBを決定できず候補キーではない。
補足コラム
候補キーの判定には属性閉包の計算が不可欠です。属性閉包とは、ある属性集合から関数従属を繰り返し適用して決定できる属性の集合を指します。これにより、候補キーの最小性と完全性を検証できます。
FAQ
Q: 候補キーと主キーの違いは何ですか?
A: 候補キーは関係のすべての属性を決定できる最小の属性集合で、主キーはその中から選ばれた一つのキーです。
A: 候補キーは関係のすべての属性を決定できる最小の属性集合で、主キーはその中から選ばれた一つのキーです。
Q: 属性閉包の計算はどのように行いますか?
A: 初めに属性集合自身を閉包に含め、関数従属の左辺が閉包に含まれる場合は右辺の属性を閉包に追加し、これを繰り返します。
A: 初めに属性集合自身を閉包に含め、関数従属の左辺が閉包に含まれる場合は右辺の属性を閉包に追加し、これを繰り返します。
関連キーワード: 関数従属, 属性閉包, 候補キー, 関係データベース, 正規化