我们在project中有一个要求,即在数据库中存储实体的所有修订(更改历史).目前,我们为此设计了两个方案:
e、 g.对于"员工"实体
Design 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)"
Design 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个实体,我们希望对其进行修订).