【发布时间】:2026-01-15 07:05:01
【问题描述】:
我有一个名为 Vehicles 的 mysql 数据库表。 此表有很多行:汽车、直升机、飞机等。
我希望这些行中的每一行都有自己的表,这样我就可以为每种车辆类型提供不同的数据。
我的问题是,如何制作此表,以便每一行引用的不是另一个表上的另一行,而是表本身。本来想只用表名的,但感觉有点hackish。
【问题讨论】:
-
并不是说我允许为每种类型的交通工具使用单独的表,但您可以将 VehicleID 作为外键。它的值对于表中的每条记录都是相同的......
-
问题是它们有非常不同的属性,所以我想我需要为每一个单独的表。
-
我会认真考虑是否需要查询所有车辆而不考虑类型如果这样单独的表会很痛苦,除非你有一个所有车辆的主表并且子表只包含每种类型所需的附加属性。这也可以通过几个表属性(基类以外的任何车辆的所有属性列表)、VehicleTypeAttribute(与每种类型及其数据类型相关的属性列表、VehicleAttribute(每个车辆类型属性的用户定义值列表)来实现。)
-
是的,这个想法是让子表具有附加属性。我只是不知道如何正确链接或引用它们。似乎在所有字段上都使用表名和外键“丑陋”的解决方案..专业人士如何做到这一点?
-
这不是vehicleID之间的1-1关系吗?至于专业人士是如何做到的......视图,动态SQL,过程的使用......使用左连接到子表,过程调用不同的选择取决于“车辆类型”所以你只留下加入你的需要...这是不同的数据和不同的列。所以 SQL 必须有所不同。或者您必须执行上述操作并将设计扁平化,并处理不同的数据类型。两种方法都已使用。 Purest in database 会告诉你编写单独的表,而查询编码员会告诉你开销太大。