Oracle第16章基于Oracle數(shù)據(jù)庫的應(yīng)用開發(fā)_第1頁
Oracle第16章基于Oracle數(shù)據(jù)庫的應(yīng)用開發(fā)_第2頁
Oracle第16章基于Oracle數(shù)據(jù)庫的應(yīng)用開發(fā)_第3頁
Oracle第16章基于Oracle數(shù)據(jù)庫的應(yīng)用開發(fā)_第4頁
Oracle第16章基于Oracle數(shù)據(jù)庫的應(yīng)用開發(fā)_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程第第16 基于基于Oracle數(shù)據(jù)庫的應(yīng)數(shù)據(jù)庫的應(yīng)用開發(fā)用開發(fā)Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程本章內(nèi)容本章內(nèi)容p圖書管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)與開發(fā)p基于Oracle數(shù)據(jù)庫的人事管理系統(tǒng)開發(fā) Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程本章要求本章要求p了解基于數(shù)據(jù)庫的應(yīng)用系統(tǒng)開發(fā)過程p了解圖書管理系統(tǒng)開發(fā)的過程與實(shí)現(xiàn)p了解人事管理系統(tǒng)部分核心代碼的實(shí)現(xiàn)Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程16.1圖書管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)與開發(fā)圖書管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)與開發(fā)p圖書管理系統(tǒng)需求分析p圖書管理系統(tǒng)數(shù)據(jù)庫對象設(shè)計(jì)p圖書管理系統(tǒng)數(shù)據(jù)庫對象創(chuàng)建p圖書管理系統(tǒng)應(yīng)用開發(fā)Oracle10g 數(shù)據(jù)庫基

2、礎(chǔ)教程16.1.1 圖書管理系統(tǒng)需求分析圖書管理系統(tǒng)需求分析Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程16.1.2 圖書管理系統(tǒng)數(shù)據(jù)庫對象設(shè)計(jì)圖書管理系統(tǒng)數(shù)據(jù)庫對象設(shè)計(jì)p表設(shè)計(jì)p序列設(shè)計(jì)p視圖設(shè)計(jì)pPL/SQL功能模塊設(shè)計(jì)Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程表設(shè)計(jì)表設(shè)計(jì)pBOOK_CLASS表結(jié)構(gòu)及其約束字段名數(shù)據(jù)類型長度約束說明classidNUMBER11主碼學(xué)科類型編號classnameVARCHAR220NOT NULL學(xué)科類型名稱demoVARCHAR2100說明Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程pBOOK_TYPE表結(jié)構(gòu)及其約束字段名數(shù)據(jù)類型長度約束說明typeidNUMBER11主碼圖書類

3、型編號typenameVARCHAR220NOT NULL圖書類型名稱demoVARCHAR2100說明Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程pBOOK表結(jié)構(gòu)及其約束字段名數(shù)據(jù)類型長度約束說明bookidNUMBER11主碼書籍編號booknameVARCHAR220NOT NULL書籍名稱author1VARCHAR220NOT NULL書籍作者author2VARCHAR220書籍作者author3VARCHAR220書籍作者pubdateDATE出版日期publishVARCHAR230出版社photoVARCHAR2100圖片地址abstractVARCHAR24000內(nèi)容簡介priceN

4、UMBER7,2NOT NULL價格ISBNVARCHAR217NOT NULL書籍ISBN碼bookclassNUMBER11外碼學(xué)科類型booktypeNUMBER11外碼藏書類型Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程pREADER_TYPE表結(jié)構(gòu)及其約束字段名數(shù)據(jù)類型長度約束說明typeidNUMBER11主碼圖書類型編號typenameVARCHAR220NOT NULL圖書類型名稱demoVARCHAR2100說明Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程pREADER表結(jié)構(gòu)及其約束字段名數(shù)據(jù)類型長度約束說明readeridNUMBER11主碼讀者編號nameVARCHAR210NOT NULL

5、讀者姓名telephoneVARCHAR215聯(lián)系電話emailVARCHAR230郵箱地址deptVARCHAR220所在院系rightNUMBER1取值為0或1借閱權(quán)限r(nóng)eadertypeNUMBER11外碼讀者類型demoVARCHAR21000說明Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程pBORROW表結(jié)構(gòu)及其約束字段名數(shù)據(jù)類型長度約束說明readeridNUMBER11外碼聯(lián)合主碼讀者編號bookidNUMBER11外碼圖書編號borrowdateDATE出借日期dueDATE應(yīng)還日期last_dueDATE實(shí)際歸還日期Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程pRULE表結(jié)構(gòu)及其約束字段名數(shù)據(jù)類

6、型長度約束說明booktypeNUMBER11外碼聯(lián)合主碼藏書類型編號readertypeNUMBER11外碼讀者類型編號daysNUMBER5NOT NULL期限(天)numNUMBER5NOT NULL冊數(shù)(本)renewNUMBER5NOT NULL續(xù)借次數(shù)(次)overtimeNUMBER5,2NOT NULL逾期處罰(元/冊/天)Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程pADMIN表結(jié)構(gòu)及其約束字段名數(shù)據(jù)類型長度約束說明IdNUMBER11主碼管理員編號usernameVARCHAR210NOT NULL管理員賬號passwordVARCHAR211NOT NULL賬號密碼Oracle10

7、g 數(shù)據(jù)庫基礎(chǔ)教程p PRECONCERT(預(yù)約表)表結(jié)構(gòu)及其約束字段名數(shù)據(jù)類型長度約束說明readeridNUMBER11主碼聯(lián)合主碼讀者編號bookidNUMBER11主碼圖書編號predateDATE預(yù)約日期Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程pSEQ_READERS:產(chǎn)生讀者編號,起始值為10 000。pSEQ_BOOKS:產(chǎn)生圖書編號,起始值為100。序列設(shè)計(jì)序列設(shè)計(jì)Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程視圖設(shè)計(jì)視圖設(shè)計(jì)p創(chuàng)建名為“READER_BOOK_VIEW”的視圖,包括讀者信息、所借圖書信息及借閱信息。p創(chuàng)建名為“BOOK_TYPE_STAT_VIEW”的視圖,包括各類圖書的借閱統(tǒng)

8、計(jì)信息。Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程PL/SQL功能模塊設(shè)計(jì)功能模塊設(shè)計(jì)p創(chuàng)建一個計(jì)算借閱超期天數(shù)的存儲過程。p創(chuàng)建一個計(jì)算圖書應(yīng)歸還日期的函數(shù)。p創(chuàng)建一個計(jì)算超期罰款的存儲過程。p創(chuàng)建一個觸發(fā)器,禁止星期六、星期日以及非工作時間借閱圖書操作。Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程16.1.3 圖書管理系統(tǒng)數(shù)據(jù)庫對象創(chuàng)建圖書管理系統(tǒng)數(shù)據(jù)庫對象創(chuàng)建p創(chuàng)建admin表nCREATE TABLE admin(nid NUMBER(11) PRIMARY KEY, n username VARCHAR2(10) NOT NULL,npASsword VARCHAR2(11) NOT NULL);p創(chuàng)

9、建reader_type表nCREATE TABLE reader_type(ntypeid NUMBER(11) PRIMARY KEY, ntypename VARCHAR2(20) NOT NULL,ndemo VARCHAR2(100);Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p創(chuàng)建reader表nCREATE TABLE reader(nreaderid NUMBER(11) PRIMARY KEY, nname VARCHAR2(10) NOT NULL,ntelephone VARCHAR2(15),nemail VARCHAR2(30),dept VARCHAR2(20),nrigh

10、t NUMBER(1) CHECK(right=0 or right=1),nreadertype NUMBER(11) REFERENCES reader_type(typeid),ndemo VARCHAR2(1000);Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p創(chuàng)建book_type表nCREATE TABLE book_type(ntypeid NUMBER(11) PRIMARY KEY,ntypename VARCHAR2(20) NOT NULL,ndemo VARCHAR2(100);p創(chuàng)建book_class表nCREATE TABLE book_class(nclASsid NU

11、MBER(11) PRIMARY KEY,nclASsname VARCHAR2(20) NOT NULL,ndemo VARCHAR2(100);Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p創(chuàng)建book表nCREATE TABLE book(nbookid NUMBER(11) PRIMARY KEY,nbookname VARCHAR2(20) NOT NULL,nauthor1 VARCHAR2(20) NOT NULL,nauthor2 VARCHAR2(20),nauthor3 VARCHAR2(20),npubDATE DATE,publish VARCHAR2(30),nphoto VA

12、RCHAR2(100),nabstract VARCHAR2(4000),nprice NUMBER(7,2) NOT NULL,nisbn VARCHAR2(17) NOT NULL,nbookclASs NUMBER(11) REFERENCES book_clASs(clASsid),nbooktype NUMBER(11) REFERENCES book_type(typeid);Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p創(chuàng)建borrow表nCREATE TABLE borrow(nreaderid NUMBER(11) REFERENCES reader(readerid),nbookid

13、 NUMBER(11) REFERENCES book(bookid),borrowdate DATE,ndue DATE,last_due DATE,nPRIMARY KEY(readerid,bookid);Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p創(chuàng)建preconcert表nCREATE TABLE preconcert(nreaderid NUMBER(11) REFERENCES reader(readerid),nbookid NUMBER(11) REFERENCES book(bookid),npredate DATE,nPRIMARY KEY(readerid,bookid);Or

14、acle10g 數(shù)據(jù)庫基礎(chǔ)教程p創(chuàng)建rule表nCREATE TABLE rule(nbooktype NUMBER(11) REFERENCES book_type(typeid),nreadertype NUMBER(11) REFERENCES reader_type(typeid),ndays NUMBER(5) NOT NULL,nnum NUMBER(5) NOT NULL,nrenew NUMBER(5) NOT NULL,novertime NUMBER(5,2) NOT NULL,nPRIMARY KEY(booktype,readertype);Oracle10g 數(shù)據(jù)庫基

15、礎(chǔ)教程p序列的創(chuàng)建nCREATE SEQUENCE seq_reader START WITH 1 INCREMENT BY 10000;nCREATE SEQUENCE seq_book START WITH 1 INCREMENT BY 100;Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p創(chuàng)建視圖reader_book_viewnCREATE OR REPLACE VIEW reader_book_viewnASnSELECT name,bookname,borrowdate,due,last_due nFROM reader,book,borrow nWHWER reader.readid=bo

16、rrow.readid AND borrow.bookid=book.bookid;Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p創(chuàng)建視圖book_type_stat_viewnCREATE OR REPLACE VIEW book_type_stat_viewnASnSELECT booktype,COUNT(booktype) nFROM (SELECT readerid,borrow.booktype,nBooktype,borrowdate,due,last_due nFROM borrow,book nWHERE book.bookid=borrow.bookid)Oracle10g 數(shù)據(jù)庫基

17、礎(chǔ)教程p計(jì)算借閱超期天數(shù)的存儲過程pCREATE OR REPLACE PROCEDURE p_days_FROM_due(pv_readerid NUMBER,v_bookid NUMBER,v_days out NUMBER)pASpBEGINpSELECT due sysdate INTO v_days FROM borrow pWHERE readerid=v_readerid AND bookid=v_bookid;pIF v_days=0 THEN p v_day:=0;pEND IF;pEND;Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p計(jì)算圖書應(yīng)歸還日期的函數(shù)pCREATE OR RE

18、PLACE FUNCTION f_date_is_due(pv_readerid NUMBER,v_bookid NUMBER)pRETURN VARCHAR2pASpv_booktype NUMBER;pv_readertype NUMBER;pv_date VARCHAR2(10);pBEGINpSELECT booktype INTO v_booktype FROM book WHERE bookid=v_bookid;pSELECT readertype INTO v_readertype FROM reader WHERE readerid=v_readerid;pSELECT to

19、_char(sysdate+days, yyyy-mm-dd) INTO v_date FROM rule pWHERE readertype=v_readertype AND booktype=v_booktype;pRETURN v_date;pEND;Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p計(jì)算超期罰款的存儲過程pCREATE OR REPLACE PROCEDURE p_timeover_money(pv_readerid NUMBER,v_bookid NUMBER ,v_money OUT NUMBER)pASpv_days NUMBER;pv_readertype NUMBER;pv

20、_booktype NUMBER;pBEGINpp_days_from_due(v_readerid,v_bookid,v_days);pSELECT booktype INTO v_booktype FROM book WHERE bookid=v_bookid;pSELECT readertype INTO v_readertype FROM reader WHERE readerid=v_readerid;pSELECT overtime*floor(abs(v_days) INTO v_money FROM rule pWHERE readertype=v_readertype AND

21、 booktype=v_booktype;pEND;Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p判斷讀者可否進(jìn)行借閱的存儲過程pCREATE OR REPLACE PROCEDURE p_can_borrow(pv_readerid NUMBER,v_bookid NUMBER,v_num OUT NUMBER)pASpv_right NUMBER;pv_borrowed_num NUMBER;pv_rule_num NUMBER;pBEGINpSELECT right INTO v_right FROM reader WHERE readerid=v_readerid;pv_borrowed_num

22、:=f_borrowed_num(v_readerid,v_bookid);pv_rule_num:=f_rule_num(v_readerid,v_bookid);pIF v_right=1 THEN pv_num:=0;pELSEpv_num:=v_rule_num-v_borrowed_num;pEND IF;pEXCEPTIONp WHEN OTHERS THENp v_num:=0;pEND;Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程16.2 人事管理系統(tǒng)開發(fā)人事管理系統(tǒng)開發(fā)p人事管理系統(tǒng)介紹p數(shù)據(jù)庫設(shè)計(jì)p重要界面的設(shè)計(jì)與實(shí)現(xiàn)p主要代碼的實(shí)現(xiàn)Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程16.2.1人事

23、管理系統(tǒng)介紹人事管理系統(tǒng)介紹p功能:錄入人事的基本資料,在操作上能夠完成諸如添加、修改、刪除、按各種條件進(jìn)行查詢、新用戶的設(shè)置及密碼修改等方面的工作,基本滿足人事日常業(yè)務(wù)的需要。p實(shí)用的/S結(jié)構(gòu),后臺Oracle數(shù)據(jù)庫Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程16.2.2 數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)員工員工編號姓名性別出生日期身份證號員工請假請假天數(shù)員工工資擁有1工資編號員工編號基本工資崗位工資出勤費(fèi)擁有所屬部門管理員編號姓名密碼。 . .管理管理管理11請假編號q111mnp員工編號Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p員工基本信息表 n員工基本信息表主要描述員工的個人情況,如姓名、員工基本信息表主要描述員

24、工的個人情況,如姓名、性別、出生日期、身份證號、所屬部門等,其中員工性別、出生日期、身份證號、所屬部門等,其中員工編號作為員工基本信息表的主碼。編號作為員工基本信息表的主碼。p員工工資信息表n員工工資信息表主要描述每個員工所對應(yīng)的工資情況,員工工資信息表主要描述每個員工所對應(yīng)的工資情況,如工資編號、基本工資、崗位工資、出勤費(fèi)等,其中如工資編號、基本工資、崗位工資、出勤費(fèi)等,其中工資編號作為員工工資信息表的主碼。而其中的員工工資編號作為員工工資信息表的主碼。而其中的員工編號是外碼,它的取值參照于員工基本信息表的主碼編號是外碼,它的取值參照于員工基本信息表的主碼取值。同時,每名員工均只有一個工資編

25、號和一個員取值。同時,每名員工均只有一個工資編號和一個員工編號,即員工實(shí)體與員工工資實(shí)體之間是一對一的工編號,即員工實(shí)體與員工工資實(shí)體之間是一對一的聯(lián)系。聯(lián)系。 Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p員工請假信息表n員工請假信息表主要描述每個員工所對應(yīng)的請假情況,員工請假信息表主要描述每個員工所對應(yīng)的請假情況,如請假總天數(shù)、請假開始時間、請假結(jié)束時間、請假如請假總天數(shù)、請假開始時間、請假結(jié)束時間、請假原因等,其中請假編號作為員工請假信息表的主碼。原因等,其中請假編號作為員工請假信息表的主碼。而其中的員工編號是外碼,它參照于員工基本信息表而其中的員工編號是外碼,它參照于員工基本信息表的主碼取值。同

26、時,每名員工可以有多次請假記錄,的主碼取值。同時,每名員工可以有多次請假記錄,即員工實(shí)體與員工請假實(shí)體之間是一對多的聯(lián)系。即員工實(shí)體與員工請假實(shí)體之間是一對多的聯(lián)系。 p管理員表n管理員表主要描述本系統(tǒng)中的管理員賬戶情況,包括管理員表主要描述本系統(tǒng)中的管理員賬戶情況,包括編號、管理員名、密碼,其中編號作為管理員表的主編號、管理員名、密碼,其中編號作為管理員表的主碼。碼。 Oracle10g 數(shù)據(jù)庫基礎(chǔ)教程p員工基本信息表(emp)字 段 名名 稱類 型字 段 名名 稱類 型empnum員工編號VARCHAR2(16)address地址VARCHAR2(40)empname姓名VARCHAR2(

27、16)policy政治面貌NUMBERSex性別NUMBERphone電話VARCHAR2(16)birthday出生日期DATEdegree學(xué)歷NUMBERnation民族VARCHAR2(10)college畢業(yè)院校VARCHAR2(40)nativeplace戶籍VARCHAR2(40)duty職務(wù)VARCHAR2(16)Ident身份證號VARCHAR2(16)title職稱VARCHAR2(16)department所屬部門VARCHAR2(16)sort在職類別NUMBERmarriage婚姻狀況NUMBERremark備注VARCHAR2(400)Oracle10g 數(shù)據(jù)庫基礎(chǔ)教

28、程p員工工資信息表(pay) 字 段 名名 稱類 型字 段 名名 稱類 型Id工資編號NUMBERtax個人所得稅NUMBERempnum員工編號VARCHAR2(16)insure_shiye失業(yè)保險(xiǎn)NUMBERbasepay基本工資NUMBERinsure_yanglao養(yǎng)老保險(xiǎn)NUMBERPost崗位工資NUMBERinsure_yiliao醫(yī)療保險(xiǎn)NUMBERworkprice出勤費(fèi)NUMBERshouldpay應(yīng)發(fā)工資NUMBERMess伙食補(bǔ)貼NUMBERshoulddeduct應(yīng)扣工資NUMBERtraffic交通補(bǔ)貼NUMBERpay實(shí)發(fā)工資NUMBERPrice物價補(bǔ)貼NUMBEROracle10g 數(shù)據(jù)庫基礎(chǔ)教程p員工請假信息表leave) 字 段 名名 稱類 型字 段 名名 稱類 型Id請假編號NUMBERleavepass請假批準(zhǔn)人VARCHAR2(16)empnum員工編號CHAR(16)reason請假原因VARCHAR2(400)startdate請假開始時間DATEapplydate申請日期DATEenddate

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論