6

我想知道 Neo4j 和 OrientDB 是否提供了根据特定边缘类型的多重性定义约束的可能性?

4

2 回答 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.orgsylvadb

或者您可以设置一个小型 tx-event 处理程序来检查您的基数并在您违反约束时引发异常。

无论如何,我想写一篇关于它的博客文章,敬请期待。

于 2014-10-09T09:52:18.987 回答