2017-11-16 8 views
0

私のシステムではユーザーチームのメンバーになることができます。 ドメインモデルとの関係モデリング

は私が チームidnamemember_countis_channelが含まれていと呼ばれるドメインモデルを得ま​​した。ですから、私がリポジトリにチームをフェッチすると、 チームのドメインモデルが取得されます。

ユーザーチームの関係をどのようにモデル化しますか?関係について話すとき、私はチームモデルからmember_countis_channelを気にしないので。私はさらに関係式に余分なデータを持っています。これはrole_typeです。

というTeamScopeなどのリレーションシップのドメインモデルを作成する必要がありますか?それはid,user_id,team_id,role_type

+0

混乱していますか**ドメインオブジェクト** **)**ドメインモデル**? 'Team'は*ドメインモデル*の概念クラス*です。私は同様に、最後の質問「ドメインモデルを作成する必要がありますか?」で混乱しています...ドメインモデルは1つですが、クラスと関連付けが含まれています。 – Fuhrmanator

答えて

0

用語の使用(モデル、クラス、関連)に関するご質問については、私のコメントを参照してください。私はあなたが私の答えを書いたときにあなたがそれらを悪用していると仮定しています。

どのように私はUserTeamとの関係をモデル化するのでしょうか?関係について話すとき、私はTeamモデル(0120)からmember_countis_channelを気にしないので。私はさらに関係式に余分なデータを持っています。これはrole_typeです。

あなたのドメインモデルでassociation classを使用してこれを表すことができます。

enter image description here

Membershipは、あなたが考え出してきたように、本当に協会にリンクされているrole_type、キャプチャすることができます。

member_countは、最初に/と表示されます。これは、多重度からその値を導き出すことを示しています(チームに関連付けられているメンバーの数です)。

ご質問にというタグが付いているので、how to implement association classes in Java(正確にはあなたのケースではありませんが、Node.jsでは簡単に適用する必要があります)を指します。

+0

後でチームとメンバーシップをどのように組み合わせますか?私はこれに対して2つの別個のクエリを作成したくありません。 – guidsen

+0

ユーザーが一度に1つのチームに属していても構わない場合、ユーザーがチームに関連付けられていない場合は意味をなさないロールを削除できますメンバーシップと役割をユーザーに配置します。ドメインモデルは、ビジネスプロセスの正確な要件をキャプチャするためのものであり、必ずしもクエリを単純化する必要はありません。ユーザーが複数のチームに同時に参加できる場合は、より複雑です。 – Fuhrmanator

0

ほとんどの場合、ユーザーへのリンク、チームへのリンク、およびユーザーがそのチームで果たしている役割の両方を含むTeamMemberオブジェクトをモデル化する必要があります。

チームにはチームメンバーのリストがあり、ユーザーにはチームメンバーのリストがあります。チームはMemberCountを持っています(これが静的か、TeamMembersの数から動的かどうかはわかりません)、is_channelが何を意味するのかわかりません...

関連する問題