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