ホーム > データベーススペシャリスト試験 > 2016年
データベーススペシャリスト試験 2016年 午前2 問03
関係R(A, B, C)において, 関数従属A→B, B→Cが成立するとき, 導けない関数従属はどれか。
ア:{A, B, C} → {A, B}
イ:{A, C} → {A, B}
ウ:{A, C} → {A, B, C}
エ:{B, C} → {A, C}(正解)
解説
関係R(A, B, C)において関数従属A→B, B→Cが成立するとき導けない関数従属はどれか【午前2 解説】
要点まとめ
- 結論:与えられた関数従属から導けないのは「エ: {B, C} → {A, C}」です。
- 根拠:A→BかつB→Cならば、A→Cが導けるがB→Aは導けず、{B, C}→Aは成立しません。
- 差がつくポイント:関数従属の推移律と拡大律を正確に理解し、逆方向の従属を誤認しないことが重要です。
正解の理由
関数従属A→BとB→Cが成立するとき、推移律によりA→Cも成立します。
したがって、Aを含む属性集合からBやCを導くことは可能です。
しかし、B→Aの関数従属は与えられておらず、逆方向の従属は導けません。
選択肢エの{B, C}→{A, C}は、BとCからAを導くことを意味しますが、これは与えられた関数従属から導けません。
よって、エが導けない関数従属となります。
したがって、Aを含む属性集合からBやCを導くことは可能です。
しかし、B→Aの関数従属は与えられておらず、逆方向の従属は導けません。
選択肢エの{B, C}→{A, C}は、BとCからAを導くことを意味しますが、これは与えられた関数従属から導けません。
よって、エが導けない関数従属となります。
よくある誤解
関数従属は双方向に成り立つと誤解しやすいですが、推移律は一方向のみ有効です。
また、属性集合に含まれる属性が多いほど関数従属が成立すると誤認しがちです。
また、属性集合に含まれる属性が多いほど関数従属が成立すると誤認しがちです。
解法ステップ
- 与えられた関数従属A→B、B→Cを確認する。
- 推移律によりA→Cが導けることを理解する。
- 各選択肢の左辺から右辺の属性が導けるか検証する。
- 逆方向の関数従属(B→Aなど)が導けないことを確認する。
- 導けない関数従属を選択肢から特定する。
選択肢別の誤答解説
- ア: {A, B, C} → {A, B}
すべての属性を含む集合から部分集合への関数従属は拡大律で成立するため正しい。 - イ: {A, C} → {A, B}
A→Bがあるため、AとCの集合からBも導ける。 - ウ: {A, C} → {A, B, C}
イと同様にA→B、A→C(自己関数従属)で成立。 - エ: {B, C} → {A, C}
BとCからAを導く関数従属は与えられておらず、導けない。
補足コラム
関数従属の基本法則には「反射律」「推移律」「拡大律」があります。
推移律は「X→YかつY→ZならX→Z」となり、これを正しく使うことが関数従属問題の鍵です。
また、関数従属は方向性があり、逆方向は必ずしも成立しません。
推移律は「X→YかつY→ZならX→Z」となり、これを正しく使うことが関数従属問題の鍵です。
また、関数従属は方向性があり、逆方向は必ずしも成立しません。
FAQ
Q: 関数従属はなぜ逆方向に成り立たないのですか?
A: 関数従属は「ある属性集合が別の属性集合を一意に決定する」関係であり、逆方向は必ずしも一意に決定できないためです。
A: 関数従属は「ある属性集合が別の属性集合を一意に決定する」関係であり、逆方向は必ずしも一意に決定できないためです。
Q: 属性集合に余分な属性があっても関数従属は成立しますか?
A: はい。拡大律により、左辺に属性を追加しても関数従属は成立します。
A: はい。拡大律により、左辺に属性を追加しても関数従属は成立します。
関連キーワード: 関数従属, 推移律, 拡大律, 関係データベース, 正規化