DB設計について③関数従属性・第2正規形について
関数従属性
正規化を理解するためには関数従属性が重要になる。
1次関数はxの値を決めればyの値は決定させる。この関係が成立する場合yはxに従属するといい、記号では
{x}→{y}と表す。
つまり、正規化とはテーブルの全ての列が関数従属性を満たすように整理していくことである。
{主キー}→{カラム}
部分関数従属と完全関数従属について
部分関数従属とは→複数列からなる主キーの一部の列に対して従属する列がある状態。
完全関数従属とは→主キーを構成する全ての列に対して従属性がある状態。
なんのこっちゃかわからないので例とともに説明する。
https://gyazo.com/bb2c219c30fc669f60992a98fce69e70
上記DBの主キーは{会社ID,社員ID} である。
全てのカラムはこのキーに従属するけど、会社名は会社IDのみに従属している。= 部分関数従属
なので「社員」と「会社」と異なるレベルのエンティティに分離する必要がある。
https://gyazo.com/4f58f2edc648ddd74e3bfebc72cbac11
第2正規形
部分関数従属が解消されていて、完全関数従属のみのテーブルになっている形にすること。
#DB
#SQL
#正規形