Я работаю над программой, в которой вы можете регистрировать жалобы. Существует три типа жалоб. жалобы: внутренние
(ошибки сотрудников), внешние
(ошибки от другой компании) и поставщик
(ошибки, сделанные поставщиком). Они содержат разные данные, которые не могут поделиться. В настоящее время у меня есть 4 таблицы (жалоба, сотрудник, компания и поставщик). Вот визуализация таблиц:
У меня есть базовое представление о подтипах, но я не могу перевести их из ERD в реальную базу данных SQL Server или, по крайней мере, в этом сценарии. Примерно так выглядят 4 таблицы (нерелевантные атрибуты опущены):
Complaint
ComplaintId PK
Employee
EmployeeId PK
EmployeeName
Компания
CompanyId PK
CompanyName
Supplier
SupplierId PK
SupplierName
При регистрации жалобы ошибка возникает по любому из 3 типов, и все они хранят разную информацию. Как лучше всего хранить информацию в этом случае? Я подумал о том, чтобы поместить 2 дискриминатора в таблицу жалоб: Тип жалобы
и Id
, чтобы я мог указать, какую таблицу проверять и какой идентификатор мне нужен, но это не очень чисто ни эффективно.
Пожалуйста, помогите.