Bir uygulama için bir veritabanı tasarlarken bazı genel en iyi uygulamaların farkındayım, peki ya yeniden tasarlamak?
Bir iç iş uygulamasını yeniden tasarlamakla görevli bir ekibim var, ancak “iç” dememe rağmen, maalesef sistemin gerçek kullanıcıları ile temastan uzak pek çok insan katmanından oluşuyorum.
Şu anki program, bazılarının normalize edilmemiş tablolarına dağılmış Oracle Formlarında, bazen birbirlerinin verilerinde küçük değişkenler barındıran birden fazla yinelenen tablolarla birlikte. Kısıtlamalar çoğu zaman kötü uygulanmış saklı prosedürler şeklindedir. Türler bile doğru saklanmış görünmüyor. Oracle'ın görmezden geldiği düşünülen, ancak SQL Server’ın İthalat / İhracat Sihirbazı’na (ve haklı olarak) uyan her türlü kötü veriyle karşılaştım. (Örneğin, iki basamaklı tamsayılar tam bir tarih saatini oluşturmaz!)
Orijinal program muhtemelen yirmi yıl öncesine dayanıyor ve orjinal geliştiricilerin hepsi o kadar uzun zaman önce emekli olmuşlar ki buradaki yaşlı insanlar bile kim olduklarını bilmiyorlardı. Sonuç olarak, gerçekten ortadan kalkacak herhangi bir temiz gereksinim de bulunmuyor - sadece mevcut uygulamanın işlevselliğini çoğaltmamız ve mevcut verilerini tutmamız gerekiyor.
Yeniden yazmanın sonucu, arka uç için MS SQL Server ile ASP.NET'te çalışan web tabanlı bir sürüm olacak.
Diğer iki geliştirici takım arkadaşım benden çok daha büyük, ikisi de işletme / MIS geçmişine sahipken, benimki de CS. Kıdemli üyenin deneyimi neredeyse yalnızca Oracle formlarıydı ve diğer üye çoğunlukla Visual Basic'te iş uygulamaları yaptı. Veri tabanı arka planım, MySQL veya SQLite'daki projeler için yeni veritabanları tasarlamakla sınırlı olmasına rağmen, çoğunlukla lisans sınıflarım için, aslında veritabanı tasarlama deneyimi olan tek kişi gibi görünüyorum.
C # dilinde, mevcut tüm verileri tarafsız bir formata okuyan, yeniden oluşturulmaya ve yeni bir veritabanına yerleştirilmiş küçük bir program yazdım. Hedef veritabanı tasarlandıktan sonra yükleme kodunu yazmayı planlıyorum, böylece veriler yeni normalize edilmiş tablolara doğru şekilde bölünebilir, yeni kısıtlamaları takip etmek için doğru sıraya eklenebilir, vb. Aynı program daha sonra tekrar çalıştırılabilir. Üretim verilerini yeni dağıtılan bitmiş yeniden tasarımına kopyalamak için. Bu, veritabanının asıl yeniden tasarlanmasını en önemli şey olarak görüyor.
Öyleyse sorumun özü: mevcut bir uygulamanın veri tabanı düzeyinde yeniden tasarım yapmak için en iyi uygulamalar nelerdir?