平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問2
テクノロジ/データベース関係データベースの表を設計する過程で,A表とB表が抽出された。主キーはそれぞれ列aと列bである。この二つの表の対応関係を実装する表の設計に関する記述のうち,適切なものはどれか。
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問2
- アA表とB表の対応関係が1対1の場合,列aをB表に追加して外部キーとしてもよいし,列bをA表に追加して外部キーとしてもよい。
- イA表とB表の対応関係が1対多の場合,列bをA表に追加して外部キーとする。
- ウA表とB表の対応関係が多対多の場合,新しい表を作成し,その表に列aか列bのどちらかを外部キーとして設定する。
- エA表とB表の対応関係が多対多の場合,列aをB表に,列bをA表にそれぞれ追加して外部キーとする。
正解:ア
解説
二つの表の対応関係を外部キーで実装する場合,1対1の関係ではどちらの表に外部キーを置いてもよく,1対多の関係では「多」側の表に「1」側の主キーを外部キーとして追加し,多対多の関係では両方の主キーを外部キーとしてもつ新しい中間表を作成する必要があります。
選択肢ごとの解説
- ア正しい。1対1の対応関係では,どちらの表に相手表の主キーを外部キーとして追加してもよく,どちらの向きでも対応関係を正しく表現できます。
- イ誤り。1対多の対応関係では,「多」側の表に「1」側の主キー(列a)を外部キーとして追加すべきであり,列bをA表に追加するのは対応関係の向きが逆になります。
- ウ誤り。多対多の対応関係を表すには,新しい表(中間表)に列aと列bの両方を外部キーとして設定する必要があり,どちらか一方だけでは組合せを一意に表現できません。
- エ誤り。多対多の対応関係を,列aをB表に,列bをA表にそれぞれ追加する方法で表そうとすると,A表とB表がそれぞれ複数行をもてず,1対多の関係が二つできるだけで多対多の対応関係を正しく表現できません。