如何使用额外的列数据存储多对多关系

时间:2019-11-13 05:50:26

标签: mysql sql database oracle entity-attribute-value

dbstructure

在上述情况下,

是“迹象和症状”的多项选择,如果必须填写“其他”,则必须填写“指定其他”字段。如何存放这个。  什么是性能和查询的最佳表结构?   在单个表中提供15列,如果没有值则存储空值,或者在另一个表中存储症状的外键(在此策略中,如何存储“其他症状”描述列,即指定其他字段数据)。

2 个答案:

答案 0 :(得分:2)

目前尚无统一答案,您的选择可能取决于多种因素,包括外部问题,即用于支持数据库的编码框架(如果有)。做到这一点的“经典”方法:

1. Patient table:

   id (PK)
   name

2. Symptom table:

    id (PK)
    symptom

3. Patient to Symptom table:

    id (PK)
    patient_id (FK)
    symptom_id (FK)
    other_symptoms (text)

但是再一次,任何一种方法(包括这种方法)都有其优点和缺点,这不是通用解决方案。

答案 1 :(得分:1)

我肯定会排除表选项中的 15列,因为只要需要添加新的症状,并且需要 ,就应该早一点,您必须:

  • 更改表架构
  • 显示症状的代码
  • 插入/更新患者记录的代码
  • 谁知道呢

我会选择经典的many to many relationship,其表类似于:

  • patients:患者ID,姓名等
  • symptoms:症状ID,名称,描述等
  • patient_symptoms:患者ID,症状ID

最好是增加一张桌子:

  • visits:医生ID,患者ID,日期,其他症状

然后,您的patient_symptoms表可以与医生实际的visit相关:

  • patient_symptoms:visit_id,症状ID