Q2
次の関数従属を満足するとき、成立する推移的関数従属はどれか。ここで、"A→B"はBがAに関数従属していることを表し、"A→{B, C}"は、"A→B"かつ"A→C"が成立することを表す。
〔関数従属〕
{注文コード, 商品コード} → {顧客注文数量, 注文金額}
注文コード → {注文日, 顧客コード, 注文担当者コード}
商品コード → {商品名, 仕入先コード, 商品販売価格}
仕入先コード → {仕入先名, 仕入先住所, 仕入担当者コード}
顧客コード → {顧客名, 顧客住所}
- 仕入先コード → 仕入担当者コード → 仕入先住所
- 商品コード → 仕入先コード → 商品販売価格
- ✓注文コード → 顧客コード → 顧客住所
- 注文コード → 商品コード → 顧客注文数量
解説を見る
【解説】
推移的関数従属とは、A→B→Cのように、間接的に関数従属が成立する関係です。
・正解(ウ):「注文コード→顧客コード」(注文コードから顧客コードが決まる)かつ「顧客コード→顧客住所」(顧客コードから顧客住所が決まる)なので、推移的関数従属が成立します。
【他の選択肢が不正解の理由】
・ア:仕入担当者コードから仕入先住所への関数従属は定義されていません。
・イ:仕入先コードから商品販売価格への関数従属は定義されていません。
・エ:商品コードは注文コードに関数従属していません(複合キーの一部)。
Q3
次の流れ図において、(1)→(2)→(3)→(5)→(2)→(3)→(4)→(2)→(6) の順に実行させるために、(1)においてmとnに与えるべき初期値aとbの関係はどれか。ここで、a, bはともに正の整数とする。
流れ図:
(1) m←a, n←b
(2) m:nを比較
≠の場合→(3)へ、=の場合→(6)へ
(3) m:nを比較
m>nの場合→(4)へ、m<nの場合→(5)へ
(4) m←(m-n)
(5) n←(n-m)
(6) mの値を印字
- a = 2b
- 2a = b
- ✓2a = 3b
- 3a = 2b
解説を見る
【解説】
流れ図の実行順序をトレースして条件を導きます。
実行順序:(1)→(2)→(3)→(5)→(2)→(3)→(4)→(2)→(6)
1回目 (2)→(3)→(5):m≠nかつm<n → n←(n-m) → n=b-a
2回目 (2)→(3)→(4):m≠(b-a)かつm>(b-a) → m←m-(b-a) = a-(b-a) = 2a-b
3回目 (2)→(6):m=nが成立 → 2a-b = b-a → 3a=2b → 2a=3b(選択肢ではウ)
また、1回目にm<nなので a<b、2回目にm>nなので a>b-a → 2a>b。これらは2a=3bと整合します。