正規化とは、「効率よくデータを扱うために、整理すること」かな。
データを管理する方法はいくつかあるが、主に世の中で使用されているものは、行( を表現する、関係データベース( リレーショナルデータベース と言われるものである。
実際の仕事で使用されているような情報は、2次元で表現するには複雑すぎる。
それを無理に関係データベースにすると、色々と残念なことが起きる。
それを上手く管理するためのデータへと分解するのが正規化という手法なんだと思う。
このデータを2次元のデータベースに入れようとするために、下記の図のように少し修正する。
見て分かるように、1つの取引番号対して、明細番号や商品コード等が繰り返し項目になっている。
このようのデータでは、行単位の情報でしか登録できない関係データベースには、登録したくても、登録できない。
それで、このデータを何とか無理くりでもデータベースに登録しようとした場合、1つの行にするために繰返し項目を無くして、単一値と呼ばれる形ににする。
これでデータベースに登録することはできる形にはなったが、なんだか悪くなってないか?っていうのが第1正規形と呼ばれる形である。
主キーとは、テーブルの中で行がひとつに絞り込める必要な値、もしくは値の組み合わせを指す。
なので、この部分だけ別テーブルに切りだしちゃう。すると下の図のようになる。
なので、気持ち悪いところを別テーブルに切りだしちゃうと以下のようになる。
しかし、何でもかんでも第三正規形にすればいいってもんじゃないこともある。