这是我的场景(使用完全虚构的应用程序):
- Joe 注册了“Contests R Us”,帮助用户为他们的业务创建新的竞赛
- 乔让人们亲自报名参加比赛(有些人不知道如何使用电脑)
- 然后,Joe 使用“Contests R Us”
contact
为每个注册并填写他们的信息(名字、姓氏、电话)等的人创建一个新的。这是将从中抽取获胜者的人群。 - 一些亲自注册的人想检查他们是否中奖,因此请在“Contests R Us”创建一个新用户帐户
此时,我想将此新用户连接到contact
Joe 创建的现有用户(基于电子邮件地址),并允许用户在需要时更新联系信息。一个额外的问题是,这个用户可能已经报名参加了与不同公司的比赛,因此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
节点的关系吗?
创建用户后,所有未来的关系都将直接与用户相关。我只需要支持即使指定用户尚未注册(或从未注册),一切仍然需要工作的场景。
谢谢!