我应该如何为汽车零件设计数据库。
问题是像散热器这样的汽车部件可以容纳几辆汽车。我该如何解决这个问题? 假设我有一张如下表所示的表格:
SKU#Part Make Model Year Quantity
H111散热器BMW E46 1998-2002 5
H222散热器Toyota Corolla 2002-2004 2
带SKU#H111的散热器可以容纳两辆车。其中一个显示在上面的表“BMW E46 1998-2002”中,另一个是“BMW E39 2003-2004”。
如果我在数据库表中添加两个相同的部分,我将遇到问题,因为如果我卖掉该部分,我将不得不手动删除另一部分。 我想设计数据库,因此部件SKU#H111与两个项目有关联。当我卖掉它们时,两个项目的数量都会减少。
答案 0 :(得分:2)
三张桌子:
这称为规范化。要确定哪些部件与哪些车辆匹配,请进行3向连接。
SELECT sku, name, make, model, year, CONCAT(Start_Year, '-', End_Year) Years, Quantity
FROM Car c
JOIN Car_Part cp ON cp.Car_ID = c.ID
JOIN Part p ON p.ID = cp.Part_ID
如果您经常需要此查询,可以将其放在视图中。
答案 1 :(得分:1)
希望这有助于指导您the right direction
答案 2 :(得分:1)
您可以使用附加表来设置零件与使用这些零件的汽车之间的关系: 例如:
Table: sku_id_car_model
SKU# #Id Car Model
H111 BMW E46 1998-2002
H111 BMW E39 2003-2004
因此,当您使用零件时,请按SKU#和#Id Car Model
进行数量搜索更新update car_parts
set quantity = quantity - 1
where sku_part = 'H111'
and concat(make, model, year) in ( select id_car_model
from sku_id_car_model
where sku = 'H111' );
这是一个选项,