Моя база данных требует отслеживания некоторых столбцов, но не всех. Я рассмотрел несколько вариантов реализации отслеживания, например (Идеи по проектированию базы данных для записи контрольных журналов).
Однако это кажется очень расточительным, и, поскольку мне действительно нужно отслеживать только пару критических столбцов, я чувствую, что это не было бы оптимальным решением для меня.
Теперь я подумал о способе решения моей ситуации, но я не уверен, могу ли я упустить из виду недостаток дизайна при таком подходе.
User
----
ID PK INT
Username VARCHAR(MAX)
Employee
-----
ID PK INT
Name VARCHAR(MAX)
PensionScheme
-------------
ID PK INT
EmpID FK INT (References Employee)
IsActive BOOLEAN
ModifiedBy FK INT (References User)
EffectiveFrom DATETIME
Приведенная выше схема представляет собой очень упрощенный пример, но отражает суть.
По сути, Сотрудник может быть на пенсионной схеме или нет, изменения этого атрибута необходимо отслеживать. Когда должно произойти изменение этого атрибута, вставляется новая строка с отметкой времени.
Если вы хотите выяснить, участвует ли сотрудник в пенсионной программе или нет, вам нужно будет найти строку с самой последней меткой времени.
Единственный недостаток, который я сейчас вижу, заключается в том, что если вставлен сотрудник, в таблице PensionScheme нет соответствующей строки. Хотя я думаю решить эту проблему с помощью триггера INSERT, чтобы добавить строку по умолчанию.
Я действительно просто ищу мысли по поводу этого дизайна. У меня нет опыта в отслеживании изменений в базах данных.