0

这是我的场景(使用完全虚构的应用程序):

  • Joe 注册了“Contests R Us”,帮助用户为他们的业务创建新的竞赛
  • 乔让人们亲自报名参加比赛(有些人不知道如何使用电脑)
  • 然后,Joe 使用“Contests R Us”contact为每个注册并填写他们的信息(名字、姓氏、电话)等的人创建一个新的。这是将从中抽取获胜者的人群。
  • 一些亲自注册的人想检查他们是否中奖,因此请在“Contests R Us”创建一个新用户帐户

此时,我想将此新用户连接到contactJoe 创建的现有用户(基于电子邮件地址),并允许用户在需要时更新联系信息。一个额外的问题是,这个用户可能已经报名参加了与不同公司的比赛,因此contact我现在可能想要将 N 个对象合并为用户拥有的单个联系人对象。

这是我在 Cypher 中描述的模型(由不同的人创建的 2 个联系人,_3 和 _6,然后使用匹配的电子邮件创建用户,_1):

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

关于处理这种情况的最佳方法的任何想法?我试图弄清楚大卫和弗雷德如何知道contact他们创造的约翰实际上想要被称为杰克。

我应该删除contact节点并将所有关系移动到新创建的user节点吗?我应该只添加从user节点到所有现有contact节点的关系吗?

创建用户后,所有未来的关系都将直接与用户相关。我只需要支持即使指定用户尚未注册(或从未注册),一切仍然需要工作的场景。

谢谢!

4

2 回答 2

1

我现在要建立新的关系 SAME_AS:http ://console.neo4j.org/r/iangl3

我应该删除联系人节点并将所有关系移动到新创建的用户节点吗?我是否应该只添加从用户节点到所有现有联系人节点的关系?

我会选择最后一个 - 您应该从用户节点添加所有现有联系人节点的关系。这样您就不会丢失用户联系人列表中别名的值,然后您可以让您的用户选择将他们自己的联系人命名为他们喜欢的任何名称。

于 2013-08-26T13:11:34.553 回答
0

User当电话节点可能只是一个和一个Contact将电话信息存储为属性的节点时,似乎电话节点不必要地使事情复杂化。这样您就不必担心为每个联系人更新多条记录。

您的 John > Jack 场景应作为Contact节点上的 note 属性处理。

于 2014-08-05T16:50:03.603 回答