2016-04-11 12 views
0

Bu soru için kabul edilen cevabı süper yararlıdır: How can you represent inheritance in a database?SQL'de miras. Tablo Tür Türü Kalıtımında nasıl bir seçim tablosu oluşturulur?

Gerçekten o Tip Kalıtım Başına Tablo çağıran bu çözüm gibi

: Ancak

CREATE TABLE policies (
    policy_id   int, 
    date_issued  datetime, 

    -- // other common attributes ... 
); 

CREATE TABLE policy_motor (
    policy_id   int, 
    vehicle_reg_no varchar(20), 

    -- // other attributes specific to motor insurance ... 

    FOREIGN KEY (policy_id) REFERENCES policies (policy_id) 
); 

CREATE TABLE policy_property (
    policy_id   int, 
    property_address varchar(20), 

    -- // other attributes specific to property insurance ... 

    FOREIGN KEY (policy_id) REFERENCES policies (policy_id) 
); 

, ben seçilmiş nasıl anlamıyorum Beyan. cevabın sonunda diyor:

bakılmaksızın alt tipi tüm politikaları için arama yapmak artık çok kolay hale geldi: Hiçbir sendikalar gerektirmez - sadece bir SEÇ * politikaları GELEN.

Bu, tüm verileri ilkelerden alır, ancak alt türler hakkında ne olur? Açıklama: SELECT * FROM policies INNER JOIN policy_motor ON policies.policy_id=policy_motor.id INNER JOIN policy_property ON policy_property.id=policies.id WHERE date_issued = yesterday Özel durumum için 70 alt türüm var. Tüm 70 tabloya iç katılmam gerekecek mi yoksa bunu yapmanın kolay bir yolunu mu duyuyorum? Her şeyden

cevap

1

Birincisi, SELECT * FROM policies INNER JOIN ancak tüm politikaları vardır "ilkesi" tablosundaki yana oldukça SELECT * FROM policies LEFT JOIN ve alt tipi tablosunda kendilerine bir başvuru olmamalıdır. Alt türlere ihtiyacınız varsa, bunu ilke tablosuna sütun olarak eklemelisiniz. Bu şekilde nereye bakacağınızı da biliyorsunuz. Alt tablonun amacı, değerlerde yarım "NULL" olan çok uzun tablolardan kaçınmaktı. Bu şekilde yalnızca "Ebeveyn" tablosunda ihtiyacınız olan verilere sahip olursunuz. Ana tablodaki taban tipindeki verilerin çoğuna sahip olmanız gerekir (her ilkenin bir başlangıç ​​tarihi vardır) ve yalnızca alt tabloda alt türlere özel olan ihtiyaç duyduğunuz veriler.

+0

Alt türü, ilke tablosuna sütun olarak eklerseniz, select ifadesi nasıl görünür? – Adam

İlgili konular