เรามีข้อกำหนดในโครงการที่จะจัดเก็บการแก้ไขทั้งหมด (ประวัติการเปลี่ยนแปลง) สำหรับเอนทิตีในฐานข้อมูล ขณะนี้เรามี 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 ทุกครั้งเมื่อคุณต้องการเข้าถึงข้อมูล สิ่งนี้จะทำให้กระบวนการช้าลงและยังเพิ่มข้อ จำกัด บางอย่างเช่นเราไม่สามารถเพิ่มการรวมในช่องข้อมูลการแก้ไขได้
และปัญหาของ "Design 2" คือเราต้องทำซ้ำแต่ละฟิลด์ในทุกเอนทิตี (เรามีเอนทิตีประมาณ 70-80 เอนทิตีที่เราต้องการรักษาการแก้ไข)