正規化の目的
データの冗長性の排除し、データの一貫性の担保、更新時などの効率上げること
正規化について
- 基本的に第三正規化まで原則として行う
第四正規化以降は高次正規化と呼ばれる
検索パフォーマンスとデータ生合成のトレードオフ
引用:達人に学ぶDB設計 徹底指南書
- 正規形はいつでも非正規形に戻せる
引用:達人に学ぶDB設計 徹底指南書
- 正規化は必ず可逆的な操作出なければならない
※ボイスコッド正規化は不可逆になる可能性がある
- 正規化は常に1対多の関係になるように行われなければならない
正規化のメリット
データの冗長性の排除により、更新時のデータ不整合を防ぐことができる テーブルの持つ意味が明確化されることで、開発者の理解が容易になる
正規化のデメリット
テーブル数が増えることでパフォーマンスが悪化する
第一正規化
- 一つのセルの中には一つの値しか含まない状態
Before
After
一つのセルに一つの値が含まれている時、この値をスカラ値と呼ぶ(スカラは単一のという意味)
なぜ一つのセルに複数の値が含まれている状態はダメなのか?→主キーが各列の値をユニークに識別できないから
つまり、リレーショナルデータベースの世界において、必ず第一正規形を満たすテーブルから構成されている必要がある
関数従属性
- 正規化 = テーブルの全ての列が関数従属性を満たすように整理していくこと
- Y = f(X)これをYはXに従属すると表現する[X列の値を決めればY列の値が一つに決まる]
第二正規化
comming soon...
参考
- 達人に学ぶDB設計 徹底指南書