【DB設計】第1正規形について調べてみた

DBの正規化とは

DBの正規化とはDB上のデータを重複なく保存するためにDBの構造やデータの持ち方を整えていくことです。

大切なことは、ゴールがDBのデータの重複をなくすということです。

正規化を行うことで、データ更新時のパフォーマンス向上やバグ削減を行えたり、DB上でのデータの矛盾を減らしたりすることができます。

ではここから、DB正規化の最初のステップである第1正規形についてご紹介してきます。

(なおここからDBはRDBを用いる前提で用語などを使用してきます)

 

第1正規形

考え方

RDBの主キーの役割として、「主キーが決まればそれに従属する値が決まる」という役割があります。

「この役割をしっかり守りましょうや」というのが第1正規化のルールです。

つまり、第1正規形とは「1つのフィールドには1つの値しか含まない」ということになります。

 

具体例

以下はシステムのユーザー情報に関するテーブルです。

ID(PK) name age hobby
1 Tom 20 サッカー
2 Max 23 空手

波紋の呼吸

主キーが2のときのhobbyに注目してください。

hobbyが「空手」と「波紋の呼吸」の2つの値が設定されています。

これでは、主キーを設定しているのにhobbyの値が決まりません。

これが第1正規形に反している状態になります。

 

修正1

ではこれを第1正規形に合うように修正していきます。

まず考えられるのが、レコードを分けることです。

つまり以下のように複数の値があったhobbyを分けてしまいましょうということです。

ID(PK) name age hobby
1 Tom 20 サッカー
2 Max 23 空手
2 Max 23 波紋の呼吸

しかしこれでは、主キーが重複してしまっています。

よって、修正方法としては誤っています。

 

修正2

結論、こちらの修正方法が第1正規形的には正しい修正方法になります。

hobby用のテーブルをもう一つ作成します。

user_id(PK)(FK) hobby(PK)
1 サッカー
2 空手
2 波紋の呼吸

ユーザーIDとhobbyを主キーとしたテーブルを作成し、ユーザーIDを外部キーとすることで「1つのフィールドには1つの値しか含まない」という第1正規化のルールを守ることができます。

 

以上!!!!!!!