6.3.2 正規化の手順

応用情報技術者試験まで残り64日。

以下のテキストを読み進めていき、疑問点を書き出していきます。

平成29年度【春期】【秋期】応用情報技術者 合格教本 (情報処理技術者試験)

平成29年度【春期】【秋期】応用情報技術者 合格教本 (情報処理技術者試験)

 

 第1正規化

関係データベースに定義できるのは平坦な二次元の表なので、繰り返し部分を持つ表はこれを排除し平坦にする必要がある。この繰り返しを排除する操作を第1正規化という。この正規化の結果得られる表を第1正規形という。

第1正規形におけるデータ操作での不具合

第1正規形となった表はデータが冗長であるため、このままではデータ操作時に不具合が生じます。この不具合を更新時異常と呼ばれ、以下の種類があります。

  • 修正時異常
  • 挿入時異常
  • 削除時異常

これらの更新時異常を防止するために、次のステップである第2正規化及び第3正規化を行います。

第2正規化

候補キーの一部に部分関数従属する非キー属性を別の表に分解する。

つまり、すべての非キー属性が各候補キーに完全関数従属である状態にする。

例えば、売上明細テーブルがあり、カラムとして売上番号と商品番号、その他商品情報が存在する場合、主キーの一部である商品番号に部分関数従属している商品情報を、商品表として独立させる。操作などが考えられます。

第3正規化

候補キーに推移的従属している非キー属性を別の表に分解します。

非キー属性間の関数従属をなくし、どの非キー属性も候補キーに直接に関数従属している状態にする操作。

ちょっと第2と第3の差がよくわからんぞ。

主キーに従属している属性を切り出すのが第2で、

主キー以外に従属している属性を切り出すのが第3か。

正規化と非正規化

正規化の目的は、データ操作に伴う更新時異常発生を防ぐこと。

正規化を進めていくといくつかの表に分割されるため、そこからデータを取り出す際には、いくつもの表の結合が必要になり処理に時間がかかります。

そのため、処理速度を厳密に求められる場合あ、更新時異常の発生が低い場合はあえて正規化をしなかったり、元に戻すこともあります。