我在django中建模数据库关系,我想有其他意见。这种关系是一种两对多的关系。例如,患者可以有两名医生:主治医师和初级医生。医生显然有很多病人。
应用程序确实需要知道哪一个是哪个;此外,存在一个患者的主治医师可以是另一个患者的主要医生的情况。最后,参加和初级通常是相同的。
起初,我正在考虑从患者台上的两张外键进入医生表。但是,我认为django不允许这样做。此外,在第二个想法,这实际上是一个很多(两个)到多个关系。
因此,如何在保持与患者相关的医生类型的同时,与django建立这种关系?也许我需要将医生类型存储在多对多关联表中?
谢谢, 皮特
答案 0 :(得分:10)
这样的事情怎么样:
class Patient(models.Model):
primary_physician = models.ForeignKey('Physician', related_name='primary_patients')
attending_physicial = models.ForeignKey('Physician', related_name='attending_patients')
这允许你有两个外键到同一个模型; Physician
模型还会包含名为primary_patients
和attending_patients
的字段。
答案 1 :(得分:1)
考虑使用多对多连接表。使用应用程序逻辑来防止每位患者超过两名医生。
Physician
Physician_ID
...
Patient
Patient_ID
...
Physician_Patient
Physician_ID int not null
Patient_ID int not null
Type ENUM ('Primary', 'Attending')
PRIMARY KEY (Physician_ID, Patient_ID)
KEY (Patient_ID)
答案 2 :(得分:0)
我同意你的结论。我会将医生类型存储在多对多链接表中。