データベースをより単純な形に分解していくこと。
主に、第一正規形〜第三正規形までがある。
第四正規形以降も存在するが、パフォーマンスの低下を招く恐れがあるので、多くの場合第三正規形に止める。
正規化は手順を進める毎にテーブルが増えていくことになる為、参照時のSQLコマンドを実行する回数が増えていくことで速度が低下する。
正規化を行っていないデータベースは、非正規形という。
なぜ必要なのか
単純な形に分解しておかなければ、参照時に分析が必要になってしまう。
RDBにおいては、データの重複がある部分について変更があった場合
全ての重複部分について正確に更新を行わなければ、矛盾が発生してしまいデータの整合性が取れなくなってしまう。など
第一正規形
データが、一つのカラムに一つの値のみが設定されている状態。
繰り返し入力されている値は、カラムを一つにまとめて、各々一つずつの別レコードにする。
第二正規形
各テーブルにおいて、主キー基準で主キー以外のカラムが一意に決まる状態。
逆に言えば、他のカラムを一意に決めるカラム(主キー)が一つのテーブルに複数存在しない状態。
第三正規形
各テーブルの主キー以外のカラムについて、
カラム同士で依存関係があるカラムを分解する。
うん、カリキュラムで一緒くたにしてただけあって、第二正規形と第三正規形の違いが
ちょこっとググっただけではよく分からん。
第三正規化が必要になってる時点で、第二正規化が不十分だったんだろ?って認識になっちゃう。
でもそれで正しいのかもしれない。
第二正規化の時点では主キーがそれ以外のカラムを一意に決めているが、
第三正規化においては、「あれっ?主キー以外にもまだ主キーにできそうな項目あるじゃん!」
っていう、第二正規化での見逃しを見つけるとか、複数の主キーで一意に決まるように見えるカラムを見つける作業
なのかな?という認識。