データベーススペシャリスト試験 2019年 午前206


“学生は, 学期が異なれば同じ授業科目を何度でも履修できる”を適切に表現しているデータモデルはどれか。ここで, モデルの表記にはUMLを用いる。
選択肢画像
(正解)

解説

「学生は学期が異なれば同じ授業科目を何度でも履修できる」を表すデータモデル【午前2 解説】

要点まとめ

  • 結論:学期を含む3者間の多対多の関係を表すには、ひし形の関係図形で「学生」「授業科目」「学期」をすべて関連付ける必要があります。
  • 根拠:UMLの関係図において、多属性の多対多関係は複数のエンティティをひとつの関係に結びつけ、各端点に「*」を付けて表現します。
  • 差がつくポイント:学期を属性としてではなく独立したエンティティとして扱い、履修の関係に含めることで「同じ授業科目を学期ごとに何度でも履修可能」という条件を正確に表現できます。

正解の理由

選択肢エは、「学生」「授業科目」「学期」の3つのエンティティをひし形の「履修する」関係で結び、それぞれの端点に「*」を付けています。これにより、学生は学期ごとに同じ授業科目を何度でも履修できる多対多対多の関係を正確に表現しています。学期を独立したエンティティとして扱い、履修の関係に含めることで、学期が異なれば同じ授業科目を繰り返し履修できることを明示しています。

よくある誤解

学期を属性として扱い履修関係に含めないと、同じ授業科目を複数回履修できることを表現できません。単純な二者間の多対多関係では学期の違いを区別できないため注意が必要です。

解法ステップ

  1. 問題文の条件「学期が異なれば同じ授業科目を何度でも履修できる」を理解する。
  2. UMLで「学生」「授業科目」「学期」をそれぞれ独立したエンティティとして考える。
  3. 3者間の関係を表すために、ひし形の関係図形を用いることを確認する。
  4. 各エンティティと関係の端点に「*」を付け、多対多対多の関係を示す。
  5. 選択肢の中でこの条件を満たすモデルを選ぶ。

選択肢別の誤答解説

  • ア:学期と学生の関係は1対多だが、履修関係に学期が含まれておらず、学期ごとの履修を表現できない。
  • イ:学期が破線で接続されているため、属性や弱い関係として扱われており、学期ごとの履修の多対多関係を正確に表せない。
  • ウ:学生と授業科目の関係が1対多であり、学期は学生としか結ばれていないため、学期ごとの履修を正しく表現できない。
  • :3つのエンティティをひし形の関係で結び、すべての端点に「*」が付いているため、多対多対多の関係を正確に表現している。

補足コラム

UMLの関係図において、多対多対多の関係は複数のエンティティが同時に関係する場合に用いられます。学期のような時間的な区分を属性として扱うと、履修の繰り返しを正確に表現できないため、独立したエンティティとして扱うことが重要です。また、破線は依存関係や弱い関係を示すため、属性や弱いエンティティの表現に使われますが、今回のような強い関係には適しません。

FAQ

Q: なぜ学期を属性ではなくエンティティとして扱う必要があるのですか?
A: 属性として扱うと、学期ごとの履修の区別ができず、同じ授業科目を複数回履修できる条件を正確に表現できないためです。
Q: UMLで多対多対多の関係はどのように表現しますか?
A: ひし形の関係図形で複数のエンティティを結び、各端点に「*」を付けて多対多の関係を示します。
Q: 破線で接続されたエンティティはどのような意味ですか?
A: 破線は依存関係や弱い関係を示し、属性や弱いエンティティの表現に使われます。強い関係を表す場合は実線を用います。

関連キーワード: UML, 多対多対多関係, 履修管理, データモデリング, エンティティ関係図
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ