货运管理系统数据库设计.docx
《货运管理系统数据库设计.docx》由会员分享,可在线阅读,更多相关《货运管理系统数据库设计.docx(26页珍藏版)》请在冰豆网上搜索。
货运管理系统数据库设计
科技大学
《数据库原理及应用》课程设计说明书
题目:
货运管理系统数据库设计
学生姓名:
佳星
学号:
1176807329
专业:
计算机科学与技术
班级:
3班
指导教师:
丁雨
第一章需求分析
1.1编写目的
改变当下物流运输的滞后现状,通过科学的数据库管理,完善物流运输行业的工作环节,提高运输效率,从而达到客户满意水平,形成一个一体化的物流运输环境。
1.2背景
背景之一:
我国国民经济高速发展
我国自改革开放以来,国民经济就走上了持续稳定高速发展的道路,年均增长8%以上,而从全国看,发展最快的又是我国东南沿海一些省市,他们利用给经济特区等一系列优惠政策,大力改革开放,发展经济,率先实现经济的超常规大幅度增长,其中出现了一批大型实力客户,像海尔、宝洁、IBM等。
经济的大幅增长,必然导致巨大的物质产品的流动,也就必然导致物流量的增加。
这是经济发展的必然规律,也是物流业成长的必然规律。
背景二:
是改革开放的结果
我国第三物流的诞生是改革开放的结果,跟改革开放有直接的关系。
首先由一些国的外资客户率先促成的,人们不难从我国第三物流的产生过程看出它有三个特点:
第一,它们是从东南沿海一些改革开放程度比较高的省市首先搞起来;第二,它首先是由像宝洁、IBM等这样一些国外的大公司促成我国的一些客户搞起来的;第三,第三物流公司的业务最先也主要是为国外这些大公司服务的物流业务。
而由点到面的发展,必然需要发达的物流来带动。
背景三:
是我国物流学发展的结果
我国第三物流的发展有一个有趣的现象,就是一旦有了一个第三物流的样板和模式,社会很快在各个地推广开来。
特别是最近几年,发展特快,上海、北京、天津等城市且不说,就一下子兴起了如中远、长江、中储、武储等好几家大型第三物流公司。
出现这种现象,可以说是中国物流学发展的结果,人们已经有了比较好的物流观念和物流学基础。
1.3系统功能分析
货物运输管理系统功能:
客户基本信息管理、员工基本信息管理、车辆基本信息管理、订单基本信息管理、运单基本信息管理。
1.3.1客户基本信息管理
为客户提供基本信息增加、修改、删除功能。
包括:
(1)客户基本信息增加:
客户录入基本信息,包括客户编号、客户名称、客户、客户性别、联系人姓名信息,形成完整的客户资料。
(2)客户基本信息修改:
客户基本信息错误或有所改变时可以进行信息的修改。
可以修改联系人姓名,修改联系人。
(3)客户基本信息删除:
客户可以删除客户基本信息。
1.3.2员工基本信息管理
为员工提供基本信息增加、修改、删除功能。
包括:
(1)员工基本信息增加:
员工录入基本信息,包括员工编号、员工姓名、员工、员工性别信息,形成完整的客户资料。
(2)员工基本信息修改:
员工基本信息错误或有所改变时可以进行信息的修改。
可以修改联系人姓名,修改联系人。
(3)员工基本信息删除:
可以删除员工基本信息。
1.3.3车辆基本信息管理
提供车辆基本信息增加、修改、查询、删除功能。
包括:
(1)车辆基本信息增加:
系统可以增加车辆基本信息,包括车辆编号、车牌号、车类型、最大载重量、购买金等信息。
(2)车辆基本信息修改:
车辆基本信息如果出错或者有所改变,系统可以对车辆基本信息的具体容进行修改。
可以修改车辆车牌号,修改车辆车类型,修改车辆载物重。
(3)车辆基本信息查询:
根据不同的条件查询车辆基本信息。
可以按车辆车牌号查询车辆基本信息,按车辆车类型查询车辆基本信息,按车辆载物重查询车辆基本信息。
(4)车辆基本信息删除:
由于车辆报废或转卖,可以删除车辆基本信息。
1.3.4订单基本信息管理
提供订单表的增加、更新、修改功能。
包括:
(1)订单基本信息增加:
客户在填写客户编号、货物名称、货物数量、订单时间、订单备注等信息后,系统检查所有信息填写正确后提示增加成功并返回订单总额和订单编号。
(2)订单基本信息更新:
系统根据订单表自动更新订单表中的信息,如订单表编号、订单数量。
(3)订单基本信息修改:
客户可根据需要修改货物名称、货物重量、等信息。
(4)订单基本信息查询:
客户或第三物流公司可根据订单编号、货物名称、货物重量等对订单进行查询。
1.3.5运单基本信息管理
提供路线基本信息增加、删除、优化、修改功能。
包括:
(1)路线基本信息增加:
第三物流公司统计订单目的地后添加路线基本信息,其中包含路线编号,出发地,目的地,预计所需时间等信息。
(2)路线基本信息删除:
根据客户退单情况或者交通天气状况的改变进行一些无效线路的删除。
(3)路线基本信息优化:
根据筛选重复路线及包含路线进行路线整合,优化计算所需最短最少路线。
(4)路线基本信息修改:
根据更改订单状况或者交通天气状况对路线信息进行修改。
包括路线出发地的修改,路线目的地的修改和路线交通工具的修改。
1.4系统功能图分析
货物运输管理系统功能图如图1.1所示。
1.5数据约束分析
(1)客户信息表的主键是customer_id,每一个编号都是唯一的。
(2)货运员工信息表的主键是transstaff_id,每一个编号都是唯一的。
(3)维修员工信息表的主键是repairstaff_id,每一个编号都是唯一的。
(4)驾驶信息表的主键是driver_id,每一个编号都是唯一的。
(5)维修信息表的主键是repair_id,每一个编号都是唯一的。
(6)客户的所有信息不允为空。
(7)车辆信息表的主键是car_id,每一个车辆编号都是唯一的。
(8)订单表的主键是order_id,每一个订单编号都是唯一的。
(9)运单信息表的主键是yundan_id,每一个运单编号都是唯一的。
(10)联系人(Telephone)不能为空值,取值围为-99
999999999,固定加地区号输入。
(11)订单一旦生成则无法删除。
(12)联系人姓名(contactname)不能为空值,不得超过20字。
(13)最大载重量(car_MaxWgt)不能为空值,数据为int。
(14)车牌号(car_licence)不能为空值,真实填写。
(15)车类型(car_type)不能为空值。
第二章数据库概念设计
对实体集及属性、联系集及属性进行定义和E-R模型设计。
2.1定义实体集及属性
(1)客户实体集customer:
客户编号(customer_id)、客户名称(customer_name)、客户(customer_phone)、客户性别(customer_sex)、联系人姓名(contactname)。
(2)货运员工实体集transstaff:
员工编号(transstaff_id)、员工姓名(transstaff_name)、员工(transstaff_phone)、员工性别(transstaff_sex)信息。
(3)维修员工实体集repairstaff:
员工编号(repairstaff_id)、员工姓名(repairstaff_name)、员工(repairstaff_phone)、员工性别(repairstaff_sex)信息。
(3)车辆实体集car:
车辆编号(car_id)、车牌号(car_licence)、车辆类型(car_type)、最大载重(car_MaxWgt)、购买金(car_money)。
(4)订单实体集dingdan:
订单编号(order_id)、货物名称(gname)、货物数量(gnum)、送货日期(senddate)、送货客户(sendcustomer)。
(5)运单实体集yundan:
运单编号(yundan_id)、订单编号(order_id)、出车司机(driver)、签收日期(recivedate)、出车日期(chuchedate)、回车日期(huichedate)。
2.2定义联系集及属性
(1)维修信息repair:
维修编号(repair_id)、车牌号(car_licence)、送修日期(songxiudate)、完修日期(wanxiudate)、修理地点(repairadress)。
(2)驾驶信息drive:
驾驶编号(driver_id)、车辆编号(car_id)、驾驶司机(driver)、出车日期(chuchedate)、出车路线(chucheluxian)。
2.3E-R模型设计
2.3.1实体E-R模型设计
(1)客户E-R模型如图2.1所示。
图2.1客户E-R模型
(2)车辆E-R模型如图2.2所示。
图2.2车辆E-R模型
(3)维修员工E-R模型如图2.3所示。
图2.3维修员工E-R模型
(4)货运员工E-R模型如图2.4所示。
图2.4货运员工E-R模型
(5)订单信息E-R模型如图2.5所示。
图2.5订单信息E-R模型
(6)运单信息E-R模型如图2.6所示。
图2.6运单信息E-R模型
2.3.2总E-R模型设计
货物运输系统总ER图如图2.7所示。
图2.7总E-R模型
第三章逻辑设计
本次设计的数据库在SQLServer2008上实现,将概念结构设计中的E-R图转换成SQLSever2008支持的关系数据模型。
3.1基本表设计
关系设计包括转换后所得表和函数依赖关系,转换后为:
(1)客户表如表3.1所示。
表3.1客户表
数据项
数据类型
别名
是否为空
约束
取值含义
customer_id
int
客户编号
Notnull
主键
customer_name
varchar(50)
客户名称
Notnull
真实填写
customer_phone
varchar(11)
客户
Notnull
Customer_sex
tinyint
客户性别
Notnull
contactname
Varchar(20)
联系人姓名
Notnull
(2)车辆表如表3.2所示。
表3.2车辆表
数据项
数据类型
别名
是否为空
约束
取值含义
Car_id
int
车辆编号
Notnull
主键
Car_licence
Varchar(20)
车牌号
Notnull
真实填写
Car_type
Varchar
(20)
车辆型号
null
6-12位,由字母和数字组成
Car_MaxWgt
int
最大载重
Notnull
Car_money
varchar(20)
购买金
Null
(3)货运员工表如表3.3所示。
表3.3货运员工表
数据项
数据类型
别名
是否为空
约束
取值含义
transstaff_id
int
货运员工编号
Notnull
主键
transstaff_name
varchar(20)
货运员工姓名
Notnull
transstaff_phone
vrachar(11)
货运员工
Notnull
transstaff_sex
tinyint
货运员工性别
Notnull
(4)维修员工表如表3.4所示。
表3.4维修员工表
数据项
数据类型
别名
是否为空
约束
取值含义
Repairstaff_id
int
维修员工编号
Notnull
主键
Repairstaff_name
Varchar(20)
维修员工姓名
Notnull
Repairstaff_phone
Vrachar(11)
维修员工
Notnull
Repairstaff_sex
tinyint
维修员工性别
Notnull
(5)订单信息表如表3.5所示。
表3.5订单信息表
数据项
数据类型
别名
是否为空
约束
取值含义
order_id
int
订单编号
Notnull
主键
gname
varchar(20)
货物名称
Notnull
gnum
varchar(20)
货物数量
null
senddate
date
送货日期
Null
sendcustomer
Varchar(50)
送货客户
null
(6)运单信息表如表3.6所示。
表3.6运单信息表
数据项
数据类型
别名
是否为空
约束
取值含义
yundan_id
int
运单编号
Notnull
主键
order_id
int
订单编号
Notnull
drive
varchar(20)
出车司机
Notnull
recivedate
date
签收日期
null
chuchedate
date
出车日期
null
huichedate
date
回车日期
null
(7)驾驶信息表如表3.7所示。
表3.7驾驶信息表
数据项
数据类型
别名
是否为空
约束
取值含义
driver_id
int
驾驶编号
Notnull
主键
driver
Varchar(20)
驾驶司机
Notnull
car_id
int
驾驶车辆编号
Notnull
外键
chuchedate
date
出车日期
null
chucheluxian
Varchar(20)
出车路线
null
(8)维修信息表如表3.8所示。
表3.8维修信息表
数据项
数据类型
别名
是否为空
约束
取值含义
repair_id
int
维修编号
Notnull
主键
car_licence
Varchar(20)
车牌号
Notnull
songxiudate
date
送修日期
Notnull
检查约束songxiudatewanxiudate
date
完修日期
null
repairadress
Varchar(50)
维修地点
null
第四章数据库的实现
4.1数据库的创建
createdatabaseTransdb
onprimary
(name='Transdb',
filename='D:
\ProgramFiles\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\Transdb.mdf',
size=5,
maxsize=20,
filegrowth=1)
logon
(name='Translog',
filename='D:
\ProgramFiles\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\Translog.ldf',
size=2,
maxsize=8,
filegrowth=1)
Go
4.2数据表的创建
--建立货运员工表
createtabletransstaff
(
transstaff_idintprimarykey,
transstaff_namevarchar(20)notnull,
transstaff_sextinyintnotnulldefault
(1),
transstaff_phonevarchar(11)notnull
);
--建立维修员工表
createtablerepairstaff
(
repairstaff_idintprimarykey,
repairstaff_namevarchar(20)notnull,
repairstaff_sextinyintnotnulldefault
(1),
repairstaff_phonevarchar(11)notnull
);
--建立车辆信息表
createtablecar
(
car_idintprimarykey,
car_licencevarchar(20)notnull,
car_typevarchar(20),
car_MaxWgtintnotnull,
car_moneyvarchar(20)
);
--建立客户信息表
createtablecustomer
(
customer_idintprimarykey,
customer_namevarchar(20)notnull,
customer_sextinyintnotnulldefault
(1),
customer_phonevarchar(11)notnull,
contactnamevarchar(50)notnull
);
--建立订单信息表
createtabledingdan
(
order_idintprimarykeynotnull,
gnamevarchar(20)notnull,
gnumvarchar(20),
senddatedate,
sendcustomervarchar(20)
)
--建立运单信息表
createtableyundan
(
yundan_idintprimarykeynotnull,
order_idintnotnull,
drivervarchar(20)notnull,
recivedatedate,
chuchedatedate,
huichedatedate,
);
--建立驾驶信息表
createtabledrive
(
driver_idintprimarykeynotnull,
drivervarchar(20)notnull,
car_idint,
chuchedatedate,
chucheluxianvarchar(20)
);
--建立维修信息表
createtablerepair
(
repair_idintprimarykeynotnull,
car_licencevarchar(20)notnull,
songxiudatedate,
wanxiudatedate,
repairadressvarchar(50)
);
4.3数据录入
--插入货运员工数据
insertintotransstaff(transstaff_id,transstaff_name,transstaff_phone,transstaff_sex)
values('1','树森',,'1'),
(2,'华宇',,'0'),
(3,'生友',,'1'),
(4,'明全',,'1'),
(5,'继国',,'1'),
(6,'唐晓敏',,'0')
select*fromtransstaff
--插入维修员工数据
insertintorepairstaff(repairstaff_id,repairstaff_name,repairstaff_phone,repairstaff_sex)
values('1','勇',,'1'),
(2,'波',1824724295,'0'),
(3,'相光',,'1'),
(4,'伦',,'1'),
(5,'建军',,'1'),
(6,'敏',,'0')
select*fromrepairstaff
--插入客户信息数据
insertinto
customer(customer_id,contactname,customer_phone,customer_sex,customer_name)
values(1,'强',,'1','市鑫达汽车销售有限公司'),
(2,'过',,'0','长安福特有限公司'),
(3,'伟伟',,'1','日报印刷厂'),
(4,'伯伦',,'1','力帆摩托有限公司'),
(5,'建军',,'1','新光家具有限公司'),
(6,'晓敏',,'0','远大纸业有限公司')
select*fromcustomer
--插入车辆信息数据
insertintocar(car_id,car_licence,car_MaxWgt,car_money,car_type)
values(1,'蒙B-12345',28,220000,'EQ50321'),
(2,'蒙B-12445',30,240000,'EQ50321'),
(3,'蒙B-12455',28,220000,'EQ50321'),
(4,'蒙B-12345',30,240000,'EQ50321'),
(5,'蒙B-15445',20,160000,'EQ50301'),
(6,'蒙B-14345',20,160000,'EQ50301')
select*fromcar
--插入驾驶信息数据
insertintodrive(driver_id,driver,car_id,chuchedate,chucheluxian)
values(1,'树森',5,'2013-04-25','-北京'),
(2,'华宇',2,'2013-07-15','-呼市'),
(3,'继国',3,'2013-05-25','-')
select*fromdrive
--插入维修信息数据
insertintorepair(repair_id,car_licence,songxiudate,wanxiudate,repairadress)
values(1,'蒙B-12345','2013-03-25','2013-04-01','公司维修部'),
(3,'蒙B-12455','2013-06-25','2013-07-01','公司维修部'),
(5,'蒙B-15445','2013-03-25','2013-04-11','公司维修部')
select*fromrepair
--插入订单信息数据
insertintodingdan(order_id,gname,gnum,senddate,sendcustomer)
values(123456789,'双面纸','40件','2013-02-23','远大纸业有限公司'),
(789456123,'床垫','800','2013-03-05','新光家具有限公司'),
(789454223,'木桌','500','2013-05-05','新光家具有限公司'),
(789456321,'福特汽车','20辆','2013-04-05','长安福特有限公司')
select*fromdingdan
insertintoyundan(yundan_id,order_id,drive,recivedate,chuchedate,huichedate)
v