平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5
テクノロジ/データベース関係データベースの表を設計する過程で,A表とB表が抽出された。主キーはそれぞれ列aと列bである。この二つの表の対応関係を実装する表の設計に関する記述のうち,適切なものはどれか。 〔表の概要〕 A表:主キーは列a(実線の下線) B表:主キーは列b(実線の下線) (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5
- アA表とB表の対応関係が1対1の場合,列aをB表に追加して外部キーとしてもよいし,列bをA表に追加して外部キーとしてもよい。
- イA表とB表の対応関係が1対多の場合,列bをA表に追加して外部キーとする。
- ウA表とB表の対応関係が多対多の場合,新しい表を作成し,その表に列aか列bのどちらかを外部キーとして設定する。
- エA表とB表の対応関係が多対多の場合,列aをB表に,列bをA表にそれぞれ追加して外部キーとする。
正解:ア
解説
A表とB表の対応関係が1対1の場合,どちらの表に外部キーを持たせても関係を正しく表現できるため,列aをB表に追加してもよいし,列bをA表に追加してもよくなります。1対多の場合は「多」側の表に「1」側の主キーを外部キーとして追加する必要があり,多対多の場合は新たに関連(連関)実体を作成し,その表に両方の表の主キー(列aと列bの両方)を外部キーとして設定する必要があります。
選択肢ごとの解説
- ア正しい。1対1の対応関係であれば,A表とB表のどちらの側に外部キーを追加しても関係を矛盾なく表現できるため,列aをB表に追加してもよいし,列bをA表に追加してもよくなります。
- イ誤り。1対多の対応関係では,「多」側の表に「1」側の主キーを外部キーとして追加する必要があります。設問の場合,多側がB表であればA表の主キーである列aをB表に追加すべきであり,逆に列bをA表に追加するという記述は関係の向きが逆です。
- ウ誤り。多対多の対応関係では,列aと列bの両方を外部キーとしてもつ新しい表(連関表)を作成する必要があり,どちらか一方だけの外部キーでは元の対応関係を正しく表現できません。
- エ誤り。多対多の対応関係を,列aをB表に,列bをA表にそれぞれ追加するだけで表現しようとすると,A表の1行に対してB表の複数行が対応する場合などに整合性を保てず,多対多の関係を正しく表現できません。多対多には新しい連関表が必要です。