リレーショナルデータベースにおける対応関係の実装と外部キー設計

正解は「ア」です。 関係データベースにおいて二つのエンティティ(表)間の対応関係(関連)を外部キーで実装する際の原則は以下のとおりです。 1対1の対応関係: どちらか一方の表に相手方の主キーを外部キーとして配置することで関連を表現できます。すなわち、A表の主キー列aをB表に追加してもよいし、B表の主キー列bをA表に追加しても構いません(片方に追加してUNIQUE制約を付与します)。 1対多の対応関係: 必ず「多」側の表に「1」側の主キーを外部キーとして追加します。A対Bが1対多の場合、多側であるB表に列aを追加して外部キーとします。 多対多の対応関係: 二つの表に直接外部キーを追加するだけでは多対多を表現できないため、連関エンティティ(交差表)として新しい表を作成し、その表に列aと列bの「両方」を外部キーとして設定(複合主キーまたは複合UNIQUE制約)します。 A表とB表の対応関係が1対多の場合、「多」側であるB表に「1」側であるA表の主キー列aを追加して外部キーとします。列bをA表に追加すると、1つのAの行に複数のbの値を保持できず不適切です。 多対多の対応関係を実装する場合、新しい交差表を作成し、その表に列aと列bの「両方」を外部キーとして配置する必要があります。どちらか一方だけでは関連付けができません。 多対多の対応関係を互いの表に外部キーを追加する形(A表に列b、B表に列a)で実装しようとすると、多重度が表現できず正規形が崩れてしまいます。必ず新しい交差表を作成して両方の主キーを保持させます。

関係データベースの表を設計する過程で,A表とB表が抽出された。主キーはそれぞれ列aと列bである。この二つの表の対応関係を実装する表の設計に関する記述のうち,適切なものはどれか。

問題画像
出典平成30年春期 午前Ⅱ
ア
A表とB表の対応関係が1対1の場合,列aをB表に追加して外部キーとしてもよいし,列bをA表に追加して外部キーとしてもよい。
イ
A表とB表の対応関係が1対多の場合,列bをA表に追加して外部キーとする。
ウ
A表とB表の対応関係が多対多の場合,新しい表を作成し,その表に列aか列bのどちらかを外部キーとして設定する。
エ
A表とB表の対応関係が多対多の場合,列aをB表に,列bをA表にそれぞれ追加して外部キーとする。