机票预定系统数据库设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库课程设计任务书
题目机票预定系统数据库设计数据库的设计与实现起讫日期2009年12月28日至2010年1月13日
学生姓名马楠专业班级学号R英语073班12号所在院系软件学院
指导教师李媛媛职称讲师
所在单位软件开发与测试教研室
2009年12月27日
摘要
随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费着也越来越多,预定查询系统因此在各机票预定网点中的作用也越显重要,因此,开发一套具有完整的存储,查询,核对,打印机票功能的实时机票预定系统更现紧迫。
机票预定系统应克服存储乘客信息少,查询效率低下等问题外,更重要的是其安全性,可靠性,这关系到航班和乘客的安全及准确,本系统因面向广大机票预定网点,因此要能在售票网点中普及,则需要开发一个功能全,价格能被顾客所接受的系统。
关键字:机票预定系统;订票系统;退定系统;航班查询
目录
第一章引言 0
1.1 课题简介 0
1.2 设计目标与任务 0
第二章需求分析 (1)
2.1 需求分析的任务 (1)
2.2 需求分析的过程 (1)
2.3 需求分析阶段阶段成果 (2)
第三章概念结构设计 (5)
3.1 概念结构设计的方法与步骤 (5)
3.2数据抽象与局部视图设计................................................. 错误!未定义书签。
3.3视图的集成 (6)
第四章逻辑结构设计 (9)
4.1 E-R图转化为关系模型 (9)
4.2数据模型的优化 (9)
4.3数据库的结构 (11)
4.4功能模块图 (13)
第五章逻辑结构物理设计 (14)
第六章逻辑结构的实施 (16)
总结 (25)
参考文献 (26)
第一章引言
鉴于飞机对安全性要求较高,如何提高机票订购效率,而且也要保证整个航班的安全性,对机票预定系统的研究有很必要。
1.1 课题简介
目前社会已经进入一个高速运作的时代,在交通方面要求更高,时间概念很强,为了满足人们这一要求,各个交通部门都在研发更加方便,快捷的业务办理方式。
在航空方面,对业务办理要求更高,更严。
因此,就机票预定系统的研发是很重要的,目的在于开发出一个更有效,安全性更好的系统。
1.2 设计目标与任务
机票预定系统的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的机票预定系统,实现航空公司的机票销售的自动化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息。
主要任务是进行底层数据库设计,这是整个系统开发的关键之处。
第二章需求分析
2.1 需求分析的任务
充分了解客户的需求,以及整个预定业务的流程,仔细分析各个子系统,做好各个子系统之间数据如何传送等问题,形成需求分析说明书。
主要从处理对象、功能分析和安全性以及完整性三个方面去开展研究。
并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。
2.2 需求分析的过程
2.2.1处理对象分析
机票预定系统主要是针对客户而言的,至于客户是通过何种方式去预定,对此并没有做更深入的研究。
总的来讲,机票预定系统要处理的对象就是客户信息和系统信息。
细分后就是订票信息、退票信息、查询信息以及有关部门的通缉信息。
对每个信息都有相应的数据,个信息之间数据都存在一定的关系。
就订票信息涉及数据说明如下:航班号(HBID)、乘客姓名(LKName)、乘客证件号(LKID)、订票数(JYSL)等等。
2.2.2具体功能分析
机票预定系统有三个子系统组成:订票系统、查询系统和退票系统,分别对应了订票功能、退票功能和查询功能。
订票功能中要有航班审查和身份验证,要有这两个处理过程,最后,登记领取取票凭证;退票功能实现比较简单,只要检验是否是可退机票即可,在退票过后要对订票信息作修改,这是该功能中最重要的一点;查票功能设计起来比较简单,但它的功能十分强大,以后对不同的查询需求都要有相应的处理结果,对此阶段没有更进一步的研究,具体功能实现还有待完善。
2.2.3安全性和完整性要求分析
为了保证航班信息不会出现重大差错,业务员只能由售票和查询机票的权限,对于航班信息更改的权限要给航空公司的主管。
整个机票预定系统的数据是共享的。
然而,从系统开发的角度上看,共享会给设计和调试带来困难。
因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。
这样,也能提供系统的强壮性,对安全性也有一定的帮助。
由于系统的数据是共享的,在不同的预定地点,机票是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。
要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。
对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。
2.3 需求分析阶段阶段成果
2.3.1业务流程分析
经过可行性分析和初步需求调查,抽象出该系统业务流程图。
图2---1 业务流程图
(1)查询处理
名称:机票查询
输入:查询航班信息
输出:查询结果
处理:在所涉及的表中查询所需记录
(2)订票处理
名称:机票订购
输入:输入订票信息
输出:订票结果
处理:如果成功,对相应的数据进行更改,否则不修改
(3)退票处理
名称:机票退订
输入:机票信息
输出:退票结果
处理:如果退定成功,对相应的数据进行修改,否则不修改2.3.2数据字典
(1)数据项
表2----1 数据项
数据项数据项含义数据类型宽度与其他数据项的
逻辑关系
可否为
空值
是否为主(P)/
外(F)键
HBID航班号char10NO YES(P) JX航班名称char10NO
MDD航班目的地char10NO
CFD航班出发地char10NO
JG票价int8
QFSJ起飞时间time NO
DDSJ到达时间time NO
数据项数据项含义数据类型宽度与其他数据项的
逻辑关系
可否为
空值
是否为主(P)/
外(F)键
HARQ航班日期date
YS剩余票数int4
LKID旅客身份证char21NO YES(P)
LKTEL 旅客联系电
话
char15
LKSEX旅客性别char4NO LKNAME旅客姓名char12NO JYSL交易数量Int3
JYLX交易类型char4NO
JYZE交易总额float8订票数*单张票
价
NO
YZZT验证状态char4NO
TJID 嫌疑人证件
号
char21NO YES(P)
TJNAME嫌疑人名char12NO TJSex嫌疑人性别char2NO
(2)数据结构
表2-----2 数据结构
数据结构名含义说明组成
旅客信息旅客的个人信息,用于对
旅客的确认
旅客证件号,旅客姓名,旅客性别,旅客联系电话
旅客订票信息已订票的旅客的记录旅客证件号,航班号,订票数量,取票状态
航班信息旅客的航班信息,根据旅
客的旅行时间和目的地确
定
航班号,飞机型号,航班状态,航班目的地,航班
时间,票价,额定人数,余票数
交易信息订票/退票结果旅客证件号,航班号,交易类型,交易总额验证信息身份验证的信息验证状态,嫌疑人证件号,旅客证件号
第三章概念结构设计
3.1 概念结构设计的方法与步骤
1.概念结构设计的方法
概念设计阶段我采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。
对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。
2.概念结构设计的步骤
第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。
因此我们先逐一的设计分E-R图。
第二步是进行视图的集成:各子系统的E-R图设计好之后,下一步就是要将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图一次集成,另一种是一次集成两个分E-R图。
我想采用一次集成两个分E-R图的方式。
3.2数据抽象与局部视图设计
(1)订票子系统E-R图
图3---1订票子系统E-R图
(2)退票子系统E-R图
图3---2退票子系统E-R图(3)旅客验证E-R图
图3---3 旅客验证E-R图
3.3视图的集成
经过逐步细化再进行每两个一集成初步形成一个E-R图
图3---4 整体E-R图
实体与联系的属性如下:
航班:{航班号,飞机型号,航班出发地,航班目的地,起飞时间,到达时间,票价,余票数}
旅客:{旅客证件号,旅客姓名,旅客性别,旅客联系电话}
订票:{交易编号,交易类型,交易数量,总额}
退票:{交易编号,交易类型,交易数量,总额}
通缉单:{嫌疑人证件号,嫌疑人名,备注}
验证:{嫌疑人证件号,旅客证件号,验证状态}
第四章逻辑结构设计
概念设计完成后,获得的是各个实体之间的抽象联系,要将它与具体的DBMS 向结合,则必须要将E-R图转化为具体的数据模型,这就是逻辑设计的目标。
其任务就是转化为什么样的数据模型,以及如何转化的完善些,对转化结果进行更进一步的优化。
4.1 E-R图转化为关系模型
转化结果如下:
航班:{航班号,飞机型号,航班出发地,航班目的地,起飞时间,到达时间,票价,余票数}
旅客:{旅客证件号,旅客姓名,旅客性别,旅客联系电话}
交易:{交易编号,旅客证件号,航班号,交易类型,交易数量,交易状态,交易总额}
验证:{旅客证件号,嫌疑人证件号,验证状态}
说明:“航班号”表示主码,“旅客证件号”表示外码,“旅客姓名”表示一般属性
各个关系中不存在插入异常,删除异常和大量冗余,而且每个关系的没个属性都是不可再分割的,既满足1NF,对于每一个非主属性完全函数依赖与码,而且在每个关系中没有传递函数以来关系,即满足2NF以及3NF。
4.2数据模型的优化
1.将转化的关系模式进行优化,最终达到第三范式。
(1)航班(航班号,飞机型号,航班出发地,航班目的地,起飞时间,到达时间,票价,余票数)
航班号→飞机型号,航班号→航班出发地,航班号→航班目的地,航班号→起飞时间,航班号→到达时间,航班号→票价,航班号→余票数
(2)旅客(旅客证件号,旅客姓名,旅客性别,旅客联系电话)
旅客证件号→旅客姓名,旅客证件号→旅客性别,旅客证件号→旅客联系电话(3)交易(交易编号,旅客证件号,航班号,交易类型,交易数量,交易状态,交易总额)
交易编号→旅客证件号,交易编号→航班号,交易编号→交易类型,交易编号→交易数量,交易编号→交易状态,交易编号→交易总额
(4)验证(旅客证件号,嫌疑人证件号,验证状态)
旅客证件号→嫌疑人证件号,旅客证件号→验证状态
2.对各关系模式间数据依赖进行极小化处理,消除冗余
航班号→飞机型号,航班号→航班出发地,航班号→航班目的地,航班号→起飞时间,航班号→到达时间,航班号→票价,航班号→余票数,旅客证件号→旅客姓名,旅客证件号→旅客性别,旅客证件号→旅客联系电话,交易编号→旅客证件号,交易编号→航班号,交易编号→交易类型,交易编号→交易数量,交易编号→交易状态,交易编号→交易总额,旅客证件号→嫌疑人证件号,旅客证件号→验证状态
3.看这些模式是否符合要求,确定是否要对某些模式进行合并或者分解
最终分解成第三范式:
(航班号,飞机型号,航班出发地,航班目的地,起飞时间,到达时间,票价,余票数)
(旅客证件号,旅客姓名,旅客性别,旅客联系电话)
(交易编号,旅客证件号,航班号,交易类型,交易数量,交易状态,交易总额)(旅客证件号,嫌疑人证件号,验证状态)
4.3数据库的结构
根据总体结构图设计各表的结构,其相应标的定义如下
(1)航班关系表
表4---1 航班关系表
属性属性说明数据类型宽
度
是否为空值
是否为主(P)/
外键(F)
HBID航班号char 1
NO YES(P)
JX飞机型号char 1
NO
CFD航班始发地char 1
NO
MDD航班目的地char 1
NO
QFSJ起飞时间timestamp NO DDSJ到达时间timestamp NO HARQ航班日期date NO JG票价int NO YS余票数int NO
(2)旅客关系表
表4---2 旅客关系表
属性属性说明数据
类型
宽度
是否为空
值
是否为主(P)/
外键(F)
LKID旅客证件号char21NO YES(P) LKName旅客姓名char12NO
LKSex旅客性别char4
LKTEL旅客联系电话char15
(3)交易关系表
表4---3 交易关系表
属性属性说明数据类型宽度是否为空值是否为主(P)/外键(F)
LKID旅客证件号char21NO YES(F) HBID航班号char10NO YES(F) JYLX交易类型char10NO
JYTZ交易状态char10NO
JYSL交易数量int3
JYZE交易总额int4NO
(4)验证关系表
表4---4 验证关系表
属性属性说明数据
类型
宽度小数点
是否为空
值
是否为主(P)/
外键(F)
LKID旅客证件号char18NO YES(F) YZZT验证状态char4NO
TJID嫌疑人证件号char18NO YES(F)(5)嫌疑人关系表
表4---5 嫌疑人关系表
属性属性说明数据
类型
宽度小数点
是否为空
值
是否为主(P)/
外键(F)
TJID嫌疑人证件号char21NO YES(P) TJSex嫌疑人性别char2
TJName嫌疑人名char12NO
4.3.2 完整型与安全性设计
(1)交易数量不得大于余票数
(2)交易类型分为:前台交易和网上交易;
(3)交易状态分为:订票和退票;
4.4功能模块图
图4---1 功能模块图
第五章数据库物理设计
5.1 实例及数据库的创建.
用自己的名字创建实例YY03MN,创建数据库MN12.
5.2索引的建立
先给出索引的相关定义,然后自己选择表或者属性建立索引(唯一索引、聚簇索引),要求表和索引存储在不同的表空间里,写出相关的SQL语句。
索引就是加快检索表中数据的方法。
数据库的索引类似于书籍的索引。
在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。
在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。
(1) 建立唯一索引
Create unique index 起飞时间
on 航班关系表(QFSJ);
(2)建立聚簇索引
CONNECT TO MN12;
CREATE INDEX ADMINISTRATOR.验证ON ADMINISTRATOR.验证关系表(LKID ASC) CLUSTER PCTFREE 10 ALLOW REVERSE SCANS PAGE SPLIT SYMMETRIC COLLECT SAMPLED DETAILED STATISTICS ;
CONNECT RESET;
5.3 表空间的建立
给出表空间的相关定义,然后建立需要用到的表空间(至少2个以上,存放在目录容器和文件容器中),写出相关的SQL语句。
表空间的相关定义:表空间是数据库和储存在数据库中的表之间的逻辑层,数据库中的所有对象都储存在表空间中。
创建表空间
connect to MN12;
create regular tablespace dms02 managed by database using (file 'c:\dms\dms02' 14) extentsize 2;
create long tablespace dms03 managed by database using (file 'c:\dms\dms03' 728)
extentsize 8;
create regular tablespace dms04 managed by database using (file 'c:\dms\dms04' 22) extentsize 2;
create regular tablespace dms05 managed by database using (file 'c:\dms\dms05' 16) extentsize 2;
create regular tablespace dms06 managed by database using (file 'c:\dms\dms06' 40) extentsize 4;
create regular tablespace sms01 managed by system using ('d:\sms\sms01','c:\sms\sms02') extentsize 4;
5.4 触发器的建立
触发器的建立实现在一定日期内订飞机票有7折的优惠
CONNECT TO MN12^
CREATE TRIGGER ADMINISTRATOR.航班关系表AFTER UPDATE OF JG ON ADMINISTRATOR.航班关系表REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL
WHEN ( n.HARQ between '2010-1-1' and '2010-1-30')
BEGIN ATOMIC
insert into 航班关系表(JG )
values (JG*0.7);
END^
CONNECT RESET^
第六章数据库的实施
数据库的具体实施以及运行,如下列图所示:
1.表的建立与数据的载入
(1)航班关系表
图6--1 航班关系表
(2)旅客关系表
图6--2 旅客关系表
(3)交易关系表
图6--3 交易关系表(4)嫌疑人关系表
图6--4 嫌疑人关系表(5)验证关系表
图6--5 验证关系表
2.插入数据
(1)向嫌疑人关系表中插入数据
图6--6 对嫌疑人关系表进行插入操作插入数据后的结果
图6--7 对嫌疑人关系表进行插入操作后结果(2)向旅客关系表中插入数据
图6--8 对旅客关系表进行插入操作
插入数据后的结果
图6--9 对旅客关系表进行插入操作的结果
(3)向航班关系表中插入数据
图6--10 对航班关系表进行插入操作
插入数据后的结果
图6--11 对航班关系表进行插入操作的结果
3.删除数据
删除嫌疑人关系表中欧阳
图6--12 删除嫌疑人关系表中欧阳操作删除后的结果
图6--13 删除嫌疑人关系表中欧阳的结果4.查询操作
(1)对某位旅客进行查询
图6--14 对某为旅客进行的查询操作
查询后的结果
图6--15 对某为旅客进行的查询操作的结果(2)查询当日的航班
图6--16 对当日航班的查询操作
查询结果
图6--17 对当日航班的查询操作的结果
(3)退票查询
图6--18 对退票进行查询操作
查询结果
图6--19 对退票进行查询操作的结果(4)订票查询
图6--20 对订票进行查询操作
查询结果
图6--21 对订票进行查询操作的结果5.更改操作
(1)退票操作
图6--22 进行退票操作
操作后的结果
图6--23 进行退票操作的结果
(2)订票操作
图6--24 进行订票操作
操作后的结果
图6--25 进行订票操作的结果(交易关系表)
图6--26 进行订票操作的结果(旅客关系表)
总结
连续两周的机票预定系统设计感受最深的就是机票预定比其他交通工具预定要复杂的多,严格的多。
订飞机票必须通过身份验证,而订火车票你可以不拿任何凭证。
还有就是登机过程也比较复杂,在登机前拿机票去换取登机座位卡,以这张卡就可以去登机,而且你的座位是在这时候才可以确定的,座位的前后由你前来换登机卡的时间有关,与买票时间无关。
这对本系统关系并不是很大,不过有一定的关系,比如系统在打印帐单的时候就不需要再打座位号了,因为这不是系统要做的事。
由于能力问题以及时间限制,该系统的分析还很不到位,有很多的问题没有解决好,比如旅客是通过旅行社来订票的,这样订票的信息有可能会有些变化。
对此,该系统并不做更深的研究,目前只是为了满足最一般的需求而设计的。
参考文献
[1] 王珊,陈红·数据库系统原理教程·清华大学出版社,1998,7
[2] 杨鑫华数据库原理与DB2应用教程清华大学出版社2007,8
[3] 岳昆数据库技术-设计与应用实例清华大学出版社
[4] 严晖刘卫国数据库技术-设计与应用实践教程—SQL Server清华大学出版社
[5] 刘卫国数据库技术与应用—SQL Server清华大学出版社。