Рассмотрим следующую частичную модель данных открытых медицинских случаев и соответствующее страхование:
**Cases**
CaseId (PK)
PatientId (FK)
CaseNote
...
**CaseInsuranceProfiles**
CaseId (PK)(FK)
InsuranceId (PK)(FK)
InsuranceType {Primary, Secondary, Tertiary} (PK)(FK)
EffectiveDate
**Insurances**
InsuranceId (PK)
InsuranceName
InsuranceAddress
InsuranceCity
...
К сожалению, эта модель представляет проблему. Это не позволяет случаю иметь дубликаты записей для экземпляра каждого вида страхования и вида страхования. Например, если у рассматриваемого случая есть два основных страховых полиса от Страхования A (как позволено в некоторых государствах). Я уточнил модель следующим образом, чтобы нормализовать данные и предоставить уникальный идентификатор для таблицы CaseInsuranceProfiles, который не является составным ключом:
**Cases**
CaseId (PK)
PatientId (FK)
CaseNote
...
**CaseInsuranceProfiles**
InsuranceProfileId (PK)
CaseId (FK)
InsuranceId (FK)
InsuranceType {Primary, Secondary, Tertiary}
EffectiveDate
**Insurances**
InsuranceId (PK)
InsuranceName
InsuranceAddress
InsuranceCity
...
Однако эта модель представляет новую модель, а именно то, что мой суррогатный ключ (InsuranceProfileId) до сих пор не уникально идентифицирует каждую запись. Может ли кто-нибудь порекомендовать изменить модель данных, которая позволила бы мне однозначно идентифицировать каждую запись?
Примечание. Я понимаю, что могу создать таблицу, аналогичную следующей:
**CaseInsuranceProfiles**
InsuranceProfileId (PK)
CaseId (FK)
InsuranceId (FK)
PrimaryInsurance
SecondaryInsurance
TertiaryInsurance
EffectiveDate
Однако это не позволяет мне учитывать несколько первичных, вторичных или третичных страховок. Кроме того, моя цель состоит в том, чтобы определить профиль страхования для каждого случая, иными словами, я хотел бы иметь возможность использовать один ключ для отображения всех видов страхования для конкретного случая. Заранее спасибо!