読み方 : かんすうじゅうぞくせい
関数従属性 【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更新)
関連用語
他の用語辞典による「関数従属性」の解説 (外部サイト)
資格試験などの「関数従属性」の出題履歴
▼ 基本情報技術者試験
【令7修7 問19】 関係 “注文記録” の属性間に ①~⑥ の関数従属性があり,それに基づいて第3正規形まで正規化を行って,“商品”,“顧客”,“注文”,“注文明細” の各関係に分解した。
【令5公 問6】 次の関数従属を満足するとき,成立する推移的関数従属はどれか。ここで,“A→B” はBがAに関数従属していることを表し,“A→{ B,C }” は,“A→B” かつ “A→C” が成立することを表す。
【令4修1 問25】 関係 “注文記録” の属性間に ①~⑥ の関数従属性があり,それに基づいて第3正規形まで正規化を行って,“商品”,“顧客”,“注文”,“注文明細” の各関係に分解した。
【令2修7 問27】 属性aの値が決まれば属性bの値が一意に定まることを,a → b で表す。例えば,社員番号が決まれば社員名が一意に定まるということの表現は,社員番号 → 社員名である。
【平31修1 問27】 属性aの値が決まれば属性bの値が一意に定まることを,a → b で表す。例えば,社員番号が決まれば社員名が一意に定まるということの表現は,社員番号 → 社員名である。
【平30修12 問28】 関係 “注文記録” の属性間に ①~⑥ の関数従属性があり,それに基づいて第3正規形まで正規化を行って,“商品”,“顧客”,“注文”,“注文明細” の各関係に分解した。
【平29修7 問27】 関係 “注文記録” の属性間に ①~⑥ の関数従属性があり,それに基づいて第3正規形まで正規化を行って,“商品”,“顧客”,“注文”,“注文明細” の各関係に分解した。
【平29春 問25】 属性aの値が決まれば属性bの値が一意に定まることを,a → b で表す。例えば,社員番号が決まれば社員名が一意に定まるということの表現は,社員番号 → 社員名である。
【平28秋 問27】 6行だけから成る “配送” 表において成立している関数従属はどれか。ここで,X→Yは,XはYを関数的に決定することを表す。
【平27秋 問27】 関係 “注文記録” の属性間に ①~⑥ の関数従属性があり,それに基づいて第3正規形まで正規化を行って,“商品”,“顧客”,“注文”,“注文明細” の各関係に分解した。
【平26春 問26】 項目aの値が決まれば項目bの値が一意に定まることを,a → b で表す。例えば,社員番号が決まれば社員名が一意に定まるということの表現は,社員番号 → 社員名である。
【平25修1 問31】 項目aの値が決まれば項目bの値が一意に定まることを,a → b で表す。例えば,社員番号が決まれば社員名が一意に定まるということの表現は,社員番号 → 社員名である。
【平22修7 問32】 項目aの値が決まれば項目bの値が一意に定まることを,a → b で表す。例えば,社員番号が決まれば社員名が一意に定まるということの表現は,社員番号 → 社員名である。