2013-08-18 59 views
0

這是我的方案(使用一個完全虛構的應用程序):Neo4j的:正確的方式來建模聯繫人和用戶之間的關係

  • 喬「競賽玩具反斗城」,這可以幫助用戶爲他們的業務創造新的競賽報
  • 喬讓人們親自爲比賽報名(有些不知道如何使用計算機)
  • 喬然後使用「競賽玩具反斗城」創造簽署了每個人一個新的contact和填充他們的信息(名字,姓氏,電話)等。這是從中抽取勝利者的人羣。
  • ,在人簽署了有人要檢查,如果他們已經贏得了如此建立在「比賽玩具反斗城」

在這一點上,我想這個新的用戶連接到現有的一個新的用戶帳戶Joe創建的contact(基於電子郵件地址),並允許用戶在需要時更新聯繫人信息。另外一個缺點是,這個用戶可能已經註冊了與不同公司的競賽,所以我現在想要合併到用戶擁有的單個聯繫人對象中。

下面是我在CYPHER(由不同的人,_3和1-6,然後用戶使用匹配的電子郵件,創建_1創建2個觸點)所描述的模型:

CREATE (_1:User { email:"[email protected]", name:"Jack" }), 
     (_2:Phone { no:"555-5555" }), 
     (_3:Contact { name:"John", email:"[email protected]" }), 
     (_4:User { email:"[email protected]",name:"David" }), 
     (_5:Phone { no:"555-5555" }), 
     (_6:Contact { name:"John", email:"[email protected]" }), 
     (_7:User { email:"[email protected]",name:"Fred" }), 
     _3-[:primary_phone]->_2, 
     _6-[:primary_phone]->_5, 
     _4-[:created]->_3, 
     _7-[:created]->_6 

上的任何想法處理這種情況的最佳方法?我試圖弄清楚大衛和弗雷德是如何知道他們創造的contact實際上是想叫做傑克。

我應該刪除contact節點並將所有關係移動到新創建的user節點嗎?我應該只添加一個從user節點到所有現有的contact節點的關係嗎?

創建用戶後,所有將來的關係將直接發送給用戶。我只需要支持即使指定的用戶還沒有註冊(或者從不註冊)仍然需要工作的場景。

謝謝!

回答

1

我會去一個新的關係SAME_AS現在:http://console.neo4j.org/r/iangl3

我應該刪除的聯繫人節點和移動所有 新創建的用戶節點之間的關係?我是否應該將 用戶節點的關係添加到所有現有的聯繫節點?

我會去的最後一個 - 你應該添加從所有現有的接觸節點是用戶節點的關係。這樣您就不會失去用戶聯繫人列表中別名的價值,那麼您可以讓用戶選擇將自己的聯繫人命名爲他們喜歡的任何聯繫人。

0

看起來電話節點似乎是不必要的複雜的事情,它可能只是一個User和一個Contact節點與電話信息存儲爲屬性。這樣你就不必擔心爲每個聯繫人更新多個記錄。

您的John> Jack場景應作爲Contact節點上的註釋屬性進行處理。

相關問題