LoginSignup
2
1

More than 3 years have passed since last update.

【RDB】正規化について5分で理解する

Posted at

リレーショナル・データベースにおいて、必須技術である正規化について、例を用いて簡単に説明します。

1.正規化とは

RDBの正規化とは、RDBにおいて、正規形と呼ばれる形式に関係(リレーション)を準拠させることにより、データの一貫性の維持と効率的なデータアクセスを可能にする関係設計を導くための方法である。(Wikipediaより)

要は、正規形と呼ばれる形式に基づいてデータ群を整理していこうって話です。
正規化の段階には、第1~第5正規形およびボイスコッド正規形がありますが、今回は、データベースを設計する際に一般的に用いられる第1~第3正規形までを説明します。

2.具体例

初期状態

スクリーンショット 2019-06-26 13.18.34.png
このような、よくある発注先テーブルを元に考えます。
上記のテーブルの場合、一つの発注先に対して異なる商品の項目が存在しています。
このような(正規化が全く行われていない)テーブルを非正規形と言います。

第1正規形

第1正規形とは、非正規形なテーブルをデータベースに保存できる形にすること

データベースに保存するためには、繰り返し項目のある部分を別レコードとして独立させなければいけません。また、「合計金額」の列は、それぞれのレコードに表示できないので、削除します。

初期状態の表を、下記のようにすればOKです。
スクリーンショット 2019-06-26 13.26.27.png

第2正規形

第2正規形とは、関連従属性のあるカラムを別テーブルとして分離すること
※関連従属性とは、主キー(Primary Key)であるカラムを決定すると、それに紐付く他のカラムが導き出せる関係を表す
※主キーとは、テーブル内のレコードを一意に特定できるカラムのこと

今回、「発注番号」と「商品」を主キーとします。
スクリーンショット 2019-06-26 15.16.20.png
主キーに選ばれたカラムを元にテーブルを分離します。
スクリーンショット 2019-06-29 13.53.33.png

第3正規形

第3正規形とは、推移従属性のあるカラムを別テーブルとして分離すること
※推移従属性とは、主キー(Primary Key)でないカラムを決定すると、それに紐付く他のカラムが導き出せる関係を表す
今回の場合、
スクリーンショット 2019-06-26 15.32.13.png
ここが該当しますね。ここを分離します。
よって、第3正規形は、下記のようになります。
スクリーンショット 2019-06-26 15.38.15.png

以上になります。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1