平成28年度 春期 午前Ⅱ 問5
データベース設計
主キーに関する問題
関係データベースの表を設計する過程で,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表の行は一つ、B表の1行に対応するA表の行も一つなので、どちら向きに持たせても各行に入る値は一つで済みます。そのため列aをB表に加えても、列bをA表に加えても実装できます。1対多では多の側に、多対多では両方の主キーを持つ新しい表を作るのが基本です。外部キーを置いた側の1行に値が一つだけ入るかどうか、で配置を判断すると覚えておくと迷いません。
ほかの選択肢はなぜ違うのか
- イA表とB表の対応関係が1対多の場合,列b…:A表とB表が1対多なら、A表の1行に対応するB表の行は複数あります。列bをA表に加えると1行に複数の値を入れなければならなくなるので、多の側であるB表に列aを加えるのが正しい形です。
- ウA表とB表の対応関係が多対多の場合,新し…:多対多の対応を表す新しい表には、列aと列bの両方を外部キーとして持たせ、その組で対応関係を記録します。どちらか一方だけでは、どの行とどの行が対応するかを表せません。
- エA表とB表の対応関係が多対多の場合,列a…:多対多では、A表の1行にも、B表の1行にも、相手の行が複数対応します。互いの主キーを列として追加しても1行に入る値は一つなので、対応関係をすべて記録することはできません。
この問題の用語
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。データの定義や操作にはSQLを使います。
出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5
同じ用語が出る問題
- 令和7年度 秋期 午前Ⅱ 問11:参照制約に関する問題(関係データベース)
- 令和6年度 秋期 午前Ⅱ 問5:主キーに関する問題(関係データベース)
- 令和6年度 秋期 午前Ⅱ 問3:ノード分割後のB^+木構造(関係データベース)
- 令和3年度 秋期 午前Ⅱ 問15:入れ子ループ法に関する問題(関係データベース)
- 令和3年度 秋期 午前Ⅱ 問2:UMLに関する問題(関係データベース)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)