tableの正規化
正規化は、データの整合性とパフォーマンスのトレードオフになる
パフォーマンスの問題によりやむなく非正規化を選択することもある
ただし、最終手段
基本的には、3.5正規形までやれば良い
そうすれば、たいてい5まで自動的に終わる
6はやりすぎなのでそこまでする必要はない
冗長性を排除する
「1つの更新をしたい時に、複数レコードを更新しないといけない」のような状態を排除する
データの一貫性を保つ
更新時の不都合を防ぐ
人間の操作ミスを防ぐ
tableの表す意味が明確になり、人間が理解しやすくなる
5 (+1)種類ある
関数従属性に関する正規化
非キーがないtableで、複合主キーがあるtableのみが対象
中間tableがあるときだけ意識すれば良い
正規化の欠点
table数が増えるため、SQLでの結合を多用することになりパフォーマンスが悪化する
JOINが必要なため、SQLもごちゃごちゃする
パフォーマンスに問題があるために、非正規化を行う例
参考