我想在mysql中为两个不同的表(例如repair
和sportscar
)创建一个公用表(例如tank
)。两者都需要修理,这是我的问题。我不能在表id
中只有两个表sportscar
和tank
的repair
(PK),因为我无法确定ID 1是来自sportscar
还是来自tank
。所以我也将type_id
添加到表repair
中。因此,vehicle_id = 1
和type_id = 2
应该定义它来自表tank
,并且车辆ID为1。到目前为止,还不错,但是不幸的是,它不起作用。我不知道为什么,但是似乎不接受vehicle_id
和type_id
作为组合键。在SqlYog中,我不允许选择相应的记录,因为在相关表中该记录始终为空。我尝试了许多不同的组合,甚至将id
和type_id
设置为表sportscar
和tank
中的复合PK,但是没有用。我究竟做错了什么?您能指出我正确的方向吗?谢谢。
最佳答案
正如@Jorge所说,您的Repairs
表需要链接到基本的Cars
(或Vehicles
)表,该表既存储跑车又存储坦克。类似于Vehicles(vehicle_id, vehicle_type, other_atts)
。
根据您要存储的有关坦克和跑车的信息,可以根据需要创建专门的表格。在SQL中表示继承是一个棘手的话题,但是可以通过多种方式来完成。例如,请参见How can you represent inheritance in a database?。