廣瀬製紙株式会社

Employees' Blog 社員ブログ

RDBの正規化と関数従属

公開日:2025.02.17 更新日:2025.12.15
3人の男女が話し合うイラスト

リレーショナルデータベースの正規化に関して必ず出てくる関数従属に関して、矢印を使った図解でわかりやすく(?)図示しました。

これによってイメージがつかめた! という方が増えればうれしいです。
なお、テーブルの図において、アンダーラインがついているものが主キーを表しています。

完全関数従属 (Full Functional Dependency)

完全関数従属のテーブル例
学生テーブル

ここでは、学生テーブルの非キー属性である「氏名」と「生年月日」は、主キーである学生IDに対して完全に従属しています。

部分関数従属 (Partial Functional Dependency)

正規化前

部分的関数従属のテーブル例
注文詳細テーブル

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

正規化後

部分的関数従属のテーブル例(正規化後1)
注文詳細テーブル
部分的関数従属のテーブル例(正規化後2)
商品テーブル

こうすることで部分関数従属がなくなり、第二正規形を満たすようになりました。

推移的関数従属 (Transitive Functional Dependency)

正規化前

推移的関数従属のテーブル例
従業員テーブル

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

正規化後

推移的関数従属のテーブル例(正規化後1)
従業員テーブル
推移的関数従属のテーブル例(正規化後2)
部署テーブル

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

松村あきのプロフィール画像

この記事を書いた人

生産性向上PJチーム 松村 晶(まつむら あき)

2024年11月廣瀬製紙株式会社入社。

書店・福祉・飲食業などを経験したのち、システム開発畑に転向。

転職をきっかけに生まれの地である高知市に移住し、現在は社内SEとして、社内のDBシステム開発やDX関連のシステム開発を担当している。

この著者の記事を見る