【问题标题】:Persistence Pattern - Rule based Observer持久性模式 - 基于规则的观察者
【发布时间】:2009-09-24 22:32:12
【问题描述】:

我正在尝试将功能添加到用户可以订阅所做更改的应用:

  • 给另一个实体(由任何用户)
  • 由其他用户(对任何其他实体)
  • 两者的组合(最后一个是可选的,但使问题更具挑战性)

我想知道如何最好地将这些规则保存到数据库中。

我自然倾向于为每个给定实体(包括用户本身)添加一个额外的 UserSubscription 表/实体(例如,PublisherUserSubscription、BookUserSubscription、UserUserSubscription)

这意味着订阅将保持完整性并强制执行。但是,如果我以后更改订阅模型,这似乎会迅速增加我需要的表数量,并且可能导致非常脆弱的设计。 (每个现有的表都可能需要更新)。

鉴于这是一个相当普遍的现实世界场景,我预计会有一些模式。谁能推荐一些?

【问题讨论】:

    标签: design-patterns persistence observer-pattern rules


    【解决方案1】:

    我讨厌建议实体/属性/值模式,但为什么不提供一个简单的表格,例如:

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

    每个场景 ObjectToUser/UserToObject 一个表?

    如果您想观察特定实体,例如特定书籍,请将对象的主键添加到 EAV 模式中。

    然后,如果您需要检查是否触发了规则,您可以从表中的“ObjectClass”查询“ObjectId”并触发列出的任何规则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 2013-02-12
      • 1970-01-01
      相关资源
      最近更新 更多