正規化理論 (第三正規形まで)
正規化理論とは
データベース技術 [実践] 入門を読んで第二弾
データベース設計で行うべき手順
第1正規形から第5正規形まであります。
基本的には第三正規形までやれば十分といわれているらしいです。
第一正規形
テーブル構成において重複や繰り返し、複合値(一つのカラムに複数の情報をもたせること)を含んだ構造にしないこと。
重複があると一部書き間違えてしてしまっても検知できず、同じ部署に所属している人同士で部署の連絡先が違うといった事態になってしまいます。
この正規化を行うにはテーブルを複数つくって関連付けを行い重複を避けるという方法が本書には書かれています。
第二正規化
主キーが複数のカラムから構成されていて、そのうちの一部のカラムの値によってのみきまる列があるテーブルを第二正規化が行われていないテーブルと呼ぶ
order_id | user_id | user_name | created |
---|---|---|---|
1 | 201 | 花村陽介 | 2018-12-23 |
2 | 202 | 天城雪子 | 2018-12-24 |
order_idとuser_idでcreatedカラムは決まるがuser_nameカラムはuser_idだけで決まるので、このテーブルは第二正規化が行われていないテーブルと言えます。なぜこういったテーブルが問題なのかというと、同じuser_idを持ちながら違うuser_nameを登録することもできてしまうからでです。
第三正規形
テーブルのすべてのカラムは列は主キーによってただ一つに決まるべきである、というもの。
例えば
user_id | user_name | school | school_place |
---|---|---|---|
1 | 花村陽介 | 八十神高等学校 | 八十稲羽市 |
2 | 伊織 順平 | 月光館学園 | 巌戸台 |
このテーブルではuser_idでuser_nameは決まるが、school_placeはuser_idと直接関係がありません。この構造の問題点は同じschoolであるにもかかわらず、異なるschool_placeが登録できてしまう点です。
まとめ
第一正規形 ー> 重複がないようにしましょう。
第二正規形 ー> 複数の主キーがある場合には一部のキーだけで値が決まるようなカラムは持たせないようにしましょう。
第三正規形 ー> 主キーで直接値が決まらないカラムはそのテーブルが持つべきではありません。