DBデータベーススペシャリスト試験 午前Ⅱ
平成24年度春期 データベーススペシャリスト 午前Ⅱ 問2
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- アA表とB表の対応関係が1対1の場合,列aをB表に追加して外部キーとしてもよいし,列bをA表に追加して外部キーとしてもよい。
- イA表とB表の対応関係が1対多の場合,列bをA表に追加して外部キーとする。
- ウA表とB表の対応関係が多対多の場合,新しい表を作成し,その表に列aか列bのどちらかを外部キーとして設定する。
- エA表とB表の対応関係が多対多の場合,列aをB表に,列bをA表にそれぞれ追加して外部キーとする。
解き方のヒントを見る
表どうしの対応関係を両方向から確かめる
表設計を考えるときは、まず二つの表の間でどのような対応があるかを正確に捉えることが出発点になります。一方の表の一行から見た場合と、もう一方の表の一行から見た場合の両方を確認し、その結果と設計内容が矛盾しないかを検討しましょう。
この問題で問われていること
この問題で意識したいのは、対応関係の種類を判断する根拠です。「一つの行に対して相手側の行がいくつ結びつきうるか」を業務上の意味から考え、その判断を表の構造に照らして確認する姿勢が求められます。
視点
二つの表の対応関係は、片方の向きだけを見ると見誤りやすい概念です。ある表の一行を基準にしたときの相手側の行数と、逆の表を基準にしたときの行数は、必ずしも一致しません。そのため、両方向からそれぞれ問いを立て、得られた対応関係を一つの結論としてまとめることが大切です。そのうえで、検討中の設計がその対応関係を無理なく表現できるか、あるいは表現しきれない部分がないかを照らし合わせると、判断の筋道が明確になります。
確認ポイント
- 片方の表の一行を固定したとき、相手側で対応しうる行数の上限はいくつかを業務の意味から考えたか
- 向きを入れ替えて同じ問いを立てたとき、どのような結論になるかを確認したか
- 判断した対応関係と、検討している設計で表現できる対応とが食い違っていないかを照らし合わせたか
正解と解説を見る
正解
ア
解説
正解はアです。1対1の対応では、どちらの表の1行から見ても相手は一つに決まります。そのため列aをB表に追加しても、列bをA表に追加しても、外部キーとして対応を表せます。1対多では多側の表に1側の主キーを追加します。多対多では連関表を作り、列aと列bの両方を外部キーとして持たせます。
理由
外部キーを置いた表の1行には、参照先の主キーの値が一つだけ入る必要があります。1対1の場合、A表の1行に対応するB表の行は一つで、逆も同じです。そのため、どちら側に外部キーを置いても1行に一つの値で済みます。なお、1対1であることを保証するには、外部キーの列に一意性制約を付けるのが一般的です。
比較
1対多(A表が1、B表が多)では、多側のB表に列aを追加します。逆にA表へ列bを追加すると、A表の1行に複数のbが必要になります。多対多では、どちらの表に外部キーを置いても1行に複数の値が必要になります。そこで連関表を作り、列aと列bの両方を外部キーとして持たせます。主キーは通常{a、 b}の組にします。
選択肢ア(正解)
これは正解だよ。1対1の対応では、A表の1行に対応するB表の行は一つで、逆も同じだよ。だから列aをB表に追加しても、列bをA表に追加しても、1行に一つの値で相手を参照できる。どちらの設計でも対応関係を正しく表せるよ。1対1を保証するには、外部キーの列に一意性制約を付けるのが一般的だね。
選択肢イ
これは不正解だよ。A表とB表が1対多なら、A表の1行にはB表の複数行が対応するよね。列bをA表に追加すると、A表の1行に複数のbの値を入れなければならず、第1正規形に反してしまう。正しくは、多側のB表に1側の主キーである列aを追加して外部キーにするんだ。
選択肢ウ
これは不正解だよ。多対多の対応を表すために新しい表(連関表)を作るところまでは適切だね。でも、その表に列aか列bのどちらか一方しかないと、どのA表の行とどのB表の行が対応しているかを記録できない。連関表には列aと列bの両方を外部キーとして持たせ、主キーは通常{a, b}の組にするよ。
選択肢エ
これは不正解だよ。多対多では、A表の1行に複数のB表の行が対応し、B表の1行にも複数のA表の行が対応するよね。列aをB表に、列bをA表に追加すると、どちらの表でも1行に複数の値が必要になり、繰返し項目や重複した行が生まれてしまう。正しくは連関表を作って、列aと列bを両方持たせるんだ。
学習のポイント
対応関係の種類ごとに、外部キーを置く表と連関表の作り方を整理して覚えましょう。
出典:独立行政法人 情報処理推進機構(IPA)平成24年度春期 データベーススペシャリスト試験 午前Ⅱ 問2(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針