TLDR:一般来说是的,但这取决于。
这是一个非常广泛的问题,所以让我分解一下。
虽然谈论所有图形数据库(它们不像 SQL 数据库那样标准化——反过来也不是很标准化)有点夸大其词,但请对这个答案持保留态度:是的,这是可能的。
与在 SQL 数据库中一样,您通常可以设置要在数据的任何更改被持久化之前检查的约束。
大多数图形数据库都包含类似于“类型”的内容,类似于 SQL 数据库中的表表示的内容。有些允许将关系限制为仅针对特定类型,因此您可以将使用 CAN 总线和 I2C 总线的节点之间的关系限制为特定类型。
如果数据库不提供这些机制,通常可以将关系限制为模型中特定键和值的存在。再举一个电路示例:想象一个基于节点的系统,它具有类型化的输入和输出——int
基于输出的输出只能连接到int
基于输入,float
基于输出只能连接到float
基于输入,等等。然后你可以将字段output_type
和添加input_type
到节点并约束值之间的关系。
只要您添加了编写(类似 SQL 的存储)过程的能力,您就可以编写非常复杂的数据完整性约束。
所以,虽然有可能,但问题是,如果你应该这样做。
您实际上想要在数据库中放入多少逻辑是一个长达数十年的激烈争论。在您的应用程序架构中的某个时刻,您将不得不检查您正在处理的数据的有效性。处理数据库本身的数据一致性通过应用程序和数据库之间的多次往返解决了很多竞争条件或性能问题,如果在应用程序层进行一致性检查,就会发生这种情况。
将大量逻辑放入数据库会严重限制您切换数据库的能力(“供应商锁定”),可能会导致应用程序层和数据库之间的代码重复,并在两个(或更多)层之间喷洒您的逻辑您的架构(这使得发现错误变得更加困难,引入了时间耦合,并且可能重新引入竞争条件和性能问题,您必须再次使用事务)。
我个人的看法与史蒂夫·沃兹尼亚克(Steve Wozniak)类似——将您的数据库视为另一种服务。如果该服务可以为您提供确保数据完整性所需的一切,那么直接使用数据库可能是个好主意。但如果这增加了我之前提到的问题,最好在数据库和业务逻辑之间放置一层。