前篇回顾

在租车信息系统数据库设计(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 购车备注

注意:

1. Table_Purchase表中没有Car_ID字段是因为在车辆买入之前,Table_Car中还没有对应记录。

2. 为了简化,我们的设计中Table_Purchase只记录成功购买车辆的信息。如果想对车辆购买进行像Order一样的流程控制,就需要增加些新的字段和表,如购车状态信息(记录Purchase的状态,如新建,审批通过,取消或完成等),大家自己根据需要添加。

  • Table_Adjustment:
列名 解释
Adjustment_ID Identity字段
AdjustmentType_ID 调库类型ID,指向Table_AdjustmentType记录
Store_ID 入库/出库门店ID
Car_ID 车辆ID
Adjustment_Date 调库日期
Adjustment_ExpectDate 预期归还时间
Adjustment_CreatedBy 调库申请人
Adjustment_AuthorisedBy 调库批准人
Adjustment_Comment 调库备注

注意:

1. Adjustment_ExpectDate表示预期归还时间,此字段只有在Adjustment Type对应为Borrow In, Lend Out, Send to Repair中有意义。当为其他Adjustment Type时,此字段置为NULL。

2. 在此设计中,当某车辆从一个门店Adjust Out后,Table_Car中对应的车辆记录的车辆状态变为Inactive。当某车辆被Adjust In到一个门店后,Table_Car中会相应插入一条车辆记录(也有可能只需做Update),且该车辆状态为Ready。

3. 对于公司各门店之间的拆借,上述方式之外,大家也可以考虑把个门店也看作内部客户,一个门店可以向另一个门店创建Order,走Order流程。但借入车辆的门店需要有一种机制来把车辆收入门店,大家可以思考,并比较两种方式的优劣。

  • Table_AdjustmentType:
列名 解释
AdjustmentType_ID Identity字段
AdjustmentType_Name 调库类型,包括:借入Borrow In,借出Lend Out,归还Return In,返还Return Out,送修Send to Repair,修完入库Return after Repair,报废Scrap
AdjustmentType_InOutFlag 进出库标签

注意:

本设计中Adjustment Type分得较细,通过Adjustment Type就能区分是入库还是出库。

另一种设计是用较少的Adjustment Type来区分调库的种类(如只有Borrow,Return,Repair,Scrap四种),通过InOutFlag来区分进/出库。若要这么做就需要把InOutFlag字段放到Table_Adjustment中。至于两种方式的有缺点,大家可以思考。

新的表关系图

由于加入新的表之后,表关系链接出现了交错。所以我使用了数据库的‘自动整理表’功能把关系图重新排列了一下,得到下图:

  • 其中用红色框圈出的表是这次新加入的表。
  • 其中用黄色圈出的几个字段是我们需要注意的:

1. 在先前的Table_Car中(本文开始的关系图),有字段Car_PurchasePrice, Car_Currency。我们引入了Table_Purchase表之后,这两个字段的信息有冗余,可以省去。我把其中的Car_PurchasePrice改为了Car_CurrentPrice,用于记录每年折损后的车辆价值。

2. 在租车信息系统数据库设计(2)中,Table_StoreTransaction表中的StoreTransaction_ReferenceID字段对于车辆买入,车辆拆借、车辆报废和送修造成的出入库没有对应的信息。现在对于上述情况,此字段将引用Table_Purchase或Table_Adjustment的ID列。

下篇预告

没想到第一个问题就写了这么多,剩下的问题来不及写了,只能留到下一篇中讨论。

2. 顾客对于租车费用的支付信息如何记录,顾客可以通过预先充值后消费的方式来支付(这也是区分会员级别的关键),该如何支持?

3. 我们在第一篇中暂时没考虑“送车上门和上门取车”服务,要支持这一功能,我们对数据库结构要做些什么改动?

转载于:https://www.cnblogs.com/DBFocus/archive/2010/11/25/1888209.html

租车信息系统数据库设计(3)相关推荐

  1. 租车信息系统数据库设计(2)

    前篇回顾 租车信息系统数据库设计(1)中我们根据租车系统最基本的一些需求,设计出了如下表结构: 有朋友看了这个结构图后问我为什么对于订单没有设计成主从表(即分为OrderHeader,OrderDet ...

  2. 租车信息系统数据库设计(1)

    最近在看<Database modeling & design:logical design>一书,其中有一道练习题是对简单租车系统进行数据库逻辑设计并画出ER图. 这道题给我挺多 ...

  3. java租车系统维熵科技_维熵租车系统数据库

    维熵租车系统数据库是一款在线租车服务系统的数据库,维熵租车系统数据库可为用户提供商务租车.接送机.旅游租车.企业租车.自驾租车.婚庆用车等自助租车服务,可以满足企业日常业务管理功能,还可以提高接单能力 ...

  4. android租车管理系统,毕业设计(论文)-基于Android的学校租车管理系统的设计与开发.doc...

    盐城师范学院毕业设计 盐 城 师 范 学 院 毕业设计 基于Android的学校租车管理系统 的设计与开发 学生姓名 学 院 信息工程学院 专 业 数字媒体技术 班 级 12(1) 学 号 指导教师 ...

  5. 基于JSP的网上在线租车系统平台设计与实现

    目录 第一章 系统概述 1 1.1背景 1 1.2发展现状 1 第二章 需求分析 2 2.1 功能需求 2 2.2 数据需求 3 第三章 系统设计 5 3.1系统结构 5 3.2 数据库设计 5 3. ...

  6. App设计灵感之十二组精美的租车类App设计案例

    对于租车 App 来说,需要展示给用户的包括车辆基本信息.价格以及使用条件等,如何让用户可以更快的找到这些信息,这十二组设计案例也许会为你带来灵感. ① Car Rental App Design C ...

  7. 租车 网站 php,基于PHP的网上租车租赁网站设计与实现开题报告

    题目:网上汽车租赁系统的设计与实践 一.课题的目的及意义(含国内外的研究现状分析): 随着社会经济的迅速发展和科学技术的全面进步,电子商务的飞速发展,以计算机与互联网技术为基础的应用正处于蓬勃发展的时 ...

  8. php网站开发开题报告,基于PHP的网上租车租赁网站设计与实现开题报告

    题目:网上汽车租赁系统的设计与实践 一.课题的目的及意义(含国内外的研究现状分析): 随着社会经济的迅速发展和科学技术的全面进步,电子商务的飞速发展,以计算机与互联网技术为基础的应用正处于蓬勃发展的时 ...

  9. 基于PHP的网上租车租赁网站设计与实现

    目 录 中文摘要----------------------------------I 1.引言-------------------------------------1 1.1背景介绍------ ...

最新文章

  1. linux定时器(crontab)实例
  2. 暗夜ト星ノ冥土馆~ぷにゅぷりXX 汉化补丁
  3. 客户资产管理(Custom Asset Management)
  4. 天涯对房市预测比较准的是孤独的思想
  5. rabbitmq如何保证消息不被重复消费_RabbitMQ保证消息可靠投递与消费的正确使用姿势...
  6. Nacos SDK for Scala 发布
  7. 深度学习(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow环境搭建
  8. CoAP学习笔记——服务器端繁忙时的处理请求流程
  9. oracle 08177,Java OracleDatabaseException: ORA-08177: 无法连续访问此事务处理问题解决
  10. HDU-2082 找单词 母函数
  11. ios11+html5偏移20pt,iOS tableView内容向下偏移20pt或向下偏移64pt的问题?
  12. linux操作系统使用论文_Linux学习2 使用VirtualBox安装国产深度操作系统
  13. php开发_图片验证码
  14. 发现一篇不错的学习隐马尔可夫模型的文章
  15. 拓端tecdat|R语言时间序列分解和异常检测方法应用案例
  16. 使用Ahk2Exe工具将AutoHotKey脚本打包到Windows可执行文件
  17. instsrv.exe和srvany.exe将.exe文件注册为windows服务
  18. mysql pxc 使用_PXC使用介绍
  19. 微信公众号和服务器的关系,微信公众号、订阅号、服务号之间的关系和区别
  20. python中的translate函数_Python:内置函数makestrans()、translate()

热门文章

  1. <<science>> new and potential research areas
  2. 剑桥大学创业基金和指导:Accelerate Cambridge
  3. 使用Apple的感受
  4. 自已编写C# DLL 绑定到unity进程进行单步调试
  5. 【转】malloc函数实现原理!
  6. 关于各组评价的自我评价
  7. 即将推出.NET Framework 4.7.2中的一些亮点
  8. 打造LINUX系统安全(早期学习笔记)
  9. saltstack (6) 配置管理(2)
  10. Linux安装Redis服务