プロジェクトでは、エンティティのすべてのリビジョン(変更履歴)をデータベースに保存する必要があります。現在、このために設計された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個あります)。