Her tabloya bir veri sürümü veya tarih özelliği eklemek zorunda olduğum bir proje üzerinde çalışıyorum. Temel olarak, veritabanındaki her ekleme veya değişikliği takip etmeliyiz, böylece her tablodaki verilerin önceki sürümlerine geri dönmesi veya görüntülenmesi kolaydır.Veritabanı tablosu için bir sürüm/tarih sistemi ekleme
Proje yöneticimin bunu tasarlama biçiminin yapılması, her tabloya birkaç yeni kolonun eklenmesidir. Ana özellik "version" adlı bir kolonudur. Bir güncelleme yapıldığında, hiçbir şey gerçekten güncellenmez, eski satır kalır ancak tabloya "sürüm" için artırılmış bir değerle yeni bir satır eklenir.
Geçerli verileri göstermek için, yalnızca her türdeki en yüksek sürüm numaralı satırları gösteren bir görünüm kullanıyoruz.
Bu, farklı sürümler arasında ileri ve geri gitme kadar mükemmel çalışırken, bu yaklaşımla ilgili bir sorunla karşılaştım. Tablolar arasında var olan herhangi bir ilişki için, yabancı anahtarları tanımlamamız gerekir ve yabancı anahtarlar yalnızca diğer tablodaki benzersiz alanları referans alabilir. Şimdi aynı satırın birkaç versiyonunu tutuyoruz (uygulama ile ilgili olarak aynı veri parçasıyla aynı 'Id' ile), artık başka bir tablonun 'Id' değerini yabancı bir anahtar olarak kullanamayız. bir masa.
Her satır için benzersiz bir birincil anahtar alanı kullanıyoruz, ancak birkaç satır aynı şeylerin temel olarak farklı sürümleri olduğundan, bir tanımlayıcı olarak yararsızdır. Her tür girişin en son versiyonunu manuel olarak takip edebilir ve her zaman bir şey değiştiğinde karşılık gelen yabancı anahtar ilişkilerini güncelleyebiliriz, fakat bu çok işe yaramış gibi gözüküyor ve her zaman işe yarayacağından emin değilim (örneğin önceki versiyona geri dönme) Bir giriş başka bir tablodaki başka bir girdinin eski ve kullanılamaz bir sürümüne başvuruda bulunulmasına neden olabilir.)
Veritabanı güncelleştirmelerinin geçmişini tutmanın başka yolları olduğunu biliyorum (örneğin, farklı bir tarih tablosunu kullanarak her bir tablo), ancak bu projede bu yaklaşıma bağlı kaldım. Eksik olduğum tablolar arasındaki ilişkilerin daha açık bir yolu var mı?
Not: MS SQL Server 2008 R2 kullanıyorum.
Teşekkürler, ama bu gerçekten sürüm oluşturma verilerinin tamamen farklı bir yoludur. Bu makalede kullanılan şema, ayrı bir revizyon tablosu kullanmaktadır. Konuştuğum yol, her şeyi aynı tabloda tutmaktır. Her halükarda, farklı bir versiyon versiyonuna yerleştik (makaleye çok benzer). – MAK