Neo4j 约束值、标签或属性
Neo4j Constraining Values, Labels or Properties
我来自 RDBMS 背景,并试图围绕 属性 图表(尤其是 neo4j)。最让我恼火的是似乎没有办法限制
之类的东西
- 节点标签
- 无所不能
:person
、:Pperson
或 :PURSONNN
- 人际关系
- 没有什么可以确保你没有添加边缘应用程序不知道如何使用。例如,可能存在 "CanViewAccount" 关系,但其他人出现并天真地构建了一条边 "CanView"
- 没有约束节点或边的属性。
- 我可能想要一个
:Person
可以是“UserType”,它应该只是少数预定义选项之一。
这是 RDBMS 101 的东西(参照完整性约束),但我不确定我是否以及如何在 Neo4j 中做类似的事情。
您应该知道 Neo4j 是无模式的,这就是为什么您可以执行您列出的所有内容。
另一方面,Neo4j 有一些限制,例如:
- 标签的 属性 的唯一性约束。例如,属性
email
在节点 :Person
上应该是唯一的
- a 需要对标签的 属性 进行约束。例如,属性
email
必须存在于节点 :Person
上
- a 需要对关系类型的 属性 进行约束。例如,属性
since
必须存在于关系 :KNOWS
并且在 EE 版本中,您可以在一个或多个字段上创建主键(称为 node key
)
我来自 RDBMS 背景,并试图围绕 属性 图表(尤其是 neo4j)。最让我恼火的是似乎没有办法限制
之类的东西- 节点标签
- 无所不能
:person
、:Pperson
或:PURSONNN
- 无所不能
- 人际关系
- 没有什么可以确保你没有添加边缘应用程序不知道如何使用。例如,可能存在 "CanViewAccount" 关系,但其他人出现并天真地构建了一条边 "CanView"
- 没有约束节点或边的属性。
- 我可能想要一个
:Person
可以是“UserType”,它应该只是少数预定义选项之一。
- 我可能想要一个
这是 RDBMS 101 的东西(参照完整性约束),但我不确定我是否以及如何在 Neo4j 中做类似的事情。
您应该知道 Neo4j 是无模式的,这就是为什么您可以执行您列出的所有内容。
另一方面,Neo4j 有一些限制,例如:
- 标签的 属性 的唯一性约束。例如,属性
email
在节点:Person
上应该是唯一的
- a 需要对标签的 属性 进行约束。例如,属性
email
必须存在于节点:Person
上
- a 需要对关系类型的 属性 进行约束。例如,属性
since
必须存在于关系:KNOWS
并且在 EE 版本中,您可以在一个或多个字段上创建主键(称为 node key
)