Как бы вы смоделировали эти отношения с базой данных? - PullRequest
2 голосов
/ 22 июля 2009

Я моделирую отношения с базой данных в django, и я хотел бы иметь другие мнения. Отношения типа «два ко многим». Например, пациент может иметь двух врачей: лечащего и основного. У врача явно много пациентов.

Приложение должно знать, кто из них какой; кроме того, существуют случаи, когда лечащий врач одного пациента может быть основным для другого. Наконец, как посещение, так и начальное обучение часто совпадают.

Сначала я думал о двух внешних ключах от стола пациента в стол врача. Тем не менее, я думаю, что Джанго не допускает этого. Кроме того, если подумать, это действительно отношение «многие (два) ко многим».

Следовательно, как я могу смоделировать эти отношения с Джанго, сохраняя при этом тип врача в отношении пациента? Возможно, мне нужно будет сохранить тип врача в таблице ассоциации «многие ко многим»?

Спасибо, Пит

Ответы [ 3 ]

10 голосов
/ 22 июля 2009

Как насчет этого:

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 голос
/ 22 июля 2009

Рассмотрите возможность использования таблицы соединения «многие ко многим». Используйте логику приложения, чтобы предотвратить более двух врачей на пациента.

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)
0 голосов
/ 22 июля 2009

Я согласен с вашим выводом. Я бы сохранил тип врача в таблице связей «многие ко многим».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...