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

選択肢
- アA表とB表の対応関係が1対1の場合,列aをB表に追加して外部キーとしてもよいし,列bをA表に追加して外部キーとしてもよい。
- イA表とB表の対応関係が1対多の場合,列bをA表に追加して外部キーとする。
- ウA表とB表の対応関係が多対多の場合,新しい表を作成し,その表に列aか列bのどちらかを外部キーとして設定する。
- エA表とB表の対応関係が多対多の場合,列aをB表に,列bをA表にそれぞれ追加して外部キーとする。
解き方のヒントを見る
対応関係の多重度を両側から確かめる
二つの表の対応を実装する設計では、まず一方の行が他方の行といくつ対応しうるかを、両方向から別々に確認することが出発点になります。その確認結果と、候補となる各設計が対応をどの表のどの列で表しているかを照らし合わせて検討しましょう。
この問題で問われていること
この問題で絞って確認したい観点は、一方の表の一行から見た相手側の対応数と、逆向きに見た対応数を、それぞれ最小と最大に分けて把握することです。片方向だけで判断しないよう意識してください。
視点
表どうしの対応関係は、片方の表の一行を固定したときに、もう一方の表の行がいくつ結び付きうるかという数で捉えられます。この数は向きによって異なることがあるため、両方向を別々に考えます。また、対応が必ず存在するのか、存在しない場合もあるのかという最小側の条件も、最大側の条件とは独立に検討します。抽象的に考えにくいときは、架空の具体的な行を何件か想定し、実際に結び付けてみると把握しやすくなります。
確認ポイント
- 具体的な行を一件想定し、相手側の表で対応する行が0件・1件・複数件のどれになりうるかを、両方向について書き出したか
- 対応が必須か任意か(最小が0か1以上か)を、業務上の条件や前提から読み取ったか
- 書き出した対応数の組合せを、候補となる各設計で矛盾なく記録できるか、想定した行を当てはめて確かめたか
正解と解説を見る
正解
ア
解説
正解はアです。1対1の対応関係では、どちらの表から見ても相手は高々1行です。このため、列aをB表に追加しても、列bをA表に追加しても、外部キーで対応を表現できます。
理由
外部キー列には1行につき参照先の主キー値が1つだけ入ります。1対1では、A表の1行に対応するB表の行は高々1行で、逆向きも同じです。そのため、列aをB表に置いても列bをA表に置いても、1行1値で対応を表現できます。したがってアが適切です。
比較
1対多(A表の1行にB表の複数行が対応)の場合は、「多」の側であるB表に列aを外部キーとして追加します。A表に列bを置くと、1行に複数の値が必要になってしまいます。多対多の場合は、どちらの表に外部キーを置いても複数の相手を記録できません。そこで新しい表(連関表)を作成し、列aと列bの両方を外部キーとして持たせます。通常は{a、 b}の組を主キーにします。
選択肢ア(正解)
これは正解だよ。1対1の対応関係では、A表の1行に対応するB表の行は高々1行で、逆向きも同じだよ。だから列aをB表に追加しても、列bをA表に追加しても、外部キー列には1行につき参照先の値が1つだけ入り、対応を表現できるんだ。どちらに置くかは、値が未設定になりにくい側を選ぶなど、設計上の都合で決めればよいよ。
選択肢イ
これは不正解だよ。1対多では、A表の1行にB表の複数行が対応するよ。列bをA表に追加すると、A表の1行に複数のbの値を持たせる必要が出てくるんだ。そうすると、1つの列に複数の値を入れるか、A表の行を重複させることになってしまう。「多」の側であるB表に列aを追加して外部キーとするのが適切な実装だよ。
選択肢ウ
これは不正解だよ。多対多の対応関係を新しい表(連関表)で実装するという方向性は正しいよ。ただし、その表には列aと列bの両方を外部キーとして持たせる必要があるんだ。どちらか一方だけでは、A表のどの行とB表のどの行が対応しているのかを記録できないよ。通常は{a, b}の組を連関表の主キーにするよ。
選択肢エ
これは不正解だよ。多対多では、A表の1行に複数のB表の行が対応し、B表の1行にも複数のA表の行が対応するよ。列bをA表に、列aをB表に1列ずつ追加しても、1行に入る値は1つだけなので、複数の相手を記録できないんだ。多対多は、列aと列bの両方を外部キーとして持つ新しい表を作成して実装するのが適切だよ。
学習のポイント
対応関係の種類(1対1・1対多・多対多)ごとに、外部キーを置く位置と連関表の要否を判断できるようにしましょう。
出典:独立行政法人 情報処理推進機構(IPA)平成26年度春期 データベーススペシャリスト試験 午前Ⅱ 問3(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針