我想知道Neo4j和OrientDB是否提供了根据特定边缘类型的多重性定义约束的可能性?
答案 0 :(得分:6)
您可以为每个标签的out / in集合设置多重性。如果边的标签是“workFor”,则设置从Person到Company的最大1条边的示例:
ALTER PROPERTY Person.out_workFor NOT NULL
ALTER PROPERTY Person.out_workFor MAX 1
您还可以设置最小值:
ALTER PROPERTY Person.out_workFor MIN 1
以这种方式与min&最大强制要求与公司只有一个且只有一个关系。
答案 1 :(得分:-1)
违反约束时你想做什么?例外&回滚还是以某种方式合并?
对于1:1基数,有合并
MATCH (p:Person {name:"Pablo"})
MATCH (c:Company {name:"Era7"})
MERGE (p)-[:WORKS_FOR]->(c);
对于更高的基数约束,您可以使用支持元模型和structr.org或sylvadb等架构的框架。
或者您可以设置一个小的tx事件处理程序来检查您的基数,并在违反约束时引发异常。
我想写一篇关于它的博客文章,敬请期待。