【问题标题】:relational database model关系数据库模型
【发布时间】:2012-01-18 22:58:00
【问题描述】:
假设我们有三个表:Cars、People、Company。
我们希望车主是个人或公司。 Cars表的结构为:Car_id, Car_model, Owner_id
最好的方法是什么?
【问题讨论】:
标签:
database
foreign-keys
relational-database
【解决方案1】:
如果您无法更改汽车表的当前结构,则可以添加名为 owners 的新表,其中包含以下列:
number id -- 唯一密钥
number owner_id -- 这是实际的所有者 id
char owner_type -- 这是一个值,表示所有者是个人还是公司
然后您需要交叉引用cars 和owners 并查看owner_type 的值以确定从哪个表中获取您的所有者数据。
编辑
忘了提(相当重要):
在cars 表中,使用owners.id 列填充owner_id。
【解决方案2】:
如果在 Cars 表中有另一个字段作为“Owner_type_id”,它将确定所有者是个人还是公司或任何其他事物。当然,您应该保留另一个表“Owner_Types”以使这种情况正常工作。
【解决方案3】:
正如 Igby 所提到的,您现有的结构远非理想,但如果您坚持使用它,一种选择是拥有一个新的 Owner 表,其中包含来自 Car 表的 owner_id 以及person_id 和 company_id,只需要填充其中一个。