资源描述
运输公司车辆管理数据库设计一、 需求分析系统目标:建立车辆管理系统的目标是实现对车辆的综合管理,实现包括对驾驶员信息、车辆信息、运营信息、出车信息、维修信息、事故信息的查询和修改等。车辆管理的基本要求是:1.建立车辆信息库,实现车辆基本信息和驾驶员基本信息的统一管理。2.针对每辆车的出车运营情况进行记录,实现车辆自我调度。3.对每辆车的事故、违规情况进行记录。4.针对每辆车的维修情况进行记录。分析说明:业务流程分析的主要目的是要弄清楚一个公司的业务工作是如何进行的。在进行业务流程分析时,需要按照原有信息流动过程,逐步的调查分析所用环节的处理业务、处理内容,处理顺序和对处理时间的要求,弄清楚各个环节需要的信息、信息来源、流径去向、处理方法、计算方法、提供信息的时间和信息形态等。车辆管理人员业务管理人员人事管理人员车辆信息业务信息驾驶员信息车辆信息情况运营信息情况驾驶员信息情况维修信息情况维修信息维修负责人事故负责人事故信息事故信息情况车辆登记卡出车信息高层领导上图为是运输公司车辆管理业务流程图:车辆管理员人事管理员业务管理员P1车辆信息管理P2驾驶员管理P4.1运营信息输入P5维修信息管理P4.2出车管理P6事故信息管理事故管理员维修管理员高层领导P3车辆登记卡管理 上图为运输公司车辆管理顶层数据流图业务管理员4.1接受业务4.2更新运营信息4.3出车管理其他信息高层领导 上图为运输公司车辆管理运营出车管理二层数据流图数据字典包括数据项、数据结构、数据流、数据存储和处理过程。a)数据项条目举例名称:驾驶员编号 说明:表示驾驶员的编号 类型:变长字符串 长度:6有关数据结构:驾驶员信息表 名称:车辆卡编号 说明:表示车辆的编号 类型:变长字符串 长度:6有关数据结构:车辆登记卡信息表 b) 数据结构条目 举例名称:驾驶员信息 说明:表示公司驾驶员的信息 结构:驾驶员编号、姓名、性别、驾驶证号码、身份证号码、联系电话、家庭住址、是否空闲 有关的数据流、数据存储:驾驶员信息表、车辆运营信息表、 名称:车辆登记卡信息 说明:表示公司车辆的信息 结构:车辆卡编号、牌照号码、车型、载货量、购车费用总额、是否空闲 有关的数据流、数据存储:车辆登记卡信息表、车辆运营信息表 c)数据流条目 举例 名称:车辆维修信息 说明:表示公司车辆维修信息的流向 数据来源:维修管理部 数据流去向:高层领导 包含的数据结构:车辆维修表(维修单号、车辆卡编号、维修日期、修理厂名称、报修人、报修费用) 名称:车辆登记卡信息 说明:表示车辆信息的流向 数据来源:车辆管理部 数据流去向:高层领导包含的数据结构:车辆登记卡信息表(车辆卡编号、牌照号码、车型、载货量、购车费用总额、是否空闲) d) 数据存储条目举例名称:车辆事故信息表 说明:表示记录车辆事故的信息表 编 号:D4结构: 车辆卡编号驾驶证号码、事故发生时间、事故地点 、有关数据流: P4 D4e) 处理过程条目名称:车辆信息处理 说明:当公司有新的运营任务时 输入:D4 P4.2,P4.2 P3输出: P3 D1 处理:查看D1中公司车辆的信息,作相应的处理二、概念设计 1.根据上述需求分析,进行数据库概念设计,得出以下各个ER模型图: 车辆登记卡信息实体E-R图:车辆登记卡信息车辆卡编号牌照号码车辆型号是否空闲购车费用总额载货量驾驶员信息实体E-R图:驾驶员信息驾驶员编号姓名性别身份证号码是否空闲联系电话家庭住址驾驶证号码车辆运营信息实体:运营信息运营编号货物重量客户电话日期客户价格出车实体E-R图:出车信息出车记录号出车卡编号驾驶员编号记录状态出车时间车辆维修信息实体E-R图:车辆维修信息车辆卡编号维修单号维修日期报修费用报修人修理厂名称车辆事故信息实体E-R图:车辆事故信息车辆卡编号驾驶证号码事故发生时间事故地点以下是总ER模型图:性别是否空闲驾驶员信息承担出车信息指派车辆维修车辆登记卡信息车辆事故进行发生运营信息依据驾驶员编号姓名驾照号码身份证号联系电话家庭住址日期货物重量出车记录号出车卡编号驾驶员编号保修费用报修日期报修费用修理厂名称维修单位驾驶证编号事故地点事故发生时间车辆卡编号报修人运营编号客户电话价格客户出车时间记录状态车辆卡编号牌照号码购车费用总额是否空闲载货量车型该系统设计的实体集有:驾驶员信息实体集:具有的属性有驾驶员编号、驾照号码、姓名、性别、身份证号码、家庭住址、联系号码、是否空闲。出车信息实体集:具有的属性有出车记录号、出车卡编号、驾驶员编号、出车时间、记录状态。运营信息实体集:具有的属性有运营编号、货物重量、客户、日期、价格、客户电话。车辆登记卡信息实体集:具有的属性有车辆卡编号、牌照号码、车型、购车费用总额、载货量、是否空闲。车辆维修实体集:具有的属性有维修单位、保修费用、报修日期、报修费用、修理厂名称、报修人。车辆事故实体集:具有的属性有车辆卡编号、驾驶证编号、事故地点、事故发生的时间。一个驾驶员可以出车好几次,但是每一次出车只有一个驾驶员驾驶,所以驾驶员和出车之间的联系为1:N的联系。一次运营信息可以有多次出车情况,一次出车也可以是集合多次运营信息,所以运营信息和出车信息之间的联系为N:M的联系。一张车辆登记卡只能记录一次出车,每次出车可以有多个车辆登记卡出车,所以车辆登记卡和出车信息之间的联系是1:N的联系。一张车辆登记卡只能记录维修车辆一次,每次车辆维修可以有多个车辆登记卡一起记录不同原因的车辆维修,所以车辆登记卡和车辆维修之间的联系是1:N的联系。一张车辆登记卡只能记录事故车辆一次,每次车辆事故可以有多个车辆登记卡记录,所以车辆登记卡和车辆事故之间的联系是1:N的联系。以下是总ER模型图:三、逻辑设计车辆登记卡记录表属性名数据类型可否为空备注车辆卡编号varchar()否主键牌照号码varchar()否车型varchar()否载货量int(4)否购车费用总额date(13)否是否空闲boolean(1)否驾驶员基本信息表属性名数据类型可否为空备注驾驶员编号varchar()否主键姓名varchar(2)否性别varchar(2)否出生日期date(8)否身份证号码varchar(20)否驾驶证号码varchar(12)否家庭住址varchar(40)否联系电话varchar(20)否是否空闲boolean(1)否运营信息表属性名数据类型可否为空备注运营编号varchar()否主键日期date (8)否客户varchar()否货物重量int(4)否价格char (13)否客户电话char(20)否出车记录情况表属性名数据类型可否为空备注出车记录号varchar()否主键出车卡编号varchar()否驾驶员编号varchar()否外键记录状态varchar(1)否已指派待指派出车时间date(8)否车辆维修单记录表属性名数据类型可否为空备注车辆卡编号varchar(6)否外键维修单号varchar(10)否主键维修日期Date(8)否修理厂名称varchar(40)否报修人varchar(20)否报修费用Smallint(13)否车辆事故记录表属性名数据类型可否为空备注车辆卡编号varchar(6)否外键驾驶证号码varchar(12)否事故发生时间datetime(8)否事故地点varchar(40)否将E-R模型转换为关系模式经分析,可将E-R模型中的五个实体分别转换为七个关系模式:驾驶员信息(驾驶员编号、姓名、性别、身份证号码、驾驶证号码、家庭住址、联系电话、是否空闲、出车记录号)出车信息(出车记录号、出车卡编号、驾驶员编号、记录状态、出车时间)运营信息(运营编号、货物重量、日期、价格、客户电话、客户)车辆登记卡信息(车辆卡编号、牌照号码、车辆型号、载货量、购车费用总额、是否空闲、出车记录号)车辆事故(驾驶员号码、事故发生时间、事故地点、车辆卡编号)车辆维修(维修单号、修理厂名称、报修人、报修费用、维修日期、车辆卡编号)依据(出车记录号、运营编号)其中,有下划线的键表示是主键。四、物理结构设计数据库的物理设计通常分为两步:(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构(2)对物理结构进行评价,评价的重点是时间和空间效率在我们创建的本车辆运输的数据库中,因为考虑的方面还不是很全面,因此数据库的规模不是很大,属于微型数据库。一般来说,这样的数据库是不需要进行分区和建立索引的。如果要象征性地建立索引,就要先统计在这个数据库中,哪些元素使用的频率较高,最后根据较高的频率元素建立索引和分区。在此实例中,我建议用驾驶员编号和车辆卡编号作为索引,这样可以把多张表格联系起来。五、数据实施和维护1. 创建表创建表1. 创建车辆登记卡记录表Create table创建车辆登记卡记录表 (车辆卡编号 varchar() primary key, 牌照号码 varchar() not null, 车型 varchar() null, 载货量 int(4) null, 购车费用总额 date(13) null, 是否空闲 boolean(1) not null)2. 创建驾驶员基本情况表create table 驾驶员基本情况表 (驾驶员编号 varchar() primary key, 姓名 varchar(2) not null, 性别 varchar(2) not null, 身份证号码 varchar(20) null, 驾驶证号码 varchar(12) null, 家庭住址 varchar(40) null, 联系电话 varchar(20) null, 是否空闲 boolean(1) not null)3.Creat table 运营信息表运营编号varchar() not null primary key ,日期 date (8) not null,客户varchar() not null,货物重量int(4) not null,价格date(13) not null,客户电话 char(20) not null4. 创建出车记录表create table 创建出车记录表(出车记录号 varchar() primary key,车辆卡编号 varchar()not null, 驾驶员编号 varchar() not null, foreign key references 驾驶员信息(驾驶员编号),记录状态 varchar(1) not null, 出车时间 date(8) null, 5.Create table 车辆维修单记录车辆卡编号 varchar(6) foreign key references 车辆登记卡(车辆卡编号)维修单号 varchar(10) primary key维修日期 Date(8)not null 修理厂名称 varchar(40)not null报修人 varchar(20)not null 报修费用 Smallint(13)not null 6. Create table 车辆事故记录车辆卡编号 varchar(6) foreign key references 车辆登记卡(车辆卡编号)驾驶证号码varchar(12)not null 事故地点varchar(40)not null事故发生时间datetime(8)not null 在驾驶员基本信息表和出车记录表中插入一定的数据:Insert into 驾驶员基本信息表(姓名,身份证号码) Values (张三,330802197606223445)Insert into出车记录情况表(出车记录号,驾驶员编号)Values(235,023)Insert into 出车记录情况表(出车卡编号,出车时间)Values(014,15:30)2创建视图 Create view 驾驶员信息与出车记录登记表As select 驾驶员编号,驾驶证号码,姓名,出车记录,出车卡编号From 驾驶员基本信息表,出车记录表Where 驾驶员编号=343建立索引Create unique index IX_车辆卡编号 on车辆登记卡记录(车辆卡编号)Create unique index IX_牌照号码 on 车辆登记卡记录(牌照号码)Create unique index IX_驾驶员编号 on 驾驶员基本信息(驾驶员编号)Create unique index IX_身份证号码 on驾驶员基本信息(身份证号码)4表中数据操作增加:Insert into 驾驶员基本信息表(驾驶员编号,驾驶证号码) Values(34,85693)删除:Delete *Form驾驶员基本信息表 Where 姓名=张三修改:Update 出车记录情况表Set出车记录号=233Where 驾驶员编号=0235使用表格操作:简单查询: Select 出车卡编号,出车时间Form 出车记录情况表模糊查询Select 姓名 Form驾驶员基本信息表Where姓名 like “王%”连接查询Select驾驶员基本信息表.*, 出车记录情况表.*Form 驾驶员基本信息表, 出车记录情况表Where驾驶员基本信息表.驾驶员编号= 出车记录情况表. 驾驶员编号嵌套查询Select 姓名Form驾驶员基本信息表Where驾驶员编号=(select驾驶员编号Form 驾驶员基本信息表Where 驾驶员编号=34)6创建触发器,存储过程,实现表间的级联删除或修改Creat trigger insert-or-update sal Before insert or update on运营信息表 For each row As begin If (货物重量70000) New.记录状态:=已指派 End if End 六、总结(心得)在做报告时,前后遇到很多困难。首先是选题的困难,在诸多的题目里面,我们选择了比较难的题目车辆运输管理。这个题目比较难,需要考虑的因素很多,这是检验我们学习能力的一种考验。在选择了这个题目之后,我们在网上找了相关的资料,但是经过老师的指点以后,我们发现,网上所找到的资料不在运输问题的重点上,因此,完全没有可参照性,以后的每个步骤都需要自己慢慢地摸索。因为没有实际的工作经验和逻辑完整性的欠缺,我们想像的与现实中的车辆调度数据库完全不符合,里面产生了很多问题。比如说考虑问题太片面性,通常忽略某一个重要方面,如车辆、驾驶员是否空闲,车辆遇上意外的处理方法,车辆费用的叠加方法等。在和图书馆的案例对比了以后,我借鉴了里面的格式,按部就班地建立运输关系数据库的模型。其中,在画E-R模型图的时候,由于内容较为复杂,在有限的版面里面,不能合理安排,把所有的关系都表示的明白。因此,我们就分层次把所有的关系结合起来,这样有点难度。现在,我们所考虑到的所有的问题都解决了,但是我们知道,还是有很多的漏洞还存在着。这是一个不完整的数据库系统,还有很多的不足,甚至存在着很惊人的漏洞,这有待于加强我们对操作的锻炼。
展开阅读全文