1

次のいずれかの変更をユーザーがサブスクライブできるアプリに機能を追加しようとしています。

  • 別のエンティティへ (任意のユーザーによる)
  • 別のユーザーによって (他のエンティティに対して)
  • 2 つの組み合わせ (この最後の 1 つはオプションですが、問題がより難しくなります)

これらのルールをデータベースに保持する最善の方法を考えています。

私は当然、特定のエンティティ (ユーザー自体を含む) ごとに傾向があります。追加の UserSubscription テーブル/エンティティ (たとえば、PublisherUserSubscription、BookUserSubscription、UserUserSubscription) を追加します。

これは、整合性が適用された状態でサブスクリプションが永続化されることを意味します。ただし、これは、必要なテーブルの数の点ですぐに膨張し、後でサブスクリプション モデルを変更すると、非常に脆弱な設計になる可能性があるようです。(既存のすべてのテーブルを更新する必要がある場合があります)。

これはかなりありふれた現実世界のシナリオであることを考えると、これにはいくつかのパターンがあると思います。誰でもいくつか提案できますか?

4

1 に答える 1

1

エンティティ/属性/値のパターンを提案するのは嫌いですが、次のような単純なテーブルを用意してみませんか?

rulename    Observer   ObjectClass  ObjectId
========    ========   ===========  ========

シナリオごとに 1 つのテーブル ObjectToUser/UserToObject ?

特定のエンティティ、たとえば特定の本を観察したい場合は、オブジェクトの主キーを EAV パターンに追加します。

次に、ルールが起動されたかどうかを確認する必要がある場合は、テーブルの「ObjectClass」から「ObjectId」を照会し、リストされているルールを起動します。

于 2009-09-24T22:43:36.543 に答える