RDBの正規化と関数従属
公開日:2025.02.17 更新日:2025.02.17

リレーショナルデータベースの正規化に関して必ず出てくる関数従属に関して、矢印を使った図解でわかりやすく(?)図示しました。
これによってイメージがつかめた! という方が増えればうれしいです。
なお、テーブルの図において、アンダーラインがついているものが主キーを表しています。
目次
完全関数従属 (Full Functional Dependency)

ここでは、学生テーブルの非キー属性である「氏名」と「生年月日」は、主キーである学生IDに対して完全に従属しています。
部分関数従属 (Partial Functional Dependency)
正規化前

ここでは、商品名と単価が、複合主キーの一部である商品IDにのみ依存しています。
つまり、非キー属性が複合主キーの「一部分」に依存しているため、部分関数従属となります。
正規化後


こうすることで部分関数従属がなくなり、第二正規形を満たすようになりました。
推移的関数従属 (Transitive Functional Dependency)
正規化前

この例では、部署名は部署IDに依存し、さらに部署IDは主キーである従業員IDに依存しています。
そのため、従業員IDから部署名への依存は、推移的な関数従属となります。
正規化後


こうすることで推移的関数従属がなくなり、第三正規形を満たすようになりました。