版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、长 沙 学 院课程设计说明书题目 机票预定管理系统 系(部) 计算机科学与技术系 专业(班级) 姓名 学号 2010021110 指导教师 起止日期 2012.06.11-2012.06.22 课程设计任务书课程名称:数据库系统原理课程名称:数据库系统原理设计题目:机票预定管理系统设计题目:机票预定管理系统1、某航空公司机票预订管理系统需要如下信息:航班:航班编号、出发地、目的地、出发时间、飞行时间、飞机型号等。飞机:飞机型号、座位数。机票:航班编号、客户编号、价格、折扣、当前预售状态等。客户:姓名、联系电话、身份证号码等。业务员:姓名、工号。2、系统功能的基本要求:按照一定条件查询、统计符合
2、条件的航班、机票、客户信息等。例如航班剩余舱位数目、同一航线可选航班信息、客户购买历史等,能够模拟完成机票预订业务。各阶段具体要求:各阶段具体要求:1、需求分析阶段二、定义数据项的含义和取值三、定义目标系统的数据流2、概念结构设计阶段画出实体模型 E-R 图3、逻辑结构设计阶段将实体模型转化为关系模型给出每个关系的主关键字和函数依赖集分析你所设计的关系数据库模式是否属于 3NF4、物理设计阶段确定所有字段的名称、类型、宽度、小数位数及完整性约束 确定数据库及表的名称及其组成 确定索引文件和索引关键字5、数据库安全及维护设计阶段5.1 设计一个适合的数据库安全策略(用户身份认证、访问权限、视图)
3、5.2 为了实现复杂的数据完整性约束,设计适当的触发器5.3 设计一个适合的数据库备份策略6、实施阶段要求所有操作必须在查询分析器中用 SQL 语句或系统存储过程完成。设计工作量:设计工作量:(1)软件设计:完成问题陈述中所提到的所有需求功能。(2)论文:要求撰写不少于 3000 个文字的文档,详细说明各阶段具体要求。工作计划:工作计划:安排两周时间进行课程设计,软件开发步骤如下,第一周完成 14,第二周完成 58,论文同步进行;1)选定题目2)需求分析3)概念结构设计4)逻辑结构设计5)物理设计6)数据库安全及维护设计7)数据库上机实现8)答辩设计工作量:设计工作量:40 课时工作计划:工作
4、计划:班级日期节次教室内容指导教师15 周周一1-4致远楼 1413布置任务15 周周一5-6 节涵虚楼 B2103答疑15 周周二1-2致远楼 1401上机15 周周二3-4 节涵虚楼 B2103答疑15 周周二5-6 节涵虚楼 B2103答疑15 周周五1-4致远楼 1413上机15 周周五5-8 节涵虚楼 B2103答疑16 周周一1-4致远楼 1413上机16 周周一5-8 节涵虚楼 B2103答疑16 周周二1-2致远楼 1401上机16 周周二3-4 节涵虚楼 B2103答疑16 周周五1-4致远楼 1413答辩10 计科 1班16 周周五5-8 节涵虚楼 B2103答辩潘怡指导教
5、师签名:日期:教研室主任签名: 日期:系主任签名: 日期: 长沙学院课程设计鉴定表姓名学号专业计算机科学与技术班级设计题目 机票预定管理系统指导教师 指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀” 、 “良好” 、 “及格” 、 “不及格”四类;目 录1 引言引言.11.1 编写目的编写目的.11.2 参考资料参考资料.12需求规约需求规约.22.1 业务描述业务描述.22.2 需求分析需求分析.22.2.1统功能分析统功能分析. 22.2.2统功模块图
6、统功模块图. 33概念结构设计概念结构设计 .54物理结构设计物理结构设计 .64.1 E_R 图向关系模型的转变图向关系模型的转变.64.2 数据数据模型的优化模型的优化.65物理设计物理设计 .75.1表汇总表汇总.75.2各各表表的详细信息及其创建的详细信息及其创建.75.3视图的设计视图的设计.145.4存储过程、函数及触发器的设计存储过程、函数及触发器的设计.146安全性设计安全性设计 .206.1防止用户直接操作数据库的方法防止用户直接操作数据库的方法.206.2角色与权限角色与权限.207数据库管理与维护说明数据库管理与维护说明 .217.1 数据库的完全备份数据库的完全备份.2
7、17.2 数据库的差异备份数据库的差异备份.217.2 数据库的日志备份数据库的日志备份.218 总结总结.2211 1 引引 言言1.11.1 编写目的编写目的本文档是数据库管理系统设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循数据库设计和开发规范。掌握对于给定实际问题的解决方法,为建立一个关系数据库管理系统,严格按照系统的调研、需求分析、慨念设计、逻辑设计、物理设计、数据库的实施以及数据库的运行和维护的一般过程进行设计。1.21.2 参考资料参考资料资料名称资料名称作者作者出版社出版社文件编号、版本文件编号、版
8、本数据库系统概论王珊、萨师煊高等教育出版社2006 年 5 月第 4版数据库原理及应用钱雪忠北京邮电大学出版社2007 年 8 月第 2版SQL Server 2008 数据库基础及其应用徐鹏、满娜中国水利水电出版社2010 年 5 月第 1版22 2 需求规则需求规则2.12.1 业务描述业务描述随着社会发展的不断进步,民航事业的壮大,人民消费水平的提高,乘坐民航的人越来越多,旅游业逐渐成为普通百姓的生活组成部分,飞机票预订查询系统在各机票预订网点中的作用也越来越显得重要。机票预订系统是为机场工作人员和客户提供机票预订和退票等与机票相关内容和管理的系。能够实现航空公司的机票销售的自动化,为企
9、业的决策层提供准确、精细迅速的机票销售信息,为乘客出行提供方便,便于机场工作人员对机票进行管理,提高机场工作人员对机票管理的工作效率。1、某航空公司机票预订管理系统需要如下信息:航班:航班编号、出发地、目的地、出发时间、飞行时间、飞机型号等。飞机:飞机型号、座位数。机票:航班编号、客户编号、价格、折扣、当前预售状态等。客户:姓名、联系电话、身份证号码等。业务员:姓名、工号。2、系统功能的基本要求:按照一定条件查询、统计符合条件的航班、机票、客户信息等。例如航班剩余舱位数目、同一航线可选航班信息、客户购买历史等,能够模拟完成机票预订业务。2.22.2 需求分析需求分析2.22.21 1 系统功能
10、分析系统功能分析航班管理:可对航班信息进行添加、修改、删除、查询操作;飞机管理:可对飞机信息进行添加、修改、删除、查询操作;旅客管理:可对旅客信息进行添加、修改、删除、查询操作;业务员管理:可对业务员信息进行添加、修改、删除、查询操作;订票系统管理:当旅客根据选着航班号以及业务员号预订机票,然后录入自己的基本信息,提交后,经系统处理,将生成一张机票信息,然后插入机票表中,作为旅客订票成功的依据,同时航班表中的剩余票数将减 1,否则输出提示信息提示旅客订票失败。3退票系统管理:当旅客想退票时,可以根据自己选着的航班号以及自己的客户编号进行机票的退订处理,若退票成功,航班表里的剩余票数将加 1,若
11、退票失败,则输出提示信息提示旅客退票失败。2.22.22 2 功能模块图功能模块图(1) 根据上述的功能,可以设计出系统的总体功能模块,如图 2.1 所示。机票预订系统航班信息管理模块飞机信息管理模块订票信息管理模块业务员信息管理模块旅客信息管理模块退票信息管理模块图 2.1 机票预订系统功能模块示意图(3) 航班信息管理模块的细化功能模块如图 2.2 所示。航班信息查询管理按航班号查询按出发地和目的地查询航班信息管理图 2.2 航班信息管理功能模块示意图(3) 订票信息管理模块的细化功能模块如图 2.3 所示。4订票信息管理旅客基本信息查询机票基本信息查询图 2.3 取票信息管理模块 (4)
12、 退票信息管理模块的细化功能模块如图 2.4 所示。退票信息管理旅客基本信息查询订单信息查询图 2.3 退票信息管理模块53 3 概念结构设计概念结构设计根据需求分析,可知机票预订系统的实体有:航班、飞机、客户、业务员。航班实体的属性有:航班编号、出发地、目的地、出发时间、到达时间、经济舱票价、公务舱票价、头等舱票价、折扣、剩余票数、航程。飞机实体的属性有:飞机编号、飞机型号、座位数。客户实体的属性有:客户编号、客户姓名、性别、年龄、联系电话、身份证号。业务员实体属性有:工号、业务员姓名、年龄、联系电话。其中,航班和飞机是 n:m 的调用关系,即一个航班可以调用多架飞机,一架飞机可以飞多个航班
13、。航班和客户是 n:m 的预订关系,即一个客户可以预订多个航班,一个航班可以被多个客户预订。业务员和客户是 n:m 的服务关系,即一个业务员可以服务多个客户,一个客户可以被多个业务员服务。按照以上机票预订系统分析过程,设计机票预订系统的 E-R 图如下:图 3.1 机票预订系统的 E-R 图64 4 逻辑结构设计逻辑结构设计4.14.1 E-RE-R 图向关系模型的转换图向关系模型的转换将图 3.1 总体概念结构 E-R 图转化成关系模型。航班(航班编号、出发地、目的地、出发时间、到达时间、经济舱票价、公务舱票价、头等舱票价、折扣、剩余票数、航程)飞机(飞机编号、飞机型号、座位数)调用(航班编
14、号、飞机编号)客户(客户编号、客户姓名、性别、年龄、联系电话、身份证号)飞机票(航班编号、客户编号、客户姓名、出发地、目的地、出发日期、票价、舱位)业务员(工号、业务员姓名、年龄、联系电话)服务(客户编号、业务员编号)4.24.2 数据模型的优化数据模型的优化将转化的关系模式进行优化,最终达到第三范式。航班编号出发地,航班编号目的地,航班编号出发时间,航班编号到达时间,航班编号经济舱票价,航班编号公务舱票价,航班编号头等舱票价,航班编号折扣,航班编号剩余票数,航班编号航程。因为航班表中的非主属性不存在部分依赖和传递依赖,所以航班表是 3NF 的。飞机编号飞机型号,飞机编号座位数。因为飞机表中的
15、非主属性不存在部分依赖和传递依赖,所以航班表是 3NF 的。客户编号客户姓名,客户编号性别,客户编号年龄,客户编号联系电话,客户编号身份证号。因为客户表中的非主属性不存在部分依赖和传递依赖,所以航班表是 3NF 的。业务员工号业务员姓名,业务员工号年龄,业务员工号联系电话。因为业务员表中的非主属性不存在部分依赖和传递依赖,所以航班表是 3NF 的。综上所述,机票预定管理系统是属于 3NF 的,存在较少的插入异常。75 5 物理结构设计物理结构设计5.15.1 表汇总表汇总表名表名功能说明功能说明Tbl_Flight存放航班编号,航线编号,出发地,目的地,出发时间,到达时间,头等舱票价,公务舱票
16、价,经济舱票价,折扣,剩余票数,航程等属性的信息。Tbl_Airplane存放飞机编号,飞机型号,座位数等信息。Tbl_Transfer存放航班编号和飞机编号,以此建立 Tbl_Flight 与Tbl_Airplane 之间的联系。Tbl_Customer存放客户编号,客户姓名,性别,年龄,联系电话,身份证号等信息。Tbl_Air_Ticket除了存放航班编号和客户编号,以此建立 Tbl_Flight 与Tbl_Customer 之间的联系之外,还存放了出发地,目的地,机票价格,出发日期,舱位等信息。Tbl_Salesman存放业务员工号,业务员姓名,性别,年龄,电话号码等信息。Tbl_Ser
17、vice存放业务员工号和客户编号,以此建立 Tbl_Customer 和Tbl_Salesman 之间的联系。5.25.2 各表详细信息及创建各表详细信息及创建表表Tbl_Flight:Tbl_Flight:航班表航班表 表名Tbl_Flight数据库用户DBA主键Flight_id其他排序字段无索引字段Orign序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明此表格的序号,与数据库的序号无关字段名称 数据类型Y/NY/N高/中/低主键、外键,字段含义,相关说明等1Flight_idCHAR(10)NY高无主键:航班编号2OrignVARCHAR(40)NN低
18、无出发地3DestinationVARCHAR(40)NN低无目的地4Departure_TIMENN低无出发时间8Time5Arrival_TimeTIMENN低无到达时间6FPriceFLOAT(2)NN中无头等舱票价7CPriceFLOAT(2)NN中无公务舱票价8YPriceFLOAT(2)NN中无经济舱票价9DiscountFLOAT(2)NN低无折扣10Remain_pollINTNN中无剩余票数11VoyageVARCHAR(10)NN高无航程sql 脚本CREATE TABLE Tbl_Flight(Flight_id CHAR(10) NOT NULL PRIMARY KEY
19、, -航班编号 Orign VARCHAR(40) NOT NULL, -出发地 Destination VARCHAR(40) NOT NULL, -目的地 Departure_time TIME NOT NULL, -出发时间 Arrival_time TIME NOT NULL, -到达时间 FPrice FLOAT(2) NOT NULL CHECK(FPrice=0), -头等舱票价 CPrice FLOAT(2) NOT NULL CHECK(CPrice=0), -公务舱票价 YPrice FLOAT(2) NOT NULL CHECK(YPrice=0), -经济舱票价 Dis
20、count FLOAT(2) NOT NULL CHECK(Discount0.00 AND Discount=0 AND Seating=0), -客户年龄 Customer_phone VARCHAR(20) NOT NULL, -客户电话 ID_number CHAR(20) NOT NULL -身份证号 );备注存放客户信息表表Tbl_Air_Ticket:Tbl_Air_Ticket:机票表机票表 表名Tbl_Air_Ticket数据库用户DBA主键Flight_id,Customer _id(联合主键)其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N
21、区别度默认值约束条件/说明此表格的序号,与数据库的序号无关字段名称数据类型Y/NY/N高/中/低主键、外键,字段含义,相关说明等1Flight_idCHAR(10)NY高无外键:航班编号2Customer _idCHAR(10)NY高无外键:客户编号3OrignVARCHAR(40)NN低无出发地4DestinationVARCHAR(40)NN低无目的地5PriceFLOAT(2)NN低无价格6Departure_DATENN低无出发日期12date7Shipping_spaceCHAR(10)NN低无舱位sql 脚本CREATE TABLE Tbl_Air_Ticket ( Flight_
22、id CHAR(10) NOT NULL, -航班编号 Customer_id CHAR(10) NOT NULL, -客户编号 Customer_name VARCHAR(20) NOT NULL, -客户姓名 Orign VARCHAR(40) NOT NULL, -出发地 Destination VARCHAR(40) NOT NULL, -目的地 Price FLOAT(2) NOT NULL CHECK(Price=0), -票价 Departure_date DATE NOT NULL, -出发日期 Shipping_space CHAR(10) NOT NULL CHECK(Sh
23、ipping_space IN(头等舱,公务舱,经济舱), -舱位 PRIMARY KEY(Flight_id,Customer_id), FOREIGN KEY (Flight_id) REFERENCES Tbl_Flight(Flight_id), FOREIGN KEY (Customer_id) REFERENCES Tbl_Customer(Customer_id) );备注建立 Tbl_Flight 与 Tbl_Customer 之间的联系,并存放其他的一些机票信息表表Tbl_Salesman:Tbl_Salesman:业务员表业务员表 表名Tbl_Salesman数据库用户DB
24、A主键Salesman _id其他排序字段无索引字段Salesman_name序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明此表格的序号,与数据库的序号无关字段名称数据类型Y/NY/N高/中/低主键、外键,字段含义,相关说明等1Salesman _idCHAR(10)NY高无主键:工号2Salesman _NameVARCHAR(10)NN低无业务员姓名133Salesman _sexCHAR(2)NN低无性别4Salesman _ageSMALLINTNN低无年龄5Salesman _phoneVARCHAR(20)NY高无电话号码sql 脚本CREATE
25、 TABLE Tbl_Salesman(Salesman_id CHAR(10) NOT NULL PRIMARY KEY, -业务员编号 Salesman_name VARCHAR(10) NOT NULL, -业务员姓名 Salesman_sex CHAR(2) CHECK(Salesman_sex IN(男,女), -业务员性别 Salesman_age SMALLINT NOT NULL CHECK(Salesman_age =18), -业务员年龄 Salesman_phone VARCHAR(20) NOT NULL -业务员电话 ); CREATE INDEX Tbl_Sales
26、man_name ON Tbl_Salesman (Salesman_name)备注存放业务员信息表表Tbl_Service:Tbl_Service:调用表调用表 表名Tbl_Service数据库用户DBA主键Salesman _id, Customer _id(联合主键)其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明此表格的序号,与数据库的序号无关字段名称数据类型Y/NY/N高/中/低主键、外键,字段含义,相关说明等1Salesman _idCHAR(10)NY高无外键:业务员工号2Customer _idCHAR(10)NY高无外
27、键:客户编号14sql 脚本CREATE TABLE Tbl_Service(Customer_id CHAR(10) NOT NULL, -客户编号 Salesman_id CHAR(10) NOT NULL, -业务员编号 PRIMARY KEY(Customer_id,Salesman_id), FOREIGN KEY (Salesman_id) REFERENCES Tbl_Salesman(Salesman_id), FOREIGN KEY (Customer_id) REFERENCES Tbl_Customer(Customer_id) );备注建立 Tbl_Customer 与
28、Tbl_Salesman 之间的联系5.35.3 视图设计视图设计创建一个航班信息查询视图供客户查询航班。CREATE VIEW VIEW_Flight(Flight_id,Airplane_style,Voyage,Orign,Destination,Departure_time,Arrival_time,FPrice,CPrice,YPrice,Discount,Sell_votes,Remain_poll)AS SELECT Tbl_Flight.Flight_id,Airplane_style,Voyage,Orign,Destination,Departure_time,Arriva
29、l_time,FPrice,CPrice,YPrice,Discount,Seating-Remain_poll,Remain_poll FROM Tbl_Flight,Tbl_Airplane,Tbl_Transfer WHERE Tbl_Flight.Flight_id=Tbl_Transfer.Flight_id AND Tbl_Transfer.Airplane_id=Tbl_Airplane.Airplane_id创建一个客户信息查询视图供业务员查询客户信息。CREATE VIEW VIEW_CustomerASSELECT * FROM Tbl_CustomerGROUP BY C
30、ustomer_id5.45.4 存储过程、函数及触发器的设计存储过程、函数及触发器的设计创建名为Proc_Add_Flight插入航班信息的存储过程。首先定义要插入航班表中的元组变量和该航班选着飞机的飞机编号,然后再在判断输入的飞机编号是否存在飞机表中,若不在,输出提示信息提示操作员该飞机编号不存在,并回滚;否则将飞机的座位数赋值给航班表中的剩余座位数,完成剩余票数的初始化。其次再判断输入的航班编号是否已经存在在航班表中,若存在,提示操作员该航班编号已经存在,并回滚;否则将输入的值和赋的值插入航班表中,完成航班表信息的录入。其具体的SQL代码如下:CREATE PROCEDURE Proc_
31、Add_Flight Airplane_id CHAR(10), -飞机编号15 Flight_id CHAR(10), -航班编号 Orign VARCHAR(40), -出发地 Destination VARCHAR(40),-目的地 Departure_time TIME, -出发时间 Arrival_time TIME, -到达时间 FPrice FLOAT(2) , -头等舱票价 CPrice FLOAT(2) , -公务舱票价 YPrice FLOAT(2), -经济舱票价 Discount FLOAT(2), -折扣 Voyage VARCHAR(10) -航程 AS BEGIN
32、 IF(SELECT COUNT(*) FROM Tbl_Airplane WHERE Airplane_id=Airplane_id)!=0 BEGIN DECLARE Remain_poll INT; -剩余票数 SELECT Remain_poll=Seating FROM Tbl_Airplane WHERE Airplane_id=Airplane_id IF(SELECT COUNT(*) FROM Tbl_Flight WHERE Flight_id=Flight_id)=0 BEGIN INSERT INTO Tbl_Flight VALUES(Flight_id,Orign,
33、Destination,Departure_time, Arrival_time,FPrice,CPrice,YPrice,Discount,Remain_poll,Voyage) INSERT INTO Tbl_Transfer VALUES(Flight_id,Airplane_id) END ELSE BEGIN PRINT This Flight_id has been on the Tbl_Flight ROLLBACK TRANSACTION END END ELSE BEGIN PRINT NO Airplane_id IN Tbl_Airplane ROLLBACK TRANS
34、ACTION END END创建名为Proc_Flight_id_Slect_Flight以航班编号查询航班信息的存储过程。首先定义航班编号的局部变量,用来存放输入的航班编号的值。然后判断输入的航班编号是否存在航班表中,若不存在,输出提示信息提示用户输入的航班编号有误;否则,输出该航班编号的信息。其具体的SQL代码如下:CREATE PROCEDURE Proc_Flight_id_Slect_Flight16Flight_id CHAR(10)AS BEGIN IF(SELECT COUNT(*) FROM Tbl_Flight WHERE Flight_id=Flight_id)!=0 B
35、EGIN SELECT Tbl_Flight.*,Tbl_Airplane.Airplane_style FROM Tbl_Flight,Tbl_Airplane,Tbl_Transfer WHERE Tbl_Flight.Flight_id=Flight_id AND Tbl_Flight.Flight_id=Tbl_Transfer.Flight_id AND Tbl_Transfer.Airplane_id=Tbl_Airplane.Airplane_id END ELSE BEGIN PRINT NO this Flight_id in the Tbl_Flight.Please in
36、put again! ROLLBACK TRANSACTION END END创建名为Proc_Orign_Destination_Slect_Flight以出发地和目的地查询航班信息的存储过程。首先定义出发地和目的地这两个局部变量,用来存放输入航线的值。然后判断输入的航线是否存在航班表中,若不存在,输出提示信息提示用户输入的航线有误;否则,输出该航线所对应的航班信息。其具体的SQL代码如下:CREATE PROCEDURE Proc_Orign_Destination_Slect_FlightOrign VARCHAR(40), -出发地Destination VARCHAR(40) -目的
37、地AS BEGIN IF(SELECT COUNT(*) FROM Tbl_Flight WHERE Orign=Orign AND Destination=Destination)!=0 BEGIN SELECT Tbl_Flight.*,Tbl_Airplane.Airplane_style FROM Tbl_Flight,Tbl_Airplane,Tbl_Transfer WHERE Tbl_Flight.Orign=Orign AND Tbl_Flight.Destination=Destination AND Tbl_Flight.Flight_id=Tbl_Transfer.Fli
38、ght_id AND Tbl_Transfer.Airplane_id=Tbl_Airplane.Airplane_id END ELSE BEGIN PRINT This route does not exist!Please input again! ROLLBACK TRANSACTION END END17创建名为Proc_Booking_Ticket一个按航班编号订票存储过程。客户首先选择要预订的航班和一个业务员来服务。当确定航班编号和业务员编号后,检验客户选择的航班编号和业务员编号是否存在,若不存在,输出提示信息,并回滚;若存在则再检验该航班是否还有剩余票,若没有,输出提示信息,并
39、回滚;若存在,再检验该客户的信息是否已经存在了客户表中,若不存在,则将该客户的信息录入信息表中。然后再检验客户编号和业务员编号是否存在于服务表中,若不存在,则插入该客户编号和业务员编号于服务表中,以此建立客户和业务员之间的服务关系。最后生成一张机票的基本信息,然后将机票信息插入到机票表中,作为客户预订机票的凭据。其具体的SQL代码如下:CREATE PROCEDURE Proc_Booking_TicketFlight_id CHAR(10), -航班编号Salesman_id CHAR(10), -业务员编号Customer_id CHAR(10), -客户编号Customer_name V
40、ARCHAR(20), -客户姓名Customer_sex CHAR(2), -客户性别Customer_age SMALLINT , -客户年龄Customer_phone VARCHAR(20), -客户电话ID_number CHAR(20), -身份证号Departure_date DATE, -出发日期Shipping_space CHAR(10) -舱位AS BEGIN IF(SELECT COUNT(*) FROM Tbl_Flight WHERE Flight_id=Flight_id)=0 BEGIN PRINT NO this Flight_id in the Tbl_Fl
41、ight.Please input again! ROLLBACK TRANSACTION END IF(SELECT COUNT(*) FROM Tbl_Salesman WHERE Salesman_id=Salesman_id)=0 BEGIN PRINT NO this Salesman_id in the Tbl_Salesman.Please input again! ROLLBACK TRANSACTION END IF(SELECT Remain_poll FROM Tbl_Flight WHERE Flight_id=Flight_id)=0 BEGIN PRINT The
42、flight ticket has been sold out ROLLBACK TRANSACTION END ELSE BEGIN IF(SELECT COUNT(*) FROM Tbl_Customer WHERE Customer_id=Customer_id)=0 BEGIN 18 INSERT INTO Tbl_Customer VALUES(Customer_id,Customer_name,Customer_sex,Customer_age,Customer_phone,ID_number) END IF(SELECT COUNT(*) FROM Tbl_Service WHE
43、RE Customer_id=Customer_id AND Salesman_id=Salesman_id)=0 BEGIN INSERT INTO Tbl_Service VALUES(Customer_id,Salesman_id) END DECLARE Price FLOAT(2) , -票价 Customer_name1 VARCHAR(20), -客户姓名 Orign VARCHAR(40), -出发地 Destination VARCHAR(40); -目的地 SELECT Customer_name1=Customer_name FROM Tbl_Customer WHERE
44、 Customer_id=Customer_id IF Shipping_space=头等舱 BEGIN SELECT Price=FPrice*Discount,Orign=Orign,Destination=Destination FROM Tbl_Flight WHERE Flight_id=Flight_id INSERT INTO Tbl_Air_Ticket VALUES(Flight_id,Customer_id,Customer_name1,Orign,Destination,Price,Departure_date,Shipping_space) END ELSE BEGIN
45、 IF Shipping_space=公务舱 BEGIN SELECT Price=CPrice*Discount,Orign=Orign,Destination=Destination FROM Tbl_Flight WHERE Flight_id=Flight_id INSERT INTO Tbl_Air_Ticket VALUES(Flight_id,Customer_id,Customer_name1,Orign,Destination,Price,Departure_date,Shipping_space) END ELSE BEGIN SELECT Price=YPrice*Dis
46、count,Orign=Orign,Destination=Destination FROM Tbl_Flight WHERE Flight_id=Flight_id INSERT INTO Tbl_Air_Ticket VALUES(Flight_id,Customer_id,Customer_name1,Orign,Destination,Price,Departure_date,Shipping_space) END END END END19创建一个名为Proc_Return_Ticket根据客户编号和航班编号退票的存储过程。首先检验输入的航班编号和客户编号是否存在机票表中,若不存在,
47、输出提示信息,并回滚事物;若存在,首先输出机票表中要删除的元组,然后再进行删除。CREATE PROCEDURE Proc_Return_TicketFlight_id CHAR(10), -航班编号Customer_id CHAR(10) -客户编号AS BEGIN IF(SELECT COUNT(*) FROM Tbl_Air_Ticket WHERE Flight_id=Flight_id AND Customer_id=Customer_id)=0 BEGIN PRINT NO this Flight_id or Customer_id IN the Tbl_Air_Ticket RO
48、LLBACK TRANSACTION END ELSE BEGIN PRINT Refund information SELECT * FROM Tbl_Air_Ticket WHERE Flight_id=Flight_id AND Customer_id=Customer_id DELETE FROM Tbl_Air_Ticket WHERE Flight_id=Flight_id AND Customer_id=Customer_id END END 在Tbl_Air_Ticket表中建立一个插入与删除联合触发的触发器Tri_INSERT_DELETE_Air_Ticket当向Tbl_A
49、ir_Ticket表中插入一条记录时,触发Tbl_Flight表中的剩余票数减;当向Tbl_Air_Ticket表中删除一条记录时,触发Tbl_Flight表中的剩余票数加;其具体的SQL代码如下:CREATE TRIGGER Tri_INSERT_DELETE_Air_TicketON Tbl_Air_TicketFOR INSERT,DELETEAS IF EXISTS(SELECT 1 FROM INSERTED) BEGIN UPDATE Tbl_Flight SET Remain_poll = Remain_poll-1 FROM Tbl_Flight,INSERTED WHERE
50、Tbl_Flight.Flight_id=INSERTED.Flight_id PRINT Booking success! Welcome to use the next! END IF EXISTS(SELECT 1 FROM DELETED) BEGIN UPDATE Tbl_Flight SET Remain_poll = Remain_poll+1 FROM Tbl_Flight,DELETED WHERE Tbl_Flight.Flight_id=DELETED.Flight_id PRINT Refund success! Welcome to use the next!20 END216 安全性设计安全性设计6.1 防止用户直接操作数据库的方法防止用户直接操作数据库的方法用户只能用帐号登陆到应用软件,通过应用软件访问数据库,而没有其他途径操作数据库。用户
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (新教材)2026年沪科版七年级上册数学 1.2 数轴、相反数和绝对值 课件
- 2025年便携式制氧机维保合同协议
- 2025年制造业数字化转型组织架构
- 水温传感器题库及答案
- 2026 年中职酒店服务与管理(客房服务)试题及答案
- 导数大题题库及答案
- 基于“证据推理与模型认知”核心素养培养现状调查的教学设计研究
- 冷战课件教学
- 2025年河北省公需课学习-高等学校境外办学指南
- 2025年员工安全知识测试试题库附答案
- (2026.01.01施行)《生态环境监测条例》解读与实施指南课件
- 2025天津大学管理岗位集中招聘15人考试笔试备考题库及答案解析
- 学堂在线 批判性思维-方法和实践 章节测试答案
- petrel操作指南精讲
- 高效能人士提高办事效率七个习惯学员
- VTE风险评估与预防措施
- 2019国家安全知识竞赛试题试题及答案大全(共471题)
- 高中英语语法专项 词性转换(构词法)练习试题高考例句
- 合成生物学与基因回路课件
- 智慧树知到《走进故宫》2019期末考试答案
- 乐队指挥教案
评论
0/150
提交评论