我设计了一个关系数据模型及其图形数据模型。 我想知道我是否以正确的方式完成了这项工作以及我的图形数据模型是否正确。如果我的模型有任何错误或含糊不清,请发表评论。
正如您在图表数据模型中看到的那样,有4个标签:
答案 0 :(得分:2)
关于主键问题:
事实上,Neo4j节点和关系有一个内部唯一ID,可以使用id()函数访问:
match (d)-[r]-()
return id(d) as nodeId, id(r) as relId
但是,您的应用程序不应该依赖这些ID,因为当删除节点或关系时,Neo4j会重用它们。 Neo4j documentation说:
当节点和关系出现时,Neo4j会重用其内部ID 删除。这意味着应用程序使用,并依赖于内部 Neo4j ids很脆弱或有犯错误的风险。因此 建议使用应用程序生成的ID。
更多here。
所以,如果你真的想要一个主键,我认为你有两个主要选择:
在应用程序级别管理主键。即:在访问Neo4j数据库的应用程序代码中创建并分配唯一ID。
Use GraphAware UUID plugin。 GraphAware UUID是一个简单的库,它透明地将UUID分配给图中新创建的节点和关系,并确保任何人都可以(无意或有意)更改或删除它们。