Как мне применить подтипы в базе данных SQL Server?

Я работаю над программой, в которой вы можете регистрировать жалобы. Существует три типа жалоб. жалобы: внутренние (ошибки сотрудников), внешние (ошибки от другой компании) и поставщик (ошибки, сделанные поставщиком). Они содержат разные данные, которые не могут поделиться. В настоящее время у меня есть 4 таблицы (жалоба, сотрудник, компания и поставщик). Вот визуализация таблиц:

У меня есть базовое представление о подтипах, но я не могу перевести их из ERD в реальную базу данных SQL Server или, по крайней мере, в этом сценарии. Примерно так выглядят 4 таблицы (нерелевантные атрибуты опущены):

Complaint
ComplaintId PK

Employee
EmployeeId PK
EmployeeName

Компания
CompanyId PK
CompanyName

Supplier
SupplierId PK
SupplierName

При регистрации жалобы ошибка возникает по любому из 3 типов, и все они хранят разную информацию. Как лучше всего хранить информацию в этом случае? Я подумал о том, чтобы поместить 2 дискриминатора в таблицу жалоб: Тип жалобы и Id , чтобы я мог указать, какую таблицу проверять и какой идентификатор мне нужен, но это не очень чисто ни эффективно.

Пожалуйста, помогите.

11
задан Fusyion 8 March 2011 в 11:32
поделиться