RavenDb NoSQL多对多建模

RavenDb NoSQL多对多建模,nosql,ravendb,Nosql,Ravendb,我是NoSQL数据库(RavenDb)的新手,我想知道哪种方法是建模以下情况的最佳方法: 我正在做医疗咨询的预约日程表。根据医学专业和会诊类型(第一次或第二次会诊),有几种类型的会诊。 例如,第一次心脏病医学会诊需要30分钟,第二次需要15分钟。每个专业都有其持续时间 当一些医生的咨询时间与普通医生不同时,问题就出现了。因此,通常情况下,第一次心脏病会诊需要30分钟,但当医生是约翰时,只需要20分钟 对于这种情况,我们曾经有一个表格,列出了这些罕见的医生的咨询类型,里面有特殊的持续时间。所以我们

我是NoSQL数据库(RavenDb)的新手,我想知道哪种方法是建模以下情况的最佳方法:

我正在做医疗咨询的预约日程表。根据医学专业和会诊类型(第一次或第二次会诊),有几种类型的会诊。 例如,第一次心脏病医学会诊需要30分钟,第二次需要15分钟。每个专业都有其持续时间

当一些医生的咨询时间与普通医生不同时,问题就出现了。因此,通常情况下,第一次心脏病会诊需要30分钟,但当医生是约翰时,只需要20分钟

对于这种情况,我们曾经有一个表格,列出了这些罕见的医生的咨询类型,里面有特殊的持续时间。所以我们用这个表做了一个左连接,如果有这种类型的会诊记录和选择的医生,我们在这个表中应用时间。如果没有记录,我们取会诊类型的标准值


我是否应该继续使用此方法并查询另一个集合以查看是否有不同的时间安排,或者最好将此信息包含在咨询类型集合中?

为什么不创建一个“医生”集合,其中每个文档可以是:

{ 
    "Name": "John the Rapid",
    "speciality": "Cardiaology",
    "FirstConsultationTime": "20",
    "SecondConsultationTime": "10",
    .....
}
就这样

或者,对于“普通”医生, 您可以在此相同的集合中创建外观更薄的文档,如下所示:

{ 
    "Name": "Some other name",
    "speciality": "Cardiaology",
    .....
}
当您查询医生时,
如果“时间”字段不存在,则使用一些默认值(30分钟和15分钟)

您可能需要阅读:

会诊类型应该是一个集合,因为它在多个地方都有使用。尽管如此,我可以将会诊类型的引用添加到doctor object,针对不同类型的会诊,使用不同的时间,我认为另一种方式会更好。将医生和时间添加到咨询类型。这是因为应用程序操作。当你要预订咨询时,通常你会搜索,例如,心脏病学首次咨询,应用程序会在所有心脏病学日历中搜索,而无需加载医生。感谢您的回答,它帮助我决定将需要的信息嵌入到文档中,而不是使用您的第一种方法创建一个新集合-您可以使用“相关文档”-文档字段类似于:“FirstConsultationTime”:“consultationTimes/2-a”。(其中consultationTimes/2-A“指的是另一个集合中的文档。)了解有关文档的更多信息,请访问: