所以我下面的域名:如何設計此域模型?
- 應用程序和版本,其實都是應用軟件
- 設備,在其上的應用程序安裝
- 上的設備
- 通知訂閱安裝的應用程序的設備通過安裝應用程序
到目前爲止,我已經結束了以下模型:
Application
實體,它是由一個名稱,OS和一個類型Version
值對象,後者基本上包裹版本信息(主要的,次要的,等)Release
實體,這是一個由定義對象引用一個應用實體和嵌入一個版本值對象Device
實體,它是由序列號識別NotitificationSubscription
實體(以允許我通過屬性查詢)
現在我不知道如何「準」 Device
實體,Release
和NotificationSubscription
,因爲它應該被關聯到「已安裝」 Release
上Device
,包括一些額外的信息(如身份驗證令牌)。
由於我的ORM(Doctrine2)& RDMS(MySQL)的限制,我被困在如何找到一個好的設計。
想象一下以下工作流程:
- 我從它的序列號識別數據庫中讀取
Device
實體 - 我確定
Device
從如果沒有已與它相關聯,運行Release
我創建一個關聯 - 然後我需要爲當前設備發佈協會添加或刪除
NotificationSubscription
我的問題是我結束了很多間接。
爲了讓我爲關聯設置額外的數據,我創建了一個關聯類,它本身就是引用設備和發佈的實體。
設備可以安裝不同的版本,並在其上運行,因此,例如,我不知道如何查詢以下信息:「獲取的所有通知訂閱當前版本爲當前設備」
我明顯增加了一個方法在存儲庫findSubscriptionsByDeviceAndRelease($device, $release);
這意味着我可以通過使用存儲庫和通過圖查詢這個信息$device->getInstalledReleases()->filter($identifiedRelease)->getNotificationSubscriptions();
任何想法?