ホーム > データベーススペシャリスト試験 > 2021年
データベーススペシャリスト試験 2021年 午前2 問03
関係R(A, B, C)の候補キーが{A, B}と{A, C}であり{A, B} →C及びC→Bの関数従属性があるとき関係Rはどこまでの正規形の条件を満足しているか。
ア:第1正規形
イ:第2正規形
ウ:第3正規形(正解)
エ:ボイス・コッド正規形
解説
関係Rの正規形判定問題【午前2 解説】
要点まとめ
- 結論:関係Rは第3正規形(3NF)を満たしています。
- 根拠:候補キーは{A, B}と{A, C}で、関数従属性{A, B}→CおよびC→Bがあるため、部分関数従属はなく、推移的関数従属も候補キーに関係しています。
- 差がつくポイント:候補キーの理解と関数従属性の分析で、推移的関数従属の有無を正確に判断できるかが重要です。
正解の理由
関係Rの候補キーは{A, B}と{A, C}です。
- {A, B}→Cは完全関数従属であり、部分関数従属ではありません。
- C→Bは関数従属ですが、Bは候補キー{A, B}の一部であり、推移的関数従属の条件を満たしません。
したがって、Rは第2正規形(2NF)を満たし、かつ推移的関数従属が候補キーの属性に限定されるため、第3正規形(3NF)を満たしています。
ボイス・コッド正規形(BCNF)は、すべての関数従属性の左側が候補キーである必要があり、C→Bは左側が候補キーではないためBCNFは満たしません。
よくある誤解
関数従属性の左側が候補キーの一部であればBCNFと誤解しやすいですが、BCNFは左側が必ず候補キー全体である必要があります。
また、推移的関数従属の判定を誤り、第3正規形を満たさないと誤認することも多いです。
また、推移的関数従属の判定を誤り、第3正規形を満たさないと誤認することも多いです。
解法ステップ
- 候補キーを確認する:{A, B}と{A, C}。
- 関数従属性を整理する:{A, B}→C、C→B。
- 部分関数従属の有無を確認する:{A, B}→Cは完全従属。
- 推移的関数従属の有無を確認する:C→Bは推移的だが、Bは候補キーの一部。
- 第1正規形、第2正規形、第3正規形、BCNFの定義と照合する。
- BCNFは満たさないため、第3正規形が正解と判断する。
選択肢別の誤答解説
- ア(第1正規形):第1正規形はすべての関係が満たす基本条件であり、問題の関数従属性からは不十分。
- イ(第2正規形):部分関数従属がないため2NFは満たすが、推移的関数従属の存在で3NFの判定が必要。
- ウ(第3正規形):推移的関数従属はあるが、従属先が候補キーの一部であり3NFを満たすため正解。
- エ(ボイス・コッド正規形):C→Bの関数従属性で左側が候補キーでないためBCNFは満たさない。
補足コラム
第3正規形(3NF)は、推移的関数従属を排除することでデータの冗長性を減らし、更新異常を防ぎます。
一方、ボイス・コッド正規形(BCNF)は3NFより厳格で、すべての関数従属性の左側が候補キーである必要があります。
実務では3NFで十分な場合が多く、BCNFは特殊なケースで適用されます。
一方、ボイス・コッド正規形(BCNF)は3NFより厳格で、すべての関数従属性の左側が候補キーである必要があります。
実務では3NFで十分な場合が多く、BCNFは特殊なケースで適用されます。
FAQ
Q: 推移的関数従属とは何ですか?
A: A→BかつB→Cの関数従属性がある場合、A→Cが推移的関数従属です。3NFではこれを排除します。
A: A→BかつB→Cの関数従属性がある場合、A→Cが推移的関数従属です。3NFではこれを排除します。
Q: BCNFと3NFの違いは何ですか?
A: BCNFはすべての関数従属性の左側が候補キーである必要がありますが、3NFは推移的関数従属が候補キーの属性に限定されていれば許容されます。
A: BCNFはすべての関数従属性の左側が候補キーである必要がありますが、3NFは推移的関数従属が候補キーの属性に限定されていれば許容されます。
Q: 部分関数従属とは何ですか?
A: 複合キーの一部の属性だけで他の属性が決まる関数従属を指し、2NFで排除されます。
A: 複合キーの一部の属性だけで他の属性が決まる関数従属を指し、2NFで排除されます。
関連キーワード: 正規化, 第3正規形, ボイス・コッド正規形, 関数従属性, 候補キー, 推移的関数従属, 部分関数従属