戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

データベーススペシャリスト 2021年 午前203


問題文

関係R(A, B, C)の候補キーが{A, B}と{A, C}であり{A, B} →C及びC→Bの関数従属性があるとき関係Rはどこまでの正規形の条件を満足しているか。

選択肢

第1正規形
第2正規形
第3正規形(正解)
ボイス・コッド正規形

🔒 解説は解答すると表示されます

推移的従属性と3NF【午前2解説】

正解の理由

与えられた関係で候補キーが {A, B} と {A, C}、関数従属性が {A,B} → C および C → B です。このとき関係が第3正規形を満たす理由は、3NF の判定条件に従うと明確になります。3NF の条件は「任意の関数従属性 X → Y について、(1) X がスーパーキーである、または (2) Y がプライム属性(いずれかの候補キーに含まれる属性)である」のいずれかが成り立てばよい、というものです。
  • {A,B} → C は左辺が候補キー(スーパーキー)なので 3NF の条件を満たします。
  • C → B は左辺 C はスーパーキーではありませんが、右辺 B は候補キー {A,B} の一部でありすなわちプライム属性です。したがってこの従属性も 3NF の条件を満たします。
以上より、関係は第3正規形を満たします。したがって正解は です。

解法ステップ

  1. 候補キーとプライム属性を確認する
    • 与件より候補キーは {A,B} と {A,C}。よってプライム属性は A, B, C の全て(すべての属性が候補キーの一部)であると分かる。
  2. 各関数従属性 X → Y を 3NF 条件で評価する
    • {A,B} → C:X が候補キーなので OK。
    • C → B:X は候補キーではないが、Y(B) はプライム属性なので OK。
  3. 全ての FD が 3NF 条件を満たすため、関係は第3正規形であると結論付ける。
  4. 必要なら BCNF もチェック:C → B は左辺がスーパーキーでないため BCNF を満たさない(従って BCNF ではない)。

選択肢別の誤答解説

  • ア: 第1正規形
    • 1NF は最も基本であり「属性値が原子である」ことを要求する。与件がより強い性質(候補キーと関数従属性)を持つため、単に 1NF とは言えない(より高い正規形である)。
  • イ: 第2正規形
    • 2NF は「部分関数従属(候補キーの一部に依存する非プライム属性)がない」ことを要求する。ここでは全ての属性がプライム属性のため部分従属による 2NF 違反はないが、与件ではさらに 3NF の判定が可能であり、より高い 3NF を満たすため「最高の満足形は 2NF である」とは言えない。
  • : 第3正規形(正解の理由は上記参照)。
  • エ: ボイス・コッド正規形(BCNF)
    • BCNF は任意の非自明な従属性 X→Y に対し X がスーパーキーであることを要求する。C→B は左辺 C がスーパーキーでないため BCNF を満たさない。

よくある誤解

  1. 「推移的関数従属がある=必ず 3NF 違反」
    • 誤りです。重要なのは「推移的に従属している属性が非プライムかどうか」です。3NF は RHS がプライム属性であれば許容します。したがって推移的な形があっても RHS がプライムであれば違反になりません。
  2. 「C→B があるなら C はキーになる」
    • 間違いです。C→B が成り立つことだけで C がスーパーキーになるとは限りません。スーパーキーであるためには C から関係の全属性(A,B,C)を導ける必要がありますが、与件ではそれが示されていません。
  3. 「全ての候補キーに含まれる属性は常に正規化不要」
    • プライム属性であっても設計上の検討(冗長性や更新異常)が必要な場合があります。正規形判定は理論的条件の判定であり、実運用の観点は別に検討します。

補足コラム

  • 3NF の判定は「スーパーキーかプライム属性か」の二択ルールに要約できます。試験対策としては次の順が速いです:候補キーの把握 → プライム属性の把握 → 各 FD の評価。
  • BCNF と 3NF の差は「プライム属性の存在」を許すか否かです。設計上、BCNF を目指すとより冗長性が低くなる一方で分解が必要になり、参照結合が増えるトレードオフがあります。
  • 与件のように「全属性がプライム属性」の場合、R は常に 3NF になります(ただし BCNF かどうかは FD 次第)。

FAQ

Q1: C→B があるから「推移的従属がある」として自動的に 3NF に違反しますか?
A1: いいえ。推移的従属による 3NF 違反は「非プライム属性が別の非プライム属性を介して候補キーに依存している」場合に問題になります。ここでは RHS の B がプライム属性なので 3NF 違反にはなりません。
Q2: すべての属性がプライム属性なら常に 3NF ですか?
A2: はい。任意の FD の RHS がプライム属性になるため、3NF の条件(RHS がプライムである)が常に満たされます。ただし BCNF かどうかは別途検討が必要です。
Q3: BCNF を満たすにはどう確認すればよいですか?
A3: すべての非自明な従属性 X→Y に対して X がスーパーキーであることを確認します。本例では C→B が左辺非キーのため BCNF は満たしません。

関連キーワード: 関数従属性、3NF、BCNF、プライム属性、候補キー、推移的関数従属
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

データベーススペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について