我正在设计汽车经销商管理系统,我有以下实体:
汽车,销售,采购,卖方,买方,费用。它们之间的关系是直截了当的;一辆车可以有很多费用,但一次销售和一次购买。销售可以有一个买方,购买可以有一个卖方。
麻烦在于实施部分交换车辆。这些基本上是彼此相关并且在同一张表中的车辆:当汽车被出售时,它可以具有现金价格,卡价格或分配给它的部分交换价格,这基本上是经销商的价值/金钱已收到付款。这意味着可以在同一张桌子上使用另一辆车支付汽车费用。但我不想为每辆车创建一个零件交换价格字段,因为这种情况很少发生。
在同一张桌子内建立此类连接的最佳方式是什么,以便我可以查询诸如“在部分交换基础上出售的所有车辆以及我用它换取的车辆是什么”这样的东西/ p>
如果我需要澄清一些事情,请告诉我们。)
答案 0 :(得分:0)
使用junction table,将汽车与自身联系起来,使用列调用类似于CarPartExchange的表格:
所有以零件交换方式出售的汽车是什么
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的所有交易所。