Farklı otomobil tipleri, veri modellemede tekrar tekrar yüzeylenen genel bir sorun örneğidir. ER modellemesinde "genelleme / uzmanlık" ve nesne modellemesinde "üst sınıf / alt sınıf" olarak adlandırılır.
Bir nesne modelleyici, problemi kolayca çözmek için nesne modelinde yerleşik miras özelliklerini kullanır. Alt sınıflar sadece üst sınıfı genişletir.
İlişkisel modelleyici bir sorunla karşı karşıyadır. mirastan elde edilecek faydaları taklit edecek şekilde tabloları nasıl tasarlayabilirim?
En basit teknik tek masa mirası olarak adlandırılır . Tüm araba tipleri hakkındaki veriler, araçlar için tek bir tablo halinde gruplandırılmıştır. Tek bir türdeki bütün arabaları bir araya toplayan car_type bir sütun var. Hiçbir araba birden fazla tipe ait olamaz. Bir sütunun, örneğin elektrikli otomobillerle ilgisi yoksa, elektrikli otomobillerle ilgili satırlarda NULL bırakılacaktır .
Bu basit çözüm, küçük ve basit durumlar için iyi sonuç verir. Çok sayıda NULL varlığı, ek yükü depolamaya küçük bir miktar ve ek yükü almak için biraz ekler. Boolean sınamaları, boş sütunlarda yapılırsa, geliştiricinin SQL üç değerli mantığını öğrenmesi gerekebilir . Bu başlangıçta şaşırtıcı olabilir, ama buna alışır.
Sınıf tablosu mirası adı verilen başka bir teknik var . Bu tasarımda, hepsi için kombine bir masaya ek olarak, gas_car, electric_car ve hybrid_car için ayrı masalar var. Belirli bir araba türüyle ilgili tüm verileri istediğinizde, uygun masaya sahip araç masasına katılırsınız. Bu tasarımda daha az NULL var, ama daha çok katılıyorsunuz. Bu teknik daha büyük ve daha karmaşık durumlarda daha iyi çalışır.
Paylaşılan birincil anahtar adı verilen üçüncü bir teknik var. Bu teknik, genellikle sınıf tablosu mirası ile birlikte kullanılır. Alt sınıflar için özel tablolarda, birincil anahtar olarak, araba tablasındaki karşılık gelen girişin ana anahtarının bir kopyası bulunur. Bu kimlik sütununun hem birincil anahtar hem de yabancı anahtar olduğu bildirilebilir.
Bu, yeni araba ekleneceği zaman fazladan bir programlama gerektiriyor, ancak birleşimleri basit, kolay ve hızlı hale getiriyor.
Süper sınıflar ve alt sınıflar gerçek dünyada her zaman olur. Korkma Ancak, ilk tasarımınızı performans açısından test edin. İlk girişiminiz basit ve sağlamsa, hızlandırmak için ince ayar yapabileceksiniz.