6.3.2 正規化の手順
応用情報技術者試験まで残り64日。
以下のテキストを読み進めていき、疑問点を書き出していきます。
平成29年度【春期】【秋期】応用情報技術者 合格教本 (情報処理技術者試験)
- 作者: 大滝みや子,岡嶋裕史
- 出版社/メーカー: 技術評論社
- 発売日: 2016/12/15
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
第1正規化
関係データベースに定義できるのは平坦な二次元の表なので、繰り返し部分を持つ表はこれを排除し平坦にする必要がある。この繰り返しを排除する操作を第1正規化という。この正規化の結果得られる表を第1正規形という。
第1正規形におけるデータ操作での不具合
第1正規形となった表はデータが冗長であるため、このままではデータ操作時に不具合が生じます。この不具合を更新時異常と呼ばれ、以下の種類があります。
- 修正時異常
- 挿入時異常
- 削除時異常
これらの更新時異常を防止するために、次のステップである第2正規化及び第3正規化を行います。
第2正規化
候補キーの一部に部分関数従属する非キー属性を別の表に分解する。
つまり、すべての非キー属性が各候補キーに完全関数従属である状態にする。
例えば、売上明細テーブルがあり、カラムとして売上番号と商品番号、その他商品情報が存在する場合、主キーの一部である商品番号に部分関数従属している商品情報を、商品表として独立させる。操作などが考えられます。
第3正規化
候補キーに推移的従属している非キー属性を別の表に分解します。
非キー属性間の関数従属をなくし、どの非キー属性も候補キーに直接に関数従属している状態にする操作。
ちょっと第2と第3の差がよくわからんぞ。
主キーに従属している属性を切り出すのが第2で、
主キー以外に従属している属性を切り出すのが第3か。
正規化と非正規化
正規化の目的は、データ操作に伴う更新時異常発生を防ぐこと。
正規化を進めていくといくつかの表に分割されるため、そこからデータを取り出す際には、いくつもの表の結合が必要になり処理に時間がかかります。
そのため、処理速度を厳密に求められる場合あ、更新時異常の発生が低い場合はあえて正規化をしなかったり、元に戻すこともあります。