Yanıtlar:
İstediğin kadar gitmelisin, daha fazla değil. Tabii ki. Sorun, bunun bir sanat eseri olması ve bunun saf bir bilim olmadığı için olabilir.
Ana ürünümüz bir analiz ve raporlama sistemidir ve bu konuda oldukça az ayrıntı kaydettik. Başlangıçta, bazı çocuk kayıtları için ortak bir kimlik numarası ile birçok ortak birleşim tasarladık, ancak birkaç alanı denormalize edersek, bir LOT katılımı kesebileceğimizi ve birçok performans baş ağrısını kaldırabileceğimizi bulduk.
Ancak biliyoruz ki biz 1) biz "normalize" bir tasarım yarattık, 2) onu kullanmaya başladık, 3) onlarca masadaki yüz milyonlarca satırın ardından gerçek performansı belirledi.
Son hikaye, profil yapana kadar bizim için neyin işe yarayacağını kesin olarak bilemeyeceğimizdir. Normalleştirme fikrini sevdik, böylece daha kolay güncellenebildik, ama sonunda gerçek performans belirleyici faktördü. Bu sana tavsiyem: Profil, profil, profil.
in ('forgiven','pardoned')
;;): p
Normalleştirme, yalnızca veri modelinizi garanti edecek kadar iyi desteklediğinde bir hedeftir. Büyüme, yönetim ve sürdürülebilirliğe olanak sağlamak için bir rehber olması amaçlanmıştır. Normalleştirme konulu kitabın veya yazanın veritabanınızı veya uygulamanızı oluşturamayacağını veya sürdürmeyeceğini unutmayın.
"Çok fazla normalleşme" konusunda iyi bir okuma burada.
Ve evet, çok fazla normalleşmenin performansa etkisi olabilir. Bu durum, durum gösterge tabloları gibi şeyleri ayrı bir masaya çekildiklerinde toplamak için daha derin bir tablada olacaktır. Bazıları bunun genellikle güncelleme hızında (durum metninin "İyi" den "İYİ" veya benzeri bir şeyle değiştirilmesi) veya bakımın yapılmaması olduğunu söyleyecektir.
Chris Date'nin daha yeni kitaplarından birkaçında bulunan aşağıdaki ekleri okumanızı öneririm :
Normalleşme her derde deva olmaktan çok uzaktır, çünkü amaçlarının ne olduğunu ve onlara karşı ne kadar iyi ölçtüğünü göz önünde bulundurarak kolayca görebiliriz ...
Bu bölümdeki yorumlarımın herhangi bir saldırı olarak görülmesini istemediğimi açıkça belirtmeliyim. Tamamen normalleştirilmiş bir tasarımdan daha azının kesinlikle kontrendike olduğuna inanıyorum.
Açıkça eklenmiş denormalizasyonlara, eklenen toplam değerlere veya bir detay tablosuna kopyalanmış bir ana tablodaki bazı alanlara bakmanın eşit derecede önemli olduğunu düşünüyorum.
Argüman çoğunlukla bazı performans argümanlarıdır.
Bunu zorlarsanız, bu alanlar tetikleyiciler tarafından güncellenir ve tutarlı olmaları için veritabanına bağlıdır.
Ben jcolebrand ile tamamen katılıyorum. Uygulamanız için model tasarlarken, yapabileceğiniz her şeyi normalleştirmelisiniz. Ancak, özellikle sık yapılanlar, modeliniz üzerine inşa edilmiş sorguları profillemelisiniz.
Kendi tecrübelerim: ulaşmak için iki birleşme alan özellikler (üç masa bir araya geldi demektir) çoğunlukla bir performans domuzu olacaktır. Ve işleri en kötü hale getirmek için on-line işlemlerde kullanılır. Özelliği denormalize ediyorum, bu yüzden sadece bir üyeye ihtiyacım var ve programlayıcıdan sorgu için uygulamalarını ayarlayıp niteliği güncellemesini istedi. Şimdi daha iyi çalışıyor ...
Başka bir deyişle, normalleştirmeyi performansla dengelemeniz gerekir.