正規化
データベースで扱いやすいようにデータ整理すること
整合性が守られるデータベース設計
主キー候補キー
主キーとは、「リレーショナルデータベースのテーブル内でレコードを一意に定められる項目」。主キーはNULLは許されない。
候補キーとは、主キーの候補になるキー。テーブル内でレコードを一意に定められる項目の組み合わせ。
第1正規形
表に繰り返しの空きが出ないように繰り返し部分を列に増やす(あまりうまい説明ができないので空きのない表を作る的な感じで)
第2正規形
(条件) すべてのキー属性は候補キーに部分関数従属していない
部分関数従属していないとは
候補キーの一部だけで他の項目が一意に定まる場合。
要は
候補キーの一部で項目が決まるのに、他に必要のない候補キーを入れていないこと。
候補キーを第一正規形から探す。
{ レシート番号, 商品コード }
が候補キー
{レシート番号, 商品コード} → {数量, 小計}
{商品コード} → {商品名, 単価}
{レシート番号} → {店舗ID, 店舗名,住所 ,合計 ,消費税 ,請求額, 日時, 担当者コード, 担当者名 }
第三正規形
(条件)非キー属性は候補キーに推移的関数従属していない
推移的関数従属とは 非キー または 候補キー + 非キー によって非キー項目が一意に定まること
第二正規化のときのテーブルを例にすると、非キー属性の{店舗ID}が決まると{店舗名,住所}が一意に定まる。← 推移的関数従属している。
一般的には第二正規形から導出項目(計算によって求められる項目)を除く。
今回は{小計, 合計, 消費税, 請求額}
推移的関数従属を排除して完成
補足
超キーも重要ポイント
第三正規形は超キーを作り出すのがポイント