関数従属性 【functional dependency】

概要

関数従属性(functional dependency)とは、リレーショナルデータベース(RDB)の表で、2つの属性の間で片方のを決定するともう一方の一意に決まるという性質のこと。属性間の関数従属性を元に正規化われる。ここでの「関数」は一意に定まる対応関係のみを表し、数学関数のような規則性は必要ない。

例えば、社員名簿を管理する表で、「社員ID」を決定すれば「氏名」は一意に定まる。このとき、「社員ID」を「決定項」、「氏名」を「従属項」あるいは「被決定項」と呼び、「氏名は社員IDに関数従属している」という。この関係は「社員ID→氏名」のように表記される。同姓同名の可能性を考慮すると逆の関係は成立しない。

また、例えば「注文番号, 商品ID, 商品名, 数量」のように候補キー2つ(注文番号・商品ID)で複合主キーを構成するような表で、「注文番号」と「商品ID」のの組み合わせに対して、「商品名」および「数量」がそれぞれ従属しており、「{注文番号, 商品ID}→商品名」(または数量)という関係が成立している。

このとき、「商品名」は「商品ID」が決まれば「注文番号」のによらず決まるため、「商品ID→商品名」という関係も同時に成立している。これを「部分関数従属」という。一方、「数量」は「注文番号」と「商品ID」のいずれか片方のみでは決定できず、両者の組み合わせにのみ従属する。これを「完全関数従属」であるという。

また、「社員ID, 氏名, 住所, 郵便番号」という表で、「社員ID→住所」が成り立つが、「住所」が決まれば「郵便番号」も一意に定まるため「住所→郵便番号」も成り立っている。このとき、「社員ID→郵便番号」という従属性も成立し、「郵便番号」は「社員ID」に「推移的関数従属」しているという。

リレーショナルデータベースの表を構成する項目の冗長性や不整合を排除することを正規化という。どのような関係を整理するかによって第1正規形第2正規形第3正規形…といった段階があるが、第2正規形以降の正規化は項目間の関数従属性に従って関係の整理をっていく。

(2024.3.1更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる