您将如何建模这种数据库关系?

2024-06-25 05:52:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用django建模一个数据库关系,我想有其他的看法。这种关系是两对多的关系。例如,一个病人可以有两个医生:主治医师和主治医师。医生显然有很多病人。

应用程序确实需要知道哪一个是哪个;此外,在某些情况下,一个病人的主治医生可能是另一个病人的主治医生。最后,主治和初选通常是一样的。

一开始,我在想两个外键从病人表进入医生表。但是,我认为django不允许这样做。另外,仔细想想,这确实是一种多(二)对多的关系。

因此,如何在保持与患者相关的医生类型的同时,与django建立这种关系的模型?也许我需要在多对多关联表中存储医生类型?

谢谢, 皮特


Tags: django模型患者数据库应用程序类型关系情况
3条回答

考虑使用多对多联接表。使用应用程序逻辑防止每个患者有两个以上的医生。在

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)

我同意你的结论。我将把医生类型存储在多对多链接表中。在

这样的怎么样:

class Patient(models.Model):
    primary_physician = models.ForeignKey('Physician', related_name='primary_patients')
    attending_physicial = models.ForeignKey('Physician', related_name='attending_patients')

这允许您有两个指向同一模型的外键;Physician模型还将有名为primary_patientsattending_patients的字段。在

相关问题 更多 >