如何设计这个领域模型?

时间:2013-04-02 17:47:17

标签: php domain-driven-design aggregateroot

所以我有以下域名:

  • 应用程序和版本,它们实际上是软件应用程序
  • 设备,安装应用程序的设备
  • 在设备上安装的应用程序
  • 已安装应用程序的通知订阅

到目前为止,我最终得到了以下模型:

  • Application实体,由名称,操作系统和类型
  • 定义
  • Version值对象,基本上包装版本信息(主要,次要等)
  • Release entity,是一个引用Application实体并嵌入Version值对象的组合对象
  • Device实体,由序列号
  • 标识
  • NotitificationSubscription实体(允许我按属性查询)

现在我想知道如何“关联”Device实体,ReleaseNotificationSubscription,因为它应该与{已安装的“Release相关联{ {1}}并包含一些额外信息(如身份验证令牌)。

鉴于我的ORM(Doctrine2)和RDMS(MySQL)我坚持如何找到一个好的设计。

想象一下以下工作流程:

  1. 我从其序列号
  2. 标识的数据库中获取Device实体
  3. 我确定运行的Device Release是否已经与之关联,如果不是,我会创建一个关联
  4. 然后我需要为当前的设备发布关联添加或删除Device
  5. 我的问题是我的间接很多。

    为了允许我为关联设置额外的数据,我创建了一个关联类,它本身就是一个引用设备和版本的实体。

    设备可能在其上安装并运行了不同的版本,因此,例如,我不知道如何查询以下信息:“获取当前版本的当前版本的所有通知订阅”

    我显然在Repository NotificationSubscription中添加了一个方法,这意味着我可以通过使用存储库和图findSubscriptionsByDeviceAndRelease($device, $release);

    来查询此信息

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

保持简单:这里不需要域模型,只需要一个良好的实体关系模型。你可能也不需要Doctrine,因为sql查询应该足够简单。