データベーススペシャリスト 2013年 午前2 問03
問題文
データモデリングの過程で、二つのエンティティ間に多対多の対応が生じた。これを関係データベース上に実装する場合、二つのエンティティを表として定義した上で、多対多の対応を表す方策はどれか。
選択肢
ア:それぞれの表の主キーに対して明示的にインデックスを定義する。
イ:それぞれの表の主キーへの部分関数従属性を排除するように表を分解する。
ウ:それぞれの表の属性間の推移的な関数従属性を排除するように表を分解する。
エ:それぞれの表を参照する外部キーの組合せを主キーの一部とする表を新たに定義する。(正解)
データモデリングにおける多対多対応の関係データベース実装【午前2 解説】
要点まとめ
- 結論:多対多の関係は、中間テーブルを設けて両エンティティの主キーを外部キーとして持つ新しい表で表現します。
- 根拠:関係データベースでは多対多の直接表現ができないため、中間テーブルで1対多の関係に分解する必要があります。
- 差がつくポイント:多対多対応の正しい実装方法を理解し、外部キーと主キーの役割を正確に区別できることが重要です。
正解の理由
多対多の関係は、二つのエンティティの主キーを組み合わせた新しい表(中間テーブル)を作成し、その表の主キーとして両方の外部キーを設定することで実現します。これにより、多対多の関係を1対多の関係に分解し、関係データベースの制約に適合させることができます。選択肢エはこの方法を正しく示しているため正解です。
よくある誤解
多対多の関係を直接二つの表の主キーにインデックスを付けるだけで解決できると誤解しがちです。実際には中間テーブルが必須です。
解法ステップ
- 多対多の関係を確認する。
- それぞれのエンティティを表として定義する。
- 多対多の関係を表すために新たな中間テーブルを作成する。
- 中間テーブルに両エンティティの主キーを外部キーとして持たせる。
- 中間テーブルの主キーを両外部キーの組み合わせに設定する。
選択肢別の誤答解説
- ア: 主キーにインデックスを定義するのは性能向上策であり、多対多の関係の実装方法ではありません。
- イ: 部分関数従属性の排除は正規化の一環ですが、多対多の関係の実装とは直接関係ありません。
- ウ: 推移的関数従属性の排除も正規化の一環であり、多対多の関係の表現方法とは異なります。
- エ: 中間テーブルを作成し、両エンティティの主キーを外部キーとして持ち、その組み合わせを主キーとする方法で多対多の関係を正しく実装しています。
補足コラム
多対多の関係は、例えば「学生」と「講義」の関係でよく見られます。学生は複数の講義を受講し、講義も複数の学生が受講します。この場合、「受講」テーブルを中間テーブルとして作成し、学生IDと講義IDを外部キーかつ主キーの組み合わせとして管理します。これにより、データの整合性と検索効率が保たれます。
FAQ
Q: なぜ多対多の関係を直接表現できないのですか?
A: 関係データベースの表は1行が1つのエンティティを表すため、多対多の関係を直接1つの表で表すことはできません。中間テーブルで1対多の関係に分解する必要があります。
A: 関係データベースの表は1行が1つのエンティティを表すため、多対多の関係を直接1つの表で表すことはできません。中間テーブルで1対多の関係に分解する必要があります。
Q: 中間テーブルの主キーはなぜ両方の外部キーの組み合わせにするのですか?
A: これにより、同じ組み合わせの重複を防ぎ、多対多の関係の一意性を保証します。
A: これにより、同じ組み合わせの重複を防ぎ、多対多の関係の一意性を保証します。
関連キーワード: 多対多関係、中間テーブル、外部キー、主キー、正規化、関係データベース、データモデリング

\ せっかくなら /
データベーススペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

