Дизайн базы данных для ревизий?

У нас в проекте есть требование хранить все ревизии (История изменений) для сущностей в базе данных. В настоящее время у нас есть 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, .., ..)"

Есть ли другой способ сделать это?

Проблема с «Дизайн 1» заключается в том, что мы должны анализировать XML каждый раз, когда вам нужен доступ к данным. Это замедлит процесс, а также добавит некоторые ограничения, например, мы не можем добавлять объединения в поля данных ревизий.

И проблема с «Проектом 2» состоит в том, что мы должны дублировать каждое поле на всех сущностях (у нас есть около 70-80 сущностей, для которых мы хотим сохранить ревизии).

Ответы на вопрос(16)

Ваш ответ на вопрос