เพื่อนร่วมงานบางคนกับฉันได้ถกเถียงกันถึงวิธีที่ดีที่สุดในการเก็บข้อมูลทางประวัติศาสตร์ ปัจจุบันสำหรับบางระบบฉันใช้ตารางแยกเพื่อเก็บข้อมูลประวัติและฉันเก็บตารางดั้งเดิมสำหรับบันทึกปัจจุบันที่ใช้งานอยู่ สมมุติว่าฉันมีตาราง FOO ภายใต้ระบบของฉันระเบียนที่ใช้งานอยู่ทั้งหมดจะอยู่ใน FOO และระเบียนที่ผ่านมาทั้งหมดจะอยู่ใน FOO_Hist ผู้ใช้สามารถอัปเดตฟิลด์ต่าง ๆ มากมายใน FOO ได้ดังนั้นฉันต้องการรักษาบัญชีที่ถูกต้องของทุกสิ่งที่อัปเดต FOO_Hist เก็บข้อมูลในฟิลด์เดียวกับ FOO ยกเว้นการเพิ่ม HIST_ID โดยอัตโนมัติ เวลา FOO มีการปรับปรุงทุกฉันดำเนินการคำสั่งแทรกเข้าไปใน FOO_Hist insert into FOO_HIST select * from FOO where id = @id
คล้ายกับ:
เพื่อนร่วมงานของฉันบอกว่านี่คือการออกแบบที่ไม่ดีเพราะฉันไม่ควรมีสำเนาที่แน่นอนของตารางด้วยเหตุผลทางประวัติศาสตร์และควรแทรกระเบียนอื่นลงในตารางที่ใช้งานอยู่ด้วยธงระบุว่ามันมีวัตถุประสงค์เพื่อประวัติศาสตร์
มีมาตรฐานในการจัดการกับการจัดเก็บข้อมูลประวัติ? สำหรับฉันดูเหมือนว่าฉันไม่ต้องการที่จะทำให้ยุ่งเหยิงบันทึกที่ใช้งานของฉันกับบันทึกทางประวัติศาสตร์ทั้งหมดของฉันในตารางเดียวกันโดยพิจารณาว่าอาจมีมากกว่าหนึ่งล้านรายการ (ฉันกำลังคิดในระยะยาว)
คุณหรือ บริษัท ของคุณจัดการกับสิ่งนี้อย่างไร
ฉันใช้ MS SQL Server 2008 แต่ฉันต้องการที่จะเก็บคำตอบทั่วไปและโดยพลการของ DBMS ใด ๆ