我们在项目中需要存储数据库中实体的所有修订(更改历史)。目前,我们为此设计了 2 个提案:
例如对于“员工”实体
设计一:
-- 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)"
设计二:
-- 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 个实体需要维护修订)。