データベーススペシャリスト試験 2013年 午前2 問04
学生は、学期が異なれば同じ授業科目を何度でも履修できるを適切に表現しているデータモデルはどれか。ここで、モデルの表記にはUMLを用いる。

ア:
イ:
ウ:
エ:(正解)
解説
学期が異なれば同じ授業科目を何度でも履修できるを表現するデータモデル【午前2 解説】
要点まとめ
- 結論:学期を属性として持つ関連クラス(リレーションシップクラス)を用いるモデルが正しい表現です。
- 根拠:同じ学生が同じ授業科目を異なる学期に複数回履修できるため、単純な多対多の関連だけでは表現できません。
- 差がつくポイント:関連クラスを使い、学期を関連の属性として持たせることで履修の「回数」や「時期」を管理できる点が重要です。
正解の理由
選択肢エは「履修する」という関連クラス(菱形)を設け、その関連クラスに「学期」を属性として持たせています。これにより、学生と授業科目の多対多の関係に加え、学期ごとの履修を区別できるため、同じ授業科目を異なる学期に何度でも履修可能な条件を正確に表現しています。
よくある誤解
単純な多対多の関連だけで「何度でも履修できる」ことを表現できると考えがちですが、学期という区別要素がないと履修回数の管理は不可能です。
解法ステップ
- 問題文の条件「学期が異なれば同じ授業科目を何度でも履修できる」を理解する。
- 学生と授業科目の関係は多対多であることを確認する。
- 「学期」という区別要素をどこに持たせるかを考える。
- 学期を関連クラスの属性として持たせるモデルが適切であると判断する。
- 選択肢の中で関連クラスを用い、学期を関連に結びつけているものを選ぶ。
選択肢別の誤答解説ステップ
- ア:学期と学生が1対多、学生と授業科目が多対多だが、学期が履修の区別に使われておらず、学期ごとの履修を表現できない。
- イ:学期が破線で学生と授業科目の関連から分離されているため、学期が履修の属性として機能していない。
- ウ:学生と授業科目、学生と学期が別々に関連しているだけで、学期を履修の区別に使う構造になっていない。
- エ:関連クラス「履修する」を設け、そこに学期を関連付けているため、学期ごとの履修を正しく表現している。
補足コラム
UMLの関連クラス(Association Class)は、多対多の関連に属性を持たせたい場合に用いられます。今回のように「履修」という行為に「学期」という属性を持たせることで、単なる多対多の関係以上の情報を管理できます。これにより、履修履歴の詳細な管理や分析が可能になります。
FAQ
Q: なぜ学期を関連クラスの属性にしなければならないのですか?
A: 学期を関連クラスの属性にしないと、同じ学生が同じ授業科目を異なる学期に履修した区別ができず、履修回数の管理ができません。
A: 学期を関連クラスの属性にしないと、同じ学生が同じ授業科目を異なる学期に履修した区別ができず、履修回数の管理ができません。
Q: 関連クラスと単なる関連の違いは何ですか?
A: 関連クラスは関連に属性を持たせることができるため、多対多の関係に付加情報を持たせたい場合に使います。単なる関連は属性を持ちません。
A: 関連クラスは関連に属性を持たせることができるため、多対多の関係に付加情報を持たせたい場合に使います。単なる関連は属性を持ちません。
関連キーワード: UML, 関連クラス, 多対多, 履修管理, データモデリング, 学期, 属性, リレーションシップ