姬長信(Redy)

MySQL – 超类型/子类型设计


我需要创建以下数据库:

对于半卡车我不需要额外的亚型,而对于Car我只需要那3种亚型而且对于轿车我也需要四种亚型.
对于SELECT,我将使用JOIN(规范化数据库),但我需要找到一种简单的方法来进行INSERT.

>车辆表存储公共信息
>半卡车存储半成品的具体信息
>车牌表具有汽车的特定字段和car_type字段,该字段链接到三个子类型
> Van,Suv和Sedan(以及其他类型,如果我需要它们)应该在一个表CAR_TYPE中
>但是,对于Sedan类型,我需要有其他子类型,这些子类型可能应该包含在另一个表中. Suvs和Vans不需要这些子类型(在现实生活中,厢式货车可以与轿车具有相同的子类型但在我的情况下不是这样).

我需要完全按照图中的方式创建此数据库.

到目前为止,我的第一种方法是使用以下表格:

>车辆:veh_id,veh_type(半汽车,汽车),…,other_fields
> Vehicle_semis:veh_id,…,other_semis_fields
> Vehicle_car:veh_id,car_type(Van,Suv,Sedan),other_car_specific_fields
> Car_type:car_type_id,类型
> Sedan_type:sedan_type_id,类型

我的问题是我不确定这是正确的方法,我不知道如何在表之间创建关系.

有任何想法吗?

谢谢!

更新:

下图基于@Mike的答案: