Oracle机票预定信息系统数据库设计Word文档格式.docx
《Oracle机票预定信息系统数据库设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《Oracle机票预定信息系统数据库设计Word文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
表4-1飞机信息<
plain>
字段名称
类型
长度
是否非空
主关键字
备注
plain_id
VARCHAR2
10
Y
飞机编号
model
N
飞机型号
seat
int
2
总座位
表4-2航班信息<
flight>
flight_id
航班编号
start
起飞地
end
目的地
departure_time
datetime
起飞时间
duration
4
飞行时间
表4-3机票信息<
tickets>
tickets_id
机票编号
traveler_id
旅客编号
seating_list
座位号
cabin_rating
机舱等级
updata_time
更新时间
status
状态
表4-4旅客信息<
traveler>
name
姓名
sex
1
性别
id_value
20
身份证号
phone
11
联系方式
表4-5账单信息<
bill>
bill_id
账单编号
payment
float
(2)
价格
付款状态
二、结构设计
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'
\oraclexe\app\oracle\oradata\XE\HKSP_DATA.dbf'
createuserHKSPidentifiedby123456
defaulttablespaceHKSP_DATA
temporarytablespaceHKSP_TEMP;
grantconnect,resource,dbatoHKSP;
飞机信息表建立
CREATETABLE"
HKSP"
."
plain"
(
"
plain_id"
VARCHAR2(10BYTE)NOTNULLprimarykey,
model"
VARCHAR2(10BYTE)NOTNULL,
seat"
NUMBERNOTNULL
)
航班信息表建立
flight"
flight_id"
VARCHAR2(10BYTE)NOTNULLprimarykey,
start"
VARCHAR2(20BYTE)NOTNULL,
end"
departure_time"
DATENOTNULL,
duration"
机票信息表建立
tickets"
tickets_id"
traveler_id"
seating_list"
NUMBERNOTNULL,
cabin_rating"
updata_time"
status"
旅客信息表建立
traveler"
name"
sex"
id_value"
phone"
VARCHAR2(11BYTE)NOTNULL
账单信息表建立
bill"
bill_id"
payment"
FLOAT(10)NOTNULL,
航班坐位视图
CREATEORREPLACEFORCEVIEW"
seating_view"
AS
SELECT
HKSP."
FROM
;
取票通知视图
notice_view"
WHERE
=2;
外键语句
ALTERTABLE"
ADDFOREIGNKEY("
)
REFERENCES"
("
)ONDELETECASCADE;
四、数据库实施
添加飞机
INSERTINTO"
VALUES('
F-T1235'
'
T12306'
100'
);
F-T1236'
F-T1237'
F-T1234'
添加航班
MH370'
北京'
马来西亚'
TO_DATE('
2016-01-1810:
12:
09'
YYYY-MM-DDHH24:
MI:
SS'
),'
5'
MH371'
西安'
2016-01-1909:
20:
13'
4'
MH372'
北京,'
上海'
2016-01-2020:
14:
17'
11'
MH373'
杭州'
2016-01-1905:
29:
21'
3'
添加用户
LK00001'
小明'
1'
140522199311111111'
123456781'
LK00002'
小红'
2'
140522199311111112'
123456782'
LK00003'
小芳'
140522199311111113'
123456783'
LK00004'
小小'
140522199311111114'
123456784'
LK00005'
小亮'
140522199311111115'
123456785'
LK00006'
小心'
140522199311111116'
123456786'
预定机票(存储过程)
CREATEORREPLACE
PROCEDUREbook_tickets(flight_idINVARCHAR2,traveler_idINVARCHAR2,seatingINNUMBER)
AS
ticketsid"
%TYPE;
test_ticketsidNUMBER;
test_cabin"
tempvarchar(32);
test_valueNUMBER:
=0;
BEGIN
--生成机票ID
temp:
=sys_guid();
ticketsid:
=substr(temp,1,6)||substr(temp,28,4);
--测试座位是否被预定
SELECTcount(*)INTOtest_ticketsid
FROM"
WHERE"
=seating;
--查看结果
IFtest_ticketsid=0THEN
--座位未被预定
--判断仓位等级
test_value:
=seating/10;
CASE
WHENtest_value<
1THEN
test_cabin:
='
商务舱'
2THEN
二等舱'
ELSE
BEGIN
test_cabin:
经济舱'
END;
ENDCASE;
--预定机票
INSERTINTO"
VALUES(ticketsid,flight_id,traveler_id,seating,test_cabin,SYSDATE,1);
DBMS_OUTPUT.PUT_LINE('
预定成功'
ELSE
--座位已被预定
座位已被预定'
ENDIF;
END;
打印取票通知(存储函数)
FUNCTIONget_voucher(flight_idINVARCHAR2,traveler_idINVARCHAR2)
RETURNVARCHAR2
test_tickets"
--获得机票ID
SELECT"
INTOtest_tickets
=flight_idAND"
=traveler_id;
--更新状态
UPDATE"
SET"
=2
=test_tickets;
--返回机票ID
RETURNtest_tickets;
EXCEPTION
WHENOTHERSTHEN
RETURN'
你没有预定机票'
生成账单(触发器和存储过程)
――插入账单 存储过程
PROCEDUREinsert_bill(traveler_idINVARCHAR2,tickets_idINVARCHAR2,statusINNUMBER)
tempvarchar2(32);
uuidvarchar2(10);
temp:
uuid:
=substr(temp,1,10);
IFstatus=2THEN
"
)VALUES(uuid,traveler_id,tickets_id,100,SYSDATE,1);
ENDIF;
――机票状态触发器
CREATEORREPLACETRIGGERbill_add
AFTERUPDATEOF"
ON"
FOREACHROW
INSERT_BILL(:
OLD."
:
NEW."
五、总结
经过一周的努力,本次课程设计终于完成了。
通过这次课程设计,我对数据库这门课程有了更深入的理解,数据库是一门实践性较强的课程,同时我明白了理论与实际应用相结合的重要性,掌握并熟练运用SQL语句,提高了我的综合运用所学知识的能力。
1.独立创建表空间,创建用户,并赋予权限。
2.创建表,指定主键,指定外键。
3.Select,include,update,delect等语句的使用。
4.存储过程,存储函数,触发器的使用。
5.对数据库的创建过程有了一个系统的理解。
在本次课程设计和过程中,由于时间不是很长,再加上要求独立完成,系统需求分析上可能不是很全面,程序中还存在很多缺,希望老师能给予批评和指导。
经过这次课程设计,我的知识得到了很大,经验也更加丰富。
希望能在今后的不断的学习中和努力中,把程序做得更好。
最后,感谢指导老师给予的帮助。