直ぐ忘れてしまう。
先ず、一方の値が決まると他方も決まるものを、関数従属性という。
第一正規化
一つのセルに複数のデータを持たない。
第二正規化
部分関数従属を取り除く。
部分関数従属とは、主キーの一部だけで一意に決まる列のこと。
主キーが複数あり、その内の一つだけで値が決まるものを別のテーブルにする。
第三正規化
推移的関数従属を取り除く。
推移的関数従属とは、テーブル内の段階的な関数従属のこと。
つまり、主キー以外と関数従属があること。
主キー以外の項目で、他の列の値を一意に決めるものを別テーブルにする。
例えば、(主)社員ID → 部署コード → 部署名
部署コードが決まれば部署名が決まる。当然主である社員IDと部署コードは関数従属の関係なので、
段階的な関数従属があるといえる。
部分関数従属、推移的関数従属を取り除くことの必要性。
あるテーブルの中で推移的関数従属が残っていると、間違った登録が可能。(会社コードと会社名)
また、主キーが不明の段階で登録できない。
キー| メンバー名 | 会社コード | 会社名
1 | 太郎 | 0000 | AAA
2 | 次郎 | 0001 | AAA
テーブルの関連
1対1、1対多、多対多があるが、通常1対多のみ使う。
多対多となる場合、関連実体というテーブルを作る。ただ、通常の業務要件では、
マスタとマスタを直接関連付けることはないので、普通に考えると多対多とはならない。