收费停车场管理系统数据库设计-数据库课程设计论文.doc
数据库原理与应用数据库原理与应用课程设计课程设计收费停车场管理系统数据库设计收费停车场管理系统数据库设计 . . 2 / 33目录目录1.1.引言引言 3 32.2.需求分析阶段需求分析阶段 3 32.1 引言 32.2 任务 32.2.1 需求分析阶段的目标 32.2.2 具体任务 42.2.3 结果 43.3.概念设计阶段概念设计阶段 6 63.1 目标 63.2 设计过程 73.3 阶段成果 74.4.逻辑设计阶段逻辑设计阶段 8 84.1 目标 84.2 任务与结果 84.2.1 数据组织 8图图 9.9.系统功能模块图系统功能模块图 11115.5.物理设计阶段物理设计阶段 11115.1 目标 115.2 任务 115.2.1 数据存取方面 125.2.2 功能模块图 125.3 结果 145.3.1 存储过程 145.3.2 触发器 146.6.数据库实施阶段数据库实施阶段 15156.1 目标 156.2 任务与结果 156.2.1 建立数据库 157.7.数据库调试与测试数据库调试与测试 15158.8.收获与体会收获与体会 1515 . . 3 / 331.引言21 世纪以来,现代化产业高速发展,汽车作为日常交通工具已经普与社会的每一个角落,给人们的日常生活带来了极大的便利。但是随着汽车拥有量的急剧增加,车辆停放的问题随之而来,如果没有合理的停放规则和秩序,势必引起许多不必要的麻烦,反而给生活带来不便。停车场作为交通设施的组成部分,随着交通运输的繁忙和不断发展,人们对其管理的要求也不断提高,都希望管理能够达到方便、快捷以与安全的效果。然后目前的许多停车场还处于一种纯人工的管理的模式,在车辆的管理上效率低下,而且十分容易出错。因此需要一种适宜的管理系统来解决这些问题,达到高效,简易的效果,给广大人民的出行带来方便。本论文旨在设计一个简单、高效且实用的停车场管理系统,希望能解决目前管理上存在的一些问题。系统的设计过程经过了需求分析阶段、概念设计阶段、逻辑结构设计阶段、数据库物理设计阶段、数据库的实施和维护以与系统的调试与测试,最终完成了一个比较完善的收费停车场管理系统。2.2.需求分析阶段2.1 引言需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。目前停车场的管理方式比较落后,已经不能适应现代社会的实际需求,本系统的开发能给管理上带来新鲜的活力,提高管理的效率,具有较高的实用性和开发价值。2.2 任务2.2.1 需求分析阶段的目标通过调查了解分析停车管理的现状,弄清用户对开发的数据库应用系统的确切要求,以与停车场管理的流程,系统的具体功能和数据库中数据信息。2.2.2 具体任务 . . 4 / 33(1)处理对象系统处理的对象包括车辆信息、固定车位信息、自由车位信息、停车车辆信息以与收费记录等五个方面。即固定车位信息:车位编号、车位位置、车牌、车主、车辆品牌、车辆颜色、车辆照片、 、联系方式、车位余额;自由车位信息:车位编号、车位位置;车辆信息:车牌、车辆品牌、车辆颜色;停车信息:车位编号、车牌、进入时间、离开时间、时间段、车位类型、在位情况、收费费率;收费记录:车位编号、车牌、停车时间、停车费用、发票编号。(2)处理功能要求整个系统具体包括三个子系统,分别为:停车处理子系统、车位综合管理子系统以与收费子系统。处理的功能包括:车辆信息的查询以与更新;空闲车位信息的查询;固定车位信息的查询;进出车辆记录的更新和收费信息的查询与更新等。(3)安全性与完整性要求 安全性可以通过视图机制来完成,对不同用户设置不同权限,不同的用户只能访问授权的视图,这样可以提高一定的程度的安全性。还可以通过存取控制机制:即定义用户权限,并将用户权限登记到数据字典中以与合法的权限检查来保障安全性。 完整性可以通过声明完整性,即在定义表时声明数据完整性和过程完整性,在服务器端编写触发器来实现。2.2.3 结果(1)体会和收获通过对现在的停车场管理状况的调查,发现停车场管理缺少适宜的管理系统,并了解了一下管理的大致流程。与此同时通过网络搜索查找现行的停车场管理系统,根据这两者综合来进行需求分析。调查时需要较强的信息捕捉能力以与事后的总结与思考,同时学会用网络较快较准确地搜索到需要的资料是很关键的。(2)业务流程图见附录 1(3)数据流图见附录 2(4)数据字典 . . 5 / 33数据项:表 2-1 数据项说明数据项编号数据项编号数据项名数据项名数据项含义数据项含义与其它数据项的关系与其它数据项的关系存储结构存储结构别名别名DI-1Cwno车位编号char(10)编号DI-2Carno车牌char(10)车牌DI-3Carname车主char(10)DI-4Carcolor车辆颜色char(4)颜色DI-5Carpho车辆照片bit照片DI-6Caraddchar(20)地址DI-7Cartel联系方式char(20)DI-8Carat在位情况char(4)DI-9Carin进入时间datetimeDI-10Carout离开时间datetimeDI-11Carmon车位余额float余额DI-12Montime收费费率float费率DI-13Moneypay停车费用float收费DI-14Cwtype车位类型char(4)DI-15Cartime停车时间float时间DI-16Piece发票编号char(20)Dl-17Carsb车辆品牌char(10)车名Dl-18Cwpace车位位置char(10)位置Dl-19Timetype时间段char(6)数据结构:表 2-2 数据结构数据结数据结构编号构编号数据结构名数据结构名数据结构数据结构定义定义组成组成DS-1Fixed固定车位信息Cwno、Cwpace、Carno、Carname、Carcolor、CarsbCarpho、Caradd、Cartel、Carmon . . 6 / 33数据结数据结构编号构编号数据结构名数据结构名数据结构数据结构定义定义组成组成DS-2Free自由车位信息Cwno、CwpaceDS-3Stop停车信息Cwno、Carno、Carat 、Carin、Carout、Timetype、Cwtype、MontimeDS-4Moneynote收费记录Cwno、Carno、Cartime、Moneypay、PieceDS-5Car车辆信息Carno、Carsb、Carcolor(5)处理逻辑描述表 2-3 处理逻辑描述处理编号处理编号处理功能处理功能处理过程处理过程PR-1判断用户查询涉与的功能模块固定车位信息模块、自由车位信息模块、停车车辆信息模块、进出车辆记录信息模块、收费记录模块:先确定查询所涉与的功能模块;然后,确定要查询的容,确定查询数据流向;最后显示查询结果。PR-2判断用户修改要涉与的模块,同时把相应的修改数据传到相应的模块之中固定车位信息模块、自由车位信息模块、停车车辆信息模块、进出车辆记录信息模块、收费记录模块:先确定更新所涉与的功能模块;然后,把更新信息传送到相应的模块中;最后,进行相应的更新操作。3.概念设计阶段3.1 目标概念结构设计师是将需求分析得到的用户需求抽象为信息结构即概念模型的过程。它是整个数据库设计的关键。概念结构设计步骤分为两步:第一步是抽象数据并设计局部视图,第二步是集成局部视图,得到全局的概念结构。3.2 设计过程(1)选择中层数据流为切入点,通常选择实际系统中的子系统;(2)设计分 E-R 图,即各子模块的 E-R 图; . . 7 / 33(3)生成初步 E-R 图,通过合并方法,做到各子系统实体、属性、联系统一;(4)生成全局 E-R 图,通过消除冲突等方面。通过分析系统的业务流图与数据流图,得到系统围绕“车辆”与“车位”之间的相互关系。3.3 阶段成果分 E-R 图:全局 E-R 图:E-R 图属性如下所示:车 辆:Car (Carno,Carsb,Carcolor) Carno 是主码;固定车位:Fixed(Cwno,Carpace,Carno,Carname,Carcolor,Carpho,Caradd,Cartel,Carmon);自由车位:Freed(Cwno,Carpace) Cwno 是主码;收 费:Moneynote(Cwno,Carno,Cartime,Moneypay,Piece) Cwno 和 Carno 是外码;停 车:Stop (Cwno,Carno,Carin,Carout,Timetype,Cwtype,Montime) Cwno 和 Carno 是外码;4.逻辑设计阶段 . . 8 / 334.1 目标逻辑结构设计的任务是把概念结构设计阶段设计好的基本 E-R 图转换为与选用 DBMS 产品所支持的数据模型相符合的逻辑结构。逻辑结构设计时一般要分为 3 步进行:将概念结构转换为一般的关系、网状、层次模型;将转换来的关系、网状、层次模型向特定 DBMS 支持下的数据模型转换;对数据模型进行优化。4.2 任务与结果4.2.1 数据组织(1)将 E-R 模型转换为关系模型转换的原则是:一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:一个 1:1 联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以与联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。一个 1:n 联系可以转换为一个独立的关系模式,也可以与 n 端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以与联系本身的属性均转换为关系的属性,而关系的码为 n 端实体的码。 一个 m:n 联系转换为一个关系模式。与该联系相连的各实体的码以与联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。 3 个或 3 个以上实体间的一个多元联系可以转换位一个关系模型。与该多元联系相连的各实体的码以与联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分。 具有相同码的关系模式可合并。E-R 图向关系模型转换的结果是:车 辆:Car (Carno,Carsb,Carcolor) Carno 是主码;固定车位:Fixed(Cwno,Carpace,Carno,Carname,Carcolor,Carpho,Caradd,Cartel,Carmon)自由车位:Freed(Cwno,Carpace) Cwno 是主码;收 费:Moneynote(Cwno,Carno,Cartime,Moneypay,Piece) Cwno 和 Carno 是外码;停 车:Stop (Cwno,Carno,Carin,Carout,Timetype,Cwtype,Carat,Montime) Cwno 和 Carno是外码;(2)模型优化关系模型 Car 和 Moneynote 由于没有出现部分函数依赖和传递函数依赖,所以以上模型已经达到 3NF。但是关系模型 Stop 存在函数传递依赖 CarinTimetype,Timetype-/-Carin . . 9 / 33TimetypeMontime,因此应该将关系模型 Stop 转换为 3NF,优化后的关系模型为“停车:Stop(Cwno,Carno,Carin,Carout,Timetype)与费率信息:Moneyt(Timetype,Montime)。关系模型 Fixed 和 Freed 之间存在数据冗余,因此可以将两个关系模型合并为一个关系模型FFed,并添加识别信息,合并后的关系模型为Ffed(Cwno,Carpace,Cartype,Carno,Carname,Carsb,Carcolor,Carpho,Caradd,Cartel,Carmon)模型优化后的关系模型为车辆:Car (Carno,Carsb,Carcolor) Carno 是主码;车位:Ffed(Cwno,Cwpace,Cwtype,Carno,Carname,Carsb,Carcolor,Carpho,Caradd,Cartel,Carmon);收费:Moneynote(Cwno,Carno,Cartime,Moneypay,Piece) Cwno 和 Carno 是外码,被参照表是Ffed 和 Car;停车:Stop(Cwno,Carno,Carin,Carout,Carat,Timetype);费率信息:Moneyt(Timetype,Montime)。(3)数据库模式定义表 4-1 车辆信息列名列名数据类型数据类型是否为主码是否为主码是否为外码是否为外码取值围取值围可否为空可否为空含义说明含义说明CarnoChar是否否车牌CarsbChar否否可车辆品牌CarcolorCarcolorChar否否可车辆颜色表 4-2 车位信息列名列名数据类型数据类型是否为主码是否为主码是否为外码是否为外码取值围取值围可否为空可否为空含义说明含义说明CwnoChar是否否车位编号CwpaceChar否否否车位位置CwtypeChar否否否车位类型CarnoChar否否可车牌CarnameChar否否可车主CarsbChar否否可车牌CarcolorChar否否可车辆颜色CarphoBit否否可车辆照片CaraddChar否否可CartelChar否否可联系CarmonCarmonFloat否否100200可车位余额表 4-3 停车信息列名列名数据类型数据类型是否为主码是否为主码是否为外码是否为外码取值围取值围可否为空可否为空含义说明含义说明CwnoChar否是否车位编号CarnoChar否是否车牌 . . 10 / 33CaratBit否否否在位情况Carindatetime否否否进入时间Caroutdatetime否否可离开时间TimetypeTimetypeChar(6)是否高峰、一般、低谷否时间段表 4-4 费率信息列名列名数据类型数据类型是否为主码是否为主码是否为外码是否为外码取值围取值围可否为空可否为空含义说明含义说明TimetypeChar(6)是否高峰、一般、低谷否时间段MontimeMontimeFloat否否大于 0否收费费率表 4-5 收费记录列名列名数据类型数据类型是否为主码是否为主码是否为外码是否为外码取值围取值围可否为空可否为空含义说明含义说明CwnoChar否是否车位编号CarnoChar否是否车牌CartimeFloat否否大于 0否停车时间列名列名数据类型数据类型是否为主码是否为主码是否为外码是否为外码取值围取值围可否为空可否为空含义说明含义说明MoneypayFloat 否否大于 0可停车费用PiecePieceChar否否可发票编号(4)用户子模式定义表 4-6 用户子模式定义序号序号视图名称视图名称视图定义视图定义视图作用视图作用备注备注V-1Carinformation车位号,车牌号查询在位车辆信息V-2Carfixedtion车位号,车牌号,车主,车名,车色,车照,地址,余额查询在固定车位停车的车辆信息V-3carfreetion车位号,车牌号,车名,车色查询在自由车位停车的车辆信息V-4Carinouttion车位号、车牌号、进入时间、离开时间、时间段查询车辆进出记录作用与 V-1 不一样V-5moneytime时间段、费率查询与修改收费费率V-6Moneytion总收费查询停车场总收费v-7v-7Carmoney车牌号、缴费总额查询每辆车的缴费额(5)功能模块图 . . 11 / 33图 9.系统功能模块图5.物理设计阶段5.1 目标物理设计就是为一个给定的逻辑数据结构模型选取一个最适宜应用要求的物理结构的过程。物理设计通常分为两步:确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;对物理结构进行评价,评价的重点是时间和空间效率。如果评价结果满足原设计要求,则可进入到物理实施阶段,否则,就需要重新设计或修改物理结构,有时甚至要返回逻辑设计阶段修改数据模型。物理设计的容包括:为关系模型选择存取方法;设计关系、索引等数据库文件的物理存储结构。5.2 任务5.2.1 数据存取方面由于经常需要判断是否有空余车位,所以要经常查询停车信息,因此在 Stop 表的 Cwno 上建立聚簇索引以提高查询效率。为了方便查询各个车辆的收费记录,在 Moneynote 表的 Carno 上建立聚簇索引以提高查询效率5.2.2 功能模块图 . . 12 / 33(1)车位信息查询与更新模块图:图 10.车位信息查询与更新模块图(2)停车信息查询与更新模块图:图 11.停车信息查询与更新模块图(3)收费费率查询与更新模块图: . . 13 / 33 图 12.收费费率查询与更新模块图5.3 结果5.3.1 存储过程表 5-1 存储过程编号编号存储过程名称存储过程名称定义定义作用作用P-1Sof1详见附录 3-16查询固定车位总数P-2Sof2详见附录 3-17查询自由车位总数P-3Sof3详见附录 3-18查询空闲自由车位数目P-4Sof4详见附录 3-19查询车位总数P-5Sof5详见附录 3-20在 Moneynote 中查询任意车辆的收费P-6Sof6详见附录 3-21在 Car 中插入一元组P-7Sof7详见附录 3-22在 Ffed 中插入一元组P-8Sof8详见附录 3-23在 Stop 中插入一元组P-9Sof9详见附录 3-24在 Moneynote 中插入一元组P-10Sof10详见附录 3-25查询车辆 Car 信息P-11Sof11详见附录 3-26查询车位 Ffed 信息P-12Sof12详见附录 3-27查询停车 Stop 信息P-13Sof13详见附录 3-28查询收费 Moneynote 信息P-14Sof14详见附录 3-29删除一条收费 Moneynote 记录 . . 14 / 33P-15Sof15详见附录 3-30修改固定车位车辆余额 Carmon5.3.2 触发器表 5-2 触发器编号编号存储过程名称存储过程名称定义定义作用作用T-1insert_or_update_carmon详见附录 3-31限定余额值必须大于等于 120 的触发器P-2tri_moneypay详见附录 3-32限制修改 MONEYNOTE 于 50 的触发器P-3tri_del_mo详见附录 3-33限制删除 moneynote 表于 70 的数据6.数据库实施阶段6.1 目标数据库实施阶段就是用 DBMS 提供的数据定义语言与其他实用程序将数据库逻辑设计和物理设计结果严格描述出来,成为 DBMS 可以承受的源代码,再经过调试产生目标模式,然后组织数据入库。数据库实施阶段包括两项重要的工作,一项是数据的载入,另一项是应用程序的编码和调试。6.2 任务与结果6.2.1 建立数据库(1) 建立数据库、数据表、视图、索引等(a)建立数据库定义语句见附录 3-1;(b)建立数据表定义语句见附录 3-2 至 3-6;(c)建立视图定义语句见附录 3-7 至 3-13;(d)建立索引定义语句见附录 3-14 至 3-15。(2) 数据入库 . . 15 / 33系统包括共有 5 基本表,因此事先在 Excel 中录入数据,然后使用 SQL Server 2000 数据导入/导出向导功能,直接将数据导入到相应的基本表中。7.数据库调试与测试对收费停车场管理系统的具体功能进行测试,测试包括:(1)测试各视图的功能,测试结果见附录 4-1;(2)测试各存储过程的功能,测试结果见附录 4-2;(3)测试各触发器的功能,测试结果见附录 4-3。8完毕语通过此次数据库的课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,从建立数据开始,对灵据库设计理念与思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R 图的表示,数据字典的创建,懂得了不少有关数据库开发过程中的知识,在实验中建表,与其关系模式,关系代数的建立与理解,将 SQL 语的查询语句用得淋漓尽致,增强了自己在数据库中应用 SQL 语言的灵活性,其中包括,插入、删除、修改、查询,牵涉表和表之间的联系,主建与外主键的定义,约束项的设置,使逻辑更严密,在学习过程中,我也能过上网查了不少资料,也看了一些别人设计的图书馆管理信息系统的设计报告,学以致用,自我创新,独立完成了这份自己的报告,从中在学到用,从用又到学,不断修改,系统更新。虽然不能达到完善系统,但也做到了尽善尽美,加强理论学习对完善系统会有很多帮助,不管怎么说,对这次做的课程设计自己觉得还算满意。附录附录 1.1.业务流程图业务流程图 . . 16 / 33图 1.停车处理子系统业务流程图图 2.车位综合管理子系统业务流程图图 3.收费子系统业务流程图 . . 17 / 33附录附录 2.2.数据流程图数据流程图顶层数据流程图图 4.收费停车场管理系统顶层数据流图 . . 18 / 33第二层数据流图图 5.收费停车场管理系统第一层数据流图第三层数据流 . . 19 / 33图 6.收费停车场管理系统第二层数据流图(1)图 7.收费停车场管理系统第二层数据流图(2) . . 20 / 33图 8.收费停车场管理系统第二层数据流图(3)附录附录 3.3.数据库定义语句数据库定义语句A1.建立数据库create database Parking;B.建立数据表2.建立车辆数据表:create table Car(Carno char(10) primary key, Carsb char(10), Carcolor char(4);3.建立车位信息表:create table Ffed . . 21 / 33(Cwno char(10) primary key, Cwpace char(10) not null, Cwtype char(4) not null, Carno char(10), Carname char(10), Carsb char(10), Carcolor char(4), Carpho bit, Caradd char(20), Cartel char(20), Carmon float check(Carmon=100 and Carmon0), Piece char(10), foreign key(Cwno) references Ffed(Cwno), foreign key(Carno) references Car(Carno); . . 22 / 33附录附录 4.4.数据库测试与功能验证数据库测试与功能验证1.视图功能测试V-1Carinformation车位号,车牌号查询在位车辆信息V-2Carfixedtion车位号,车牌号,车主,车名,车色,车照,地址,余额查询在固定车位停车的车辆信息V-3carfreetion车位号,车牌号,车名,车色查询在自由车位停车的车辆信息V-4Carinouttion车位号、车牌号、进入时间、离开时间、时间段查询车辆进出记录V-5moneytime时间段、费率查询与修改收费费率V-6Moneytion总收费查询停车场总收费v-7v-7Carmoney车牌号、缴费总额查询每辆车的缴费额V-1.查询在固定车位停车的车辆信息的视图功能验证V-2.查询车辆进出记录的视图功能验证 . . 23 / 33v-3 查询在自由车位停车的车辆信息的视图功能验证V-7 查询每辆车的缴费总额的视图功能验证 . . 24 / 33V-1 查询在位车辆的所有信息V-6 查询停车场总收费的视图功能验证 . . 25 / 33存储过程的验证 . . 26 / 33 . . 27 / 33 . . 28 / 33 . . 29 / 33 . . 30 / 33 . . 31 / 33 . . 32 / 33成绩评定表指导教师评语成绩签字:年 月 日 . . 33 / 33