平成25年度 春期 データベーススペシャリスト試験 午前Ⅱ 問3
テクノロジ/データベースデータモデリングの過程で,二つのエンティティ間に多対多の対応が生じた。これを関係データベース上に実装する場合,二つのエンティティを表として定義した上で,多対多の対応を表す方策はどれか。
出典:平成25年度 春期 データベーススペシャリスト試験 午前Ⅱ 問3
- アそれぞれの表の主キーに対して明示的にインデックスを定義する。
- イそれぞれの表の主キーへの部分関数従属性を排除するように表を分解する。
- ウそれぞれの表の属性間の推移的な関数従属性を排除するように表を分解する。
- エそれぞれの表を参照する外部キーの組合せを主キーの一部とする表を新たに定義する。
正解:エ
解説
二つのエンティティ間に生じた多対多の対応関係を関係データベース上に実装する場合,一方の表にもう一方の主キーを外部キーとして追加するだけでは,多対多の対応を表現できない(1対多の関係にしかならない)。そこで,双方の表の主キーを外部キーとして持つ新しい表(連関表)を作成し,その外部キーの組合せを新しい表の主キー(の一部又は全体)とする必要がある。これによって,一方のエンティティの1件に対して他方の複数件が対応し,かつその逆も成り立つという多対多の関係を,重複なく過不足なく表現できる。
選択肢ごとの解説
- ア誤り。インデックスの定義は検索性能を向上させるための物理設計上の工夫であり,多対多の対応関係をどのような表構造で実装するかという論理設計上の問題とは直接関係がない。
- イ誤り。主キーへの部分関数従属性を排除する表の分解は,第2正規形への正規化に関する操作であり,多対多の対応関係を実装するための方策ではない。
- ウ誤り。属性間の推移的関数従属性を排除する表の分解は,第3正規形への正規化に関する操作であり,多対多の対応関係を実装するための方策ではない。
- エ正しい。それぞれの表を参照する外部キーの組合せを主キーの一部とする新しい表(連関表)を定義することによって,多対多の対応関係を過不足なく表現できる。