データベース

正規化

正規化は、混在した事実を主題別に分けて重複を減らす処理です。重複は更新・挿入・削除時の不整合につながります。

正規化で異常が解消される過程のシミュレータ

1. 正規形を選択

2. 異常を起こす操作を実行

正規形を変え、同じ操作を繰り返してください。下線付きの列が主キーです。

1NF1セル1値
2NF部分関数従属を除去
3NF推移的従属を除去
BCNF決定項が候補キー

関数従属性から分割先を考える

学生番号で名前が決まる関係を「学生番号→名前」と書きます。色付きチップが関数従属性を示します。段階を進めると関連した事実が別テーブルにまとまります。

1NFは1セルに1つの値を置きます。 2NFは複合キーの一部だけに依存する列を分離します。 3NFは非キー列を介した推移的な依存を分離します。 BCNFでは、すべての決定項が候補キーであることを求めます。

実務と面接

正規化は重複を減らしますが、検索時のJOINが増える場合があります。読込み主体の用途では意図的な非正規化も使います。3種類の異常を具体例で説明できるようにしましょう。