令和2年度 10月 データベーススペシャリスト試験 午前Ⅱ 問6
テクノロジ/データベース関係データベースの表を設計する過程で,A表とB表が抽出された。主キーはそれぞれ列aと列bである。この二つの表の対応関係を実装する表の設計に関する記述のうち,適切なものはどれか。
出典:令和2年度 10月 データベーススペシャリスト試験 午前Ⅱ 問6
- ア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の関係では,どちらの表に外部キーを置いても実装できるため,列aをB表に追加してもよいし,列bをA表に追加してもよいという対称性があります。1対多の関係では,「多」側の表に「1」側の主キーを外部キーとして追加します。多対多の関係では,どちらか一方の表に外部キーを追加するだけでは表現できず,新たに両方の主キーを外部キーとしてもつ連関表(中間表)を作成する必要があります。
選択肢ごとの解説
- ア正しい。1対1の関係は対称的であり,どちらの表に外部キーを追加しても対応関係を実装できるため,列aをB表に追加してもよいし,列bをA表に追加してもよいといえます。
- イ誤り。1対多の関係では,「多」側の表に「1」側の主キーを外部キーとして追加する必要があります。A表とB表のどちらが「多」側かによって追加先が変わるため,列bを一律にA表に追加するという記述は適切ではありません。
- ウ誤り。多対多の関係を実装するには,新しい連関表にA表とB表の両方の主キー(列aと列bの両方)を外部キーとして設定する必要があり,どちらか一方だけでは対応関係を正しく表現できません。
- エ誤り。多対多の関係では新しい連関表を作成し,そこに両方の主キーを外部キーとして設定する必要があり,元のA表・B表に互いの主キーを追加する方法では多対多の関係を正しく表現できません。