Microsoft teknolojisine dayanan orta-küçük ölçekli bir şirket için veritabanı geliştirici olarak yeni bir işe başladım. En iyi uygulamalar, tasarım modelleri, testler ve proje yönetimi ile ilgili olarak okulda öğretilenlerden ne kadar uygulama saptığının farkına vardım.
Beni en çok rahatsız eden şey, ana veritabanı geliştiricimizin (bundan böyle "John" olarak anılacaktır) model şemasını veritabanında nasıl tuttuğudur! Bunu 3 "sihirli" masaya koyarak yaparız; biri veritabanı şemaları için, biri tablolar için ve biri sütunlar için.
" Tablolar " tablosuna bir kayıt eklemek , gerçek, karşılık gelen tablo oluşturur (bir veritabanı tetikleyicisi aracılığıyla). " Satırlar " tablosuna bir satır eklendiğinde, başvurulan tablo bu satırla güncellenir. Bunlar sırayla, ev yapımı C # programı tarafından ön uç geliştiriciler tarafından kontrolörler ve dışa doğru kullanılan C # modelleri oluşturmak için okunur.
Bunun dışında, çoğu geliştirme ASP.NET MVC çerçevesine göre yapılır .
Bu yaklaşımla birkaç kusur görüyorum:
- ORM'yi sürdürmesi için ona ihtiyacımız var ve nadiren bunu yapmak için zamanı var (iş güvenliği iyidir!)
- "Tablolar" ve "Satırlar" tablosunun tetikleyicileri hatalı. Tablo güncellemelerini veya Check-kısıtlamaları veya daha fazla "gelişmiş" özelliği desteklemezler. Onları kesinlikle geliştirebilsek de, bu yolun gidip gitmediğinden henüz emin değilim.
- Programlı mantığın veritabanında tutulması garip ve kısıtlayıcıdır (modellerini C # ile genişletmek mümkün olsa da).
- Onun C # Model-jeneratör (aralarında olduğum) 3 kişiden biri tarafından manuel olarak çalıştırılması gerekir ve henüz otomatik bir inşa sürecine dahil edilecek kadar olgun değildir.
Birkaç kişi Entity Framework gibi gerçek ve test edilmiş bir üründe aşamalandırmayı önerdi , ancak iş mantığını kod katmanında tutmanın yalnızca küçük ölçekli uygulamalar ve yeni başlayanlar için önyükleme projeleri için uygun olduğunu iddia ederek bunu reddetti.
Bu yazı, tartışmalı bir tartışma gibi görünebilecek bir şeye yöneliyor, ancak niyetim bu değil. Sadece mimari yaklaşımımızla ilgili biraz açıklama yapmak istiyorum.
Alan modellerinin veritabanında tutulması, büyümekte olan bir şirket için sürdürülebilir bir çözüm olabilir mi?