民航订票管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十三数据库管理系统综合应用
-------民航订票管理系统
一、实验目的:
通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步了解和掌握所讲解的内容。
二、实验简述:
民航订票系统主要分为机场、航空公司和客户三方的服务。航空公司提供航线和飞机的资料,机场则对本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有航班线路和剩余票数的查询,以及网上订票等功能。客户又可以分为两类,一类是普通客户,对于普通客户只有普通的查询功能和订票功能,没有相应的机票优惠,另一种是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策。机场还要紧急应对措施,在航班出现延误时,要发送相应的信息。
三、实验要求:
完成该系统的数据库设计;
用SQL实现数据库的设计,并在SQL Server上调试通过。
四、参考答案:
1、需求分析
(1)航空公司
航空公司的操作流程如图C.1所示。
图C.1 航空公司操作分类表
(2)客户
客户的操作流程如图C.2所示。
图C.2 客户操作分类表
(3)机场
机场的任务是根据航空公司提供的航线和飞机,安排航班,以及航班的机票。如果出现晚点等情况,要记录并发送信息,对特殊客户记录其消费信息,并相应提供优惠。
(4)客户订票
客户订票涉及到多个因素:由客户提出订票申请;由机场管理航班机票;对于特殊客户,除给予票价优惠以外,还要累计里程;订票后需判断是否超员。这些因素涉及到客户资料、航班资料以及由航空公司提供的航线(里程)和飞机(座位数)资料中所提供的相关数据。
客户订票的操作流程如图C.3所示。
2、概念模型设计
数据库需要表述的信息有以下几种:
(1)航空公司信息
(2)客户信息
(3)飞机信息
(4)航线信息
(5)航班信息
(6)订票信息
(7)特殊客户积分
可以用E/R模型表述该模型的设计,E/R图如图C.4所示。
图C.4 模型的E-R图
3、逻辑设计
通过E/R模型到关系模型的转化,可以得到如下关系模式:
(1)Airline(AID, Name, Addr, Cont)
(2)Customer(CID, Name, Cont, IsSpec, Points)
(3)Plane(PID, Type, SeatsNum, AID)
(4)Line(LID, SPosition, EPosition, Distance, AID)
(5)Flight(FID, PID, LID, Ftime, Price)
(6)BookTicket(BID, FID, CID, Pay)
每个关系模式的键码都用下划线标出。外键码用斜体标出。
4、物理设计
为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索引。下面各表中建立索引的表项。
(1)Airline(AID)
(2)Customer(CID)
(3)Plane(PID)
(4)Line(LID)
(5)Flight(FID)
(6)BookTicket(BID)
5、用SQL实现设计
(1)建立航空公司表
CREATE TABLE Airline(
AID varchar(20) PRIMARY KEY,
Name varchar(100) NOT NULL,
Addr varchar(100),
Cont varchar(200)
);
(2)建立客户表
CREATE TABLE Customer(
CID varchar(20) PRIMARY KEY,
Name varchar(50) NOT NULL,
Cont varchar(200),
IsSpec char(1) NOT NULL DEFAULT ‘N’,
Points int NOT NULL DEFAULT 0
);
(3)建立飞机信息表
CREATE TABLE Plane(
PID varchar(20) PRIMARY KEY,
Type varchar(50) NOT NULL,
SeatsNum int NOT NULL,
AID varchar(20), CONSTRAINT FK_PLANE_AID
FOREIGN KEY(AID) REFERENCES Airline(AID) );
(4)建立航线表
CREATE TABLE Line (
LID varchar(20) PRIMARY KEY,
SPosition varchar(100) NOT NULL,
EPosition varchar(100) NOT NULL,
Distance real NOT NULL
AID varchar(20), CONSTRAINT FK_LINE_AID
FOREIGN KEY(AID) REFERENCES Airline(AID) );
(5)建立航班表
CREATE TABLE Flight(
FID varchar(20) PRIMARY KEY,
Ftime datetime NOT NULL,
PID varchar(20), CONSTRAINT FK_FLIGHT_PID
FOREIGN KEY(PID) REFERENCES Plane(PID) LID varchar(20), CONSTRAINT FK_FLIGHT_LID
FOREIGN KEY(LID) REFERENCES Line(LID) Price real NOT NULL
);
(6)建立订票表
CREATE TABLE BookTicket (
BID int IDENTITY(1,1) PRIMARY KEY,
FID varchar(20), CONSTRAINT FK_BOOKTICKET_FID
FOREIGN KEY(FID) REFERENCES Flight(FID) CID varchar(20), CONSTRAINT FK_ BOOKTICKET _CID