関係データベース
正規化について
わかりやすく説明
正規化とは、データベース(関係データベース)を重複なく作成し、データの追加、更新、削除を行う際、データの不整合や喪失を防ぐための設計を指します。そのために行う作業は「表の横縦の繰り返しをなくしていくこと」です。
関係データベースとは、行と列で作成される、複数の表形式の「テーブル」を、互いに関連付けて作成されたデータベース。リレーショナルデータベース(RDB)ともいいます。
正規化は、第1正規形から第5正規形までありますが、第3正規形までに留めることが一般的です。
第1正規形について
第1正規形は「横方向」の重複をなくしていきます。
上のような表があったとします。
注文番号ごとに、いつ、だれが、どのような商品を購入したのががわかるようになっています。
上の表の第1正規化を行うと下記のようになります。
もとの表では、商品名が繰り返されていたため、重複をなくします(横の重複をなくす)
オレンジセルを「主キー」とします。
ここで「主キー」と「外部キー」について知っておきましょう
主キー
データが1意であること(重複がないこと)
NULLでないこと(空欄ではないこと)
※行を組み合わせることで主キーとして扱うことを「複合キー」といいます
外部キー
ほかの表の主キーを参照することで、表と表を対応付ける項目(列)のこと
外部キーは参照先となるテーブルの列内ある値のみしか使用できません。
第2正規形について
第2正規形は「縦方向」の重複をなくしていきます。
第2正規形の条件は、第1正規形の条件に加え主キーが他の項目に対して「完全関数従属」している状態とします。
完全関数従属
「〇〇と決まれば××と1つに決まる」状態のこと
第1正規形の表から「注文テーブル」と「商品テーブル」を作成し、残りを「数量テーブル」とします。
「注文テーブル」の主キー「注文番号」が決まれば他の列の値が決まる状態。
また、「商品テーブル」の主キー「商品ID」が決まれば他の列の値が決まる状態。
上記とすることが第2正規形です。
第3正規形について
第3正規形は、第2正規形同様、「縦方向」の重複をなくしていきます。
第3正規形は、第2正規形の各テーブル内での関係従属している部分を別テーブルに分けます。
上記のように、第2正規形の「注文テーブル」の「ユーザーID」を別テーブルに分けることができます。
上記とすることが第3正規形です。
コメント