2010-11-28 3 views
1

Просто после некоторого совета относительно этой базы данных.Self Referential Entity - MANY TO MANY

Итак, у меня есть две таблицы в базе данных.

Таблица 1: Пациенты Таблицы 2: Истцы

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

Пациенты и заявители имеют удостоверения личности, которые являются иностранными ключами в других таблицах, таких как счета-фактуры, квитанции и т. д.

У одного пациента может быть несколько заявителей (более одного лица могут заплатить от его имени), у каждого заявителя может быть несколько пациентов.

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

Мое мышление состоит в том, чтобы объединить две таблицы в одну и просто назвать ее учетными записями и иметь поле ClaimantType, чтобы определить тип учетной записи, будь то частный, здравоохранение, бизнес или правительство.

Каковы потенциальные практические недостатки, которые необходимо учитывать при этих изменениях? Помимо изменения других связанных таблиц в базе данных?

РЕДАКТИРОВАТЬ: Только для того, чтобы прояснить ситуацию. Уже существует соединительная таблица PatientClaimants, которая в основном просто сопоставляет пациентов с заявителями. Благодаря!

ответ

0

Вы можете либо (a) положить в таблицу пересечений, которая связывает идентификаторы пациентов с идентификаторами заявителя, либо (b), как вы обсуждали, объединить их вместе, но если у вас уже есть данные, это может быть проблематично.

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

+0

В качестве побочного примечания - если вы перешли на общую таблицу демографических данных, вы всегда можете создать пару представлений, чтобы представить свои данные таким образом, чтобы ваш устаревший код мог работать (сделанный этот mroe чем один раз при рефакторинге приложения) – 2010-11-28 22:45:26

+0

Привет, Боб, Вы можете подробно рассказать о демографической таблице? Как я могу ссылаться на эти две таблицы? – Rillanon 2010-11-28 22:55:10

2

Слияние эти две таблицы, я считаю, неточно.

Пациент всегда человек. Таким образом, это не может быть бизнес или организация.

Я считаю, что здесь у вас есть:

Address 
======= 
...... 

Person 
======= 
AddressId (FK) 

BusinessEntity 
============== 
AddressId (FK) 

Patient 
======= 
PersonId (FK) 

Claimant 
======== 
PersonId (FK) 
BusinessEntityId (FK) 

Здесь PersonId или BusinessID один из них не может быть пустым.