関係データベースにおける正規化とは、データベースの一貫性を持たせるために、データの冗長性を少なくし、関連性の強いデータ項目(属性)をまとめて、一事実一箇所(1 fact in 1 place)にすることです。
正規化したデータベースは冗長性がなくなり、データの不整合の発生を防ぐことができます。
●正規化の種類
正規化の方法は数多くあるが、情報処理技術者で出題されるのは第1正規形、第2正規形、第3正規形とボイス・コッド正規形です。
- 第1正規形
データの繰り返し部分を別表にする。
- 第2正規形
1つのデータが定まると従属的にきまるデータを別表にする。
- 第3正規形
推移的に値がきまるデータを別表にする。
- ボイス・コッド正規形
すべての属性がキーに完全従属するようにしたもの。
●正規化の方法
売上伝表のデータについて考えます。
売上伝表が以下のようになっているとします。
|
伝表番号 |
顧客番号 |
顧客名 |
顧客担当者名 |
配送先住所 |
商品番号 |
数量 |
単価 |
商品番号 |
数量 |
単価 |
… |
商品番号 |
数量 |
単価 |
|
- 非正規形から第1正規形
上記表から、繰り返しデータが入っている箇所(商品番号、数量、単価)を別表にします。このとき2つの表のレコード関係付けるキーとして伝表番号を使います。
伝表番号 |
顧客番号 |
顧客名 |
顧客担当者名 |
配送先住所 |
これが第1正規形です。
- 第1正規形から第2正規形
第1正規形の表から、従属的にきまるデータを別表にします。
上記の表では、『顧客番号』から「顧客名」が、『商品番号』から「単価」が決まるので、これを別表にします。
これが第2正規形です。
- 第2正規形から第3正規形
第2正規形の表から、推移的に決まるデータを別表にします。
顧客番号から顧客担当者名が決まり、顧客担当者名から配送先住所が決まる場合、顧客番号から見て配送先住所は推移的に決まることになります。
これが第3正規形です。
- 第3正規形からボイス・コッド正規形
下の表は『顧客番号+顧客担当者名』で「配送先住所」が決まっていて、『顧客担当者名』から「配送先住所」が決まっているのでこれを分割します。
これがボイス・コッド正規形です。
●正規化のデメリット
正規化を行うことで一連のデータが複数の表に分散されるため、アクセスに時間がかかるという問題があります。
そのため、冗長なデータ構造になってもデータの更新頻度が低い場合には、あえて正規化を行わず、アクセス速度を重視することもあります。
戻る
一覧へ
|