Mysql SQL-简单模型-问题

Mysql SQL-简单模型-问题,mysql,postgresql,Mysql,Postgresql,每辆车或卡车都可以有多个包。我必须与包裹建立关系 问:拥有另一个可以处理关系的表是唯一的出路吗? 我需要最有效的方法 编辑:我知道PostgreSQL中有数组。但数组中的元素不能有外键 桌子: 表一-汽车 Id |名称 表二卡车 Id |名称|颜色 //。。。未来的飞机、火车 表三-套餐 Id |名称 表四——关系方面 Id |类型|包装Id --------或-------- 表四。 Id | CarId | PackageId 及 表五。 Id | TruckId | PackageId您可

每辆车或卡车都可以有多个包。我必须与包裹建立关系

问:拥有另一个可以处理关系的表是唯一的出路吗? 我需要最有效的方法

编辑:我知道PostgreSQL中有数组。但数组中的元素不能有外键

桌子: 表一-汽车

Id |名称

表二卡车

Id |名称|颜色

//。。。未来的飞机、火车

表三-套餐

Id |名称

表四——关系方面

Id |类型|包装Id

--------或--------

表四。

Id | CarId | PackageId

表五。


Id | TruckId | PackageId

您可以采用任何一种方式。卡车的链接表和汽车的单独链接表可能更容易管理,但显然,如果你也有飞机、火车和自行车,那么你可能需要重新考虑这种设计。1)由
packageId
表示的单个包能否同时与
carId
truckId
关联?如果不是,则
packageId
在关联表IV中是唯一的。您如何用两个表IV和V表示唯一性(参考完整性)?2) 您的
关系IV
的关键是什么?只有
id
?那么,您将(两个?部分?)外键约束写入两个表I和表II中的哪一个?或者它是
(id,类型)
?然后FK去了?问题更多,是否所有车辆都有类似
vehicleId,name
的通用功能,并且是否要将它们关联在一起…您可以尝试类似
vehicles(id序列主键,键入TEXT not NULL)
的功能,然后分别扩展它们。例如
卡车(id序列主键参考车辆,彩色文本不为空)
。并且仍然与
包(id序列主键,货物文本不为空)有
多对多
多对一
关系
带有
车辆包的表(车辆id不为空引用车辆(id),包id不为空引用包(id),主键(车辆id,包id))
。这是一个想法吗?您也可以考虑表的PostgreSQL的对象关系继承。请阅读相关文档。不过,AFAIR MySQL和MariaDB都没有提供这一功能(您的问题都带有RDBMS标记)。