Şu anda, tamamen işlevsel olan mevcut bir veritabanı ve uygulamamız var. Bu noktada mimariyi değiştirme yeteneğim yok. Bugün, veritabanındaki her tablonun varsayılan değeri '0' olan bir "IsDeleted" NOT NULL BIT alanı vardır. Uygulama verileri "sildiğinde", IsDeleted bayrağını 1'e günceller.
Anlamakta sorun ne tabloların her dizinlerin nasıl yapılandırılması gerektiğidir. Şu anda, her sorgu / birleştirme / vb her zaman IsDeleted denetimi uygular. Geliştiricilerimizin izlemesi gereken bir standart. Olduğu söyleniyor, tüm kümelenmiş birincil anahtar dizinleri tabloların her biri birincil anahtar VE IsDeleted BIT alanı içerecek şekilde değiştirilmesi gerekip gerekmediğini belirlemeye çalışıyorum. Ayrıca, HER sorgu / join / etc beri. IsDeleted denetimini uygulamalıdır, HER TEK dizin (kümelenmemiş) dizinin ilk alanı olarak IsDeleted alanını içermesi uygun bir varsayım mıdır?
Bir diğer sorum da filtrelenmiş dizinler. Dizinlerin boyutunu azaltmak için "WHERE IsDeleted = 0" gibi dizinler üzerinde filtreler koymak anlıyorum. Ancak, her birleştirme / sorgu IsDeleted denetimini uygulamak zorunda kalacağından, filtrelenmiş dizinin kullanılmasını önler (IsDeleted sütunu birleştirme / sorguda kullanıldığından)?
Unutmayın, IsDeleted yaklaşımını değiştirme yeteneğim yok.
IsDeleted
Sütunun yaygınlığı ve önemi göz önüne alındığında, fiziksel depolamaya bakılmaksızın, verileri iki görünüm yoluyla (isteğe bağlı olarak farklı şemalarda) ortaya çıkarmak, hem parametrelendirme sorununu çözmek hem de olmaması gereken verilere erişirken hata yapmak muhtemelen mantıklı olacaktır. daha az muhtemel. Temel verilere erişmek yalnızca silinmiş ve silinmemiş verilerin bir şekilde birleştirilmesi gereken nadir durumlarda ve satırların gerçekten "silinmiş" olarak değiştirilmesi gerektiğinde geçerlidir.