科目A問6
次の関数従属を満足するとき,成立する推移的関数従属はどれか。ここで,“A→B ”は B が A に関数従属していることを表し,“A→{B,C }”は,“A→B ”かつ“A→C ”が成立することを表す。
〔関数従属〕
{注文コード,商品コード}→{顧客注文数量,注文金額}
注文コード →{注文日,顧客コード,注文担当者コード}
商品コード →{商品名,仕入先コード,商品販売価格}
仕入先コード →{仕入先名,仕入先住所,仕入担当者コード}
顧客コード →{顧客名,顧客住所}
〔関数従属〕
{注文コード,商品コード}→{顧客注文数量,注文金額}
注文コード →{注文日,顧客コード,注文担当者コード}
商品コード →{商品名,仕入先コード,商品販売価格}
仕入先コード →{仕入先名,仕入先住所,仕入担当者コード}
顧客コード →{顧客名,顧客住所}
| 仕入先コード → 仕入担当者コード → 仕入先住所 | |
| 商品コード → 仕入先コード → 商品販売価格 | |
| 注文コード → 顧客コード → 顧客住所 | |
| 注文コード → 商品コード → 顧客注文数量 |
『情報処理過去問.com』からiPhoneアプリがリリースされました!!
正解
- ウ
解説
本問では,表に与えられた関数従属性をすべて満たすときに,新たに推移的に成立する関数従属(A→B,B→C から導かれる A→C の形)を選びます。
与えられている関数従属は次のとおりです。
1. {注文コード,商品コード}→{顧客注文数量,注文金額}
2. 注文コード →{注文日,顧客コード,注文担当者コード}
3. 商品コード →{商品名,仕入先コード,商品販売価格}
4. 仕入先コード →{仕入先名,仕入先住所,仕入担当者コード}
5. 顧客コード →{顧客名,顧客住所}
推移的関数従属を探すには,「選択肢の A→B, B→C の 2 本が上記 1〜5 に含まれているか」を確認します。
このうち,実際に A→B と B→C の両方が定義されており,A→C が推移的に成立するのはウ:注文コード → 顧客コード → 顧客住所 だけです。
与えられている関数従属は次のとおりです。
1. {注文コード,商品コード}→{顧客注文数量,注文金額}
2. 注文コード →{注文日,顧客コード,注文担当者コード}
3. 商品コード →{商品名,仕入先コード,商品販売価格}
4. 仕入先コード →{仕入先名,仕入先住所,仕入担当者コード}
5. 顧客コード →{顧客名,顧客住所}
推移的関数従属を探すには,「選択肢の A→B, B→C の 2 本が上記 1〜5 に含まれているか」を確認します。
このうち,実際に A→B と B→C の両方が定義されており,A→C が推移的に成立するのはウ:注文コード → 顧客コード → 顧客住所 だけです。
| ア. | 仕入先コード → 仕入担当者コード → 仕入先住所 |
| ・表から 仕入先コード → 仕入担当者コード は 4. より成立。 ・しかし 仕入担当者コード → 仕入先住所 という関数従属はどこにも定義されていません。 → 2 本目の矢印が前提にないので,推移的関数従属としては成立しません。 | |
| イ. | 商品コード → 仕入先コード → 商品販売価格 |
| ・3. より 商品コード → 仕入先コード は成立。 ・3. から直接 商品コード → 商品販売価格 はありますが, 仕入先コード → 商品販売価格 という従属は与えられていません。 → 「A→B, B→C」の B→C が存在しないので,これも推移的従属とは言えません。 | |
| ウ. | 注文コード → 顧客コード → 顧客住所 |
| ・2. より 注文コード → 顧客コード が成立。 ・5. より 顧客コード → 顧客住所 が成立。 → よって「注文コード → 顧客コード」「顧客コード → 顧客住所」がそろっているので, 推移律により 注文コード → 顧客住所 が成り立ちます。 → これはまさに A→B→C 型の推移的関数従属です。 | |
| エ. | 注文コード → 商品コード → 顧客注文数量 |
| ・3. より 商品コード → 仕入先コード は成立。 ・3. から直接 商品コード → 商品販売価格 はありますが, 仕入先コード → 商品販売価格 という従属は与えられていません。 → 「A→B, B→C」の B→C が存在しないので,これも推移的従属とは言えません。 |