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

データベーススペシャリスト 2021年 午前2 問03


問題文

関係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 情報処理技術者試験対策アプリ

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