Нормализация базы данных, как нормализовать утверждения / статус - PullRequest
0 голосов
/ 20 мая 2018

Я учусь нормализации и получил некоторую путаницу.Я работаю над столом.Таблица запросов.

  • requesttid
  • количество
  • requestby
  • datedate
  • Approver1
  • Approver1_Additionalinfo
  • утверждение1_дата утверждено
  • утверждение1_статус (отклонено / утверждено)
  • утверждение2
  • утверждение2_дополнительная информация (относительно запроса)
  • утверждение2_дата утверждено
  • утверждение2_статус (отклонено / одобрено)

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

Имя таблицы: Approval1

  1. ApprovalID
  2. RequestID
  3. ApproverID
  4. DateApproved
  5. AdditionalInfo (тип int)
  6. Статус (отклонен / утвержден)

Название таблицы: Approval2

  1. ApprovalID
  2. RequestID
  3. ApproverID
  4. DateApproved
  5. AdditionalInfo (тип nvarchar)
  6. Статус (отказано /утверждено)

На основе этой схемы информация о запросе будет представлена ​​в 3 таблицах, и для запроса потребуется больше соединений.Это может повлиять на производительность.

Каков наилучший подход к этому?

Надеюсь, кто-то просветит меня в этом.Спасибо

1 Ответ

0 голосов
/ 20 мая 2018

1) Избавьтесь от Approver_1 и т. Д. И перенесите это в отдельную таблицу.Это нормализация 101.

2) Используйте временные таблицы SQL Server для ведения истории изменений, если вам нужна только копия значений.Если вам нужна вещь типа рабочего процесса, то вам может понадобиться новая таблица, но трудно сказать без полных требований.

...