数据库分析与设计报告(车辆管理系统)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.需求分析
2.概念结构设计
3.逻辑结构设计
4.物理结构设计
5.数据库的建立和测试
6.数据库运行和维护
《车辆管理系统》数据库设计
班级:11计算机转
学号:1116939040
姓名:王湘萍
一.需求分析
1.1可行性分析
现在随着企业规模的扩大以及车辆作为最为普遍的交通工具,在企业中已经不是单一的存在,由于单位车辆数目的急剧增加,与之相对应的问题随之而生,比如车辆的使用权问题,车辆的费用问题等,不再是简单的少量的数据。

为了解决这一系列的问题,我们必须借助于电脑的强大的数据处理能力和存储能力,如此可以减少人力财力来维护这些数据,可以用更少的投入来换取更佳的数据管理。

因此,在这样的情况下,开发单位车辆管理系统是可行的,是必要的。

如今,MIS开发已经慢慢的驱向成熟,车辆管理系统也有部分开发,但是都还不是十分完善。

现今已经开发的车辆管理系统都是针对以运营为主的具有盈利目的的单位。

比如,公交管理、出租车管理、运输公司管理、汽车站点的管理,而这些管理最主要是针对盈利的管理,很少有针对各种汽车使用权、车辆调配等各种普通单位,不是以车辆运营为盈利手段的车辆管理,针对这点,此系统就是适合如今大多数企业管理的车辆管理系统。

通过计算机系统对学校进行全面的管理,满足了学校的现代化管理的要求。

1)经济性
①系统建设不需要很大的投入;
②可缩减人员编制,减少人力费用;
③人员利用率的改进;
2)技术性
①处理速度快,准确;
②通过权限的设置,数据的安全性好;
③方便查询;
④控制精度或生产能力的提高
3)社会性
①可降低工作人员工作强度,提高效率,会得到上下员工的一致同意的;
②可引进先进的管理系统开发方案,从而达到充分利用现有资源
1.2需求分析
现代信息技术特别是计算机网络技术的飞速发展,使我们的管理模式产生了质的飞跃,网络化管理将成为信息时代的重要标志和组成部分。

探索、研究并构建适宜于在计算机网络环境下的管理模式,是我们责无旁贷的使命。

通过调查,要求系统需要具有以下功能:
1)由于操作人员的计算机知识普遍较差,要求有良好的人机界面。

2)由于该系统的使用对象多,要求有较好的权限管理。

3)方便的数据查询,支持多条件查询。

4)基础信息管理与查询(包括车辆信息、用车记录、部门信息)。

5)通过计算机,能够直接“透视”仓库存储情况。

6)数据计算自动完成,尽量减少人工干预。

7)系统退出。

1.3 系统的模型结构
该系统的模型结构如图2.1所示:
图2.1 系统的模型结构
1.4业务流程分析
《车辆管理系统》软件的数据流图是比较清晰的,对各功能模块来说都比较有规律。

但完整的图比较繁琐。

车辆管理系统顶层图
车辆管理系统0层图
1.5数据字典
数据字典是描述数据流图中数据的信息的集合。

它对数据流图上每一个成分:数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成。

从上面数据流图可知,本系统包含以下数据流、数据存储、数据加工。

1、数据流
数据流名称:出车单
别名:无
简述:指驾驶员出车的清单。

来源:管理部
去向:加工“车辆出库信息”
组成:出车单编号+车辆类别编号 + 出车日期+库位编号
数据流名称:车辆入库单
别名:无
简述:指车辆入库的清单。

来源:管理部
去向:加工“添加入库信息”
组成:入库单编号+车辆类别编号 + 计量单位+数量+ 入库日期+库位编号
数据流名称:费用单
别名:无
简述:车辆产生费用的清单。

来源:驾驶员
去向:加工“添加费用信息”
组成:费用单编号+费用类别编号 + 计量单位+数量+ 费用日期+费用原因
二、概念设计
2.2 系统局部E-R图
2.3 系统全局E-R图
2.4数据库设计
数据库整体的设计如下图所示:
/*==============================================================*/
/* DBMS name: Microsoft SQL Server 2005 */
/* Created on: 2012/6/12 23:16:03 */
/*==============================================================*/
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('出车') and = 'FK_出车_承担_驾驶员') alter table 出车
drop constraint FK_出车_承担_驾驶员
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('出车') and = 'FK_出车_指派_车辆') alter table 出车
drop constraint FK_出车_指派_车辆
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('车辆事故') and = 'FK_车辆事故_发生_车辆')
alter table 车辆事故
drop constraint FK_车辆事故_发生_车辆
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('车辆保险') and = 'FK_车辆保险_授权_车辆')
alter table 车辆保险
drop constraint FK_车辆保险_授权_车辆
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('车辆油耗') and = 'FK_车辆油耗_缴纳_车辆')
alter table 车辆油耗
drop constraint FK_车辆油耗_缴纳_车辆
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('车辆维修') and = 'FK_车辆维修_加油_车辆')
alter table 车辆维修
drop constraint FK_车辆维修_加油_车辆
go
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('车辆费用') and = 'FK_车辆费用_发车_车辆')
alter table 车辆费用
drop constraint FK_车辆费用_发车_车辆
go
if exists (select 1
from sysindexes
where id = object_id('出车')
and name = '指派_FK'
and indid > 0
and indid < 255)
drop index 出车.指派_FK
go
if exists (select 1
from sysindexes
where id = object_id('出车')
and name = '承担_FK'
and indid > 0
and indid < 255)
drop index 出车.承担_FK
go
if exists (select 1
from sysobjects
where id = object_id('出车')
and type = 'U')
drop table 出车
go
if exists (select 1
from sysobjects
where id = object_id('车辆')
and type = 'U')
drop table 车辆
go
if exists (select 1
from sysindexes
where id = object_id('车辆事故') and name = '发生_FK'
and indid > 0
and indid < 255)
drop index 车辆事故.发生_FK
go
if exists (select 1
from sysobjects
where id = object_id('车辆事故')
drop table 车辆事故
go
if exists (select 1
from sysindexes
where id = object_id('车辆保险') and name = '授权_FK'
and indid > 0
and indid < 255)
drop index 车辆保险.授权_FK
go
if exists (select 1
from sysobjects
where id = object_id('车辆保险')
and type = 'U')
drop table 车辆保险
go
if exists (select 1
from sysindexes
where id = object_id('车辆油耗') and name = '缴纳_FK'
and indid > 0
and indid < 255)
drop index 车辆油耗.缴纳_FK
go
if exists (select 1
from sysobjects
where id = object_id('车辆油耗')
drop table 车辆油耗
go
if exists (select 1
from sysindexes
where id = object_id('车辆维修') and name = '加油_FK'
and indid > 0
and indid < 255)
drop index 车辆维修.加油_FK
go
if exists (select 1
from sysobjects
where id = object_id('车辆维修')
and type = 'U')
drop table 车辆维修
go
if exists (select 1
from sysindexes
where id = object_id('车辆费用') and name = '发车_FK'
and indid > 0
and indid < 255)
drop index 车辆费用.发车_FK
go
if exists (select 1
from sysobjects
where id = object_id('车辆费用')
drop table 车辆费用
go
if exists (select 1
from sysobjects
where id = object_id('驾驶员')
and type = 'U')
drop table 驾驶员
go
/*==============================================================*/ /* Table: 出车 */ /*==============================================================*/ create table 出车 (
时间 datetime not null,
编号 numeric null,
车牌 numeric null,
constraint PK_出车 primary key nonclustered (时间)
)
go
/*==============================================================*/ /* Index: 承担_FK */ /*==============================================================*/ create index 承担_FK on 出车 (
编号 ASC
)
go
/*==============================================================*/ /* Index: 指派_FK */
/*==============================================================*/ create index 指派_FK on 出车 (
车牌 ASC
)
go/*==============================================================*/ /* Table: 车辆 */ /*==============================================================*/ create table 车辆 (
车牌 numeric not null,
信号 text not null,
constraint PK_车辆 primary key nonclustered (车牌)
)
go
/*==============================================================*/
/* Table: 车辆事故 */ /*==============================================================*/ create table 车辆事故 (
事故地点 text not null,
车牌 numeric null,
事故时间 text null,
constraint PK_车辆事故 primary key nonclustered (事故地点)
)
go
/*==============================================================*/
/* Index: 发生_FK */ /*==============================================================*/ create index 发生_FK on 车辆事故 (
车牌 ASC
go
/*==============================================================*/
/* Table: 车辆保险 */ /*==============================================================*/ create table 车辆保险 (
保险名称 text not null,
车牌 numeric null,
保险日期 datetime null,
金额 text null,
constraint PK_车辆保险 primary key nonclustered (保险名称)
)
go
/*==============================================================*/
/* Index: 授权_FK */ /*==============================================================*/ create index 授权_FK on 车辆保险 (
车牌 ASC
)
go
/*==============================================================*/
/* Table: 车辆油耗 */ /*==============================================================*/ create table 车辆油耗 (
用油量 text not null,
车牌 numeric null,
constraint PK_车辆油耗 primary key nonclustered (用油量)
)
/*==============================================================*/
/* Index: 缴纳_FK */ /*==============================================================*/ create index 缴纳_FK on 车辆油耗 (
车牌 ASC
)
go
/*==============================================================*/
/* Table: 车辆维修 */ /*==============================================================*/ create table 车辆维修 (
维修账号 numeric not null,
车牌 numeric null,
维修站点 char(10) null,
constraint PK_车辆维修 primary key nonclustered (维修账号)
)
go
/*==============================================================*/
/* Index: 加油_FK */ /*==============================================================*/ create index 加油_FK on 车辆维修 (
车牌 ASC
)
go
/*==============================================================*/
/* Table: 车辆费用 */ /*==============================================================*/
create table 车辆费用 (
金额 text not null,
车牌 numeric null,
牌照 numeric null,
constraint PK_车辆费用 primary key nonclustered (金额)
)
go
/*==============================================================*/
/* Index: 发车_FK */ /*==============================================================*/ create index 发车_FK on 车辆费用 (
车牌 ASC
)
go
/*==============================================================*/
/* Table: 驾驶员 */ /*==============================================================*/ create table 驾驶员 (
编号 numeric not null,
信息 text null,
constraint PK_驾驶员 primary key nonclustered (编号)
)
go
alter table 出车
add constraint FK_出车_承担_驾驶员 foreign key (编号)
references 驾驶员 (编号)
go
alter table 出车
add constraint FK_出车_指派_车辆 foreign key (车牌)
references 车辆 (车牌)
go
alter table 车辆事故
add constraint FK_车辆事故_发生_车辆 foreign key (车牌)
references 车辆 (车牌)
go
alter table 车辆保险
add constraint FK_车辆保险_授权_车辆 foreign key (车牌)
references 车辆 (车牌)
go
alter table 车辆油耗
add constraint FK_车辆油耗_缴纳_车辆 foreign key (车牌)
references 车辆 (车牌)
go
alter table 车辆维修
add constraint FK_车辆维修_加油_车辆 foreign key (车牌)
references 车辆 (车牌)
go
alter table 车辆费用
add constraint FK_车辆费用_发车_车辆 foreign key (车牌)
references 车辆 (车牌)
go
三、逻辑设计
逻辑设计就是把E-R图转换成关系模式,并对其进行优化。

3.1 E-R图向关系模型的转换
原则:
(1)一个实体型转换为一个关系模型,实体的属性就是关系的属性,实体的键就是关系的键;
(2)一个联系转换为一个关系模式,和该联系相连的每个实体型的键及联系的属性都转换为关系的属性。

这个关系的键分为以下三种不同的情况:
若联系为1:1,则相连的每个实体型的键均是该关系模式的侯选键。

若联系为1:n,则联系对应的关系模式的键取n端实体型的键。

若联系为m:n,则联系对应的联模式的键为参加联系的诸实体型的键的组合。

例如:
根据 E-R 图,将图中所示的实例转化为如下关系模型[6]:
司机(工号,所属部门,姓名,出生年月,性别,电话,地址)
车辆(车牌号,所属部门,负责人,型号,颜色)
终端(SIM 卡号,SOS 号,按键1,按键2,按键3,按键4,起始时间,结束时间,上报频次,定位频次)
GPS 信息(SIM 卡号,纬度,经度,上报时间)
绑定信息(车牌号,司机工号,SIM 卡号)
3.2各个数据表的表结构设计
在上述经由E-R模型得到关系模式并且得到适当的调整后,我们可以结合在需求表述中数据字典包含的数据项信息,得到数据库的表结构(具体设计各个数据表的表结构,包括表名,表中各列的字段名、数据类型、数据长度和表的主键和外键;还要考虑应该建立哪些索引以及索引的类型)。

需要指出的是,考虑到系统的统一兼顾如对数据库管理员和后续软件开发中对数据库管理以及编程引用的便利,表名和字段名的命名应该由表名的英文含义的词语为主或以其缩写字母构成;同时要为各个表名和字段名作出完整的中文文档说明。

①用户信息表
用户信息表(此表主要用于普通用户基础信息和管理员基础信息)中包括有:用户ID(id)、用户名(name)、账户名(username)、帐户密码(userpwd)、所属部门(part)、用户权限(userrule)、E-mail(emai)等。

具体设置如下:
表3.1 用户信息表
②历史用车表
历史用车表(此表用于查看车辆的历史用车记录)主要包括:ID(id)、车牌号(car-code)、车辆类型(car-type)、行程(car-xingcheng)、用车的时间(car-start、car-end)、原因(car-cause)等。

具体设置如下:
表3.2 历史用车表
驾驶员信息表(用于查看驾驶员的基本信息)主要包括:ID(id)、驾驶员姓名(car-username)、驾驶员性别(car-usersex)、驾驶员地址(car-userfrom)、驾驶员出生年月日(car-userbirthday)、所用车辆(car-user-car)等。

具体设置如下:
表3.3 驾驶员信息表
④维护保养表
维护保养表(用于查看车辆维护的具体信息)主要包括:ID(id)、车牌号(car-code)、车辆类型(car-type)、落户时间(car-time)、驾驶员(car-user)、油卡余额(car-scye)、充值总额(car-cz)、保养总额(car-jy)等。

具体设置如下:
表3.4 维护保养表
车辆信息表(用于对车辆信息的管理)等。

具体设置如下:
表3.5 车辆信息表
⑥部门表
部门表(包含整个单位里所有的部门)主要包括:ID(id)、部门(type)。

具体设置如下:
表3.6 部门表
车辆公告表(用于一些公告)主要包括:ID(id)、内容(comment)、题目(title)等。

具体设置如下:
表3.7车辆公告表
四、物理设计
数据在实际的物理设备上的存储结构和存取方法称为数据库的物理结构。

数据库的物理结构设计是利用已确定的逻辑结构及DBMS 提供的方法、
技术,以较优的存储结构、数据存储路径、合理的数据存储位置及存储分配,设计出一个高效的、可实现的物理数据库结构。

数据库的物理设计完
全依赖于给定的计算机硬件环境和数据库产品。

本系统的数据库选用的是SQL Server 2008,在设计中重点把握了以下几点:(1)选择合适的存取方法,即建立存取路径。

(2)对数据建立索引,有效提高数据存取速度,实现快速访问数据库表中的特定信息。

(3)对不同类型的用户设置不同级别的操作权限,提高安全性。

由于涉及具体软硬件环境,本文不做详细分析。

五、数据库的建立和测试
主要内容:
①建立数据库
CREATE DATABASE 车辆管理
ON
Primary
(NAME=css_Data1, FILENAME= 'C:\css\data\csmain.mdf ')
LOG ON
(NAME=css_Log, FILENAME= 'F:\css\data\cslog.ldf ')
②创建数据表,并输入相关数据
--创建车辆管理基本信息表Car
CREATE TABLE Car
(
CarName Text(50) PRIMARY KEY,
CarNo Text(50) not null,
CarUsing Text(50) not null,
CarId Text(20) not null,
CarPrice Digiter(20) not null,
CarType Text(20) not null,
CarDate DateTime(),
CarNo Text(50) not null,
Y/N Char(2),
)
③创建车辆管理基本信息表User
CREATE TABLE User
(
UserName Text(20) PRIMARY KEY,
UserPwd Text(20)) not null,
UserQuanxian var Text(20),
)
④创建车辆管理基本信息表 Chuchegengji
CREATE TABLE Chuchegengji
(
CarId Text(50) PRIMARY KEY,
UserCarPerson Text(50)not null,
UseCardepartment Text(50),
OutCarDate DateTime(50),
UseCarReason Text(50),
)
⑤创建车辆管理基本信息表Feiyong
CREATE TABLE Feiyong
(
MoneyDate Text(50) PRIMARY KEY,
MoneyCar Text(50) not null,
MoneyDepartment Text(50),
MoneyUser Text(50),
Money Text(50),
)
…还有其它的表、创建视图、索引、存储过程等(略)
【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】
感谢您的支持与配合,我们会努力把内容做得更好!。

相关文档
最新文档