基本情報技術者 2016年 秋期 午前(科目A) 問27
問題文
6行だけから成る“配送”表において成立している関数従属はどれか。ここで、は、はを関数的に決定することを表す。

選択肢
ア:配送先 → 部品ID(正解)
イ:配送日 → 部品ID
ウ:部署ID → 部品ID
エ:部署名 → 配送先
配送【午前2 解説】
要点まとめ
- 結論:答えは ア(配送先 → 部品ID)。各配送先の行を見れば必ず同一の部品IDになっているため成立します。
- 根拠:関数従属は「同じの行は必ず同じを持つ」こと。図表で配送先ごとに部品IDが一意に決まっています。
- 差がつくポイント:同じ部品IDが複数の配送先で使われていても問題ない点、逆に同じXでYが異なれば即×となる点を確実に確認すること。
正解の理由
正解は ア です。配送先ごとに対応する部品IDを表から確認すると次の対応になります:秋田事業所→1342、名古屋工場→2346、川崎事業所→1342。各配送先(X)が持つ部品ID(Y)はその配送先内で常に同一であるため、配送先→部品ID の関数従属が成立します。関数従属の定義に照らすと、任意の2行 t1, t2 に対して t1[配送先]=t2[配送先] ならば t1[部品ID]=t2[部品ID] が成り立っています。
よくある誤解
- 同一の部品IDが複数の配送先に現れると「X→Y は成り立たない」と誤解する。X→Yは「同じXに対してYが一意か」が基準であり、Yが複数のXに割り当てられても問題ありません。
- 重複行(完全に同一の行)があるときにそれを無視してしまい、反例を見落とすミス。重複は関数従属の成立・不成立には影響しませんが注意が必要です。
- 「日付や部署IDがキーっぽい」見た目に惑わされ、必ずしもそれらがYを一意に決めるわけではない点を見落とすこと。
解法ステップ
- 関数従属の定義を確認する: とは「任意の2行で の値が等しければ の値も等しい」こと。
- 各選択肢の左辺(X)で同じ値を持つ行をグループ化する。
- グループ内で右辺(Y)の値がすべて一致するかを確認する。1グループでも不一致があればその選択肢は不成立。
- 全グループで一致する選択肢が関数従属として成立する(本問では配送先が該当)。
選択肢別の誤答解説
- ア: 配送先 → 部品ID
正解。配送先ごとに部品IDは一意(秋田事業所→1342、名古屋工場→2346、川崎事業所→1342)で、同一配送先で部品IDが変わる行はありません。 - イ: 配送日 → 部品ID
誤り。2016-08-30 の行(5行目と6行目)では部品IDが2346と1342で異なり、同一の配送日で部品IDが一意でないため不成立です。 - ウ: 部署ID → 部品ID
誤り。部署ID 500(5行目と6行目)で部品IDが2346と1342に分かれており、同一部署IDで部品IDが一意でないため不成立です。 - エ: 部署名 → 配送先
誤り。部署名「研究開発部」(5行目と6行目)は配送先が名古屋工場と川崎事業所に分かれており、一意性が保たれていません。
補足コラム
関数従属はリレーショナルデータベース設計で非常に重要な概念で、正規化(冗長性排除)や候補キーの判定の基礎になります。形式的には「任意のタプル t1,t2 に対して t1[X]=t2[X] ⇒ t1[Y]=t2[Y]」で表されます。X→Y が成立しても Y が複数の X に対応してよい(逆は問わない)点を押さえておきましょう。複合属性(複数列の組み合わせ)が必要になる場合もあるため、単独列での検証だけでなく組合せもチェックする訓練が有効です。
FAQ
Q1: 同じ行が複数あると関数従属の判定はどうなる?
A1: 完全に同一の行(重複行)があっても、判定には影響しません。重複行はXが同一ならYも同一なので成立を壊しません。
A1: 完全に同一の行(重複行)があっても、判定には影響しません。重複行はXが同一ならYも同一なので成立を壊しません。
Q2: X→Y が成り立つなら Y→X も成り立つか?
A2: 必ずしも成り立ちません。逆が成り立つのは一方向が一意でかつ双方向の一意性がある場合(同値関係、つまり相互決定)だけです。
A2: 必ずしも成り立ちません。逆が成り立つのは一方向が一意でかつ双方向の一意性がある場合(同値関係、つまり相互決定)だけです。
Q3: 複数列の組み合わせでも同様に判定できる?
A3: はい。X が複数列の組合せ(複合属性)でも同じルールで、同じ組み合わせの値を持つ行で Y が一意なら成立します。
A3: はい。X が複数列の組合せ(複合属性)でも同じルールで、同じ組み合わせの値を持つ行で Y が一意なら成立します。
関連キーワード: 関数従属、関係データモデル、正規化、候補キー、主キー、部分関数従属、関係代数、データ冗長性、決定子、属性依存性

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

