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

ア:A表とB表の対応関係が1対1の場合, 列aをB表に追加して外部キーとしてもよいし, 列bをA表に追加して外部キーとしてもよい。(正解)
イ:A表とB表の対応関係が1対多の場合, 列bをA表に追加して外部キーとする。
ウ:A表とB表の対応関係が多対多の場合, 新しい表を作成し, その表に列aか列bのどちらかを外部キーとして設定する。
エ:A表とB表の対応関係が多対多の場合, 列aをB表に, 列bをA表にそれぞれ追加して外部キーとする。
解説
関係データベースの表設計における対応関係の実装【午前2 解説】
要点まとめ
- 結論:1対1の関係はどちらか一方の表に相手の主キーを外部キーとして追加すればよいです。
- 根拠:1対1の関係は双方のレコードが一意に対応するため、どちらに外部キーを置いても整合性が保てます。
- 差がつくポイント:多対多の場合は中間表を作成し、双方の主キーを外部キーとして設定する点を理解しているかが重要です。
正解の理由
選択肢アは、A表とB表の対応関係が1対1の場合、列aをB表に外部キーとして追加してもよいし、列bをA表に外部キーとして追加してもよいと述べています。これは1対1の関係において、どちらの表に外部キーを置いても関係性を正しく表現できるため正しいです。
一方、1対多や多対多の関係では外部キーの配置や中間表の作成が必要であり、アの説明が最も適切です。
一方、1対多や多対多の関係では外部キーの配置や中間表の作成が必要であり、アの説明が最も適切です。
よくある誤解
多対多の関係を単純に両方の表に外部キーを追加して表現できると誤解しがちです。実際には中間表が必要です。
解法ステップ
- A表とB表の主キーを確認する(それぞれ列a、列b)。
- 対応関係の種類(1対1、1対多、多対多)を把握する。
- 1対1の場合はどちらか一方に外部キーを追加すればよいと理解する。
- 1対多の場合は「多」の側の表に「1」の側の主キーを外部キーとして追加する。
- 多対多の場合は中間表を作成し、双方の主キーを外部キーとして設定する。
- 選択肢の記述と照らし合わせて正しいものを選ぶ。
選択肢別の誤答解説ステップ
- ア: 正解。1対1の関係ではどちらの表に外部キーを置いてもよい。
- イ: 誤り。1対多の場合は「多」の側の表に「1」の側の主キーを外部キーとして追加するため、列bをA表に追加するのは逆。
- ウ: 誤り。多対多の場合は新しい中間表を作成し、両方の主キーを外部キーとして設定する必要があるが、「列aか列bのどちらか一方だけを外部キーにする」とあるため不十分。
- エ: 誤り。多対多の関係を両方の表に相手の主キーを外部キーとして追加するだけでは表現できず、中間表が必要。
補足コラム
関係データベース設計における対応関係は、データの整合性と効率的な検索を左右します。1対1は外部キーの配置が柔軟ですが、1対多は「多」の側に外部キーを置くのが基本です。多対多は中間表(結合表)を設けて双方の主キーを外部キーとして持たせることで、複雑な関係を正確に表現します。
FAQ
Q: 1対1の関係で外部キーをどちらに置くべきか決まりはありますか?
A: 特に決まりはなく、設計上の都合やアクセス頻度に応じて選択します。
A: 特に決まりはなく、設計上の都合やアクセス頻度に応じて選択します。
Q: 多対多の関係を外部キーだけで表現できませんか?
A: できません。中間表を作成して双方の主キーを外部キーとして持たせる必要があります。
A: できません。中間表を作成して双方の主キーを外部キーとして持たせる必要があります。
Q: 1対多の関係で「1」の側に外部キーを置くとどうなりますか?
A: 正しい関係を表現できず、データの整合性が保てなくなります。
A: 正しい関係を表現できず、データの整合性が保てなくなります。
関連キーワード: 関係データベース, 主キー, 外部キー, 1対1関係, 1対多関係, 多対多関係, 中間表, データベース設計