RavenDB文档结构与关系模式

RavenDB文档结构与关系模式,ravendb,Ravendb,我最近开始与RavenDB合作 下面是关系数据库中的一个传统示例: 雇员类型表 ID:1类型:DEV ID:2类型:QA 雇员 姓名:FRED TYPEID:1 名称:杰克类型ID:2 根据我对RavenDB的了解,该类型将包含在员工中: 雇员 名称:FRED类型:DEV 名称:插孔类型:QA 那么是否需要EmployeeType表 如果不是,如果您要显示员工类型的下拉列表,您会选择distinct(type)from employee吗 如果要执行上述操作,在不输入新员工(或编辑现有员工)的情

我最近开始与RavenDB合作

下面是关系数据库中的一个传统示例:

雇员类型表 ID:1类型:DEV ID:2类型:QA

雇员 姓名:FRED TYPEID:1
名称:杰克类型ID:2

根据我对RavenDB的了解,该类型将包含在员工中:

雇员 名称:FRED类型:DEV
名称:插孔类型:QA

那么是否需要EmployeeType表

如果不是,如果您要显示员工类型的下拉列表,您会选择distinct(type)from employee吗

如果要执行上述操作,在不输入新员工(或编辑现有员工)的情况下,如何添加新员工类型?或者你会在某个地方用代码保存一个列表吗

最后,如果某个员工类型的文本发生了更改,那么您似乎需要更新所有员工记录。如果有100000个员工记录呢

我是Raven(文档数据库)的新手,因此任何有助于我更好地掌握不同范式的见解都将不胜感激

那么是否需要EmployeeType表

将需要满足下一个问题的要求。此外,这种类型的引用数据只能存储在单个文档中,而不能存储在文档集合中。您还可以维护一个硬编码列表,同时绕过数据库

如果不是,如果要显示员工类型的下拉列表, 您能从员工中选择不同的(类型)吗

否。从员工类型文档中选择。选择distinct from employees表将告诉您记录的员工类型,而不是可用的员工类型

最后,如果员工类型的文本被更改,那么 就像你需要更新所有的员工记录一样。如果…怎么办 有100000份员工记录


您面临的是关系数据库和文档数据库之间的有效权衡。你有几个选择。您可以通过指向员工类型文档集合的ID从员工文档中引用员工类型。这样,您就可以在一个地方更改员工类型名称。但是,折衷的办法是,RavenDB需要包含(加入)这两个文档,以返回一个类型为的雇员。另一种方法是避免使用员工类型ID,并将该类型直接存储在员工文档中,当需要更改姓名时,您将在所有文档中运行更新。看看RavenDB文档。

回答得不错。这确实是我对可以由用户定义的查找类型所采用的方法。然而,许多类型都是硬编码的——我会使用枚举来实现这一点,而完全忘记将其保存在数据库中。只需在Employee上放置EmployeeType枚举属性。