データベーススペシャリスト試験 2013年 午前2 問02
関数従属に関する記述のうち、適切なものはどれか。ここで、A、B、Cはある関係の属性の集合とする。
ア:BがAに関数従属し、CがAに関数従属すれば、CはBに関数従属する。
イ:BがAの部分集合であり、CがAに関数従属すれば、CはBに関数従属する。
ウ:BがAの部分集合であれば、AはBに関数従属する。
エ:BとCの和集合がAに関数従属すれば、BとCはそれぞれがAに関数従属する。(正解)
解説
関数従属に関する記述のうち、適切なものはどれか【午前2 解説】
要点まとめ
- 結論:関数従属は和集合に対して成り立っても、部分集合に対して必ずしも成り立つとは限らないため、エが正しい。
- 根拠:関数従属は「決定側属性集合が同じなら、従属側属性集合も同じ」という関係であり、和集合の関数従属から個別の関数従属が導かれる。
- 差がつくポイント:部分集合や複数の関数従属の関係性を正確に理解し、誤った推論をしないことが重要。
正解の理由
選択肢エは「BとCの和集合がAに関数従属すれば、BとCはそれぞれがAに関数従属する」と述べています。これは関数従属の基本的な性質の一つで、和集合に対する関数従属が成り立つ場合、和集合の各部分集合も同じ決定側に関数従属します。つまり、 ならば かつ が成り立ちます。これが正しいため、エが正解です。
よくある誤解
関数従属は部分集合の関係で必ずしも伝播しないため、「部分集合だから関数従属する」と誤解しやすいです。和集合と部分集合の違いを混同しないことが重要です。
解法ステップ
- 関数従属の定義を確認する:「決定側の属性集合が同じ値なら、従属側の属性集合も一意に決まる」
- 選択肢の記述を関数従属の性質に照らし合わせる
- 和集合に関する関数従属の性質を思い出す(和集合の関数従属は部分集合にも成り立つ)
- 部分集合に関する誤った推論がないか確認する
- 正しい性質を述べている選択肢を選ぶ
選択肢別の誤答解説ステップ
- ア: 「BがAに関数従属し、CがAに関数従属すれば、CはBに関数従属する」は誤り。BとCがAに関数従属しても、CがBに関数従属するとは限らない。
- イ: 「BがAの部分集合であり、CがAに関数従属すれば、CはBに関数従属する」も誤り。部分集合であることと関数従属は直接関係しない。
- ウ: 「BがAの部分集合であれば、AはBに関数従属する」も誤り。部分集合だからといって逆方向の関数従属が成り立つとは限らない。
- エ: 「BとCの和集合がAに関数従属すれば、BとCはそれぞれがAに関数従属する」 は正しい。
補足コラム
関数従属はリレーショナルデータベース設計の基礎であり、正規化の根拠となります。特に和集合や部分集合の関係を正しく理解することは、正規形の判定やキーの特定に不可欠です。関数従属の性質には推移律や分解律などもあり、これらを活用してデータの整合性を保ちます。
FAQ
Q: 関数従属の「和集合」とは何ですか?
A: 複数の属性集合をまとめた集合のことで、例えばBとCの和集合は を指します。
A: 複数の属性集合をまとめた集合のことで、例えばBとCの和集合は を指します。
Q: 部分集合だから関数従属が成り立つとは限らないのはなぜですか?
A: 関数従属は属性の値の一意性に基づくため、単に部分集合であるだけでは決定側としての一意性が保証されないからです。
A: 関数従属は属性の値の一意性に基づくため、単に部分集合であるだけでは決定側としての一意性が保証されないからです。
関連キーワード: 関数従属, 正規化, リレーショナルデータベース, 属性集合, データベース設計