ライブ通知システム(fb、xing、twitter ..など)を実装しようとしています。したがって、エンティティを構築する前にUMLクラス図を作成しました。ライブ通知UMLクラス図
EDIT:ショーケースには、次のようである私は、このアプローチについて考え、これが正しいものではありませんかのように思えます。次のシナリオを見てみましょう:ユーザーUは、イベントEの画像IにコメントCを追加します。これを正しく保存するには、EventNotificationにはイベントEの参照のみがあり、IとCの参照はありません。 "EventImageNotification"クラスも同様ですが、これは混乱します。 1つの「通知」クラスを持ち、それに関連するすべてのフィールドへの参照を格納する「メタデータ」フィールドを追加するほうがよいでしょうか?
(私は後で関係を実装するために、ORマッパーを使用しています)。
[1] 1人のユーザーがイベントを作成できます。 "Silvester Party 2015" (OneToMany)。 このイベントにはダッシュボードがあり、作成者がそのイベント(ManyToMany)に何かを投稿すると、ユーザーは更新を受信するために登録できます。
[2]ユーザーがイベントのダッシュボードに何かを投稿すると、購読しているユーザーは通知を受け取る必要があります。したがって、私はEventNotificationクラスを作成しました。ユーザーとEventNotificationの関係はManyToManyです。
[3]私は、きれいに保つため、通知タイプに関連するAbstractNotificationクラスを作成しました。通知タイプは、name = "EventPost"とtemplate = "ユーザーユーザーがイベント__eventに新しいものを投稿しました"のようなものです。
[4]抽象クラスNotificationConnectorは、EventNotificationとUser(UserEventNotification)の間のマッピングクラスにフィールドを与えます。私は将来、簡単に拡張するためにそれらを作成しました。ユーザーは、イベントなどをトリガするブックを作成することができます。次に、この新しいエンティティの通知を保存するために、1つの "BookNotification"と1つの "UserBookNotification"クラスを作成する必要があります。
このアプローチは良い方法ですか、完全にうんざりですか?この図についてのあなたのアイデアを教えてください:
(アソシエーションを構築するための矢印は通常の線でなければなりません。
更新:現在、メタデータフィールドをNotificationTypeと組み合わせて使用しています。すべての種類のネストされた通知に対応しています。 – user3746259