实现相互关联的元组的最佳方式是数据库,例如Part Exchange汽车

时间:2015-01-04 21:08:45

标签: mysql database ms-access entity-relationship database-normalization

我正在设计汽车经销商管理系统,我有以下实体:

汽车,销售,采购,卖方,买方,费用。它们之间的关系是直截了当的;一辆车可以有很多费用,但一次销售和一次购买。销售可以有一个买方,购买可以有一个卖方。

麻烦在于实施部分交换车辆。这些基本上是彼此相关并且在同一张表中的车辆:当汽车被出售时,它可以具有现金价格,卡价格或分配给它的部分交换价格,这基本上是经销商的价值/金钱已收到付款。这意味着可以在同一张桌子上使用另一辆车支付汽车费用。但我不想为每辆车创建一个零件交换价格字段,因为这种情况很少发生。

在同一张桌子内建立此类连接的最佳方式是什么,以便我可以查询诸如“在部分交换基础上出售的所有车辆以及我用它换取的车辆是什么”这样的东西

如果我需要澄清一些事情,请告诉我们。)

1 个答案:

答案 0 :(得分:0)

使用junction table,将汽车与自身联系起来,使用列调用类似于CarPartExchange的表格:

  • SoldCarId - 对已售出的汽车的引用,
  • ExchangedCarId - 对已交换的Car的引用,
  • PartExchangePrice - 用于交换的价格。
  

所有以零件交换方式出售的汽车是什么

select SoldCarId from CarPartExchange;
  

我收到了什么车以换取他们

select SoldCarId, ExchangedCarId from CarPartExchange
inner join Car SoldCar on SoldCar.Id = CarPartExchange.SoldCarId
inner join Car ExchangedCar on ExchangedCar.Id = CarPartExchange.ExchangedCarId
where PartExchangePrice > 100;

如果要在结果中包含Car表中的信息,则上述示例中必须使用联接。我正在使用任意示例查找价格大于100的所有交易所。