第1正規形 (1NF)
- 目的: データベースの各カラムに原子性を持たせる。
- 手順: 各カラムに複数の値が含まれている場合、それを分割し、一つのカラムには一つの値のみが入るようにします。
- 例: 一人の学生が複数の電話番号を持っている場合、電話番号ごとにレコードを分ける。
第2正規形 (2NF)
- 目的: 部分的関数依存性を排除する。
- 手順: 全てのカラムが、主キー全体に依存していることを確認します。主キーの一部だけに依存しているカラムがある場合、それらを別のテーブルに移動します。
- 例: 学生IDと授業IDが複合主キーである場合、授業名は授業IDのみに依存しているので、授業IDと授業名を持つ新たなテーブルを作成します。
第3正規形 (3NF)
- 目的: 推移的関数依存を排除する。
- 手順: 非キーカラムが他の非キーカラムに依存している場合、その依存関係を排除します。これは、依存しているカラムを別のテーブルに移動させることで実現できます。
- 例: 「学生」テーブルに学生ID、学生名、学部名、学部所在地がある場合、学部名と学部所在地は学生IDではなく学部名に依存しているので、これらを「学部」テーブルとして分離します。
ボイスコッド正規形 (BCNF)
- 目的: 第3正規形で解決されない関数依存を排除する。
- 手順: すべての決定因子が候補キーであることを確認します。これには、主キー以外でレコードを一意に識別できるカラムの関数依存関係を見直し、必要に応じてテーブルを再構成します。