我想知道 Neo4j 和 OrientDB 是否提供了根据特定边缘类型的多重性定义约束的可能性?
问问题
425 次
2 回答
7
对于东方数据库
您可以为每个标签设置出/入集合的多重性。如果边的标签是“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
通过这种方式,最小和最大必须与公司建立一个且只有一个关系。
于 2014-10-09T12:30:57.040 回答
-1
对于 Neo4j
当约束被违反时,你想做什么?异常和回滚或以某种方式合并?
对于 1:1 基数,有合并
MATCH (p:Person {name:"Pablo"})
MATCH (c:Company {name:"Era7"})
MERGE (p)-[:WORKS_FOR]->(c);
对于更高的基数约束,您可以使用支持元模型和模式的框架,如structr.org或sylvadb。
或者您可以设置一个小型 tx-event 处理程序来检查您的基数并在您违反约束时引发异常。
无论如何,我想写一篇关于它的博客文章,敬请期待。
于 2014-10-09T09:52:18.987 回答