前篇回顾
在租车信息系统数据库设计(1)与租车信息系统数据库设计(2)中我们列出了租车信息系统的12条需求,并相应做了数据库设计,最后得到的表关系图如下:
在租车信息系统数据库设计(2)的最后提出了3个新问题:
1. 出入库管理还能丰富,车辆买入,车辆报废,送修,还有不同门店之间的车辆拆借(如门店A向门店B临时借用某辆车),如何更好的记录这些StoreTransaction信息?
2. 顾客对于租车费用的支付信息如何记录,顾客可以通过预先充值后消费的方式来支付(这也是区分会员级别的关键),又该如何支持?
3. 我们在第一篇中暂时没考虑“送车上门和上门取车”服务,要支持这一功能,我们对数据库结构要做些什么改动?
就这3个问题,今天我给出自己的解决方案与大家进行讨论。
更细致的出入库管理
对于问题1,可以通过细分StoreTransaction来解决。
在Table_StoreTransaction表中增加StoreTransaction_Type列来存放进出库类型,我把进出库类型分为3种(Purchase,Adjustment,Rental)。相应还需要加入两张表Table_Purchase(记录买入车辆的信息),Table_Adjustment(记录车辆拆借、送修、报废信息)。
Table_StoreTransaction表中的StoreTransaction_ReferenceID列根据不同的进出库类型指向不同表中的记录。
下表罗列了各种情况的进出库类型和Reference ID指向的表:
进出库类型 | Reference ID指向的表记录 | |
车辆出租 | Rental(In/Out) | Table_Order |
车辆买入 | Purchase(In) | Table_Purchase |
车辆拆借 | Adjustment(In/Out) | Table_Adjustment |
车辆送修 | Adjustment(In/Out) | Table_Adjustment |
车辆报废 | Adjustment(Out) | Table_Adjustment |
我们来看一下需要新建的表的字段。实际上,除了要新建Table_Purchase,Table_Adjustment之外,还会间接引入Table_AdjustmentType表。
Table_Purchase:
列名 | 解释 |
Purchase_ID | Identity字段 |
Store_ID | 入库门店ID |
Car_VIN | 车辆唯一编号 |
CarCategory_ID | 车辆型号ID |
Purchase_Date | 购买日期 |
Purchase_Price | 购买价格 |
Purchase_Currency | 货币 |
Purchase_CreatedBy | 购车申请人 |
Purchase_AuthorisedBy | 购车批准人 |
Purchase_Comment | 购车备注 |