gpt4 book ai didi

sql - 如何在三个模型之间建立事件记录关联

转载 作者:搜寻专家 更新时间:2023-10-30 23:25:58 25 4
gpt4 key购买 nike

我正在尝试为医生的应用程序建模,但我一直在思考数据库设计。假设用户可以创建一个案例,该案例可以与症状、诊断和治疗相关联。首先,这听起来并不难。

但是,我需要医生根据给定的表格提供诊断,其中包括所有已知的诊断(由管理员提供)。此外,一个诊断可以有多种疗法,而医生应该为特定病例选择一种疗法(同样,所有可能的疗法都由管理员播种)。

我还没有开始实际编码应用程序,但我已经创建了一个 db diagram .到目前为止我能想到的最好的是关联casesdiagnoses通过has_and_belongs_to .这似乎也不是最佳选择,因为一个病例只能有一个诊断。无论如何,我真的不太确定如何处理 therapies仅作为案例 has_one治疗和诊断可以 has_many疗法。

我也考虑过使用 jsonb 列,但我宁愿坚持使用关系方法。

非常感谢对此的任何意见!

最佳答案

据我了解,您需要一个支持以下逻辑的模型:

  • 一个病例只能有一个诊断
    • 可以从选项列表中选择诊断
    • 一种诊断可以有多种治疗方法
  • 一个病例只能有一种疗法

如果这是正确的,那么您目前所拥有的看起来相当不错。一些评论/问题:

  1. 如果每个病例只能有一个诊断,为什么不将 diagnosis_id 作为属性包含在 cases 表中?除非您需要专门跟踪病例-诊断关系之间的任何其他数据(您现在没有这样做),否则您不需要单独的表。这可能会通过删除额外的 JOIN 来加速您的查询。如果仔细考虑它可能会发生变化,那么您可以将其保留为单独的表格。

  2. 如果一个案例只能有一种疗法,您同样可以将其作为一个属性包含在 cases 表中。请参阅 #1 中的逻辑。

  3. 当您说一个诊断可以有多种疗法时,您的意思是说用户将为一个诊断分配一种或多种疗法吗?如果是这种情况,则只需创建一个名为 case_diagnosis_therapy 的新表,您可以在其中进行跟踪。病例的诊断与其治疗之间的关系将通过 (case_id, diagnosis_id) 来实现。您已经有了 diagnoses 查找表。

  4. 是的,我同意您更适合坚持使用关系设计而不是 JSON。您的模型看起来很有条理。

  5. 只是一个约定的建议,当您制作表名时通常使用单数名称 - case 而不是 cases

只是一些需要考虑的事情,否则看起来还不错!希望对您有所帮助。

关于sql - 如何在三个模型之间建立事件记录关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57852319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com