4

我是 Raven DB 的新手,也是 No SQL DB 概念的新手。我试图摆脱 RDB 附带的一些概念。曾经的概念是,如果某个记录在某处用作外键,RDB 不会让我删除主记录。

假设我不想删除一个类别并且该类别的 ID 正在某个产品中使用,那么 RDB 不会让我删除该记录。这很有帮助,因为我不必担心意外删除记录。如何将相同的概念应用于 Raven DB?我想使用像 RDB 这样的规范化结构,因为我计划将 Raven DB 与一些 RDB 结合使用。我想以防万一,以免因尝试新概念而陷入混乱。

希望我有道理,

任何帮助将不胜感激!

4

1 回答 1

4

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

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

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

于 2013-01-11T16:05:49.377 回答