概念モデリングでは、「関連」と「多重度」がモデルを読むときに大切な要素となります。
関連は、あるエンティティとエンティティを結ぶ線のことです。しかし、今回は、もう一歩進んだ関連の使い方である、「関連の属性のクラス」と「関連のクラス」の違いを整理したいと思います。
もう一つの目的として、「多重度」の見方も整理したいと思います。「種類(品目)と物(特定品目)」の多重度の違いを理解できればと思います。
参考
設計者の発言「「関連クラス」をデータモデルで解き明かす(前編)」
設計者の発言「「関連クラス」をデータモデルで解き明かす(後編)」
関連
「関連の属性のクラス」と「関連のクラス」の違いは2つあります。
- 表記が違う
- インスタンスの制約が違う
関連の属性のクラス
「関連の属性のクラス」は関連に属性を持たせるために導き出したクラスのことです。
この例では、新幹線と駅との間に「停車する」という関連が引かれています。「停車する」という関連に属性「発車時刻」と「停車時刻」を持たせたいために、「停車する」という関連の属性のクラスを導き出しました。
この「関連の属性のクラス」では、同じ新幹線と駅の組み合わせは一つだけしか作ることができません。
関連のクラス
これに対して「関連のクラス」は、いわゆる「モノ-こと-モノ」のパターンで関連をクラスとして表現したものです。
この「関連のクラス」は、同じモノ-モノの組み合わせをいくつも作ることができます。
この例では、同じ生徒が同じ履修項目を取ることが出来るようになります。この「関連のクラス」は履歴をとる場合によくつかわれます。
多重度
『ストリームラインオブジェクトモデリング』に「品目-特定品目」というパターンが載っています。これは、いわゆる「種類と物」の関係です。
品目(種類)と言うのは、例えばビデオレンタル屋のビデオのタイトルなどになります。それに対して特定品目(物)は貸し出すビデオになります。他の例では、ファーストフード店のメニュー(ハンバーガーやポテト、ドリンク)は品目、出てきた商品は特定品目(物)になります。
概念モデリングの世界では、品目(種類)なのか、特定品目(物)なのかを区別することが非常に重要です。多くの場合、高価なものは特定品目(物)として扱うことが多いようです。
コレは、あるファーストフード店の単品メニューとセットメニューのクラス図とオブジェクト図になります。単品メニューとセットメニューの多重度は「多対多」になっています。オブジェクト図を見ると、こんな関係になります。
あれ?味噌汁のインスタンスが別々のセットメニューと関係を持っています。味噌汁は、一つのセットにしか含まれないはずでは?別々のセットメニューに味噌汁が含まれるって、どういうこと? これは、モデリングの知識がある人は、「味噌汁は品目(種類)だから、概念上は別々のセットメニューに含められる」とわかります。
「味噌汁一つのインスタンスは、セットメニュー一つと関係を持つ」と考えると、味噌汁インスタンスは複数のメニューには含まれないような気がします。でも、ここが「品目(種類)と特定品目(物)」のややこしいところです。
特定品目(物)は確かに「このインスタンス一つにつき・・・」と考えます。しかし、品目(種類)は、「このインスタンス品目は・・・」と考えなければなりません。
品目(種類)と特定品目(物)をしっかり区別して、集合論で物を捕らえることこそ、概念モデリングの重要な点と言えるでしょう。
参考
- 概念モデリングで良く使うパターンを学ぶのに最適
- モデリングパターンの王道。ただし、かなり難しいです。
- アナリシスパターンが読みこなせなかった人はここから始めましょう