なぜ正規化するのか
データの整合性を保つため
同じデータはを2重に持たない=2重に持たないので矛盾した事実が存在することはない=1カ所変更すればよい
重複とは「事実の記録が重複している」
導出データシステム
オリジナルのソースから再生成できる
キャッシュ
第1正規形
リレーションがスカラ値のみで構成されている=反復列が含まれていない
=リレーショナル演算で扱える形になっている
更新時異常が生じる可能性がある
table:表
顧客名 商品名 数量 単価 金額
A商店 テレビ 3 198000 594000
Bマート テレビ 10 198000 1908000
Bマート 洗濯機 5 59800 299000
C社 餅つき器 1 29800 29800
更新時異常
タップル挿入時異常
電子レンジを加えるとき -, 電子レンジ, -, 74800, -
電子レンジが74800というデータを挿入できない
タップル削除時異常
C社からの注文がキャンセルになったとき削除すると、餅つき器, 29800という情報が消える
タップル修正時異常
1
テレビの単価が変更になったとき2つのタップルを変更しなければならない
2
C社の注文が餅つき器からテレビになったとき、餅つき器の価格の情報が失われる
リレーションを分割する
第2正規形
第1正規形かつ主キーに依存する列のみを含んでいる
まだ更新時異常が生じる可能性がある
table:表
社員番号 社員名量 給与 所属 勤務地
0650 鈴木一郎 50 K55 神奈川
1508 浜崎アユ 40 K41 東京
0231 宇多田ヒカル 60 K41 東京
2034 別所幸治 40 K55 神奈川
2100 森虎丸 40 K58 静岡
更新時異常
タップル削除時異常
2100 森虎丸 40 K58 静岡が削除されると- - - K58 静岡の情報がなくなる
タップル更新時異常
1
K41が東京から千葉にうつったとする
2
森がK55の神奈川勤務になったときK58 静岡の情報が消える
所属 -> 勤務地の関数従属性が存在する
推移的関数従属性である
第3正規形
第2正規形かつ過渡的にも依存していない列のみが含まれている
意味的制約としての関数従属性が保存されない場合ある
第4正規形
第5正規形
どこまで正規化すれば良いか
「第3正規化止まりにするのが良いのではにか」という共通認識ができている。
経験則から
サロゲートキー