2013-08-25 67 views
3

我打算使用Neo4j來處理我有興趣創建的數據庫。Neo4j中可以設計條件和組合條件關係嗎?

我還沒有確定我將用來表示我的域的數據模型,但是假設有一個模型用於評估者和狀態節點之間尚未定義關係的評估者和狀態節點。我需要的數據庫如下所示...

功能1 每個評估者的結果可以高於或低於基本範圍。對於給定的評估者(E1),如果結果高於基準範圍(BR),則與狀態S1存在關係。如果結果在基準範圍內(BR),則與任何國家都沒有關係。如果結果低於基準範圍(BR),則與狀態S2有關係。因此評估者可能有兩個屬性:結果和基本範圍。基本範圍可以表示爲基本範圍高和基本範圍低以便於計算。

可以說用戶輸入給定評估者的結果;我希望該輸入可以調用一個自動查詢,該查詢取決於與基本範圍有關的結果值。該查詢將返回與給定結果值的評估者有關的所有狀態。這裏的關鍵思想是取決於用戶輸入值的條件關係。我相信還有其他方法可以做到這一點(關係屬性?),但基於用戶輸入的條件關係的相同想法對我來說很有意義。

CAN功能1可以嗎?

FUNCTION 2 然後讓我們說有2個評估者E1和E2。比方說,與上方或下方的截然不同的基本範圍的值評估者的各種組合有S1,S2條件式... Sn的

 E1 High, E2 low; relationship with S1 
     E1 High E2 BR; relationship with S2 
     E1 High, E2 High; relationship with S3 
     E1 BR, E2 High; relationship with S4 
     E1 low, E2 High; relationship with S5 
     E1 BR, E2 BR; no relationship to a State 

比方說一個用戶輸入用於結果E1和E2的值。我希望該組合可以調用一個自動查詢,這個查詢也取決於結果與基本範圍的關係。該查詢將返回與給定結果值相關的所有與E1和E2相關的狀態。這裏的關鍵思想是根據用戶輸入值的組合條件關係。

CAN功能2可以完成嗎?

回答

0

這個問題看起來很像你的應用領域邏輯,而不是Neo4j本身。使用Neo4j,完全可以動態地添加/刪除節點,添加/刪除關係等。對於功能1,您只需添加或刪除E1S1/S2之間的關係(通過您的應用程序邏輯;沒有自動條件關係機制依賴)。對於函數2,再次添加或刪除E1/E2S1-S5(或者只是假設沒有任何關係的E1 & E2)之間的關係。

您可以通過Cypher進行任何查詢+添加或查詢+刪除(最新文檔爲here)。

+0

謝謝大衛!是的,我已經閱讀過,數據模型設計應該基於您想要執行的查詢類型。我試圖確定需要執行的確切查詢,而不清楚它將如何實施。我想我的問題解決了Neo4J功能與我的域邏輯的關係。 –

+0

請原諒我的無知David,但是您的建議是否意味着當用戶進行查詢時,他們會通過添加或刪除關係來更改數據庫? –

+0

否 - 只要更新節點中的屬性,就必須更新關係。只讀查詢應該是冪等的。您不應該在讀取查詢上更新您的數據庫。 –