首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RavenDB数据建模

RavenDB数据建模
EN

Stack Overflow用户
提问于 2012-09-10 10:10:34
回答 1查看 609关注 0票数 2

我最近开始研究RavenDB,并试图看看它是否适合我们的一些项目。然而,我遇到了一些关于“正确”的方法来建模一个简单的数据结构的问题。我试着描述一下:

  • 有三种类型的对象:Guides类别Links
  • “根”指南可以包含0或更多个子指南
  • 指南可以包含0或多个类别
  • 类别可以包含0或多个链接

从视觉上看,结构将是:

  • 根指南(0或更多)
    • 子指南(0或更多)
      • 类别(0或更多)
        • 链接(0或更多)

代码语言:javascript
复制
- Categories (0 or more) 
    - Links (0 or more)

在实际数据中,在每个根指南下大约有20个根指南和大约3-5个子指南。在每个指南(根指南和子指南)下,有15-25个类别。在每个类别下有5-20个链接。

我最初的想法是把它建模成这样(简化模型):

代码语言:javascript
复制
Guide
---------------
Id
ParentGuideId
Title

Category
---------------
Id
GuideId
Title

Link
---------------
Id
CategoryId
Title

这基本上就是关系模型,我意识到这可能不是在RavenDB中对数据建模的正确方式。那么,另一个选择是什么?问题是,我不想像这样存储等级:

代码语言:javascript
复制
Guide
---------------
Id
Title
SubGuides
Categories

SubGuide
---------------
Title
Categories

Category
---------------
Title
Links

Link
---------------
Title

因为它会产生可能有数千个子对象的文档。请记住,上面的模型是简化的。实际上,每种类型都有更多的数据,所以如果我们采用这种模型,RavenDB中的20个根指南文档将是巨大的。

还有别的选择吗?也许这是我多年来对关系数据库(关系数据库)的坏看法,但也许这个场景不太适合RavenDB,也不适合SQL?

编辑(添加基本查询)

对数据的访问相当简单。我有以下要求:

  1. 选择包含所有子向导的根向导列表。
  2. 对于一个特定的指南(根或子),获取所有的子指南(如果根),类别和链接。

基本上这就是我所需要的。然而,评估RavenDB或类似功能的原因之一是增加了一些搜索功能。正如我已经提到的,有一些关于链接,类别和指南的更多的信息,如描述,标签等,所以很高兴能够搜索所有这些。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-11 12:10:54

我会处理一些事情,使指南成为一份文件。类别和链接嵌入到该文档中。

指南可以有一个子指南的集合。

第一个查询是使用它们的子类查询所有Guides。你就这样做:

代码语言:javascript
复制
session.Query<Guide>().Include(x=>x.SubGuides).Where(x=>x.Parent == null).ToList();

这将在一个服务器查询中将其全部提供给您。

代码语言:javascript
复制
session.Include<Guide>(x=>x.SubGuides).Load("guides/123")

这将给你一个指南和所有的子指南。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12349501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档