Neo4j约束值,标签或属性

时间:2018-08-29 14:50:47

标签: database-design neo4j constraints data-modeling

我来自RDBMS背景,试图绕过属性图(尤其是neo4j)。令我感到困扰的最大事情似乎是我没有办法约束诸如此类的东西

  • 节点标签
    • 什么都不能阻止:person:Pperson:PURSONNN
  • 关系
    • 没有什么可以确保您不添加边缘应用程序的,也不知道如何利用。例如,也许存在“ CanViewAccount”关系,但是其他人出现并天真地构造了一个边缘“ CanView”
  • 没什么约束节点或边的属性。
    • 我可能想拥有一个:Person可以使用的“ UserType”,它应该只是少数几个预定义选项之一。

这是RDBMS 101的东西(参照完整性约束),但是我不确定在Neo4j中是否以及如何做类似的事情。

1 个答案:

答案 0 :(得分:1)

您应该知道Neo4j的架构较少,这就是为什么您可以做所有列出的事情的原因。

另一方面,Neo4j具有一些约束条件:

  • 唯一性约束标签的属性。例如,属性email在节点:Person上应该是唯一的
  • 对标签属性的require约束。例如,属性email必须存在于节点:Person
  • 对关系类型的属性的require约束。例如,属性since必须存在于关系:KNOWS

在EE版本中,您可以在一个或多个字段上创建主键(称为node key