Oracle机票预定信息系统数据库设计技术学习.docx

上传人:b****6 文档编号:11876235 上传时间:2023-06-03 格式:DOCX 页数:17 大小:149.11KB
下载 相关 举报
Oracle机票预定信息系统数据库设计技术学习.docx_第1页
第1页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第2页
第2页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第3页
第3页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第4页
第4页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第5页
第5页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第6页
第6页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第7页
第7页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第8页
第8页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第9页
第9页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第10页
第10页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第11页
第11页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第12页
第12页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第13页
第13页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第14页
第14页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第15页
第15页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第16页
第16页 / 共17页
Oracle机票预定信息系统数据库设计技术学习.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Oracle机票预定信息系统数据库设计技术学习.docx

《Oracle机票预定信息系统数据库设计技术学习.docx》由会员分享,可在线阅读,更多相关《Oracle机票预定信息系统数据库设计技术学习.docx(17页珍藏版)》请在冰点文库上搜索。

Oracle机票预定信息系统数据库设计技术学习.docx

Oracle机票预定信息系统数据库设计技术学习

 

《数据库原理及应用》课程设计

 

设计题目机票预订信息系统

系部信息技术工程学院

班级网络1302

学号

姓名

2016年1月

一、需求分析

Ø背景分析

以信息技术为主要标志的科技进步日新月异,高科技成果向现实生产力的转化越来越快。

纵观全球经济发展,信息技术和信息产业已经成为经济增长的主要推动力之一,正在改变着传统的生产和经营方式以至生活方式,发达国家经过产业结构的升级和经济结构的转型已进入信息经济阶段。

机票预订系统也开始影响着人们日常生活和出行,并且变得越来越重要。

而原有的系统随着航空公司载客量的迅猛增长和人们对便捷性要求的提高,已经变得无法满足需求。

原有的系统不仅效率比较低下,而且在安全性、准确性等方面有很多不足。

为了实现航空公司以及旅游行业的现代化管理,进一步提高工作效率,方便旅客,需要开发一个机票预订系统。

Ø需求分析

1)系统功能:

●航班信息的输入,修改查询。

●航班座位信息的输入,修改查询。

●根据旅客输入的基本信息,为旅客安排航班,打印取票通知和帐单。

●旅客在飞机起飞前一天凭取票通知交款取票。

●旅客能够退订机票。

●能够查询每个航班的预定情况、计算航班的满座率。

2)系统信息:

●航班信息:

航班编号、飞机编号、起飞地、目的地、起飞时间、飞行时间等。

●飞机信息:

飞机编号、飞机型号、座位数。

●机票信息:

航班编号、旅客编号、座位号、票价等。

●旅客信息:

姓名、性别、联系电话、身份证号等。

3)数据流图:

4)数据字典:

根据总体结构图设计机票预定系统基本表结构,其相应标的定义如下:

表4-1飞机信息

字段名称

类型

长度

是否非空

主关键字

备注

plain_id

VARCHAR2

10

Y

飞机编号

model

VARCHAR2

10

N

飞机型号

seat

int

2

N

总座位

表4-2航班信息

字段名称

类型

长度

是否非空

主关键字

备注

flight_id

VARCHAR2

10

Y

航班编号

plain_id

VARCHAR2

10

N

飞机编号

start

VARCHAR2

10

N

起飞地

end

VARCHAR2

10

N

目的地

departure_time

datetime

N

起飞时间

duration

int

4

N

飞行时间

表4-3机票信息

字段名称

类型

长度

是否非空

主关键字

备注

tickets_id

VARCHAR2

10

Y

机票编号

flight_id

VARCHAR2

10

Y

航班编号

traveler_id

VARCHAR2

10

N

旅客编号

seating_list

int

4

N

座位号

cabin_rating

VARCHAR2

10

N

机舱等级

updata_time

datetime

N

更新时间

status

int

10

N

状态

表4-4旅客信息

字段名称

类型

长度

是否非空

主关键字

备注

traveler_id

VARCHAR2

10

Y

旅客编号

name

VARCHAR2

10

N

姓名

sex

int

1

N

性别

id_value

VARCHAR2

20

N

身份证号

phone

VARCHAR2

11

N

联系方式

表4-5账单信息

字段名称

类型

长度

是否非空

主关键字

备注

bill_id

VARCHAR2

10

Y

账单编号

traveler_id

VARCHAR2

10

Y

旅客编号

tickets_id

VARCHAR2

10

Y

机票编号

payment

float

(2)

N

N

价格

updata_time

datetime

N

更新时间

status

int

4

N

付款状态

二、结构设计

ØE-R图

根据需求分析抽象出信息结构,可得该系统的E-R图。

飞机E-R图,如图4-1所示。

图4-1飞机E-R图

航班E-R图,如图4-2所示。

图4-2航班E-R图

机票E-R图,如图4-3所示。

图4-3机票E-R图

旅客E-R图,如图4-4所示。

图4-4旅客E-R图

账单E-R图,如图4-5所示。

图4-5账单E-R图

航班坐位E-R图,如图4-6所示。

图4-6航班坐位E-R图

取票通知E-R图,如图4-7所示。

图4-7取票通知E-R图

总E-R图,如图4-8所示。

图4-8总E-R图

Ø关系模式

基本表

飞机信息表(飞机编号、飞机型号、飞机座位)

航班信息表(航班编号、飞机编号、起飞地、目的地、起飞时间、飞行时间)

机票信息表(机票编号、航班编号、旅客编号、机舱等级、座位号、更新时间、状态)

旅客信息表(旅客编号、姓名、性别、联系电话、身份证号)

账单表(账单编号、旅客编号、机票编号、价格、更新时间、状态)

虚表(视图)

航班坐位情况表(机票信息表.航班编号、机票信息表.座位号、机票信息表.状态)

取票通知表(机票信息表.航班编号、机票信息表.旅客编号、机票信息表.座位号、机票信息表.状态)

三、数据库实现

Ø创建表空间与赋权限

createtemporarytablespaceHKSP_TEMP

tempfile'C:

\oraclexe\app\oracle\oradata\XE\HKSP_TEMP.dbf'

size50M

autoextendon

next50Mmaxsize1048M

extentmanagementlocal;

createtablespaceHKSP_DATA

atafile'C:

\oraclexe\app\oracle\oradata\XE\HKSP_DATA.dbf'

size50M

autoextendon

next50Mmaxsize1048M

extentmanagementlocal;

createuserHKSPidentifiedby123456

defaulttablespaceHKSP_DATA

temporarytablespaceHKSP_TEMP;

grantconnect,resource,dbatoHKSP;

Ø飞机信息表建立

CREATETABLE"HKSP"."plain"(

"plain_id"VARCHAR2(10BYTE)NOTNULLprimarykey,

"model"VARCHAR2(10BYTE)NOTNULL,

"seat"NUMBERNOTNULL

Ø航班信息表建立

CREATETABLE"HKSP"."flight"(

"flight_id"VARCHAR2(10BYTE)NOTNULLprimarykey,

"plain_id"VARCHAR2(10BYTE)NOTNULL,

"start"VARCHAR2(20BYTE)NOTNULL,

"end"VARCHAR2(20BYTE)NOTNULL,

"departure_time"DATENOTNULL,

"duration"NUMBERNOTNULL

Ø机票信息表建立

CREATETABLE"HKSP"."tickets"(

"tickets_id"VARCHAR2(10BYTE)NOTNULLprimarykey,

"flight_id"VARCHAR2(10BYTE)NOTNULL,

"traveler_id"VARCHAR2(10BYTE)NOTNULL,

"seating_list"NUMBERNOTNULL,

"cabin_rating"VARCHAR2(10BYTE)NOTNULL,

"updata_time"DATENOTNULL,

"status"NUMBERNOTNULL

Ø旅客信息表建立

CREATETABLE"HKSP"."traveler"(

"traveler_id"VARCHAR2(10BYTE)NOTNULLprimarykey,

"name"VARCHAR2(10BYTE)NOTNULL,

"sex"NUMBERNOTNULL,

"id_value"VARCHAR2(20BYTE)NOTNULL,

"phone"VARCHAR2(11BYTE)NOTNULL

Ø账单信息表建立

CREATETABLE"HKSP"."bill"(

"bill_id"VARCHAR2(10BYTE)NOTNULLprimarykey,

"traveler_id"VARCHAR2(10BYTE)NOTNULL,

"tickets_id"VARCHAR2(10BYTE)NOTNULL,

"payment"FLOAT(10)NOTNULL,

"updata_time"DATENOTNULL,

"status"NUMBERNOTNULL

Ø航班坐位视图

CREATEORREPLACEFORCEVIEW"HKSP"."seating_view"AS

SELECT

HKSP."tickets"."flight_id",

HKSP."tickets"."seating_list",

HKSP."tickets"."status"

FROM

HKSP."tickets";

Ø取票通知视图

CREATEORREPLACEFORCEVIEW"HKSP"."notice_view"AS

SELECT

HKSP."tickets"."flight_id",

HKSP."tickets"."traveler_id",

HKSP."tickets"."status"

FROM

HKSP."tickets"

WHERE

HKSP."tickets"."status"=2;

Ø外键语句

ALTERTABLE"HKSP"."bill"ADDFOREIGNKEY("traveler_id")

REFERENCES"HKSP"."traveler"("traveler_id")ONDELETECASCADE;

ALTERTABLE"HKSP"."bill"ADDFOREIGNKEY("tickets_id")

REFERENCES"HKSP"."tickets"("tickets_id")ONDELETECASCADE;

ALTERTABLE"HKSP"."flight"ADDFOREIGNKEY("plain_id")

REFERENCES"HKSP"."plain"("plain_id")ONDELETECASCADE;

ALTERTABLE"HKSP"."tickets"ADDFOREIGNKEY("traveler_id")

REFERENCES"HKSP"."traveler"("traveler_id")ONDELETECASCADE;

四、数据库实施

Ø添加飞机

INSERTINTO"HKSP"."plain"VALUES('F-T1235','T12306','100');

INSERTINTO"HKSP"."plain"VALUES('F-T1236','T12306','100');

INSERTINTO"HKSP"."plain"VALUES('F-T1237','T12306','100');

INSERTINTO"HKSP"."plain"VALUES('F-T1234','T12306','100');

Ø添加航班

INSERTINTO"HKSP"."flight"VALUES('MH370','F-T1235','北京','马来西亚',TO_DATE('2016-01-1810:

12:

09','YYYY-MM-DDHH24:

MI:

SS'),'5');

INSERTINTO"HKSP"."flight"VALUES('MH371','F-T1236','北京','西安',TO_DATE('2016-01-1909:

20:

13','YYYY-MM-DDHH24:

MI:

SS'),'4');

INSERTINTO"HKSP"."flight"VALUES('MH372','F-T1237','北京,'上海',TO_DATE('2016-01-2020:

14:

17','YYYY-MM-DDHH24:

MI:

SS'),'11');

INSERTINTO"HKSP"."flight"VALUES('MH373','F-T1234','北京','杭州',TO_DATE('2016-01-1905:

29:

21','YYYY-MM-DDHH24:

MI:

SS'),'3');

Ø添加用户

INSERTINTO"HKSP"."traveler"VALUES('LK00001','小明','1','140522199311111111','123456781');

INSERTINTO"HKSP"."traveler"VALUES('LK00002','小红','2','140522199311111112','123456782');

INSERTINTO"HKSP"."traveler"VALUES('LK00003','小芳','2','140522199311111113','123456783');

INSERTINTO"HKSP"."traveler"VALUES('LK00004','小小','1','140522199311111114','123456784');

INSERTINTO"HKSP"."traveler"VALUES('LK00005','小亮','1','140522199311111115','123456785');

INSERTINTO"HKSP"."traveler"VALUES('LK00006','小心','2','140522199311111116','123456786');

Ø预定机票(存储过程)

CREATEORREPLACE

PROCEDUREbook_tickets(flight_idINVARCHAR2,traveler_idINVARCHAR2,seatingINNUMBER)

AS

ticketsid"tickets"."tickets_id"%TYPE;

test_ticketsidNUMBER;

test_cabin"tickets"."cabin_rating"%TYPE;

tempvarchar(32);

test_valueNUMBER:

=0;

BEGIN

--生成机票ID

temp:

=sys_guid();

ticketsid:

=substr(temp,1,6)||substr(temp,28,4);

--测试座位是否被预定

SELECTcount(*)INTOtest_ticketsid

FROM"tickets"

WHERE"seating_list"=seating;

--查看结果

IFtest_ticketsid=0THEN

--座位未被预定

--判断仓位等级

test_value:

=seating/10;

CASE

WHENtest_value<1THEN

test_cabin:

='商务舱';

WHENtest_value<2THEN

test_cabin:

='二等舱';

ELSE

BEGIN

test_cabin:

='经济舱';

END;

ENDCASE;

--预定机票

INSERTINTO"HKSP"."tickets"VALUES(ticketsid,flight_id,traveler_id,seating,test_cabin,SYSDATE,1);

DBMS_OUTPUT.PUT_LINE('预定成功');

ELSE

--座位已被预定

DBMS_OUTPUT.PUT_LINE('座位已被预定');

ENDIF;

END;

Ø打印取票通知(存储函数)

CREATEORREPLACE

FUNCTIONget_voucher(flight_idINVARCHAR2,traveler_idINVARCHAR2)

RETURNVARCHAR2

AS

test_tickets"tickets"."tickets_id"%TYPE;

BEGIN

--获得机票ID

SELECT"tickets"."tickets_id"INTOtest_tickets

FROM"tickets"

WHERE"flight_id"=flight_idAND"traveler_id"=traveler_id;

--更新状态

UPDATE"tickets"SET"status"=2

WHERE"tickets"."tickets_id"=test_tickets;

--返回机票ID

RETURNtest_tickets;

EXCEPTION

WHENOTHERSTHEN

RETURN'你没有预定机票';

END;

Ø生成账单(触发器和存储过程)

――插入账单 存储过程

CREATEORREPLACE

PROCEDUREinsert_bill(traveler_idINVARCHAR2,tickets_idINVARCHAR2,statusINNUMBER)

AS

tempvarchar2(32);

uuidvarchar2(10);

BEGIN

temp:

=sys_guid();

uuid:

=substr(temp,1,10);

IFstatus=2THEN

INSERTINTO"HKSP"."bill"("bill_id","traveler_id","tickets_id","payment","updata_time","status")VALUES(uuid,traveler_id,tickets_id,100,SYSDATE,1);

ENDIF;

END;

――机票状态触发器

CREATEORREPLACETRIGGERbill_add

AFTERUPDATEOF"status"ON"HKSP"."tickets"

FOREACHROW

BEGIN

INSERT_BILL(:

OLD."traveler_id",:

OLD."tickets_id",:

NEW."status");

END;

五、总结

经过一周的努力,本次课程设计终于完成了。

通过这次课程设计,我对数据库这门课程有了更深入的理解,数据库是一门实践性较强的课程,同时我明白了理论与实际应用相结合的重要性,掌握并熟练运用SQL语句,提高了我的综合运用所学知识的能力。

1.独立创建表空间,创建用户,并赋予权限。

2.创建表,指定主键,指定外键。

3.Select,include,update,delect等语句的使用。

4.存储过程,存储函数,触发器的使用。

5.对数据库的创建过程有了一个系统的理解。

在本次课程设计和过程中,由于时间不是很长,再加上要求独立完成,系统需求分析上可能不是很全面,程序中还存在很多缺,希望老师能给予批评和指导。

经过这次课程设计,我的知识得到了很大,经验也更加丰富。

希望能在今后的不断的学习中和努力中,把程序做得更好。

最后,感谢指导老师给予的帮助。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2