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

データベーススペシャリスト 2014年 午前206


問題文

第3正規形において存在する可能性のある関数従属はどれか。

選択肢

候補キーから繰返し属性への関数従属
候補キーの真部分集合から他の候補キーの真部分集合への関数従属(正解)
候補キーの真部分集合から非キー属性への関数従属
非キー属性から他の非キー属性への関数従属

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

第3正規形の関数従属【午前2解説】

正解の理由

第3正規形(3NF)は「任意の非自明な関数従属 について, が候補キーのスーパーキーであるか,あるいは がいずれかの候補キーに含まれるプライム属性であること」を満たすことが条件です。
したがって、候補キーの真部分集合から他の候補キーの真部分集合への関係は、右辺の属性が候補キーに含まれるプライム属性であれば 3NF で許容されます。選択肢の中でこれに該当するのは です。
(補足)問題文の「非キー属性」「繰返し属性」の扱いを明確にすると:
  • 繰返し属性(多値属性)は 1NF に違反するため、そもそも 3NF の議論に入る前に排除(分解)する必要があります。
  • 非キー属性同士の関数従属は,推移的従属を生じさせる形となり原則 3NF を満たさない(右辺がプライム属性でない限り許されない)ことを明示します。

解法ステップ

  1. まず 1NF の確認:繰返し属性(多値属性)が絡む選択肢は 1NF違反なので除外する。
  2. 次に 2NF の観点:候補キーの真部分集合 → 非プライム属性(非キー属性)は部分関数従属であり 2NF/3NF を満たさない。
  3. 3NF の定義適用:任意の について, がスーパーキーか,または がプライム属性かを確認する。右辺がプライム属性であれば 3NF で許容される。
  4. 各選択肢を上の基準で判定する。

選択肢別の誤答解説

  • ア: 候補キーから繰返し属性への関数従属
    • 繰返し属性(多値属性)は 1NF の違反要因です。1NF を満たしていないテーブルはそのままでは 3NF の議論対象になりません。従って 3NF に「存在する可能性がある」とは言えません(まず分解して多値属性を別表にする必要があります)。
  • : 候補キーの真部分集合から他の候補キーの真部分集合への関数従属
    • 正答。右辺が候補キーの部分に含まれる属性(=プライム属性)であれば,左辺がスーパーキーでなくても 3NF の条件を満たします。したがってこの種の従属は 3NF の下で存在し得ます。
  • ウ: 候補キーの真部分集合から非キー属性への関数従属
    • 部分関数従属に該当します。非キー属性はプライム属性ではないため,この従属は 2NF(部分従属)および 3NF を満たさず,違反となります。通常は分解により解消します。
  • エ: 非キー属性から他の非キー属性への関数従属
    • 非キー属性同士の従属は推移的従属を生じさせ,3NF に違反します(右辺がプライム属性であれば例外になるが、「非キー属性」は通常プライムではないことを意味するので違反と判断)。一般的には許容されません。

よくある誤解

  1. 「3NF は左辺がスーパーキーでなければすべてダメ」
    • 誤り。右辺がプライム属性であれば,左辺がスーパーキーでなくても 3NF は満たされる(これが 3NF と BCNF の違いの核心)。
  2. 「繰返し属性は単なる ‘非キー属性’ だから 3NF の議論で扱える」
    • 誤り。繰返し属性は多値性により 1NF に反するため、まず別表化(正規化)してから上位の正規形を考える必要があります。
  3. 「非キー→非キー は常に推移的従属という表現だけで済む」
    • 注意点として、右辺がプライム属性であれば 3NF で許されるケースがあるため、「常に」と断言してはいけません。ただし問題文の「非キー属性」は非プライムを指す文脈が多く、その場合は違反です。

補足コラム

  • 3NF と BCNF の違い:
    • 3NF は「 がスーパーキーであるか、 がプライム属性であるか」のどちらかを許容する。一方 BCNF は「すべての非自明な について がスーパーキーであること」(右辺がプライムかどうかは問わない)を要求する。したがって 3NF に合格していても BCNF に違反する場合があります(例: が存在し がスーパーキーでないが がプライム属性である場合、3NF は OK、BCNF は NG)。
  • 具体的イメージ(抽象例):
    • 属性集合 とし, が成り立つとする。すると は互いに決定しあい互換性があるため,候補キーとして が存在し得ます。このとき は「候補キーの真部分集合(B)→他の候補キーの真部分集合(C)」の形を取り, はプライム属性なので 3NF では許容されます(ただし BCNF では許されません)。

FAQ

Q. 「プライム属性」はどうやって判定する?
A. ある属性が「いずれかの候補キーに含まれている」ならばプライム属性です。候補キーの列挙が必要ですが,候補キーの一部であればプライム属性と判断します。
Q. 部分関数従属はいつ問題になる?
A. 候補キーの真部分集合 → 非プライム属性 の形は部分従属で,2NF/3NF に違反します。解決は関係の分解(正規化)です。
Q. 多値属性(繰返し属性)を見つけたら?
A. まずその多値属性を別関係に分解して 1NF を満たすようにする必要があります。1NF が満たされなければ 2NF/3NF の判定は無意味です。

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

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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