【发布时间】:2011-01-14 21:26:04
【问题描述】:
我正在构建一个 MySQL 车辆数据库。我希望通过数据库、颜色、传输、燃料等填充许多不同的可能车辆属性。
为每组属性创建一个表是否有意义,或者我应该将它们全部放在一个表中,然后将每一列命名为属性是什么。然后我将可能的选择列为行。
对数据库设计有点陌生,想听听一些意见。提前谢谢你!
【问题讨论】:
标签: mysql database database-design
我正在构建一个 MySQL 车辆数据库。我希望通过数据库、颜色、传输、燃料等填充许多不同的可能车辆属性。
为每组属性创建一个表是否有意义,或者我应该将它们全部放在一个表中,然后将每一列命名为属性是什么。然后我将可能的选择列为行。
对数据库设计有点陌生,想听听一些意见。提前谢谢你!
【问题讨论】:
标签: mysql database database-design
您的问题的答案取决于每辆车是否可以附有多个“颜色”或“燃料”。
如果是我,我会让基表看起来像这样:
表格:车辆 - 列:车辆 ID、名称等。
表格:颜色 - 列:colorID、名称、rgbValue
表:燃料 - 列:fuelID、名称等
如果每辆车只能有一种颜色和一种燃料,则将 Vehicle 表更改为:
表格:车辆 - 列:车辆 ID、名称、颜色 ID、燃料 ID 等。
如果每辆车可以有 4 种颜色和 3 种燃料等。然后不理会 Vehicle 表,并创建类似于这些的“关系”表:
表格:vehicle_has_color - 列:车辆ID,颜色ID
表格:vehicle_has_fuel - 列:车辆ID、燃料ID
希望这能让您了解理想的数据库设计,并为您提供一个良好的起点。请记住,如果您只有 3 种不同的颜色并且它们不会改变,那么直接在 Vehicle 表中插入颜色名称并在 PHP 或 HTML 代码中处理颜色的选择可能会更简单.
【讨论】:
如果每个实体都有一组固定的属性,请将其放在一个表中。 当您有不同的属性时,将它们放在具有此结构的单独表中:
TABLE (
Primary Key ID
Foreign Key Ref
AttributeName
AttributeValue
)
【讨论】:
如果您的数据库需要显示历史变化,那么我会采用建议 2(将它们全部放在一张表中),但如果您只想通过颜色、传输、燃料等来表示车辆,那么将属性在单独的表中。因为那时您与 ID 号有关系,如果某个值需要更改,您可以在属性表中进行更改,并且它会随处更新。一致性也更好,例如“29 mpg Hwy”与“29mpg Hwy”。
【讨论】: