データベーススペシャリスト – 正規化

第一、第二、第三とボイスコッド正規形、ボイスコッドって、、人ですか?

調べても出てこなかったけど、代わりにコンピュータ・サイエンスの学位は意味ないみたいな残念な記事を発見しました。涙

正規化とは

データをデータベースに効率的に格納できるように、ルールに従って分解したり複製したりすることと思ってます。

正規化(せいきか、英語: normalization)とは、データ等々を一定のルール(規則)に基づいて変形し、利用しやすくすること。

別の言い方をするならば、正規形でないものを正規形(比較・演算などの操作のために望ましい性質を持った一定の形)に変形することをいう。

多くの場合、規格化と訳しても同義である。

Wikipediaより

たぶん、だいたい合ってますよね。笑

第一正規形

イメージとしてはExcelのテーブルでセル結合してるところを、結合解除して空白になったところにデータをコピーする感じです。

データに繰り返し部分がある場合、それを取り除いたものというのが正しい定義のようです。

第二正規形

第一正規形からさらに部分関数従属しているデータを、別のテーブルに分けます。

  • 1 りんご A 青森県
  • 2 みかん B 愛媛県
  • 3 メロン A 青森県

みたいなデータがあったとき、2つの表に分解します。

<果物表>

  • 1 りんご
  • 2 みかん
  • 3 メロン

<都道府県表>

  • A 青森県
  • B 愛媛県

<コード対応表>

  • 1 A
  • 2 B
  • 3 C

コード表の1とか2とかAとかBのキーで、果物表と都道府県表を紐づけることができます。

第三正規形

第二正規形で主キー以外で関数従属しているもの(推移的関数従属)を、さらに分解してテーブル分けします。

でもまぁ第二までできたらデータベースは作れなくはないので、第三はそこまで深く考える必要はないのかなと思ったりもします。

表を紐づける機会の方が多いです

正直、テーブルのデータを分解して別のテーブルにした経験って僕はないです(できますけどね)。

なぜかっていうと、そこまで作られたテーブルを扱うか、自分で作るときは頭の中で分けれちゃうからです。

だから正規化って試験の問題としては出てくるけど、そこまで重要じゃないと思ってます。

考え方として全くない人には必要とは思うけど、何回かやってるうちにいらねってなると思います。笑