Я работаю над созданием бизнес-приложения для своей компании и пытаюсь выбрать наиболее подходящий дизайн базы данных для конкретной ситуации. Допустим, у меня есть следующие объекты:
утверждение
- Я бы
- Положение дел
- ...
ApprovalComment
- Я бы
- ApprovalId
- Комментарий
порядок
- Я бы
- ...
Выставленный счет
- Я бы
- ...
Очевидно, что может быть несколько типов утверждений и несколько объектов, которые требуют утверждений. Что было бы наиболее подходящим из следующих вариантов для разработки таблиц:
ОПЦИЯ 1
Есть одна таблица утверждений с нулевыми внешними ключами:
Сертификаты
- Идентификатор ПК
- Положение дел
- OrderId FK NULL
- InvoiceId FK NULL
ApprovalComments
- Идентификатор ПК
- ApprovalId FK
- Комментарий
В этом случае мне придется добавить столбец для каждого объекта, который нуждается в утверждении
ВАРИАНТ 2
Имейте родительскую таблицу Утверждений с общими полями и дочернюю таблицу для каждого объекта, который нуждается в утверждении:
Сертификаты
- Идентификатор ПК
- Положение дел
ApprovalComments
- Идентификатор ПК
- ApprovalId FK
- Комментарий
OrderApprovals
- ApprovalId PK FK
- OrderId FK
InvoiceApprovals
- ApprovalId PK FK
- InvoiceId FK
ВАРИАНТ 3
Есть таблица утверждений для каждого объекта:
OrderApprovals
- Идентификатор ПК
- OrderId FK
- Положение дел
OrderApprovalComments
- Идентификатор ПК
- OrderApprovalId FK
- Комментарий
InvoiceApprovals
- Идентификатор ПК
- InvoiceId FK
- Положение дел
InvoiceApprovalComments
- Идентификатор ПК
- InvoiceApprovalId FK
- Комментарий
Я знаю, что это все правильные решения, но я не могу решить, какой из них будет лучшим для добавления различных типов разрешений в будущем. Какие-нибудь мысли?