图数据库中的条件关系

Conditional Relationship in Graph DB

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

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

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

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

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

  1. 是否应该禁止 Bob 出售他的法拉利? (即删除该关系失败)
  2. Alice 应该被迫与 Bob 分手吗? (即删除那个日期关系......残酷!)
  3. 是否应该抛出一些讨厌的错误?

这些是特定于域的注意事项。您希望在您的应用程序层执行此操作,以便您可以考虑这些验证条件,然后做正确的事情。即使图形数据库确实支持它,也不清楚您是否希望使用图形数据库的默认执行策略(无论是什么)。

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

Foxx 的一个应用程序正是您的问题: * 定义一个端点以删除做两件事的关系: 1)删除关系 2) 检查所有逻辑约束或副作用并应用它们

这为您提供了直接在数据库中执行的优势(只有一个查询触发器),并且您的应用程序代码不受这些限制。