データベーススペシャリスト試験 令和2年度 秋期 午前II 問6
関係データベースの表を設計する過程で、A表とB表が抽出された。主キーはそれぞれ列aと列bである。この二つの表の対応関係を実装する表の設計に関する記述のうち、適切なものはどれか。

選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】ア
1対1の関係では、A表の一つの行に対応するB表の行は最大一つであり、B表から見ても同様です。そのため、B表にA表の主キーである列aを追加して外部キーとする方法と、A表にB表の主キーである列bを追加して外部キーとする方法のどちらでも、対応関係を表現できます。どちら側に外部キーを置くかは、対応相手が存在しない場合の扱いや、業務上どちらを基準に管理するかなどを考慮して決めます。
イの列bをA表に追加する方法は誤りです。A対Bが1対多なら、1側であるA表の主キーaを、多側であるB表に外部キーとして追加します。1側に多側のキーを一つだけ置くと、複数のB行との対応を表せません。
ウの列aか列bのどちらかだけを新しい表に置く方法は誤りです。多対多では、列aと列bの両方を外部キーとしてもつ中間表を作り、一つ一つの組合せを行として記録します。
エの双方の表に相手のキーを追加する方法は誤りです。相互に外部キーを置いても、任意の複数の組合せを表現できず、循環した依存関係も生じます。これは多対多ではなく、中間表で実装すべき関係です。
【ポイント】 1対多では、外部キーを「多」側の表に置きます。多対多では、両表の主キーを外部キーとしてもつ中間表を設けます。1対1を制約として厳密に保証する場合は、追加した外部キーに一意性制約を設定することも重要です。
出典:令和2年度 秋期 データベーススペシャリスト試験 午前II 問6
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の25問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる