メインコンテンツへ
データベース非正規形→第3正規形

非正規形から第3正規形(3NF)へ正規化する手順として正しいものはどれか。

ア.①繰り返し項目を排除して1NF→②主キーへの部分関数従属を解消して2NF→③推移的関数従属を解消して3NF正解
イ.①推移的関数従属を解消して1NF→②部分関数従属を解消して2NF→③繰り返し項目を排除して3NF
ウ.①主キーを設定して1NF→②外部キーを設定して2NF→③インデックスを設定して3NF
エ.①重複行を削除して1NF→②NULL値を排除して2NF→③冗長な列を削除して3NF

解説

正規化は「片付けの3ステップ」。まず「引き出し1つに複数のものを詰め込む(繰り返し)」を解消(1NF)。次に「ハーフサイズのキーだけで決まる情報」を別の引き出しに分ける(2NF)。最後に「キー以外の項目が別の非キー項目を決める連鎖」を切り離す(3NF)。

なぜ ア が正解か

正規化の標準的な手順: ①1NF化: 繰り返しグループ(配列・複数値)を排除し、すべての属性が原子値になるよう分解。②2NF化: 複合主キーに対する部分関数従属(主キーの一部のみに依存する非キー属性)を別テーブルに分離。③3NF化: 非キー属性から別の非キー属性への推移的関数従属(A→B→C のような連鎖依存)を別テーブルに分離。各ステップで情報損失なくテーブルを分解(無損失分解)することが重要。

なぜ イ は間違いか

手順の順序が誤り。正しくは「繰り返し排除→部分従属解消→推移従属解消」の順。推移的関数従属の解消が最初に来ることはない。正規化の順序を逆に記憶した誤り。

なぜ ウ は間違いか

主キー・外部キーの設定やインデックス設定は正規化とは別の概念。正規化はデータの関数従属関係に基づくテーブル分解であり、物理的なデータベース設計とは異なる。

なぜ エ は間違いか

重複行の削除は 1NF の要件ではなく主キー設定で保証される性質。NULL 値の排除は BCNF や 4NF などより高次の正規化に関わる場合もあるが、2NF の主な課題ではない。正規化の定義を誤解した誤り。

出典: AI生成問題(学習用)