运输公司车辆管理数据库设计一、需求分析系统目标:建立车辆管理系统的目标是实现对车辆的综合管理,实现包括对驾驶员信息、车辆信息、运营信息、出车信息、维修信息、事故信息的查询和修改等。车辆管理的基本要求是: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.根据上述需求分析,进行数据库概念设计,得出以下各个E—R模型图:车辆登记卡信息实体E-R图:车辆登记卡信息车辆卡编号牌照号码车辆型号是否空闲购车费用总额载货量驾驶员信息实体E-R图:车辆运营信息实体:驾驶员信息驾驶员编号姓名性别身份证号码是否空闲联系电话家庭住址驾驶证号码运营信息运营编号货物重量客户电话日期客户价格出车实体E-R图:车辆维修信息实体E-R图:车辆维修信息车辆卡编号维修单号维修日期报修费用报修人修理厂名称出车信息出车记录号出车卡编号驾驶员编号记录状态出车时间车辆事故信息实体E-R图:以下是总E—R模型图:车辆事故信息车辆卡编号驾驶证号码事故发生时间事故地点该系统设计的实体集有:驾驶员信息承担出车信息指派车辆维修车辆登记卡信息车辆事故进行发生运营信息依据驾驶员编号姓名驾照号码身份证号联系电话家庭住址日期货物重量出车记录号出车卡编号驾驶员编号保修费用报修日期报修费用修理厂名称维修单位驾驶证编号事故地点事故发生时间车辆卡编号报修人运营编号客户电话价格客户出车时间记录状态车辆卡编号牌照号码购车费用总额是否空闲载货量车型性别是否空闲驾驶员信息实体集:具有的属性有驾驶员编号、驾照号码、姓名、性别、身份证号码、家庭住址、联系号码、是否空闲。出车信息实体集:具有的属性有出车记录号、出车卡编号、驾驶员编号、出车时间、记录状态。运营信息实体集:具有的属性有运营编号、货物重量、客户、日期、价格、客户电话。车辆登记卡信息实体集:具有的属性有车辆卡编号、牌照号码、车型、购车费用总额、载货量、是否空闲。车辆维修实体集:具有的属性有维修单位、保修费用、报修日期、报修费用、修理厂名称、报修人。车辆事故实体集:具有的属性有车辆卡编号、驾驶证编号、事故地点、事故发生的时间。一个驾驶员可以出车好几次,但是每一次出车只有一个驾驶员驾驶,所以驾驶员和出车之间的联系为1:N的联系。一次运营信息可以有多次出车情况,一次出车也可以是集合多次运营信息,所以运营信息和出车信息之间的联系为N:M的联系。一张车辆登记卡只能记录一次出车,每次出车可以有多个车辆登记卡出车,所以车辆登记卡和出车信息之间的联系是1:N的联系。一张车辆登记卡只能记录维修车辆一次,每次车辆维修可以有多个车辆登记卡一起记录不同原因的车辆维修,所以车辆登记卡和车辆维修之间的联系是1:N的联系。一张车辆登记卡只能记录事故车辆一次,每次车辆事故可以有多个车辆登记卡记录,所以车辆登记卡和车辆事故之间的联系是1:N的联系。以下是总E—R模型图:三、逻辑设计车辆登记卡记录表属性名数据类型可否为空备注车辆卡编号varchar(6)否主键牌照号码varchar(20)否车型varchar(10)否载货量int(4)否购车费用总额date(13)否是否空闲boolean(1)否驾驶员基本信息表属性名数据类型可否为空备注驾驶员编号varchar(6)否主键姓名varchar(20)否性别varchar(2)否出生日期date(8)否身份证号码varchar(20)否驾驶证号码varchar(12)否家庭住址varchar(40)否联系电话varchar(20)否是否空闲boolean(1)否运营信息表属性名数据类型可否为空备注运营编号varchar(6)否主键日期date(8)否客户varchar(10)否货物重量int(4)否价格char(13)否客户电话char(20)否出车记录情况表属性名数据类型可否为空备注出车记录号varchar(6)否主键出车卡编号varchar(6)否驾驶员编号varchar(6)否外键记录状态varchar(10)否已指派/待指派出车时间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.创建车辆登记卡记录表Createtable创建车辆登记卡记录表(车辆卡编号varchar(6)primarykey,牌照号码varchar(20)notnull,车型varchar(10)null,载货量int(4)null,购车费用总额date(13)null,是否空闲boolean(1)notnull)2.创建驾驶员基本情况表createtable驾驶员基本情况表(驾驶员编号varchar(6)primarykey,姓名varchar(20)notnull,性别varchar(2)notnull,身份证号码varchar(20)null,驾驶证号码varchar(12)null,家庭住址varchar(40)null,联系电话varchar(20)null,是否空闲boolean(1)notnull)3.Creattable运营信息表运营编号varchar(6)notnullprimarykey,日期date(8)notnull,客户varchar(10)notnull,货物重量int(4)notnull,价格date(13)notnull,客户电话char(20)notnull4.创建出车记录表createtable创建出车记录表(出车记录号varchar(6)primarykey,车辆卡编号varchar(6)notnull,驾驶员编号varchar(6)notnull,foreignkeyreferences驾驶员信息(驾驶员编号),记录状态varchar(10)notnull,出车时间date(8)null,5.Createtable车辆维修单记录车辆卡编号varchar(6)foreignkeyreferences车辆登记卡(车辆卡编号)维修单号varchar(10)primarykey维修日期Date(8)notnull修理厂名称varchar(40)notnull报修人varchar(20)notnull报修费用Smallint(13)notnull6.Createtable车辆事故记录车辆卡编号varchar(6)foreignkeyreferences车辆登记卡(车辆卡编号)驾驶证号码varchar(12)notnull事故地点varchar(40)notnull事故发生时间datetime(8)notnull在驾驶员基本信息表和出车记录表中插入一定的数据:Insertinto驾驶员基本信息表(姓名,身份证号码)Values(‘张三’,’330802197606223445’)Insertinto出车记录情况表(出车记录号,驾驶员编号)Values(’235’,’023’)Insertinto出车记录情况表(出车卡编号,出车时间)Values(’014’,’15:30’)2.创建视图Createview驾驶员信息与出车记录登记表Asselect驾驶员编号,驾驶证号码,姓名,出车记录,出车卡编号From驾驶员基本信息表,出车记录表Where驾驶员编号=’34’3.建立索引CreateuniqueindexIX_车辆卡编号on车辆登记卡记录(车辆卡编号)CreateuniqueindexIX_牌照号码on车辆登记卡记录(牌照号码)CreateuniqueindexIX_驾驶员编号on驾驶员基本信息(驾驶员编号)CreateuniqueindexIX_身份证