Hocam merhaba; Sahada bazı projelerde uygulamalar db tasarımının üzerine inşa ediliyor. Örneğin ortak bir db üzerinde farklı farklı modüller ve uygulamalar ayağa kaldırılıyor. Bir erpyi düşünecek olursak muhasebe, edönüşüm, market gibi modüller tek db nin etrafında şekilleniyor. Ve db genelde açık olup isteyen çözüm ortakları bu dbyi kullanarak uygulamalarını geliştirebiliyor. Gözlemlediğim bu yapıda bütün kontroller triggerler üzerinden oluyor. Bazı hesaplama vs gibi operasyonlar procedureler üzerinden yapılıyor. Örneğin X uygulamasında da stok kaydedilirken aynı kontroller triggerlerde yapılıyor Y uygulamasında da. Veya kdv ye dair kanunsal bazı kontroller yine bu tirigerlar ile yapılıyor ve kayıt girecek kimse bu kontrolü aşıp illegal bir kayır giremiyor. Busines kodlarıyla yönetilbilecek operasyonlar procedureler ile hallediliyor, X uygulaması da Y uygulaması da bunu kullanıyor. 1- Db First yapılanmasını artısıyla eksisiyle irdeleyebilir misiniz? Yani hangi durumlarda Db first hangi durumlarda code first yapılanmasına gidilmeli? Yönetmek açısından bunu nasıl değerlendirsiniz? 2- Birçok kontrolü triggerlera yüklemek mi ya da business sınıflarında yapmanın yine duruma göre artıları eksileri nelerdir? 3- Db de indexler kullanılarak performans anlamında ciddi sonuçlar alınabiliyor. Birden çok tabloyu joinleyerek bir yığın veri çekiliyorsa burada indexler performana olumlu anlamda etkiliyor. 4- Orm de index kullanımı var mı? Varsa bu konuya da değinir misiniz?
Merhabalar, Bu sorularınızın tamamı üzerinde dakikalarca konuşma/tartışma gerektiren konular. Hızlıca cevaplamak gerekirse; 1) Database ve SQL konusunda daha iyi olanların en çok tercih ettiği yöntem DB First. Sql konusunda eksik EF konusunda bilginiz varsa Code First ilerlenebilir. Hali hazırda bir DB si olan bir sistemi EF e entegre edecekseniz de DB First kullanılabilir. 2) Trigger'lardan olabildiğince kaçınmak lazım. Hem DB bağımlılığı yaratırız hem de Trace edilmesi zor özellikler. Bu sebeple bu kuralları düzgün bir şekilde uygulama içerisinde yönetmek daha iyi bir seçenek olabilir. 3) Index'ler DB lerdeki en önemli konular bence. Index tipleri bile performans sonuçlarını etkileyebiliyor. O yüzden mutlaka bilgi sahibi olmak lazım Index'ler hakkında. 4) ORM'e index leri tanımlayabiliyoruz. Sql generation işlemlerinde Index lerin olduğu alanları kullanarak sorguyu çalıştırıyor oluyor. Yani birçok ORM index kullanımını destekliyor diyebilirim.