帮助在SQL/NoSQL混合中建模EAV(Sql server/RavenDB)

Mik*_*lee 6 sql sql-server data-modeling nosql ravendb

我正在设计一个健康SaaS应用程序,并希望在初始建模方面提供一些帮助.我开始用这个帖子确认我应该使用EAV - 由于临床数据的稀疏性,答案是肯定的.然后我开始考虑使用NoSQL选项,而不是尝试将其纳入SQL.似乎这两者的组合效果最好.我会尝试解释要求和我的想法,并会喜欢任何反馈.我正在使用.net.

要求 在最高级别,我们有一个"患者".对于需要某些医疗帮助的患者,会发生一些事情,让我们称之为"事件".对于每个"事件",可以多次看到"患者",称为"访问".根据"访问"存储所有临床数据(测试/历史/等).所以我们有:

患者1 - ∞事故1 - ∞访问1 - 1临床数据(许多潜在的键/值对)

解决方案(反馈很棒)

SQL表

Patient
- PatientID
- other patient info

Incident
- IncidentID
- PatientID
- Other incident info

Visit
- VisitID
- IncidentID
- Datetime
Run Code Online (Sandbox Code Playgroud)

NoSQL DocumentDB(可能是RavenDB)

{ // Visit document - id: visits/12345
 "Patient": {
   "PatientId": "patients/54321",
   "Name": "John Smith"
 },
 "Incident": {
   "IncidentId": "incidents/55555",
   "Name": "Cardiac Arrest"
 },
 "VisitData": {
   "BP": "110/70",
   "Hypertension": "True"
   "Cardiac Disease": "Angina"
   "Stroke": "False"
   .... (could be tens or hundreds of key/value pairs)
 },

}
Run Code Online (Sandbox Code Playgroud)

这就是我到目前为止所拥有的.除了一般意见(欢迎所有人)之外,我想知道是否有人认为我应该将每位患者的所有事故和访问都放在一个文件中,而不是每次访问都有一个文件(这就是上述内容).我相信文档可能会"太大"(不知道基于文档的数据库中有什么太大的意义),而且几乎总是这些视图都是基于访问 - 尽管我们还需要在访问期间显示趋势报告.

提前致谢!!

麦克风

Ran*_*ndy 0

根据您所说的要求,这看起来很合适。

我认为可能还有其他事情发生,这可能是“状况”,不一定是任何患者事件的一部分。例如,患有高血压的人可能只是因为手指骨折而出现这种情况。

此外,事件可能很难定义 - 它是单个时间点事件还是恶化的渐进持续时间?也许这意味着事件实际上只是访问的一个标记,或者您可能有一个访问访问关联表,可以让您声明一次访问是另一次访问的后续,从而构建患者接受的护理的层次结构或网络。

只是一些想法.. hth

编辑-事后思考:我肯定会推荐一个带有正确规范化表的 SQL 数据库...