ホーム > データベーススペシャリスト試験 > 2010年
データベーススペシャリスト試験 2010年 午前2 問05
“学生は, 学期が異なれば同じ授業科目を何度でも履修できる” を適切に表現しているデータモデルはどれか。ここで, モデルの表記法には UML のクラス図を用いる。

ア:
イ:
ウ:
エ:(正解)
解説
“学生は, 学期が異なれば同じ授業科目を何度でも履修できる” を適切に表現しているデータモデル【午前2 解説】
要点まとめ
- 結論:選択肢エのモデルが「学生が学期ごとに同じ授業科目を何度でも履修できる」条件を正しく表現しています。
- 根拠:履修する関係を独立した関連クラス(菱形)として設け、学生・授業科目・学期のすべてと多対多(*)の関係を持つことで、学期ごとの履修を表現可能です。
- 差がつくポイント:単純な二項関係や属性のぶら下げではなく、関連クラスを用いて多次元の関係性を正確にモデル化できているかが重要です。
正解の理由
選択肢エは「履修する」という関連クラスを中心に据え、学生・授業科目・学期の3つのクラスとすべて多対多(*)の関係を持っています。これにより、同じ学生が同じ授業科目を異なる学期に複数回履修できることを正確に表現しています。
他の選択肢は、学期を属性や単純な関連として扱っているため、学期ごとの履修の多重性を表現できません。
他の選択肢は、学期を属性や単純な関連として扱っているため、学期ごとの履修の多重性を表現できません。
よくある誤解
学期を単なる属性や破線でぶら下げるだけでは、学期ごとの履修回数を管理できないと理解しづらい点があります。
また、多対多の関係を正しく理解せず、関連クラスの必要性を見落としがちです。
また、多対多の関係を正しく理解せず、関連クラスの必要性を見落としがちです。
解法ステップ
- 問題文の条件「学期が異なれば同じ授業科目を何度でも履修できる」を正確に把握する。
- UMLクラス図で「学生」「授業科目」「学期」の3つのクラスが関係することを確認する。
- 「履修する」という行為が単なる属性ではなく、複数のクラスにまたがる関係であることを理解する。
- 関連クラス(菱形)を用いて「履修する」関係を表現し、3クラスすべてと多対多の関係を持つモデルを探す。
- 選択肢の中で該当するモデル(エ)を選ぶ。
選択肢別の誤答解説
- ア:学期と学生の関係は1対多だが、学期と授業科目の関係が表現されておらず、学期ごとの履修を正確に表せません。
- イ:学期が破線でぶら下がっているだけで、学期ごとの多重履修を表現できず、関連の多対多関係が不十分です。
- ウ:学生と授業科目の関係が1対多で学期との関係も別々にあるため、学期ごとの履修の多重性を表現できません。
- エ:履修する関連クラスが学生・授業科目・学期のすべてと多対多の関係を持ち、条件を満たしています。
補足コラム
UMLの関連クラス(Association Class)は、単なる属性や単純な関連では表現できない複雑な関係をモデル化する際に有効です。
特に多対多の関係に属性や別のクラスが絡む場合、関連クラスを用いることで関係の詳細を管理できます。
今回のように「学期」という時間軸の概念を含む場合は、関連クラスで履修情報を管理するのが適切です。
特に多対多の関係に属性や別のクラスが絡む場合、関連クラスを用いることで関係の詳細を管理できます。
今回のように「学期」という時間軸の概念を含む場合は、関連クラスで履修情報を管理するのが適切です。
FAQ
Q: なぜ学期を属性として扱うだけでは不十分ですか?
A: 属性として扱うと、同じ学生が同じ授業科目を異なる学期に複数回履修する情報を区別できず、履修履歴の管理ができません。
A: 属性として扱うと、同じ学生が同じ授業科目を異なる学期に複数回履修する情報を区別できず、履修履歴の管理ができません。
Q: 関連クラスと単なる関連の違いは何ですか?
A: 関連クラスは関連に属性や独自の識別子を持たせることができ、複雑な多対多関係を詳細に表現できます。単なる関連は単純な関係性のみを示します。
A: 関連クラスは関連に属性や独自の識別子を持たせることができ、複雑な多対多関係を詳細に表現できます。単なる関連は単純な関係性のみを示します。
関連キーワード: UMLクラス図, 関連クラス, 多対多関係, 履修管理, データモデリング, カーディナリティ