2012-02-01 19 views
0

我喜歡用於存儲分層數據的嵌套集模型,並且我想找到一個類似的模型來存儲項目管理應用程序中的任務依賴關係。在依賴性網絡中存儲分支/合併的數據庫模式

問題1:不可持續的遞歸數據庫查詢的複雜性/函數調用:

現在,我有一個簡單的M:N表,用於存儲任務/攔截對,而是通過數據的循環是沒有優化充其量,最壞的情況是遞歸惡夢。我想限制數據庫調用的緊密循環,並且 - 使用「普通」樹 - 我將使用嵌套集來實現此目的。

問題2:多重繼承,多descendance

我不能用一棵樹的原因是,這組不僅包含分支,也合併。某些任務具有多個「父節點」 - 如果您願意的話) - 必須先完成多個任務才能啓動。這似乎與我如何假設SVN或Git必須工作來存儲版本信息。

我想運行之類的查詢:

  • 獲取所有任務,遞歸,依賴於特定的任務(自上而下穿越)
  • 添加所有的時間估計爲特定任務及其所有依賴(自下而上穿越)
  • 的任務邏輯的選項可能依賴性的約束列表(不能依賴於自身,在一個循環中)

可能的選項至今:

  • 灣子彈和處理複雜
  • 指數的所有序列(「路線」,如果你願意,就完成了全部任務) - 仍然不確定如何存儲這
  • 商店自上而下嵌套組和自下而上的嵌套集合
  • 祈求一些StackOverflow的大師知道的比我多關於這個問題

有什麼是st的方式(以及你有多確定它會起作用)?

回答

0

我會從任務和任務關係表開始。
將task_relationships表用於多個父母或子女。
任務關係有父項和子項都是id在任務表中。

+0

這正是我開始的地方。這是否足夠了,還是有下一步優化對層次結構的查詢? – landons 2012-02-01 05:22:44

+0

下一步可能是反規範化。 – 2012-02-02 20:13:13

+0

好的,所以我可以保持關係規範化(根據您的答案),但爲了查詢數據,爲了性能目的緩存一些隱含關係(非規範化表示)。這就說得通了。謝謝! – landons 2012-02-02 23:04:07

相關問題