Oracle機票預(yù)定信息系統(tǒng)數(shù)據(jù)庫設(shè)計_第1頁
Oracle機票預(yù)定信息系統(tǒng)數(shù)據(jù)庫設(shè)計_第2頁
Oracle機票預(yù)定信息系統(tǒng)數(shù)據(jù)庫設(shè)計_第3頁
Oracle機票預(yù)定信息系統(tǒng)數(shù)據(jù)庫設(shè)計_第4頁
Oracle機票預(yù)定信息系統(tǒng)數(shù)據(jù)庫設(shè)計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、數(shù)據(jù)庫原理及應(yīng)用課程設(shè)計設(shè)計題目 機票預(yù)訂信息系統(tǒng) 系 部 信息技術(shù)工程學院 班 級 網(wǎng)絡(luò) 1302 學 號 姓 名 2016 年 1 月目錄一、需求分析3背景分析3需求分析31)系統(tǒng)功能:32)系統(tǒng)信息:33)數(shù)據(jù)流圖:34)數(shù)據(jù)字典:4二、結(jié)構(gòu)設(shè)計5e-r圖5飛機e-r圖,如圖4-1所示6航班e-r圖,如圖4-2所示。6機票e-r圖,如圖4-3所示。6旅客e-r圖,如圖4-4所示。6賬單e-r圖,如圖4-5所示。7航班坐位e-r圖,如圖4-6所示。7取票通知e-r圖,如圖4-7所示。7總e-r圖,如圖4-8所示。8關(guān)系模式9基本表9虛表(視圖)9三、數(shù)據(jù)庫實現(xiàn)9創(chuàng)建表空間與賦權(quán)限9飛機信息

2、表建立9航班信息表建立10機票信息表建立10旅客信息表建立10賬單信息表建立10航班坐位視圖10取票通知視圖11外鍵語句11四、數(shù)據(jù)庫實施11添加飛機11添加航班11添加用戶12預(yù)定機票(存儲過程)12打印取票通知(存儲函數(shù))13生成賬單(觸發(fā)器和存儲過程)13五、總結(jié)14一、 需求分析 背景分析以信息技術(shù)為主要標志的科技進步日新月異,高科技成果向現(xiàn)實生產(chǎn)力的轉(zhuǎn)化越來越快。 縱觀全球經(jīng)濟發(fā)展, 信息技術(shù)和信息產(chǎn)業(yè)已經(jīng)成為經(jīng)濟增長的主要推動力之一, 正在改變著傳統(tǒng)的生產(chǎn)和經(jīng)營方式以至生活方式, 發(fā)達國家經(jīng)過產(chǎn)業(yè)結(jié)構(gòu)的升級和經(jīng)濟結(jié)構(gòu) 的轉(zhuǎn)型已進入信息經(jīng)濟階段。 機票預(yù)訂系統(tǒng)也開始影響著人們?nèi)粘I?/p>

3、和出行,并且變得越來越重要。而原有的系統(tǒng)隨著航空公司載客量的迅猛增長和人們對便捷性要求的提高,已經(jīng)變得無法滿足需求。原有的系統(tǒng)不僅效率比較低下,而且在安全性、準確性等方面有很多不足。為了實現(xiàn)航空公司以及旅游行業(yè)的現(xiàn)代化管理,進一步提高工作效率,方便旅客,需要開發(fā)一個機票預(yù)訂系統(tǒng)。 需求分析1) 系統(tǒng)功能:l 航班信息的輸入,修改查詢。l 航班座位信息的輸入,修改查詢。l 根據(jù)旅客輸入的基本信息,為旅客安排航班,打印取票通知和帳單。l 旅客在飛機起飛前一天憑取票通知交款取票。l 旅客能夠退訂機票。l 能夠查詢每個航班的預(yù)定情況、計算航班的滿座率。2) 系統(tǒng)信息:l 航班信息: 航班編號、飛機編號

4、、起飛地、目的地、起飛時間、飛行時間等。l 飛機信息:飛機編號、飛機型號、座位數(shù)。l 機票信息:航班編號、旅客編號、座位號、票價等。l 旅客信息:姓名、性別、聯(lián)系電話、身份證號等。3) 數(shù)據(jù)流圖:工作人員編輯航班飛機表航班表機票表用戶表賬單表旅客機票操作用戶信息編輯賬單操作4) 數(shù)據(jù)字典:根據(jù)總體結(jié)構(gòu)圖設(shè)計機票預(yù)定系統(tǒng)基本表結(jié)構(gòu),其相應(yīng)標的定義如下:表4-1 飛機信息字段名稱類型長度是否非空主關(guān)鍵字備注plain_idvarchar210y飛機編號modelvarchar210n飛機型號seatint2n總座位表4-2 航班信息字段名稱類型長度是否非空主關(guān)鍵字備注flight_idvarcha

5、r210y航班編號plain_idvarchar210n飛機編號startvarchar210n起飛地endvarchar210n目的地departure_timedatetimen起飛時間durationint4n飛行時間表4-3 機票信息字段名稱類型長度是否非空主關(guān)鍵字備注tickets_idvarchar210y機票編號flight_idvarchar210y航班編號traveler_idvarchar210n旅客編號seating_listint4n座位號cabin_ratingvarchar210n機艙等級updata_timedatetimen更新時間statusint10n狀態(tài)表

6、4-4 旅客信息字段名稱類型長度是否非空主關(guān)鍵字備注traveler_idvarchar210y旅客編號namevarchar210n姓名sexint1n性別id_valuevarchar220n身份證號phonevarchar211n聯(lián)系方式表4-5 賬單信息字段名稱類型長度是否非空主關(guān)鍵字備注bill_idvarchar210y賬單編號traveler_idvarchar210y旅客編號tickets_idvarchar210y機票編號paymentfloat(2)nn 價格updata_timedatetimen更新時間statusint4n付款狀態(tài)二、 結(jié)構(gòu)設(shè)計 e-r圖根據(jù)需求分析抽

7、象出信息結(jié)構(gòu),可得該系統(tǒng)的e-r圖。 飛機e-r圖,如圖4-1所示。飛機飛機編號座位數(shù)飛機型號圖4-1 飛機e-r圖 航班e-r圖,如圖4-2所示。航班出發(fā)地航班編號起飛時間飛行時間目的地飛機編號圖4-2 航班e-r圖機票e-r圖,如圖4-3所示。機票機艙等級機票編號狀態(tài)座位號航班編號旅客編號號更新時間圖4-3 機票e-r圖旅客e-r圖,如圖4-4所示。旅客姓名性別身份證號號碼碼旅客編號聯(lián)系電話碼碼圖4-4 旅客e-r圖賬單e-r圖,如圖4-5所示。賬單機艙等級機票編號狀態(tài)座位號航班編號旅客編號號更新時間賬單編號圖4-5 賬單e-r圖航班坐位e-r圖,如圖4-6所示。航班坐位狀態(tài)座位號航班編號

8、 圖4-6 航班坐位e-r圖取票通知e-r圖,如圖4-7所示。取票通知狀態(tài)座位號航班編號旅客編號 圖4-7 取票通知e-r圖總e-r圖,如圖4-8所示。飛機飛機編號座位數(shù)飛機型號航班出發(fā)地航班編號飛行時間目的地飛機編號起飛時間有11機票機艙等級機票編號狀態(tài)座位號航班編號旅客編號號更新時間包含1m購買1旅客姓名性別身份證號號碼碼旅客編號聯(lián)系電話碼碼1賬單機票編號狀態(tài)付款旅客編號號更新時間屬于11賬單編號圖4-8 總e-r圖 關(guān)系模式基本表飛機信息表(飛機編號、飛機型號、飛機座位)航班信息表(航班編號、飛機編號、 起飛地、目的地、起飛時間、飛行時間)機票信息表(機票編號、航班編號、旅客編號、機艙等

9、級、座位號、更新時間、狀態(tài))旅客信息表(旅客編號、姓名、性別、聯(lián)系電話、身份證號)賬單表 (賬單編號、旅客編號、機票編號、價格、更新時間、狀態(tài))虛表(視圖)航班坐位情況表 (機票信息表.航班編號、機票信息表.座位號、機票信息表.狀態(tài))取票通知表 (機票信息表.航班編號、機票信息表. 旅客編號、 機票信息表.座位號、機票信息表.狀態(tài))三、 數(shù)據(jù)庫實現(xiàn) 創(chuàng)建表空間與賦權(quán)限create temporary tablespace hksp_temptempfilec:oraclexeapporacleoradataxehksp_temp.dbfsize 50mautoextend onnext 50m

10、 maxsize 1048mextent management local;create tablespace hksp_dataatafile c:oraclexeapporacleoradataxehksp_data.dbfsize 50mautoextend onnext 50m maxsize 1048mextent management local;create user hksp identified by 123456default tablespace hksp_datatemporary tablespace hksp_temp;grant connect,resource,

11、dba to hksp; 飛機信息表建立create table hksp.plain (plain_id varchar2(10 byte) not null primary key ,model varchar2(10 byte) not null ,seat number not null ) 航班信息表建立create table hksp.flight (flight_id varchar2(10 byte) not null primary key,plain_id varchar2(10 byte) not null ,start varchar2(20 byte) not nu

12、ll ,end varchar2(20 byte) not null ,departure_time date not null ,duration number not null ) 機票信息表建立create table hksp.tickets (tickets_id varchar2(10 byte) not null primary key,flight_id varchar2(10 byte) not null ,traveler_id varchar2(10 byte) not null ,seating_list number not null ,cabin_rating va

13、rchar2(10 byte) not null ,updata_time date not null ,status number not null ) 旅客信息表建立create table hksp.traveler (traveler_id varchar2(10 byte) not null primary key ,name varchar2(10 byte) not null ,sex number not null ,id_value varchar2(20 byte) not null ,phone varchar2(11 byte) not null ) 賬單信息表建立cr

14、eate table hksp.bill (bill_id varchar2(10 byte) not null primary key,traveler_id varchar2(10 byte) not null ,tickets_id varchar2(10 byte) not null ,payment float(10) not null ,updata_time date not null ,status number not null ) 航班坐位視圖create or replace force view hksp.seating_view as selecthksp.ticke

15、ts.flight_id,hksp.tickets.seating_list,hksp.tickets.statusfromhksp.tickets; 取票通知視圖create or replace force view hksp.notice_view as selecthksp.tickets.flight_id,hksp.er_id,hksp.tickets.statusfromhksp.ticketswherehksp.tickets.status = 2; 外鍵語句alter table hksp.bill add foreign key (travele

16、r_id) references hksp.traveler (traveler_id) on delete cascade;alter table hksp.bill add foreign key (tickets_id) references hksp.tickets (tickets_id) on delete cascade;alter table hksp.flight add foreign key (plain_id) references hksp.plain (plain_id) on delete cascade;alter table hksp.tickets add

17、foreign key (traveler_id) references hksp.traveler (traveler_id) on delete cascade;四、 數(shù)據(jù)庫實施 添加飛機insert into hksp.plain values (f-t1235, t12306, 100);insert into hksp.plain values (f-t1236, t12306, 100);insert into hksp.plain values (f-t1237, t12306, 100);insert into hksp.plain values (f-t1234, t1230

18、6, 100); 添加航班insert into hksp.flight values (mh370, f-t1235, 北京, 馬來西亞, to_date(2016-01-18 10:12:09, yyyy-mm-dd hh24:mi:ss), 5);insert into hksp.flight values (mh371, f-t1236, 北京, 西安, to_date(2016-01-19 09:20:13, yyyy-mm-dd hh24:mi:ss), 4);insert into hksp.flight values (mh372, f-t1237, 北京, 上海, to_da

19、te(2016-01-20 20:14:17, yyyy-mm-dd hh24:mi:ss), 11);insert into hksp.flight values (mh373, f-t1234, 北京, 杭州, to_date(2016-01-19 05:29:21, yyyy-mm-dd hh24:mi:ss), 3); 添加用戶insert into hksp.traveler values (lk00001, 小明, 1, 123456781);insert into hksp.traveler values (lk00002, 小紅, 2,

20 123456782);insert into hksp.traveler values (lk00003, 小芳, 2, 123456783);insert into hksp.traveler values (lk00004, 小小, 1, 123456784);insert into hksp.traveler values (lk00005, 小亮, 1, 123456785);insert into hksp.traveler

21、values (lk00006, 小心, 2, 123456786); 預(yù)定機票(存儲過程)create or replace procedure book_tickets (flight_id in varchar2, traveler_id in varchar2, seating in number)asticketsid tickets.tickets_id %type; test_ticketsid number;test_cabin tickets.cabin_rating %type;temp varchar(32);test_value

22、number:=0;begin-生成機票idtemp:=sys_guid(); ticketsid:= substr(temp,1,6)|substr(temp,28,4);-測試座位是否被預(yù)定 select count(*) into test_ticketsidfrom ticketswhere seating_list = seating;-查看結(jié)果if test_ticketsid = 0 then-座位未被預(yù)定-判斷倉位等級test_value := seating/10;case when test_value 1 thentest_cabin:=商務(wù)艙;when test_val

23、ue 2 thentest_cabin:=二等艙;elsebegintest_cabin:=經(jīng)濟艙;end; end case; -預(yù)定機票insert into hksp.tickets values (ticketsid, flight_id, traveler_id, seating, test_cabin, sysdate,1); dbms_output.put_line(預(yù)定成功);else-座位已被預(yù)定dbms_output.put_line(座位已被預(yù)定);end if;end; 打印取票通知(存儲函數(shù))create or replace function get_voucher

24、 (flight_id in varchar2, traveler_id in varchar2)return varchar2astest_tickets tickets.tickets_id %type;begin -獲得機票idselect tickets.tickets_id into test_ticketsfrom ticketswhere flight_id = flight_id and traveler_id = traveler_id; -更新狀態(tài)update tickets set status=2where tickets.tickets_id = test_tickets; -返回機票idreturn test_tickets;exceptionwhen others thenreturn 你沒有預(yù)定機票;end; 生成賬單(觸發(fā)器和存儲過程)插入賬單存儲過程create or replace procedure insert_bill (traveler_id in varchar2, tickets_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論