正規化
せいきか
ひとことで言うと
データベースの冗長性を排除し、更新時異常を防ぐためにテーブル構造を整理するプロセス。
解説
リレーショナルデータベースの設計において、データの冗長性を排除し、更新時異常(挿入異常・更新異常・削除異常)を防ぐためにテーブル構造を整理するプロセス。第1正規形、第2正規形、第3正規形が基本であり、関数従属性の分析に基づいてテーブルを分割する。正規化を進めすぎるとテーブルの結合が増え性能が低下するため、実務では適切なレベルで止めることもある。
くわしく解説
正規化とは、リレーショナルデータベースの設計において、データの重複(冗長性)を排除し、データ更新時に発生する異常(挿入異常・更新異常・削除異常)を防ぐためにテーブルを適切な形に整理するプロセスである。正規化の段階は主に第1正規形(1NF)・第2正規形(2NF)・第3正規形(3NF)の3段階で進める。第1正規形はすべての属性が原子値(繰り返しなし)、第2正規形は部分関数従属の排除(主キー全体に従属)、第3正規形は推移的関数従属の排除(非キー属性どうしの依存を分離)を指す。正規化を進めることでテーブルの整合性と保守性が向上するが、過度な正規化はテーブル結合処理の増加によりパフォーマンスが低下するため、実務では意図的に非正規化する場合もある。
具体例で考えよう
商品名と単価を受注テーブルに直接持つ設計では、商品の単価変更時に受注データの全行を更新しなければならない更新異常が発生する。正規化により商品テーブルを分離すると、単価は商品テーブルの1箇所だけ変更すれば済む。
試験対策ポイント
第1〜第3正規形の定義と手順は最頻出。関数従属性・部分関数従属・推移的関数従属の意味を正確に理解すること。挿入異常・更新異常・削除異常の具体例も問われる。