平成24年度 春期 午前Ⅱ 問2
データベース設計
主キーに関する問題
関係データベースの表を設計する過程で,A 表と B 表が抽出された。主キーはそれぞれ列 a と列 b である。この二つの表の対応関係に基づいた表の設計に関する記述のうち,適切なものはどれか。
表 A,B(原典の実線の下線は …、破線の下線は〔破線の下線〕で表した):
A(a,(名前のない列)) B(b,(名前のない列))
- アA 表と B 表の対応関係が 1 対 1 の場合,列 a を B 表に追加して外部キーとしてもよいし,列 b を A 表に追加して外部キーとしてもよい。
- イA 表と B 表の対応関係が 1 対多の場合,列 b を A 表に追加して外部キーとする。
- ウA 表と B 表の対応関係が多対多の場合,新しい表を作成し,その表に列 a か列 b のどちらかを外部キーとして設定する。
- エA 表と B 表の対応関係が多対多の場合,列 a を B 表に,列 b を A 表にそれぞれ追加して外部キーとする。
答えと解説を見る
✓ これが正解アA 表と B 表の対応関係が 1 対 1 の場合,列 a を B 表に追加して外部キーとしてもよいし,列 b を A 表に追加して外部キーとしてもよい。
解説
1対1なら、どちらの主キーを相手の表の外部キーにしてもかまいません。
二つの表の対応関係を表すには、一方の表の主キーを他方の表に外部キーとして持たせます。どちらに持たせるかは対応関係で決まります。1対1の場合は、A 表の1行に B 表の1行がちょうど対応するので、列 a を B 表に追加しても、列 b を A 表に追加しても、1行に一つの値が入るだけで済みます。1対多なら、多の側の表に、1の側の主キーを外部キーとして持たせます。多対多なら、両方の主キーをもつ新しい表を作り、その表で対応を表します。外部キーの列には1行に一つの値しか入らない、という点から考えると、どちらの表に置けるかが決まります。
ほかの選択肢はなぜ違うのか
- イA 表と B 表の対応関係が 1 対多の…:1対多では、A 表の1行に B 表の複数の行が対応するので、A 表に列 b を置くと1行に複数の値が必要になります。外部キーは多の側である B 表に、列 a を追加して設けます。
- ウA 表と B 表の対応関係が多対多の場合…:多対多の対応を新しい表で表すとき、その表には列 a と列 b の両方を外部キーとして持たせる必要があります。片方だけでは、どの行とどの行が対応するかを表せません。
- エA 表と B 表の対応関係が多対多の場合…:多対多で列 a を B 表に、列 b を A 表に追加すると、どちらの表でも1行に複数の値を入れる必要が生じます。繰返しが生じるので、対応を表す新しい表を作るのが正しい方法です。
この問題の用語
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。データの定義や操作にはSQLを使います。
出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問2
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問11:参照制約に関する問題(関係データベース)
- 令和6年度 秋期 午前Ⅱ 問5:主キーに関する問題(関係データベース)
- 令和6年度 秋期 午前Ⅱ 問3:ノード分割後のB^+木構造(関係データベース)
- 令和3年度 秋期 午前Ⅱ 問15:入れ子ループ法に関する問題(関係データベース)
- 令和3年度 秋期 午前Ⅱ 問2:UMLに関する問題(関係データベース)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)