基本情報技術者令和5年 [科目A]問6

問6

次の関数従属を満足するとき,成立する推移的関数従属はどれか。ここで,"A→B"はBがAに関数従属していることを表し,"A→{B,C}"は,"A→B"かつ"A→C"が成立することを表す。

〔関数従属〕
{注文コード,商品コード} → {顧客注文数量,注文金額}
注文コード → {注文日,顧客コード,注文担当者コード}
商品コード → {商品名,仕入先コード,商品販売価格}
仕入先コード → {仕入先名,仕入先住所,仕入担当者コード}
顧客コード → {顧客名,顧客住所}
  • 仕入先コード → 仕入担当者コード → 仕入先住所
  • 商品コード → 仕入先コード → 商品販売価格
  • 注文コード → 顧客コード → 顧客住所
  • 注文コード → 商品コード → 顧客注文数量

分類

テクノロジ系 » データベース » データベース設計

正解

解説

推移的関数従属とは、ある関係においてA→Cのように直接的な関数従属性があるのではなく、A→B→Cというようにある属性を経由することで、結果的にA→Cの関数従属性が成り立つことを言います。A→B→Cの例で言うと、Aが決まればBが一意に決まり、Bが決まればCが一意に決まるので、CはAに関数従属しています。このようにある属性を介して関数従属が成立するとき、その関係性を推移的関数従属といいます。

次の3つは推移的関数従属の例です。
  • 注文コード → 商品コード → 販売価格
  • 従業員番号 → 部門コード → 部門名
  • 従業員番号 → 所属支店コード → 勤務地名
  • 上から4つ目の関数従属より、仕入先コードが決まると、仕入先名・仕入先住所・仕入担当者コードが一意に決定するので「仕入先コード → 仕入担当者コード」は成立します。しかし、仕入担当者コードと仕入先住所の間には関数従属性がないので、推移的関数従属は成立しません。
  • 上から3つ目の関数従属より、商品コードが決まると、商品名・仕入先コード・商品販売価格が一意に決定するので「商品コード → 仕入先コード」は成立します。しかし、仕入先コードと商品販売価格の間には関数従属性がないので、推移的関数従属は成立しません。
  • 正しい。上から2つ目の関数従属より、注文コードが決まると、注文日・顧客コード・注文担当者コードが一意に決定します。さらに一番下の関数従属より、顧客コードが決まると、顧客名・顧客住所が一意に決定します。したがって「注文コード → 顧客コード → 顧客住所」の推移的関数従属が成立しています。
  • 注文コードから商品コードへの関数従属はないので、最初の「注文コード → 商品コード」が成立しません。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop