IPA過去問ドリル

平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5

テクノロジ/データベース

関係データベースの表を設計する過程で,A表とB表が抽出された。主キーはそれぞれ列aと列bである。この二つの表の対応関係を実装する表の設計に関する記述のうち,適切なものはどれか。 〔表の概要〕 A表:主キーは列a(実線の下線) B表:主キーは列b(実線の下線) (注:本サイトでは原問題の表を文字表記に変換しています)

出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5

正解:ア

解説

A表とB表の対応関係が1対1の場合,どちらの表に外部キーを持たせても関係を正しく表現できるため,列aをB表に追加してもよいし,列bをA表に追加してもよくなります。1対多の場合は「多」側の表に「1」側の主キーを外部キーとして追加する必要があり,多対多の場合は新たに関連(連関)実体を作成し,その表に両方の表の主キー(列aと列bの両方)を外部キーとして設定する必要があります。

選択肢ごとの解説

  • 正しい。1対1の対応関係であれば,A表とB表のどちらの側に外部キーを追加しても関係を矛盾なく表現できるため,列aをB表に追加してもよいし,列bをA表に追加してもよくなります。
  • 誤り。1対多の対応関係では,「多」側の表に「1」側の主キーを外部キーとして追加する必要があります。設問の場合,多側がB表であればA表の主キーである列aをB表に追加すべきであり,逆に列bをA表に追加するという記述は関係の向きが逆です。
  • 誤り。多対多の対応関係では,列aと列bの両方を外部キーとしてもつ新しい表(連関表)を作成する必要があり,どちらか一方だけの外部キーでは元の対応関係を正しく表現できません。
  • 誤り。多対多の対応関係を,列aをB表に,列bをA表にそれぞれ追加するだけで表現しようとすると,A表の1行に対してB表の複数行が対応する場合などに整合性を保てず,多対多の関係を正しく表現できません。多対多には新しい連関表が必要です。
データベーススペシャリストの過去問を演習モードで解く