veritabanı tasarımında sonradan pişman olduğum kararlar
Kayıtları gerçekten silmek. Kullanıcı bir kaydı sildiğinde satırı siliyorduk. Sonra iki sorun çıktı: yanlışlıkla silinen veriyi geri getiremiyorduk ve raporlarda geçmiş tutarlılığı bozuluyordu.
Şimdi yumuşak silme kullanıyoruz, silinme tarihi işaretleniyor. Ama bunu sonradan eklemek bütün sorguları gözden geçirmeyi gerektirdi.
Tarih alanlarını zaman dilimsiz saklamak. Sunucu bir dilimde, kullanıcı başka dilimde. Raporlar tutmayınca sebebi bulmak günler aldı. Baştan zaman dilimi bilgisiyle saklamak gerekiyordu.
Para alanlarını ondalıklı sayı olarak tutmak. Yuvarlama hataları birikiyor. Tam sayı olarak en küçük birimde saklamak veya ondalık tip kullanmak gerekiyordu.
Durum alanlarını serbest metin yapmak. Sipariş durumu alanına metin yazılıyordu ve zamanla on farklı yazım oluştu. Tanımlı bir küme olmalıydı.
Her şeye otomatik artan kimlik vermek. Genelde sorun değil ama dışarıya açtığınız kimliklerde sıralı olması, kayıt sayınızı ve büyüme hızınızı dışarıya sızdırıyor.
Denetim izi tutmamak. Bir kaydın kim tarafından ne zaman değiştirildiği bilgisi sonradan çok gerekli oldu. Baştan koymak kolaydı, sonradan eklemek zor.
Aşırı normalleştirme. Teoride doğru ama her rapor için sekiz tablo birleştirmek gerekiyordu. Bazı alanları bilinçli tekrarlamak performansı ciddi rahatlattı.
En çok işe yarayan alışkanlık: her tabloya oluşturulma ve güncellenme zamanı eklemek. Maliyeti sıfır, faydası çok.

@selenca