У нас есть требование в проекте хранить все версии (История изменений) для объектов в базе данных. В настоящее время у нас есть 2 разработанных для этого предложения:
например. для организации "Сотрудник"
Дизайн 1:
-- Holds Employee Entity
"Employees (EmployeeId, FirstName, LastName, DepartmentId, .., ..)"
-- Holds the Employee Revisions in Xml. The RevisionXML will contain
-- all data of that particular EmployeeId
"EmployeeHistories (EmployeeId, DateModified, RevisionXML)"
Дизайн 2:
-- Holds Employee Entity
"Employees (EmployeeId, FirstName, LastName, DepartmentId, .., ..)"
-- In this approach we have basically duplicated all the fields on Employees
-- in the EmployeeHistories and storing the revision data.
"EmployeeHistories (EmployeeId, RevisionId, DateModified, FirstName,
LastName, DepartmentId, .., ..)"
Есть ли другой способ сделать это?
Проблема с "Design 1" заключается в том, что мы должны анализировать XML каждый раз, когда вам нужно получить доступ к данным. Это замедлит процесс и добавит некоторые ограничения, например, мы не можем добавлять объединения в поля данных ревизий.
И проблема с "Design 2" заключается в том, что мы должны дублировать каждое поле на всех объектах (у нас есть около 70-80 объектов, для которых мы хотим поддерживать ревизии).