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