データベース|平成30年度 秋期 ITパスポート試験(特別措置試験) 問85
関係データベースで管理している“担当社員”表,“地区”表及び“顧客”表を結合して,A表を得た。結合に用いた“顧客”表はどれか。ここで,下線のうち実線は主キーを,破線は外部キーを表す。
担当社員
| <u>社員コード</u> | 社員名 |
|---|
地区
| <u>地区コード</u> | 地区名 |
|---|
A
| <u>顧客コード</u> | 顧客名 | 社員名 | 地区名 | 代表者名 |
|---|
〔選択肢〕(原典では選択肢そのものが表=項目を横一列の枠で並べ,主キーに実線,外部キーに破線の下線を引いたもの。項目の並びに書き起こしたもの)
〔下線について〕(原典は主キーを実線,外部キーを破線で描き分けています。上の3つの表の下線は,いずれも実線=主キーです。各選択肢では,先頭の顧客コードの下線が実線=主キー,それ以外の下線が破線=外部キーです。この書き起こしではどちらも同じ下線になっており,実線と破線の区別は失われています)
- {<u>顧客コード</u>|顧客名|代表者名}
- {<u>顧客コード</u>|顧客名|代表者名|<u>社員コード</u>}
- {<u>顧客コード</u>|顧客名|代表者名|<u>地区コード</u>}
- ✓ これが正解{<u>顧客コード</u>|顧客名|代表者名|<u>社員コード</u>|<u>地区コード</u>}
解説
社員と地区の両方を指す値がそろって、はじめて結べます。
関係データベースでは、別々の表を、共通する値をたどってつなぎ合わせます。得られた表には、顧客の番号と名前、担当する社員の名前、地区の名前、代表者の名前が並んでいます。このうち社員の名前は担当社員の表にしかなく、地区の名前は地区の表にしかありません。だから、もとになった表には、その二つの表を指すための値が両方とも入っている必要があります。社員の表を指す値と、地区の表を指す値の二つです。ほかの表の行を指すために置く列を、外部キーと呼びます。外部キーは、一つの表にいくつあっても構いません。逆に、片方しか持っていない表からは、もう一方の名前を引けません。行そのものを見分ける主キーのほうは、顧客の番号です。残る三つは、指すための値が足りないか、まったく持っていない形になっています。
ほかの選択肢はなぜ違うのか
- 顧客の番号と名前、代表者の名前だけを持つという肢です。ほかの表を指す値が一つもないので、担当する社員の名前も地区の名前も引けません。得られた表に並んでいる二つの列を、どちらも作れない形になっています。顧客の情報だけで閉じた表です。
- 顧客の情報に加えて、社員を指す値だけを持つという肢です。これで社員の名前は引けますが、地区の表を指す値がありません。地区の名前の列が埋まらないので、得られた表には届きません。二ついるうちの一つしかない形です。
- 顧客の情報に加えて、地区を指す値だけを持つという肢です。地区の名前は引けますが、担当する社員の表を指す値がありません。社員の名前の列が空のままになります。足りない側が入れ替わっただけで、同じ理由で届きません。要るのは二つです。
この問題に関係する言葉
- 外部キー
- 主キー
- 結合
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。設計に使うE-R図は、この形での実装を前提にしません。
出典:平成30年度 秋期 ITパスポート試験(特別措置試験) 問85(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くならデータベースへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)