2013-04-02 73 views
1

所以我下面的域名:如何設計此域模型?

  • 應用程序和版本,其實都是應用軟件
  • 設備,在其上的應用程序安裝
  • 上的設備
  • 通知訂閱安裝的應用程序的設備通過安裝應用程序

到目前爲止,我已經結束了以下模型:

  • Application實體,它是由一個名稱,OS和一個類型
  • Version值對象,後者基本上包裹版本信息(主要的,次要的,等)
  • Release實體,這是一個由定義對象引用一個應用實體和嵌入一個版本值對象
  • Device實體,它是由序列號識別
  • NotitificationSubscription實體(以允許我通過屬性查詢)

現在我不知道如何「準」 Device實體,ReleaseNotificationSubscription,因爲它應該被關聯到「已安裝」 ReleaseDevice,包括一些額外的信息(如身份驗證令牌)。

由於我的ORM(Doctrine2)& RDMS(MySQL)的限制,我被困在如何找到一個好的設計。

想象一下以下工作流程:

  1. 我從它的序列號識別數據庫中讀取Device實體
  2. 我確定Device從如果沒有已與它相關聯,運行Release我創建一個關聯
  3. 然後我需要爲當前設備發佈協會添加或刪除NotificationSubscription

我的問題是我結束了很多間接。

爲了讓我爲關聯設置額外的數據,我創建了一個關聯類,它本身就是引用設備和發佈的實體。

設備可以安裝不同的版本,並在其上運行,因此,例如,我不知道如何查詢以下信息:「獲取的所有通知訂閱當前版本爲當前設備」

我明顯增加了一個方法在存儲庫findSubscriptionsByDeviceAndRelease($device, $release);這意味着我可以通過使用存儲庫和通過圖查詢這個信息$device->getInstalledReleases()->filter($identifiedRelease)->getNotificationSubscriptions();

任何想法?

回答

0

保持簡單:在這裏不需要域模型,只需要一個好的實體關係模型。你可能不需要Doctrine,因爲sql查詢應該足夠簡單。