次のいずれかの変更をユーザーがサブスクライブできるアプリに機能を追加しようとしています。
- 別のエンティティへ (任意のユーザーによる)
- 別のユーザーによって (他のエンティティに対して)
- 2 つの組み合わせ (この最後の 1 つはオプションですが、問題がより難しくなります)
これらのルールをデータベースに保持する最善の方法を考えています。
私は当然、特定のエンティティ (ユーザー自体を含む) ごとに傾向があります。追加の UserSubscription テーブル/エンティティ (たとえば、PublisherUserSubscription、BookUserSubscription、UserUserSubscription) を追加します。
これは、整合性が適用された状態でサブスクリプションが永続化されることを意味します。ただし、これは、必要なテーブルの数の点ですぐに膨張し、後でサブスクリプション モデルを変更すると、非常に脆弱な設計になる可能性があるようです。(既存のすべてのテーブルを更新する必要がある場合があります)。
これはかなりありふれた現実世界のシナリオであることを考えると、これにはいくつかのパターンがあると思います。誰でもいくつか提案できますか?