平成29年度 秋期 システムアーキテクト試験 午前Ⅱ 問21
テクノロジ/データベースUML を用いて表した図のデータモデルを基にして設計したテーブルのうち,適切なものはどれか。ここで,“担当委員会 ID”と“所属委員会 ID”は“委員会 ID”を参照する外部キーである。“役員 ID”と“委員 ID”は“生徒 ID”を参照する外部キーである。実線の下線は主キー,破線の下線は外部キーを表す。

出典:平成29年度 秋期 システムアーキテクト試験 午前Ⅱ 問21
- ア委員会(委員会 ID,委員会名) 所属関連(所属委員会 ID,委員 ID) 生徒(生徒 ID,氏名,担当委員会 ID)
- イ委員会(委員会 ID,委員会名) 役員関連(担当委員会 ID,役員 ID) 生徒(生徒 ID,氏名,所属委員会 ID)
- ウ委員会(委員会 ID,委員会名,委員 ID) 生徒(生徒 ID,氏名,所属委員会 ID,担当委員会 ID)
- エ委員会(委員会 ID,委員会名,役員 ID) 生徒(生徒 ID,氏名,所属委員会 ID)
正解:ア
解説
図のデータモデルでは,“担当する”という 0..1 対 1..* の関連(一つの委員会は担当委員が 0 又は 1 人,一人の役員は 1 以上の委員会を担当し得る)と,“所属する”という 0..* 対 1..* の多対多の関連(一つの委員会には 0 人以上の委員が所属し,一人の委員は 1 以上の委員会に所属し得る)の二つの関連があります。多対多の関連である“所属する”は,関係データベースでは直接表現できないため,所属関連(所属委員会 ID,委員 ID)という連関エンティティ(中間テーブル)に分解する必要があります。一方,“担当する”は委員会側の多重度が 0..1(一つの委員会に対して担当委員会 ID が高々一つ)であるため,生徒(役員)側に外部キー“担当委員会 ID”をもたせることで表現できます。この二つを満たすのが選択肢アです。
選択肢ごとの解説
- ア正しい。多対多の関連である“所属する”を所属関連(所属委員会 ID,委員 ID)という連関テーブルで表現し,0..1 対 1..* の関連である“担当する”を生徒側の外部キー“担当委員会 ID”で表現しており,適切なテーブル設計です。
- イ誤り。役員関連(担当委員会 ID,役員 ID)というテーブルを設けていますが,“担当する”は委員会側の多重度が 0..1 であり,本来は多対多ではないため中間テーブルにする必要はなく,また多対多である“所属する”の方を生徒側の外部キー“所属委員会 ID”のみで表現しており,一人の生徒が複数の委員会に所属できるという多重度を表現できていません。
- ウ誤り。委員会に外部キー“委員ID”を,生徒に外部キー“所属委員会 ID”と“担当委員会 ID”を直接もたせていますが,これでは一つの委員会に対して所属する委員(生徒)を一つしかもてず,多対多である“所属する”の関連を正しく表現できません。
- エ誤り。委員会に外部キー“役員 ID”をもたせていますが,これでは一つの委員会に対して役員(担当委員)を一つしかもてないほか,“所属する”の多対多の関連が生徒側の外部キー“所属委員会 ID”のみで表現されており,一人の生徒が複数の委員会に所属できるという多重度を表現できていません。