我想通過在我已經開發的項目中替換RDBMS來學習RavenDB,以便在真實情況下使用它。我試圖創建數據庫時陷入了僵局,我很想知道在文檔數據庫中建模的最佳方法。我想出的每一種可能性最終都會看起來像一個關係數據庫,或者最終重複大量的信息。重複數據庫中的信息並不是什麼大不了的事情,但是如果發生變化,保持最新的信息就是最新的。RavenDB複雜模型
我希望我陷入了SQL模式,我完全無法看到明顯的答案。
這裏有我需要記錄的數據爲基本對象:
- 活動
-Person
- 組織
-Cabin
簡單要求:
-A 人可以是部分多個組織。
-An 組織可以有許多成員(人)。
-A 人可以參加多個事件。
-An 事件有很多人參加。
- 有關客艙的一些細節可能會因事件(例如住宿)而異。
複雜的要求:
-I需要能夠保留艙爲事件這樣在一次單艙不使用兩個事件。 (使用RDBMS我只需創建一個「EventCabins」表)。
- 我需要能夠記錄哪些人人正在參加事件。參加活動的人員將獲得與他們相關的信息,這些信息不屬於人員或活動的一部分。
- 我需要能夠記錄哪個組織組織正在參加事件。參加的組織將擁有與其不相關的信息,而不屬於組織或事件。
- 我需要能夠記錄哪個人分配給哪個小屋在特定事件中。
-I需要能夠記錄哪些人們出席爲組織的一部分的特定事件(它不要求出席作爲一個組織的一部分)。即使一個人可以屬於多個組織,他/她也只能作爲其中一個組織的一部分參加特定活動。他/她可能會作爲另一個組織的一部分參加另一個活動。 - 在程序中,用戶一次只能查看一個事件。在這種情況下,用戶可以查看按艙位分組或按組織分組的分組。
似乎很明顯,我需要單獨收集的活動,人民,組織,並小屋。滿足上面的複雜要求就是我撞牆的地方。
難道我把參加者裏面的事件集合?如果是這樣,那麼我怎麼處理艙室和組織?
我是否爲參加者創建單獨的集合?如果是這樣,那麼將有4個不同的相關集合,我需要在不同時間存儲ID並進行查詢(組織,小屋,活動,人員)。這似乎與文檔數據庫方法相反。
謝謝!