2021.07.29
【SQL基礎】データベースの正規化2
正規化とは
リレーショナルデータベースを設計するうえで、正規化という考え方は必須です。
正規化を一言でいうと、「テーブル(表)を整理すること」です。
正規化を行うことで、データの管理がしやすくなるというメリットがあります。
正規化にはいくつかの段階がありますが、本ブログでは一般的な正規化の過程で現れる非正規形、第一正規形、第二正規形、第三正規形を扱います。(非正規形と第一正規形は前回)
第二正規形
第二正規形は、部分関数従属を排除し、別テーブルとすることで実現できます。
関数従属とは、主キーが決まることによって他の列の値が決まることです。
例えば、注文IDが決まると顧客IDも自動的に決まります。この関係性が関数従属です。
部分関数従属とは、文字通り、部分的に関数従属の関係になっていることです。
テーブルに主キーが複数ある場合、そのうちの一つの主キーによって値が決まる関係性です。
今回も前回の記事で用いたテーブルを使います。
これを第二正規形にしてみると以下のように3つのテーブルに分けられます。
第三正規形
第三正規形は、推移的関数従属を排除し、別テーブルとすることで実現できます。
推移的関数従属とは、主キー以外の列に関数従属している関係性のことです。
顧客IDは主キーではありませんが、顧客IDが決まることで顧客名は自動的に決まります。
先ほどの注文IDと顧客IDのテーブルは以下のように分割できます。
学習のポイント
・第二正規形は、部分関数従属を排除する。
・第三正規形は、推移的関数従属を排除する。