Beberapa rekan kerja dan saya berdebat tentang cara terbaik untuk menyimpan data historis. Saat ini, untuk beberapa sistem, saya menggunakan tabel terpisah untuk menyimpan data historis, dan saya menyimpan tabel asli untuk catatan aktif saat ini. Jadi, katakanlah saya punya meja FOO. Di bawah sistem saya, semua catatan aktif akan masuk FOO, dan semua catatan historis akan masuk FOO_Hist. Banyak bidang berbeda di FOO dapat diperbarui oleh pengguna, jadi saya ingin menyimpan akun yang akurat dari semua yang diperbarui. FOO_Hist memiliki bidang yang sama persis dengan FOO dengan pengecualian HIST_ID yang bertambah otomatis. Setiap kali FOO diperbarui, saya melakukan pernyataan menyisipkan ke FOO_Hist mirip dengan:insert into FOO_HIST select * from FOO where id = @id
.
Rekan kerja saya mengatakan bahwa ini adalah desain yang buruk karena saya tidak boleh memiliki salinan tabel yang tepat karena alasan historis dan harus memasukkan catatan lain ke tabel aktif dengan bendera yang menunjukkan bahwa itu untuk tujuan historis.
Apakah ada standar untuk menangani penyimpanan data historis? Tampaknya bagi saya bahwa saya tidak ingin mengacaukan catatan aktif saya dengan semua catatan sejarah saya dalam tabel yang sama mengingat mungkin ada lebih dari satu juta catatan (saya berpikir jangka panjang).
Bagaimana Anda atau perusahaan Anda menangani ini?
Saya menggunakan MS SQL Server 2008, tetapi saya ingin tetap menyimpan jawaban generik dan sembarang dari DBMS mana pun.