MICROSOFT
数据库设计
机票订票系统设计(大作业)
Administrator 2014/1/1
[在此处键入文档的摘要。摘要通常是对文档内容的简短总结。在此处键入文档的摘要。摘要通常是对文档内容的简短总结。]
机票订票系统设计
设计者:王龙乾(需求分析、物理设计)
马 靖(概念结构设计、物理设计) 杨志成(逻辑设计、物理设计)
一、机票订票系统需求分析
1. 功能描述
1. 航班查询:
旅客可通过网络访问该系统客户端网址,可根据旅客提供的出发时间、出发地点和目的地、舱位要求等,查询满足旅客要求的航班。通过检索可得到航班的相关信息,从而可以方便旅客订票并掌握所需信息,同时可减少工作人员的工作量。 2. 旅客订票:
旅客将订票的相关信息通过工作人员输入系统客户端。客户端将旅客的订票信息通过网络传送给服务端,服务端根据接收到的信息由航班安排系统为旅客安排座位并返回相应的确认信息给该客户端。订票信息生成后,存入相应的存储区域,并对数据库进行数据提交。客户端打印取票单及帐单给旅客,旅客在登机前,经信息核审后,即可领取机票登机。 3. 航班信息管理:
航空公司可将所有航班的信息存入数据库,方便用户对航班基本信息查询,相关工作人员可根据公司要求,经系统身份认证后登录并对航班信息进行修改等操作,从而使航班信息便于管理。 4. 航班安排:
从客户端接收到旅客的订票信息,该系统可在短时间内处理旅客航班问题。将订票信息送往数据库并更新,客户端的航班查询信息也同步更新。节省时间的同时,也能让旅客得到最新的航班信息。 5. 退票管理:
机票有效期内,旅客若需退票,可在退票处进行退票。退票信息,由工作人员输入系统,系统对订票信息或售票信息进行删除更新 6. 功能图
2. 机票预订系统数据流图
3. 用户活动图
4. 机票预定系统数据字典
数据字典是用来规范描述数据具体内容的工具,也是对数据汇总分析的一个总结。一般来说,可为每个数据建立一张二维表。在本系统中,分别为旅客信息、旅客订票信息、航班机票信息、取票通知和售出机票信息建立了数据字典。 旅客信息的数据字典
旅客订票信息的数据字典
航班机票信息的数据字典
取票通知的数据字典
售出机票信息的数据字典
二、机票订票系统概念结构设计
1. 概念结构设计 1.1 概念结构设计的方法
概念设计阶段我们采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。
1.2 概念结构设计的步骤
第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。因此我们们先逐一的设计分E-R 图。 第二步是进行视图的集成:各子系统的E-R 图设计好之后,下一步就是要将所有的分E-R 图合成一个系统的总E-R 图,一般有两个方式,多个分E-R 图一次集成,另一种是一次集成两个分E-R 图。我们想采用一次集成两个分E-R 图的方式。
2. 数据抽象与局部视图设计
2.1 设计实体属性图以及局部E-R 图。
图1退票申请E-R 图
图2 旅客信息E-R 图
图3航班信息E-R 图
图4订单E-R 图
图5航空公司E-R 图
2.2 视图的集成
经过逐步细化再进行每两个一集成初步形成一个E-R 图,最后得到总体概念结构E-R 图
图4系统总体结构E-R 图
三、机票订票系统逻辑结构设计
1. E-R 图向关系模型的转换
将图4总体概念结构E-R 图转化成关系模型。 退票申请(订单号,旅客姓名,电话号, 身份证号)
旅客信息(身份证号,旅客姓名,电话号,性别,工作单位) 航班信息(班次号,始发站,终点站,起飞时间,飞行时间) 订单(订单号,旅客姓名,取票时间,班次号,座位号,班票类型) 航空公司(公司名称,电话号码)
2. 数据模型的优化
将转化的关系模式进行优化,最终达到第三范式。 1、 确定数据依赖
根据这个关系写出数据依赖
退票申请(订单号,旅客姓名,电话号, 身份证号) 订单号→旅客姓名,订单号→电话号,订单号→身份证号 旅客信息(身份证号,旅客姓名,电话号,性别,工作单位)
身份证号→旅客姓名,身份证号→电话号,身份证号→性别,身份证号→工作单位 班次信息表(班次号,始发地,目的地,起飞时间,飞行时间)
飞机班次→始发站,飞机班次→终点站,飞机班次→起飞时间,飞机班次→飞行时间 订单(订单号,旅客姓名,取票时间,班次号,座位号,班票类型) 订单号→旅客姓名,订单号→取票时间,订单号→班次号,订单号→座位号, 订单号→机票类型
对各关系模式间数据依赖进行极小化处理,消除冗余
订单号→旅客姓名,订单号→电话号,订单号→身份证号,旅客姓名→性别 旅客姓名→工作单位,旅客姓名→取票时间,旅客姓名→班次号
旅客姓名→座位号,旅客姓名→机票类型,班次号→始发站,班次号→终点站 班次号→始发时间,(座位号,班次号)→座位信息
看这些模式是否符合要求,确定是否要对某些模式进行合并或者分解 最终分解成第三范式:
(订单号,电话号,身份证号)(订单号,旅客姓名)(旅客姓名,取票时间,性别,工作单位,车票类型)(旅客姓名,班次号)(旅客姓名,座位号)(班次号,座位号,机票类型)(班次号,始发站,终点站,起飞时间)
(1)退票信息表
CREATE TABLE 退票申请
(Order Number Varchar(20) PRIMARY KEY, Name Varchar(20), ID Number Varchar(2), Phone Number Varchar(11), );
(2)旅客信息表
CREATE TABLE 旅客信息
(ID Number Varchar(18) PRIMARY KEY, Name Varchar(20), Sex Varchar(2), Phone Number Varchar(11), );
(3)订单
CREATE TABLE 订单
(Order Number Varchar(20) PRIMARY KEY, Name Varchar(20), Seat number Varchar(5), Ticket type
Varchar(10), Class No. Varchar(20), );
(4)航班信息表
CREATE TABLE 航班信息
(Class No. Varchar(20) PRIMARY KEY, Origin Varchar(20), Destination Varchar(20), Flight time Varchar(10), Take-off time );
date,