我正在尝试向应用添加功能,用户可以在其中订阅所做的更改:
我想知道如何最好地将这些规则保存到数据库中。
我自然倾向于每个给定的实体(包括用户本身),我添加了一个额外的UserSubscription表/实体(例如,PublisherUserSubscription,BookUserSubscription,UserUserSubscription)
这意味着订阅将持续执行完整性。但是,就我需要的表格数量而言,这似乎很快就会变成气球,如果我以后改变订阅模式,可能会导致设计非常脆弱。 (每个现有的表都需要更新)。
鉴于这是一个相当普遍的现实场景,我预计会有一些模式。任何人都可以建议吗?
答案 0 :(得分:1)
我讨厌建议实体/属性/值模式,但为什么不能有一个简单的表格,如:
rulename Observer ObjectClass ObjectId
======== ======== =========== ========
每个场景ObjectToUser / UserToObject有一个表吗?
如果您希望观察某个特定实体,比如一本特定的书,请将对象的主键添加到EAV模式中。
然后,如果您需要检查规则是否被触发,则从表中的“ObjectClass”查询“ObjectId”并触发列出的任何规则。