DBデータベーススペシャリスト試験 午前Ⅱ

平成25年度春期 データベーススペシャリスト 午前Ⅱ 問3

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

データモデリングの過程で,二つのエンティティ間に多対多の対応が生じた。これを関係データベース上に実装する場合,二つのエンティティを表として定義した上で,多対多の対応を表す方策はどれか。

選択肢

  1. ア
    それぞれの表の主キーに対して明示的にインデックスを定義する。
  2. イ
    それぞれの表の主キーへの部分関数従属性を排除するように表を分解する。
  3. ウ
    それぞれの表の属性間の推移的な関数従属性を排除するように表を分解する。
  4. エ
    それぞれの表を参照する外部キーの組合せを主キーの一部とする表を新たに定義する。
解き方のヒントを見る

関連の表し方を考える視点

複数の対象どうしのつながりを整理するときは、情報をどの単位で持たせるか、同じ内容が繰り返されないか、後から変更した際に矛盾が生じないかを順に確認します。この手順を丁寧に行います。

この問題で問われていること

一つの表現方法を暗記するのではなく、情報を結び付けて扱うときの整合性に注目し、登録・変更・削除の場面で矛盾を生みにくいかという一つの観点から各選択肢を読み比べてください。

視点

複数の情報を結び付けて扱う設計では、表現の見た目だけでなく、同じ内容の重複、変更時の矛盾、追加・削除時の扱いやすさを同じ基準で点検します。まず保存単位を読み取り、整合性への影響を比較してください。

確認ポイント

  • 情報の重複が増えたとき、変更箇所を漏れなく保てるか
  • 登録内容を変更したとき、別の場所との矛盾が生じないか
  • 追加や削除の場面でも、関連する内容の整合性を保てるか
正解と解説を見る

正解

エ

解説

多対多の対応を関係データベースで表すには、二つのエンティティ表を参照する外部キーを持つ対応表を追加し、その外部キーの組合せを主キーの一部として扱う。これにより、一人の学生が複数科目を履修し、科目も複数学生に履修される関係を行単位で表現できる。

理由

多対多の関係では、学生表と授業科目表のどちらか一方に相手のキーを一つだけ持たせるだけでは、複数の対応を自然に表現できない。そこで、両表を参照する外部キーの組合せを持つ新しい表を定義し、各組合せを一つの対応として管理する。

比較

アは検索性能に関係するインデックスの定義であり、多対多の対応を表す構造ではありません。イとウは部分関数従属性や推移的関数従属性を排除する正規化の説明であり、設問の多対多対応を直接実装する方法ではありません。

選択肢ア

これは不正解だよ。主キーへのインデックスは、検索や結合の処理を効率化するための仕組みであり、二つのエンティティ間に存在する複数対複数の対応を行として記録する表構造を追加するものではない。したがって、対応の表現方法としては不適切である。

選択肢イ

これは不正解だよ。部分関数従属性を排除するための表分解は、複合キーの一部にだけ依存する属性を分離する正規化の考え方である。多対多の対応を表すために、対応関係を新しい表で管理する方法そのものを示していない。

選択肢ウ

これは不正解だよ。推移的な関数従属性を排除する表分解は、主キー以外の属性を経由した依存を整理する正規化である。データの重複や更新異常の抑制には関係するが、多対多の対応を記録するための直接的な構造ではない。

選択肢エ(正解)

これは正解だよ。二つのエンティティ表を参照する外部キーの組合せを持つ表を新設すれば、一つの行を一つの対応として記録できる。外部キーの組合せを主キーの一部にすることで、学生と授業科目の組合せを識別し、多対多の関係を表現できる。

学習のポイント

多対多の関係を対応表と複合キーで実装する考え方を学ぶ。

出典:独立行政法人 情報処理推進機構(IPA)平成25年度春期 データベーススペシャリスト試験 午前Ⅱ 問3(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針