Şema tasarımı ve ORM
Herhangi bir veritabanında genel olarak 2 tür tablo bulunur — boyutlar ve gerçekler:
- Boyutlar konfigürasyon tablolarıdır. Bu tablolar sık sık değiştirilmez ve genellikle tek bir geçerli anlık görüntü değeridir (muhtemelen bazı geçmiş değişiklikleriyle birlikte - aşağıda ayrıntıları verilmiştir). En yaygın işlemler, tabloda yapılan düzenlemelerdir. Bunlar Config veya Masters olarak da düşünülebilir.
- Gerçekler, zamanla neredeyse doğrusal olarak artan tablolardır. Tipik olarak bu varlıklar, zamanla düzenli olarak oluşturulur, oluşturulan gerçeklere yapılan güncellemeler yaygın değildir ve genellikle daha fazla bağlam için Boyutlara atıfta bulunur.
Veritabanı şemasını tasarlarken, aşağıdaki yönergelerden bazıları bunun doğru şekilde yapılmasına yardımcı olur.
Önce normal
Veritabanının SQL veya NoSQL olmasına bakılmaksızın, Entities / Objects ve dolayısıyla tabloları bir kez normalleştirilmiş bir şema perspektifinden düşünmekte fayda var. Normalleştirilmiş şema varlıklar, ilişkiler ve alanlar hakkında netlik sağlar. Denormalizasyon veya bundan NoSQL'e dönüştürme basit olabilir ve bilinçli bir tasarım olabilir.
Gerçek dünyadaki varlıkları yansıtın
Kullanım durumları/raporları net olmasa bile, şema varlıkları gerçek dünyadaki kullanım durumunu yansıtmalıdır. Böyle bir şema genellikle sağlamdır.
Aşağıdakilerden herhangi biri genellikle farklı varlıkları ve dolayısıyla tabloları tanımlama ve oluşturma durumlarıdır:
- Birbirinden bağımsız ve potansiyel olarak herhangi bir bağlantı olmaksızın var olabilen mantıksal olarak ayrı varlıklar — örneğin veri kümesi ve istasyon
- Birbirinizle çoktan çoğa veya birden çoğa ilişkiniz olsun — örneğin bir e-ticaret şirketi, siparişler ve müşteriler için.
Sorgularda, aramada veya sıralamada kullanılan bir alan varsa, bunun için varsayılan olarak dizinler ekleyin. Basit dizinler, maksimum fayda sağladığından, bu alanlar için varsayılan olarak açık olmalıdır. Dizin eklememek, varsayılan durum değil, bilinçli bir seçim olmalıdır.
Doğru alan türlerini kullanın
- Sabit bir seçenek değerleri kümesine sahip alanlar için numaralandırma ve dize türleri: Numaralandırmalar bayt olarak uygulanır, bu nedenle daha az yer kaplar (örn. 1–4 bayt uzun bayt/uzun/int ve 128 bayt dize), dizinlerde daha hızlı / daha hızlıdır & aramalar. Büyük masalar için alan ve performans gereksinimleri toplanır. Numaralandırmaları varsayılan olarak kullanın.
- Birincil anahtar (ID) türü: Performans ve depolama açısından — her zaman sabit boyutlu bir anahtar kullanılması önerilir — yani tamsayılar veya UUID'ler.
- Ortak tablo alanları: Tüm ORM varlıklarında değişebilen bazı alanlar önerilir — örneğin, creator_at, update_at, creator_by, update_by. Ek olarak, sıklıkla yabancı anahtar bağlantılarına sahip olabilen ve nadiren silinen varlıklar için geçici silmelerin kullanılması önerilir.
Drishti'nin sorgusu, birden fazla birleştirme içeren karmaşık olabilir. Veritabanları, bellek içi birleştirmeler ve hesaplamalar için optimize edilmiştir. Mümkün olduğunda, bu birleştirmeleri veya hesaplamaları veritabanında çalıştırın - ORM katmanına eklemeler, uygun sorgu veya şema yeniden tasarımı yoluyla. Temel bir kural olarak, uygulama kodundaki büyük sonuç birleştirmelerine yalnızca veritabanının bunu bellek içinde yapamadığı durumlarda bakılmalıdır - örneğin, veritabanları arası birleştirmeler için.
Geçmiş tabloları ne zaman eklenir?
Herhangi bir işleme dayalı sistem, anahtar varlıklar için tüm değişikliklerin temel olarak günlüğe kaydedilmesine ihtiyaç duyar. API'ler aracılığıyla yapılandırıldığından/değiştirildiğinden, bu özellikle Boyut tabloları için geçerlidir.
Bakımlarının 2 yolu vardır:
- Nitelik değişikliği için genel bir soyutlama sürdürün; burada bu değişiklik geçmişindeki her satır varlık tipini, niteliği, varlık kimliğini, eski değeri ve yeni değeri gösterir. Avantaj: Varlık başına yeni bir tablo gerektirmez.
- Değerdeki her değişiklik için varlık bazında bir geçmiş tablosu tutun. Avantaj: Çoklu alan değişikliklerini atomik işlemler olarak yakalayın ve müşteriye olduğu gibi gösterin. Böylece, kullanıcı tarafından ön uçta veya başka bir şekilde yapılan bir işlem kavramı korunur.

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































