リレーショナル・データベースにおいて、必須技術である正規化について、例を用いて簡単に説明します。
#1.正規化とは
RDBの正規化とは、RDBにおいて、正規形と呼ばれる形式に関係(リレーション)を準拠させることにより、データの一貫性の維持と効率的なデータアクセスを可能にする関係設計を導くための方法である。(Wikipediaより)
要は、正規形と呼ばれる形式に基づいてデータ群を整理していこうって話です。
正規化の段階には、第1~第5正規形およびボイスコッド正規形がありますが、今回は、データベースを設計する際に一般的に用いられる第1~第3正規形までを説明します。
#2.具体例
##初期状態
このような、よくある発注先テーブルを元に考えます。
上記のテーブルの場合、一つの発注先に対して異なる商品の項目が存在しています。
このような(正規化が全く行われていない)テーブルを非正規形と言います。
##第1正規形
第1正規形とは、非正規形なテーブルをデータベースに保存できる形にすること
データベースに保存するためには、繰り返し項目のある部分を別レコードとして独立させなければいけません。また、「合計金額」の列は、それぞれのレコードに表示できないので、削除します。
##第2正規形
第2正規形とは、関連従属性のあるカラムを別テーブルとして分離すること
※関連従属性とは、主キー(Primary Key)であるカラムを決定すると、それに紐付く他のカラムが導き出せる関係を表す
※主キーとは、テーブル内のレコードを一意に特定できるカラムのこと
今回、「発注番号」と「商品」を主キーとします。
主キーに選ばれたカラムを元にテーブルを分離します。
##第3正規形
第3正規形とは、推移従属性のあるカラムを別テーブルとして分離すること
※推移従属性とは、主キー(Primary Key)でないカラムを決定すると、それに紐付く他のカラムが導き出せる関係を表す
今回の場合、
ここが該当しますね。ここを分離します。
よって、第3正規形は、下記のようになります。
以上になります。