ロゴ
経営情報システム

データベースの正規化を図解でわかりやすく(非正規形→第3正規形)

データの重複や矛盾を防ぐため、表を段階的に分解して整理する手順。

非正規形から第1正規形・第2正規形・第3正規形へと段階的に分解する正規化プロセスを示した図解
データベースの正規化の図解

正規化は、リレーショナルデータベースで、データの重複や更新時の矛盾(更新不整合)を防ぐために、表を一定のルールに従って分解し整理する手順です。非正規形から第1・第2・第3正規形へと段階的に進めます。各段階で何を分離するのかを押さえることが重要です。

正規化の目的

正規化していない表は、同じデータがあちこちに重複して保存されがちです。すると、1か所を更新して他を更新し忘れるとデータが矛盾する、不要な行を消すと必要な情報まで消えてしまう、といった更新時の不整合(更新・挿入・削除の異常)が起こります。正規化は、こうした異常を防ぎ、データの一貫性を保つために行います。

第1正規形(繰り返しの排除)

1つのマス(セル)に複数の値が入っている「繰り返し項目」を排除し、すべてのセルが単一の値になるようにした状態です。たとえば、1件の注文に複数の商品がまとめて入っている表を、商品ごとの行に分けます。

第2正規形(部分従属の分離)

第1正規形のうえで、主キーの一部だけで決まる項目(部分関数従属)を別の表に分離した状態です。複数の列で主キーが構成される場合に、その一部だけに依存する項目(たとえば商品コードだけで決まる商品名)を切り出します。

第3正規形(推移従属の分離)

第2正規形のうえで、主キー以外の項目に依存する項目(推移関数従属)を別の表に分離した状態です。たとえば、社員表で「部門コード→部門名」のように、主キー(社員番号)ではなく別の非キー項目を介して決まる項目を切り出します。実務では、多くの場合この第3正規形まで行えば十分とされます。

◎ 試験対策のポイント

  • ▶第1正規形=繰り返し項目の排除、第2正規形=部分関数従属の分離、第3正規形=推移関数従属の分離。
  • ▶正規化の目的は更新時異常(更新・挿入・削除の不整合)の防止とデータの一貫性確保。
  • ▶正規化すると表が分割され重複は減るが、結合(JOIN)が増えて検索性能は低下しうる。
  • ▶性能上の理由で、あえて正規化を崩す「非正規化」が行われることもある。

よくある質問

Q. 正規化のデメリットはありますか?

A. 正規化を進めると表が細かく分割されるため、必要なデータを取り出す際に複数の表を結合(JOIN)する必要が増え、検索処理が重くなることがあります。そのため、性能を優先して意図的に正規化を緩める「非正規化」が行われる場合もあります。

Q. 実務では第何正規形まで行いますか?

A. 多くの場合、第3正規形まで行えば十分とされます。第3正規形まで進めれば、実務上問題となる更新時の異常はおおむね防げるためです。さらに厳密なボイス・コッド正規形や第4・第5正規形もありますが、通常の業務システムでは第3正規形が一つの目安になります。

関連する用語

用語の詳しい解説は用語集で確認できます。

関連する図解