首页 文章

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

提问于
浏览
3

我是Raven DB的新手,也是No SQL DBs概念的新手 . 我试图摆脱RDB带来的一些概念 . 一旦概念是如果某个记录在某处被用作外键,RDB就不会让我删除主记录 .

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

希望我有道理,

任何帮助将非常感谢!

1 回答

  • 3

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

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

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

相关问题