我想在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,但是没有用。我究竟做错了什么?您能指出我正确的方向吗?谢谢。
答案 0 :(得分:0)
正如@Jorge所说,您的Repairs
表需要链接到基本Cars
(或Vehicles
)表,该表既存储跑车又存储坦克。像Vehicles(vehicle_id, vehicle_type, other_atts)
之类的东西。
根据要存储的有关坦克和跑车的信息,可以根据需要创建专用表。在SQL中表示继承是一个棘手的话题,但是可以通过多种方式来完成。例如,请参见How can you represent inheritance in a database?。