-1

我应该如何设计汽车零件的数据库。

问题是像散热器这样的汽车零件可以安装多辆汽车。我应该如何解决这个问题?假设我有一张如下表:

SKU# 零件 制造 型号 年份 数量
H111 散热器 BMW E46 1998-2002 5 
H222 散热器 Toyota Corolla 2002-2004 2

SKU#H111 的散热器可以安装两辆汽车。一种是如上表所示的“BMW E46 1998-2002”,另一种是“BMW E39 2003-2004”。

如果我在数据库表中添加两个相同的部分,我会遇到问题,因为如果我出售这部分,我将不得不手动删除另一个。我想设计数据库,使 SKU#H111 部分与两个项目有联系。当我出售它们时,这两种物品的数量都应该减少。

4

3 回答 3

2

三张表:

  • 汽车:列 ID、品牌、型号、Start_Year、End_Year
  • 部分:列 ID、SKU#、名称、数量
  • Car_Part:列 Car_ID、Part_ID

这称为标准化。要确定哪些零件与哪些汽车配套,您需要进行 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

如果你经常需要这个查询,你可以把它放在一个视图中。

于 2013-09-20T17:28:39.833 回答
1

希望这将帮助您指出正确的方向

于 2013-09-20T17:28:24.587 回答
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' );

是一种选择,

于 2013-09-20T17:41:46.760 回答