Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 图DB中的条件关系_Neo4j_Graph Databases_Relationships_Arangodb - Fatal编程技术网

Neo4j 图DB中的条件关系

Neo4j 图DB中的条件关系,neo4j,graph-databases,relationships,arangodb,Neo4j,Graph Databases,Relationships,Arangodb,图模型如何处理条件关系,如: (Alice -[Dates]-> Bob) Where [Dates] exists IF and ONLY IF (Bob -[Owns]-> Ferrari) is true 除了查询,我还想知道数据库引擎是否会根据条件应用关系,或者是否需要在应用程序中管理关系。我不能代表arangodb,但对于neo4j,这一位必须由应用程序处理。关于图,您可以断言的模式位并不能说明节点类型之外可以存在哪些类型的关系。像你所说的那种偶然的关系甚至比这更进

图模型如何处理条件关系,如:

(Alice -[Dates]-> Bob)  
Where [Dates] exists IF and ONLY IF 
(Bob -[Owns]-> Ferrari) is true

除了查询,我还想知道数据库引擎是否会根据条件应用关系,或者是否需要在应用程序中管理关系。

我不能代表arangodb,但对于neo4j,这一位必须由应用程序处理。关于图,您可以断言的模式位并不能说明节点类型之外可以存在哪些类型的关系。像你所说的那种偶然的关系甚至比这更进一步

像这样进行验证可能比最初看起来更复杂。假设鲍勃拥有一辆法拉利。所以爱丽丝和鲍勃约会太肤浅了!。无论是由应用程序还是数据库强制执行,一切都很好。好了,鲍勃卖掉了他的法拉利。数据库应该做什么

鲍勃应该被禁止出售他的法拉利吗?i、 e.删除该关系失败 爱丽丝应该被迫和鲍勃分手吗?即删除该日期关系…残忍! 应该抛出一些严重的错误吗?
这些是特定于领域的注意事项。您希望在应用程序层中执行此操作,以便能够仔细考虑这些验证条件,并执行正确的操作。即使graph数据库确实支持它,也不清楚您是否希望使用graph数据库的默认强制策略,不管它是什么。

Frobberofits的答案非常好,对于ArangoDB数据库也是如此。 然而,ArangoDB提供了一个名为Foxx的微服务框架,允许您为数据库定义额外的API端点,以执行自定义代码

Foxx的一个应用程序正是您的问题: *定义一个端点以删除执行两项操作的关系: 1删除关系 2检查并应用所有逻辑约束或副作用


这给了您直接在数据库中执行的优势—只有一个查询触发器,并且您的应用程序代码不受这些约束。

回答得很好。在这里,业务规则引擎是有用的,无论是作为数据库和应用程序之间的一个层,还是运行关系有效性的周期检查?可能是业务规则引擎,也可能是与事务挂钩。即,当事务提交时,如果结果是数据库处于错误状态,则事务处理程序将根据这些规则清理数据。如果我可以选择两个答案,我将: