【发布时间】:2011-02-12 22:09:10
【问题描述】:
Given:一个病人有很多医生,医生有多个病人。
以下两种模式有什么区别?
- 选项 1:关联表
- 患者[id, data1]
- 医生[id, data2]
- Patient_Doctor[patient_id, doctor_id]
- 选项 2:单个外键
- 患者[id, data1, doctor_id]
- 医生[id, data2]
我唯一能想到的是选项 2 要求您多次复制 data1,如果 data1 很大,性能会受到影响。对吗?
【问题讨论】:
-
如果您认为选项 2 中的数据重复是可以接受的,那么为什么不直接使用选项 3:Patient_Doctor[patient_id, doctor_id, data1, data2]?
-
另外,您的问题标题不准确。您的 2 个选项不是关联表与单个外键。在这两种情况下,您都有一个关联表(即其键由 2 个不同实体的键组成的表)。唯一的区别是,在选项 2 中,您没有用于 Patient 实体的独立表。
标签: database-design