Developer

【SQL基礎】データベースの正規化2
2021.07.29
Lv1

【SQL基礎】データベースの正規化2

正規化とは

リレーショナルデータベースを設計するうえで、正規化という考え方は必須です。

正規化を一言でいうと、「テーブル(表)を整理すること」です。

正規化を行うことで、データの管理がしやすくなるというメリットがあります。

正規化にはいくつかの段階がありますが、本ブログでは一般的な正規化の過程で現れる非正規形、第一正規形、第二正規形、第三正規形を扱います。(非正規形と第一正規形は前回


第二正規形

第二正規形は、部分関数従属を排除し、別テーブルとすることで実現できます。

関数従属とは、主キーが決まることによって他の列の値が決まることです。

例えば、注文IDが決まると顧客IDも自動的に決まります。この関係性が関数従属です。

部分関数従属とは、文字通り、部分的に関数従属の関係になっていることです。

テーブルに主キーが複数ある場合、そのうちの一つの主キーによって値が決まる関係性です。

今回も前回の記事で用いたテーブルを使います。

これを第二正規形にしてみると以下のように3つのテーブルに分けられます。


第三正規形

第三正規形は、推移的関数従属を排除し、別テーブルとすることで実現できます。

推移的関数従属とは、主キー以外の列に関数従属している関係性のことです。

顧客IDは主キーではありませんが、顧客IDが決まることで顧客名は自動的に決まります。

先ほどの注文IDと顧客IDのテーブルは以下のように分割できます。


学習のポイント

・第二正規形は、部分関数従属を排除する。

・第三正規形は、推移的関数従属を排除する。

 

 

連載目次リンク

SQL基礎 連載目次

関連する連載リンク

SQL練習問題 一覧まとめ