MySQL ワークベンチで生成された ERD に基づいて UML モデルを作成しています。しかし今、私はクラス図での主キーと外部キーの表現について疑問を持っています。
従来の UML ダイアグラムでは、各クラスの属性として主キーを含める必要がありますか? たとえば、id_user
またはid_list
? そして、外部キーについては? これらは属性として無視されますが、関連付けとして反映されますか?
ありがとう
MySQL ワークベンチで生成された ERD に基づいて UML モデルを作成しています。しかし今、私はクラス図での主キーと外部キーの表現について疑問を持っています。
従来の UML ダイアグラムでは、各クラスの属性として主キーを含める必要がありますか? たとえば、id_user
またはid_list
? そして、外部キーについては? これらは属性として無視されますが、関連付けとして反映されますか?
ありがとう
まず最初に:なぜUMLで描画したいのですか?すでにERDをお持ちの場合、ERDでは提供されないUMLクラス図でどのような追加/代替プロパティを説明しますか?
なんで?UMLはツールだからです。ダイアグラムが人間の消費のみを対象としている(つまり、ダイアグラムからコードを生成していない)と仮定すると、UMLを使用して、通信しようとしている情報を公開する必要があります。
一般的な標準として、UMLはID(PK / FK)を形式化する方法については何も述べていません。UMLは、すべてのオブジェクトが暗黙のIDを持っているというOOイディオムに従います。したがって、明示的に指定する必要はありません。したがって、最も単純なケースでは、次のことができます。
それがモデリングのニーズを満たしている場合は、これで完了です。
2番目の改良点として、PK属性にoclisUnique()
制約をタグ付けし、FKを無視することができます。
もう1つのオプションは、ExecutableUMLのルールを使用することです。これは、PK('識別子'}とFK('参照属性'}の両方をクラス図上で直接示します。したがって、ERD内のすべてをキャプチャするのに最も近いものです。
つまり、要約すると、UMLが課す正しい答えはありません。それはすべて、ダイアグラムと何を伝えたいかによって異なります。
「データベース プロファイル」を使用/作成して、この情報で UML モデルに注釈を付けることができます。プロファイルがなければ、OCL を使用して一意性制約を指定できますが、データベース レベルで外部キーに変換されるものを表すには通常の関連付けで十分です。
EclipseUML Omondo トライアルを使用して、データベースを逆にすることができます。
必要な情報が得られ、それを無料またはオープンソースのツールにコピーできます。