Nosql RavenDB中的关系数据库删除概念

Nosql RavenDB中的关系数据库删除概念,nosql,ravendb,Nosql,Ravendb,我不熟悉Raven DB,也不熟悉无SQL DB的概念。我试图摆脱RDB带来的一些概念。曾经的概念是,如果某个记录被用作某个地方的外键,RDB不会让我删除主记录 假设我不想删除某个类别,而该类别的ID正在某个产品中使用,则RDB不允许我删除该记录。这非常有用,因为我不必担心意外删除记录。如何将相同的概念应用于Raven DB?我想使用规范化结构,比如RDB,因为我计划将Raven DB与一些RDB结合使用。我想安全一点,以防万一,这样我就不会因为尝试一个新概念而陷入混乱 希望我讲得通 任何帮助都

我不熟悉Raven DB,也不熟悉无SQL DB的概念。我试图摆脱RDB带来的一些概念。曾经的概念是,如果某个记录被用作某个地方的外键,RDB不会让我删除主记录

假设我不想删除某个类别,而该类别的ID正在某个产品中使用,则RDB不允许我删除该记录。这非常有用,因为我不必担心意外删除记录。如何将相同的概念应用于Raven DB?我想使用规范化结构,比如RDB,因为我计划将Raven DB与一些RDB结合使用。我想安全一点,以防万一,这样我就不会因为尝试一个新概念而陷入混乱

希望我讲得通


任何帮助都将不胜感激

RavenDB中没有外键约束这样的概念。真的,没有外键。文档中只有一个字符串,可以用来获取另一个文档。我们称之为关系,但这是一个松散的术语。在引擎盖下没有任何东西可以将这些文档链接在一起,并阻止您进行删除

在您描述的场景中,您仍然可以加载产品。但是,如果您试图使用该产品的类别id加载该类别,则会得到null


你必须自己维持这些关系。唯一可用的帮助器是-但是您仍然必须连接每个实体以进行级联。它不会像使用基于sql外键的级联删除那样自动执行此操作。

感谢您的回复,Matt,是否有任何方法,或者是一个捆绑包来应用这种行为?我要求的是基于文档的DBs中不适用的内容吗?我想了解的是,我关心的问题在RDBMs世界中是否有效,在没有SQL的世界中是否仍然有效?如果没有,那么在无SQL数据库中存储诸如类别和产品之类的通用实体的解决方案是什么?您可以完全按照所描述的方式存储它们。您只是没有让数据库代表您执行关系约束。是的,可以编写一个bundle来添加这种行为,但现在还不存在。很多人都喜欢它,但很多人认为它是一个拐杖,它可能会影响性能。必须谨慎使用。我有写乌鸦包的经验。我会给它一些更深入的思考。对于Raven,你不需要有一个规范化的结构,这样你就可以使用RDB了。你这样做会失去RavenDB的很多好处。尝试阅读SQL复制以及这可能对您有何帮助。我将以Matt Johnson的回答作为答案,因为他详细阐述了RavenDB与SQL Server的不同之处以及应该采取的措施。我很高兴了解人们是如何处理与RavenDB类似的情况的。