Как реализовать две сущности с общими атрибутами в MySQL? - PullRequest
2 голосов
/ 24 октября 2011

Я разрабатываю модель базы данных кабинета врача и аптеки, и требования требуют хранить данные о клиентах и пациентах , клиент - это тот, кто покупает в аптеке Пациент, обращающийся к врачу, может быть одновременно и пациентом, и наоборот. Как справиться с этой ситуацией? Если я создам одну сущность для каждой из них, есть вероятность, что человек окажется в обеих таблицах. Какие-либо предложения?

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Если данные для клиента и пациента совпадают, у вас может быть одна таблица с личной информацией и столбец type, который может быть либо битовым, либо целым числом.В этом столбце type будет указано, предназначена ли запись для пациента или клиента.Я не вижу повторяющихся записей в случае, когда пациент также является клиентом, как большую проблему, но если вы хотите избежать этой ситуации, вам придется создать таблицу связывания.Что-то вроде:

person
(id, name, address, ...)

И

person_type( person_id, type_id)

Человек, который является одновременно клиентом и пациентом, будет иметь 2 записи в этой таблице;по одному на каждого type (клиент / пациент).

2 голосов
/ 24 октября 2011

Два метода:

  1. В одной таблице, называемой персоной таблицы, есть файлы is_customer и is_patient, которые могут иметь значение true / false

  2. Три таблицы: одна для людей, в которой хранятся все соответствующие данные (имена, адрес, номер телефона и т. Д.) С уникальным идентификатором, одна таблица для пациентов, представляющая собой просто таблицу уникальных идентификаторов и ссылки на таблица сотрудников и одна таблица для клиентов, представляющая собой таблицу уникальных идентификаторов и ссылок на таблицу сотрудников.

...