戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

データベーススペシャリスト 2018年 午前202


問題文

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

選択肢

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対1、1対多、多対多)を確認する。
  2. 1対1の場合はどちらかの表に相手の主キーを外部キーとして追加可能と理解する。
  3. 1対多の場合は「多」の側の表に「1」の側の主キーを外部キーとして追加する。
  4. 多対多の場合は新たな中間表を作成し、双方の主キーを外部キーとして設定する。
  5. 問題文の条件に照らし合わせて適切な選択肢を選ぶ。

選択肢別の誤答解説

  • ア: 正解。1対1の関係で外部キーをどちらに置いてもよいと正しく述べている。
  • イ: 誤り。1対多の場合は「多」の側の表に「1」の側の主キーを外部キーとして追加するため、列bをA表に追加するのは逆。
  • ウ: 誤り。多対多の場合は新しい表を作成し、両方の主キーを外部キーとして設定する必要があるが、「列aか列bのどちらか一方だけ」としているのは不十分。
  • エ: 誤り。多対多の関係で双方の表に相手の主キーを外部キーとして追加するだけでは対応できず、中間表が必要。

補足コラム

関係データベース設計における対応関係は、データの整合性と効率的な検索を実現するための基本です。1対1は外部キーの配置が柔軟ですが、1対多は「多」の側に外部キーを置くのが原則です。多対多は中間表(結合表)を設けて双方の主キーを外部キーとして持たせることで、複雑な関係を正確に表現します。

FAQ

Q: 1対1の関係で外部キーをどちらに置くべきか決める基準は?
A: 業務上の意味やアクセス頻度、NULL許容の有無などを考慮して決めます。どちらでも技術的には問題ありません。
Q: 多対多の関係を外部キーだけで表現できない理由は?
A: 多対多は複数の組み合わせが存在するため、単一の外部キーでは表現できず、中間表で組み合わせを管理する必要があります。

関連キーワード: 関係データベース、主キー、外部キー、1対1関係、1対多関係、多対多関係、中間表、データベース設計
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

データベーススペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2025 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について