首页 > 解决方案 > 最佳 MySQL 表格式

问题描述

在一个mysql汽车零部件数据库中,最优的表格式是什么?

场景一:

Table 1
ID1 | Make | Model | Type

Table 2
ID2 | Part_description | OEM_code

Connection table
ID | ID1 | ID2

场景二:

Table 1
ID1 | Make

Table 2
ID2 | FK_ID1 | Model

Table 3
ID3 | FK_ID2 | Type

Table 4
ID4 | Part_description | OEM_code

Connection table
ID | ID1 | ID2 | ID3 | ID4

在第一种情况下,ID 可以直接用于指示零件,但在品牌和型号列中有多个重复项。

在第二种情况下,3 个 ID 需要指示一个部分,我认为查询会更快,但我不确定多个 IDS。

你有什么意见?

标签: mysqlsqldatabase-design

解决方案


在我看来,数据模型取决于你想如何使用它。通常,每个汽车版本都有一个表格就足够了:

编号 | 汽车版本
---+----------------------------
1 | 宝马 530i 2019
2 | 宝马 530e 2019
3 | 宝马 540i 2019
4 | 宝马 530i 2020
5 | 宝马 530e 2020
6 | 宝马 530e iPerformance 2020
7 | 宝马 540i 2020

你会显示这个按字母排序的列表来挑选一辆车。但是,如果列表很长,这可能会变得不方便。因此,如果您想深入了解汽车版本,上表将不再是最佳选择,因为您可能会忽略错别字,例如:

大众汽车 530i 2020

这将隐藏在列表的下方。所以,你需要一个表来避免这种情况。您可以显示品牌列表,选择品牌,然后显示模型列表。由于模型可以有多个版本,因此您将拥有另一个表格,因此在选择模型后,您会看到版本。

表制作

make_id | 姓名
-----+-----
1 | 宝马


表模型

型号ID | make_id | 姓名
---------+---------+------
1 | 1 | 530i
2 | 1 | 530e


表版本

版本号 | 型号ID | 年
------------+----------+------
1 | 1 | 2019
2 | 2 | 2019
3 | 1 | 2020
4 | 2 | 2020

然后,您的零件表会将零件链接到汽车版本:

表部分

part_id | 零件号 | 姓名
--------+-------------+-------------
1 | 1234567 | 电池 AXX4
2 | 1238867 | 电池 AXX5


表部分匹配

part_id | 版本号
--------+------------
1 | 1
1 | 2
1 | 3
2 | 3
2 | 4

推荐阅读