2

可以說我們有3個表:汽車,人,公司。我們希望汽車的擁有者能夠成爲一個人(和誰)或一個公司(哪一個是)。 Cars表的基本結構是:Car_id,Car_model,Owner_id。這是做到這一點的最佳方式?數據庫設計模型

+0

請您澄清一下這個問題嗎?你有什麼需要幫助的?創建語句?邏輯?特定的技術/語法? – antonpug 2012-02-09 17:58:42

+1

我想要邏輯來做到這一點。例如我想創建2個表格。首先使用羽狀結構「type owner」:type_owner_id,type_owner_name。第二個表格「擁有者」的身材:id,owner_id(people_id或company_id),類型owner_id,car_id。但我認爲我的理想程度並不高。 – stelios 2012-02-09 18:17:05

+0

還取決於您的業務規則,一輛車可以同時擁有多個車主,可以是一個人或一個公司? – 2012-02-29 17:34:19

回答

1

讀你的問題,我看到兩種方法:

  • 第一個是繼承:你有一個car表,也做你有一個ownerowner可以是具有特定字段和關係的personcompany

它們是implementing inheritance with standard SQL的幾種策略,也是某些dbms供應商特定的策略。數據庫分析師應該爲每個domain of discourse和數據庫品牌設計最佳解決方案。

  • 第二種方法是在car表中定義兩個外鍵。

像這樣:

car_company_owner int NULL references companies 
car_person_owner int NULL references people 

然後在數據庫中創建一個規則來迫使你的預期行爲。例如,你可以保持觸發器的一致性。