2016-06-21 50 views
0

我正在建模MySQL數據庫並開始掙扎。SQL DB方案建模:具有兩個不同類型所有者的車輛

情況:有關於所有參數的vehicle表。有person表與人的信息。並且還有firm表和公司信息。每個人和每個公司可以有0 .. *車輛。每輛車可以有0..1的車主。車主只能是一個人或一家公司。

所以我打算使用vehicleid來查詢有關所有者的信息。因爲在不同表格中有兩種主人,我該怎麼辦?將列添加到車輛表,哪個車主是哪個車主?

當然,我打算創建額外的關係表。但是我不知道如何處理問題,那麼外鍵可以反映到兩個不同的表格,並且只有一行。

感謝您的建議。

+0

使用ID,companyID,personID創建表「所有者」,以便爲每個相關表獲取NULL或有效且唯一的外鍵關係。 – Max

+0

但是,那麼在這兩列中的50%行中將會有NULL值 – Vinigas

+0

這是正確的。但是,對於引用多個表的列來說,這是更可取的。 你也可以做的是有一箇中央Id表(我一直在做),然後引用來自於vehecle表,然後詢問相應的ID是否存在於個人或公司表中。但是,這使得查詢效率低於僅從您的(隱式)臨時表中刪除NULL。 – Max

回答

1

我建議你按照你所說的第三列來指出你對每種情況的正確類型的所有者,或者你可以讓人員ID或公司ID以X值開始,比如公司從F開始,然後是實際的ID,F0001。然後你可以用一個LIKE'F%'來查詢,這將會帶來以F開頭的所有值。以一粒鹽的形式帶走它,我還有很多東西需要學習。

相關問題