Niteliklerin %50'sini paylaşan 50'den fazla farklı kategori. Tüm bu tabloları sql veritabanında verimli bir şekilde nasıl oluşturabilirim? [kapalı]

0

Soru

Büyük sistemde, veritabanını analiz ederken, gereksinimlerde tablo olarak temsil edilmesi gereken yaklaşık 50 farklı kategori vardır.

Her kategorinin birçok özniteliği vardır - sütunlar -, tüm bu kategoriler sütunların %50'si ile aynıdır. Örneğin, her kategorinin (kimlik, ad, tarih, eyalet, yönetici, bölüm) vardır, tüm kategoriler bu niteliklere sahiptir, ancak her kategorinin birbirinden farklı kendi nitelikleri vardır, bunlar yaklaşık 3-5 niteliktir.

Şimdi, bunları fiziksel veritabanında tablo olarak nasıl temsil edebilirim? Her kategori için bir tablo veya tablo, fazlalık ne olacak?

sql sql-server
2021-11-24 02:49:24
2

En iyi cevabı

3

Tam olarak neyi başarmaya çalıştığınıza bağlı.

Birincil endişeniz disk alanıysa, seyrek sütunları, gerekirse sütun kümeleriyle birlikte bir seçenek olarak düşünmenizi öneririm. Bu senaryoda, tüm bu varlıkları tek bir fiziksel tabloya koyabilirsiniz; zorunlu öznitelikler normal sütunlardır ve belirli öznitelikler seyrek olarak bildirilir.

Veri anormalliklerinin çoğunu ortadan kaldıracak normalleştirilmiş bir model düşünüyorsanız, tipik bir çözüm süper tip-alt tip hiyerarşisidir. Ana tablo yalnızca tüm varlıklar için zorunlu olan öznitelikleri depolar ve alt tablolar yalnızca ana tablo' tanımlayıcısını ve bu belirli kategoriye özgü öznitelikleri içerir. Tüm alt tablolar, yabancı anahtarlar aracılığıyla" süper tür " tablosuna başvurur.

Bazen, konu alanına bağlı olarak, ek "yuvalama" düzeylerine sahip daha karmaşık bir model kullanılabilir. Bunu bir sınıf devralma hiyerarşisi olarak düşünebilirsiniz-benzetme aslında çok yakındır.

Tabii ki, hem (hem de diğer) yaklaşımların güçlü ve zayıf yönleri vardır, bu nedenle konuları okumanız ve bir seçim yapmanız gerekebilir.

2021-11-24 03:16:08
-1

Bazı öznitelikler yalnızca bazı kategoriler için geçerli olduğundan, kategorileri depolamak için Varlık-Öznitelik-Değer modelini düşünebilirsiniz.

Bir veritabanında EAV modellerini temsil etmenin birden çok yolu vardır. Aşağıdaki makaleye başvurabilirsiniz: https://inviqa.com/blog/understanding-eav-data-model-and-when-use-it

Veritabanını sorguladığınızda, veri depolamanın EAV modeli yolu kendi zorluklarıyla ortaya çıkar. Bu nedenle, aynı şeyi seçmeden önce ihtiyaçlarınıza uygun olup olmayacağına bakın.

2021-11-24 03:29:20

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................