mysql - 最佳 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。
你有什么意见?
解决方案
在我看来,数据模型取决于你想如何使用它。通常,每个汽车版本都有一个表格就足够了:
编号 | 汽车版本 ---+---------------------------- 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
推荐阅读
- python - 使用输入字段中的 __icontains 动态过滤
- python - 如何收集多个解决方案,Google OR-Tools,TSP
- celery - 为什么 Celery 队列随机卡在开始使用 Supervisord 上?
- python-3.x - 如何在dict列表中查找字符串作为键值的一部分?
- php - 如何比较mysql PHP中的两个时间列
- stanford-nlp - 如何在 Python 中加速斯坦福 NLP?
- java - OffsetDateTime 到毫秒
- java - Java Spring 5 Get 和 findById mongo MonoOnErrorResume
- spring-boot - Spring WebFlux 和 WebClient 更改错误响应
- html - 在容器底部对齐图像