版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
......PAGE.專業(yè).專注.目錄TOC\o"1-2"\h\z\u1前言 12需求分析 12.1課程設(shè)計(jì)目的 12.2課程設(shè)計(jì)任務(wù) 12.3設(shè)計(jì)環(huán)境 22.4開發(fā)語言 23分析和設(shè)計(jì) 23.1系統(tǒng)E-R模型 53.2表空間及表的設(shè)計(jì) 63.3視圖設(shè)計(jì) 143.4存儲(chǔ)過程、函數(shù)、包的設(shè)計(jì) 153.5觸發(fā)器設(shè)計(jì) 223.6角色、用戶、權(quán)限設(shè)計(jì) 243.7備份方案設(shè)計(jì) 264課程設(shè)計(jì)總結(jié) 27參考文獻(xiàn) 28致謝 28
1前言一個(gè)簡單的圖書管理系統(tǒng)包括圖書館內(nèi)書籍的信息、學(xué)校在校師生的信息以及師生的借閱信息。此系統(tǒng)功能面向圖書館管理員,可以完成書籍和讀者的增加、刪除和修改,制定借閱規(guī)則,以及對(duì)讀者借閱、續(xù)借、歸還、預(yù)約的確認(rèn)。2需求分析2.1課程設(shè)計(jì)目的通過專業(yè)課程設(shè)計(jì)Ⅱ,即大型數(shù)據(jù)庫系統(tǒng)課程設(shè)計(jì),有助于培養(yǎng)學(xué)生綜合運(yùn)用數(shù)據(jù)庫相關(guān)知識(shí)解決實(shí)際問題的能力。本設(shè)計(jì)要求對(duì)實(shí)際問題進(jìn)行需求分析,提煉實(shí)際問題中的數(shù)據(jù),建立關(guān)系模型,并在大型數(shù)據(jù)庫中得以實(shí)現(xiàn)。同時(shí)要求對(duì)數(shù)據(jù)庫的運(yùn)營、管理及使用上進(jìn)行必要的規(guī)劃和實(shí)現(xiàn)。2.2課程設(shè)計(jì)任務(wù)(1)圖書信息:包括圖書編號(hào)、圖書名稱、所屬類別等;(2)讀者信息:包括讀者編碼、姓名、性別、專業(yè)等;(3)借還書信息:包括圖書當(dāng)前狀態(tài)、被借還次數(shù)、借閱時(shí)間等。基本要求:(1)根據(jù)需求,補(bǔ)充必要的數(shù)據(jù)庫實(shí)體,建立ER模型,通過ER圖表示。(2)在Oracle中創(chuàng)建該系統(tǒng)的數(shù)據(jù)庫,并在數(shù)據(jù)庫中實(shí)現(xiàn)各表,寫入一定的數(shù)據(jù)。(3)從實(shí)際查詢應(yīng)用出發(fā),為一些主要的應(yīng)用模塊設(shè)計(jì)至少3個(gè)參數(shù)化視圖。(4)從數(shù)據(jù)檢驗(yàn)的角度出發(fā),為相關(guān)的表建立至少1個(gè)觸發(fā)器。(5)從數(shù)據(jù)更新或修改的角度出發(fā),設(shè)計(jì)至少1個(gè)存儲(chǔ)過程。(6)從安全的角度出發(fā),規(guī)劃系統(tǒng)的角色、用戶、權(quán)限,并通過相關(guān)的SQL實(shí)現(xiàn)。(7)預(yù)計(jì)每個(gè)表的大致容量和增長速度,指定備份的方案,寫出相關(guān)的備份命令。2.3設(shè)計(jì)環(huán)境(1)WINDOWS2000/2003/XP系統(tǒng)(2)Oracle數(shù)據(jù)庫管理系統(tǒng)2.4開發(fā)語言PL/SQL語言3分析和設(shè)計(jì)(1)功能簡介借閱功能:圖書出借時(shí)考慮三個(gè)問題:<1>讀者是否因?yàn)槌凇⒘P款等情況被關(guān)閉了借閱權(quán)限;<2>該書是否不在庫中;<3>讀者是否已經(jīng)借滿其限額。如果不存在以上情況,則可以出借。預(yù)約功能:讀者想借的書如果不在庫中(已經(jīng)被出借),讀者可以預(yù)約該圖書,當(dāng)該圖書被歸還時(shí)系統(tǒng)給讀者發(fā)送郵件,提醒他來借閱,此時(shí)其他讀者也可以借閱該書。續(xù)借功能:讀者還書的時(shí)候可以續(xù)借該圖書,續(xù)借的過程包括先執(zhí)行還書操作,再執(zhí)行借閱操作。(2)發(fā)送催還郵件管理員可以發(fā)送郵件提醒讀者到期還書。<1>讀者管理功能:對(duì)讀者信息進(jìn)行查看、添加、修改、刪除。將讀者分為不同類別,賦以不同權(quán)限。<2>系統(tǒng)管理功能:對(duì)管理員的登錄賬號(hào)、密碼進(jìn)行添加、修改、刪除。<3>規(guī)則管理功能:對(duì)圖書借閱規(guī)則進(jìn)行查看、添加、修改、刪除。(3)需求描述針對(duì)一般圖書管理信息系統(tǒng)的需求,通過對(duì)圖書管理工作過程的內(nèi)容和數(shù)據(jù)流程分析,設(shè)計(jì)如下面所示的數(shù)據(jù)項(xiàng):1)讀者信息屬性:讀者編號(hào),讀者姓名,聯(lián)系電話,郵箱地址,所在系,權(quán)限狀況,讀者類型,備注主鍵:讀者編號(hào)2)書籍信息屬性:圖書編號(hào),ISBN,書名,作者,出版社,出版日期,簡介,封面圖片,價(jià)格,學(xué)科類型,藏書類型主鍵:圖書編號(hào)3)管理員信息屬性:編號(hào),賬號(hào),密碼主鍵:編號(hào)4)讀者類型屬性:編號(hào),類型,說明主鍵:編號(hào)5)藏書類型屬性:編號(hào),類型,說明主鍵:編號(hào)6)學(xué)科類型屬性:編號(hào),類型,說明主鍵:編號(hào)7)借閱信息屬性:圖書編號(hào),讀者編號(hào),借閱日期,應(yīng)還日期主鍵:圖書編號(hào),讀者編號(hào)8)預(yù)約信息屬性:圖書編號(hào),讀者編號(hào),預(yù)約日期主鍵:圖書編號(hào),讀者編號(hào)9)借閱規(guī)則屬性:圖書類型,讀者類型,期限,冊(cè)數(shù),續(xù)借次數(shù),逾期罰款主鍵:圖書類型,讀者類型本系統(tǒng)共設(shè)計(jì)9個(gè)表、6個(gè)序列、4個(gè)存儲(chǔ)過程、3個(gè)函數(shù)、4個(gè)觸發(fā)器=1\*GB3①其中存儲(chǔ)過程有:1)檢查借閱是否超期的存儲(chǔ)過程;2)判斷讀者可否進(jìn)行借閱的存儲(chǔ)過程;3)計(jì)算超期罰款的存儲(chǔ)過程;4)發(fā)送郵件的存儲(chǔ)過程;=2\*GB3②其中函數(shù)有:1)計(jì)算圖書應(yīng)歸還日期的函數(shù);2)計(jì)算讀者可借閱圖書冊(cè)書的函數(shù);3)計(jì)算讀者已經(jīng)借閱某類型圖書的冊(cè)數(shù)的函數(shù);=3\*GB3③其中觸發(fā)器有:1)刪除藏書類型的觸發(fā)器;2)刪除讀者類型的觸發(fā)器;3)刪除圖書的觸發(fā)器;4)刪除讀者的觸發(fā)器。=4\*GB3④本系統(tǒng)的功能可以在以下幾個(gè)方面進(jìn)行拓展和完善練習(xí)添加和使用以下命名塊:1)修改讀者類型的觸發(fā)器;2)修改藏書類型的觸發(fā)器;3)將圖片存儲(chǔ)為Blog類型的存儲(chǔ)過程;4)將超期未還的讀者借閱權(quán)限關(guān)閉的存儲(chǔ)過程;5)計(jì)算讀者應(yīng)交欠費(fèi)的存儲(chǔ)函數(shù)。練習(xí)添加以下系統(tǒng)功能:1)管理員添加、修改、刪除系統(tǒng)公告的功能;2)管理員權(quán)限開通/關(guān)閉的功能;3)上傳圖片的功能(本系統(tǒng)中只實(shí)現(xiàn)了保存圖片地址);4)批量刪除圖書或讀者的功能。3.1系統(tǒng)E-R模型
數(shù)據(jù)庫需要表述的信息有以下幾種:(1)讀者信息(2)書籍信息(3)管理員信息(4)藏書分類信息(5)圖書學(xué)科分類信息(6)讀者分類信息(7)讀者與書籍之間的關(guān)系(借閱關(guān)系E-R圖)(8)讀者類型與書籍類型之間的關(guān)系(規(guī)則關(guān)系E-R圖)3.2表空間及表的設(shè)計(jì)表1管理員用戶表(admin)列名類型長度約束備注Idnumber11主鍵管理員編號(hào)usernamevarchar210非空管理員帳號(hào)passwordvarchar211非空帳號(hào)密碼表2讀者類型(reader_type)列名類型長度約束備注typeidnumber11主鍵類型編號(hào)typenamevarchar220非空類型名稱demovarchar2100說明表3讀者表(reader)列名類型長度約束備注readeridnumber11主鍵讀者編號(hào)namevarchar210非空讀者姓名telephonevarchar215聯(lián)系電話emailvarchar230郵箱地址deptvarchar220所在院系rightnumber1取值為0或1借閱權(quán)限r(nóng)eadertypenumber11外鍵讀者類型demovarchar21000說明表4藏書類型表(book_type)列名類型長度約束備注typeidnumber11主鍵類型編號(hào)typenamevarchar220非空類型名稱demovarchar2100說明表5學(xué)科類型表(book_class)列名類型長度約束備注classidnumber11主鍵類型編號(hào)classnamevarchar220非空類型名稱demovarchar2100說明表6圖書表(book)列名類型長度約束備注bookidnumber11主鍵書籍編號(hào)booknamevarchar220非空書籍名稱author1varchar220非空書籍作者author2varchar220書籍作者author3varchar220書籍作者pubdatedate出版日期publishvarchar230出版社photovarchar2100圖片地址abstractvarchar24000內(nèi)容簡介Pricenumber7,2非空價(jià)格ISBNvarchar217非空書籍ISBN碼bookclassnumber11外鍵學(xué)科類型booktypenumber11外鍵藏書類型表7借閱表(borrow)列名類型長度約束備注readeridnumber11聯(lián)合主鍵,外鍵讀者編號(hào)bookidnumber11聯(lián)合主鍵,外鍵圖書編號(hào)borrowdatedate出借日期duedate應(yīng)還日期表8預(yù)約表(preconcert)列名類型長度約束備注readeridnumber11聯(lián)合主鍵,外鍵讀者編號(hào)bookidnumber11聯(lián)合主鍵,外鍵圖書編號(hào)predatedate預(yù)約日期表9規(guī)則表(rule)列名類型長度約束備注booktypenumber11聯(lián)合主鍵,外鍵藏書類型號(hào)readertypenumber11聯(lián)合主鍵,外鍵讀者類型號(hào)daysnumber5非空期限(天)numnumber5非空冊(cè)數(shù)(本)renewnumber5非空續(xù)借次數(shù)(次)overtimenumber5,2非空逾期處罰(元/冊(cè)/天)(1)創(chuàng)建數(shù)據(jù)表語句createtableadmin(idnumber(11)primarykey,usernamevarchar2(10)notnull,passwordvarchar2(11)notnull);在SQLDeveloper中創(chuàng)建數(shù)據(jù)表截圖3-1所示:圖3-1admin數(shù)據(jù)表createtablereader_type(typeidnumber(11)primarykey,typenamevarchar2(20)notnull,demovarchar2(100));在SQLDeveloper中創(chuàng)建數(shù)據(jù)表截圖3-2所示:圖3-2reader_type數(shù)據(jù)表createtablereader(readeridnumber(11)primarykey,namevarchar2(10)notnull,telephonevarchar2(15),emailvarchar2(30),deptvarchar2(20),rightnumber(1)check(right=0orright=1),readertypenumber(11)referencesreader_type(typeid),demovarchar2(1000));在SQLDeveloper中創(chuàng)建數(shù)據(jù)表截圖3-3所示:圖3-3數(shù)據(jù)表createtablebook_type(typeidnumber(11)primarykey,typenamevarchar2(20)notnull,demovarchar2(100));在SQLDeveloper中創(chuàng)建數(shù)據(jù)表截圖3-4所示:圖3-4數(shù)據(jù)表createtablebook_class(classidnumber(11)primarykey,classnamevarchar2(20)notnull,demovarchar2(100));在SQLDeveloper中創(chuàng)建數(shù)據(jù)表截圖3-5所示:圖3-5數(shù)據(jù)表createtablebook(bookidnumber(11)primarykey,booknamevarchar2(20)notnull,author1varchar2(20)notnull,author2varchar2(20),author3varchar2(20),pubdatedate,publishvarchar2(30),photovarchar2(100),abstractvarchar2(4000),pricenumber(7,2)notnull,isbnvarchar2(17)notnull,bookclassnumber(11)referencesbook_class(classid),booktypenumber(11)referencesbook_type(typeid));在SQLDeveloper中創(chuàng)建數(shù)據(jù)表截圖3-6所示:圖3-6數(shù)據(jù)表createtableborrow(readeridnumber(11),bookidnumber(11),borrowdatedate,duedate,primarykey(readerid,bookid),foreignkey(readerid)referencesreader(readerid),foreignkey(bookid)referencesbook(bookid));在SQLDeveloper中創(chuàng)建數(shù)據(jù)表截圖3-7所示:圖3-7數(shù)據(jù)表createtablepreconcert(readeridnumber(11),bookidnumber(11),predatedate,primarykey(readerid,bookid),foreignkey(readerid)referencesreader(readerid),foreignkey(bookid)referencesbook(bookid));在SQLDeveloper中創(chuàng)建數(shù)據(jù)表截圖3-8所示:圖3-8數(shù)據(jù)表createtablerule(booktypenumber(11),readertypenumber(11),daysnumber(5)notnull,numnumber(5)notnull,renewnumber(5)notnull,overtimenumber(5,2)notnull,primarykey(booktype,readertype),foreignkey(booktype)referencesbook_type(typeid),foreignkey(readertype)referencesreader_type(typeid));在SQLDeveloper中創(chuàng)建數(shù)據(jù)表截圖3-9所示:圖3-9數(shù)據(jù)表(2)創(chuàng)建序列語句為了方便產(chǎn)生讀者編號(hào)、圖書編號(hào),在數(shù)據(jù)庫中分別用下列序列產(chǎn)生相應(yīng)編號(hào)。<1>sql_reader:產(chǎn)生讀者編號(hào),起始值為1。<2>sql_book:產(chǎn)生圖書編號(hào),起始值為1。createsequenceseq_readerstartwith1incrementby1;createsequenceseq_bookstartwith1incrementby1;createsequenceseq_reader_typestartwith1incrementby1;createsequenceseq_book_typestartwith1incrementby1;createsequenceseq_book_classstartwith1incrementby1;createsequenceseq_adminstartwith1incrementby1;在SQLDeveloper中創(chuàng)建序列截圖如3-10所示:圖3-10(3)插入數(shù)據(jù)語句insertintoreader_typevalues(seq_reader_type.nextval,'學(xué)生',null);insertintoreader_typevalues(seq_reader_type.nextval,'教工',null);insertintobook_typevalues(seq_book_type.nextval,'普通圖書',null);insertintobook_typevalues(seq_book_type.nextval,'樣本圖書',null);insertintobook_typevalues(seq_book_type.nextval,'過刊',null);insertintobook_typevalues(seq_book_type.nextval,'開架書刊',null);insertintobook_classvalues(seq_book_class.nextval,'計(jì)算機(jī)類',null);insertintobook_classvalues(seq_book_class.nextval,'管理類',null);insertintobook_classvalues(seq_book_class.nextval,'外語類',null);insertintobook_classvalues(seq_book_class.nextval,'文學(xué)類',null);insertintorule(booktype,readertype,days,num,renew,overtime)values(2,1,1,3,0,1);insertintorule(booktype,readertype,days,num,renew,overtime)values(1,1,30,3,1,0.1);insertintoadminvalues(seq_admin.nextval,'admin','11');insertintoadminvalues(seq_admin.nextval,'test','22');insertintoreader(readerid,name,telephone,email,right,readertype)values(seq_reader.nextval,'張大為','1345487676','zdw@dk',0,1);insertintoreader(readerid,name,telephone,email,right,readertype)values(seq_reader.nextval,'王小二','1345482324','wxr@dk',0,1);insertintobook(bookid,bookname,author1,publish,price,booktype,bookclass,isbn)values(seq_book.nextval,'計(jì)算機(jī)程序設(shè)計(jì)','writer','neusoft',35.5,1,1,'445-445');insertintobook(bookid,bookname,author1,publish,price,booktype,bookclass,isbn)values(seq_book.nextval,'數(shù)據(jù)結(jié)構(gòu)','smith','neusoft',45.5,1,1,'45445-445');insertintoborrow(readerid,bookid,borrowdate,due)values(1,1,sysdate,sysdate+30);insertintoborrow(readerid,bookid,borrowdate,due)values(2,2,sysdate,sysdate+30);insertintopreconcert(readerid,bookid,predate)values(1,2,sysdate);insertintopreconcert(readerid,bookid,predate)values(2,1,sysdate);commit;在SQLDeveloper中插入數(shù)據(jù)截圖3-11所示:圖3-113.3視圖設(shè)計(jì)為了方便查詢讀者借閱圖書的情況以及圖書的借閱統(tǒng)計(jì),創(chuàng)建下列視圖。<1>創(chuàng)建名為“reader_book_view”的視圖,包括讀者信息、所借閱圖書信息及借閱信息。CREATEORREPLACEVIEWreader_book_viewASSELECTname,bookname,borrowdate,due,last_dueFROMreadet,book,borrowWHWERreader.teadid=borrow.readidANDborrow.bookid=book.bookid;<2>創(chuàng)建名為“book_type_stat_view”的視圖,包括各類圖書的借閱統(tǒng)計(jì)信息。CREATEORREPLACEVIEWbook_type_stat_viewASSELECTbooktype,COUNT(booktype)FROM(SELECTreaderid,borrow.booktype,booktype,borrowdate,due,last_dueFROWborrow,bookWHWERbook.bookid=borrow.bookid)在SQLDeveloper中創(chuàng)建部分視圖截圖3-12所示:圖3-123.4存儲(chǔ)過程、函數(shù)、包的設(shè)計(jì)(1)檢查借閱是否超期的存儲(chǔ)過程。Createorreplaceprocedurep_days_from_due(v_readeridnumber,v_bookidnumber,v_daysoutnumber)AsBeginSelectdue–sysdateintov_daysfromborrowwherereaderid=v_readeridandbookid=v_bookid;ExceptionWhenothersthenV_days:=0;End;在SQLDeveloper中檢查借閱是否超期的存儲(chǔ)過程截圖3-13所示:圖3-13(2)計(jì)算圖書應(yīng)歸還日期的函數(shù)。Createorreplacefunctionf_date_is_due(v_readeridnumber,v_bookidnumber)Returnvarchar2asV_booktypenumber;V_readertypenumber;V_datevarchar2(10);BeginSelectbooktypeintov_booktypefrombookwherebookid=v_bookid;Selectreadertypeintov_readertypefromreaderwherereaderid=v_readerid;Selectto_char(sysdate+days,'yyyy-mm-dd')intov_datefromrulewherereadertype=v_readertypeandbooktype=v_booktype;Returnv_date;Exception/*尚未制定該類圖書借閱規(guī)則*/Whenno_data_foundthenSelectto_char(sysdate+30,’yyyy-mm-dd’)intov_datefromdual;Returnv_date;End;在SQLDeveloper計(jì)算圖書應(yīng)歸還日期的函數(shù)運(yùn)行成功截圖3-14所示:圖3-14(3)計(jì)算讀者可借閱圖書冊(cè)數(shù)的函數(shù)Createorreplacefunctionf_rule_num(v_readeridinnumber,v_bookidinnumber)returnnumberAsV_booktypenumber;V_readertypenumber;V_numnumber;BeginSelectbooktypeintov_booktypefrombookwherebookid=v_bookid;Selectreadertypeintov_readertypefromreaderwherereaderid=v_readerid;Selectnumintov_numfromrulewherereadertype=v_readertypeandbooktype=v_booktype;Returnv_num;Exception/*尚未制定該類圖書借閱規(guī)則*/Whenno_data_foundthenselectmax(num)intov_numfromrule;returnv_num;End;在SQLDeveloper計(jì)算讀者可借閱圖書冊(cè)數(shù)的函數(shù)并運(yùn)行成功截圖3-15所示:圖3-15(4)計(jì)算讀者已經(jīng)借閱某類型圖書的冊(cè)數(shù)的函數(shù)Createorreplacefunctionf_borrowed_num(v_readeridnumber,v_bookidnumber)returnnumberasV_numnumber;V_typenumber;BeginSelectbooktypeintov_typefrombookwherebookid=v_bookid;Selectcount(*)intov_numfrombook,borrowwherebook.bookid=borrow.bookidandreaderid=v_readeridandbooktype=v_type;Returnv_num;End;在SQLDeveloper運(yùn)行計(jì)算讀者已經(jīng)借閱某類型圖書的冊(cè)數(shù)的函數(shù)運(yùn)行成功截圖3-16所示:圖3-16(5)判斷讀者可否進(jìn)行借閱的存儲(chǔ)過程Createorreplaceprocedurep_can_borrow(v_readeridinnumber,v_bookidinnumber,v_numoutnumber)AsV_rightnumber;V_borrowed_numnumber;V_rule_numnumber;BeginSelectrightintov_rightfromreaderwherereaderid=v_readerid;V_borrowed_num:=f_borrowed_num(v_readerid,v_bookid);V_rule_num:=f_rule_num(v_readerid,v_bookid);Ifv_right=1then/*借閱權(quán)限已關(guān)閉*/V_num:=0;ElseV_num:=v_rule_num-v_borrowed_num;Endif;ExceptionWhenothersthenV_num:=0;End;在SQLDeveloper判斷讀者可否進(jìn)行借閱的存儲(chǔ)過程3-17所示:圖3-17(6)計(jì)算超期罰款的存儲(chǔ)過程根據(jù)(歸還日期-應(yīng)還日期)*超期罰款金額得出。Createorreplaceprocedurep_timeover_money(v_readeridnumber,v_bookidnumber,v_moneyoutnumber)AsV_daysnumber;V_readertypenumber;V_booktypenumber;Beginp_days_from_due(v_readerid,v_bookid,v_days);Selectbooktypeintov_booktypefrombookwherebookid=v_bookid;Selectreadertypeintov_readertypefromreaderwherereaderid=v_readerid;Selectovertime*floor(abs(v_days))intov_moneyfromrulewherereadertype=v_readertypeandbooktype=v_booktype;ExceptionWhenothersthenV_money:=0;End;在SQLDeveloper計(jì)算超期罰款的存儲(chǔ)過程3-18所示:圖3-18(7)發(fā)送郵件的存儲(chǔ)過程CREATEORREPLACEPROCEDUREsend_mail(p_recipientVARCHAR2,--郵件接收人p_subjectVARCHAR2,--郵件標(biāo)題p_messageVARCHAR2--郵件正文)IS--下面四個(gè)變量請(qǐng)根據(jù)實(shí)際郵件服務(wù)器進(jìn)行賦值v_mailhostVARCHAR2(30):='';--SMTP服務(wù)器地址v_userVARCHAR2(30):='user';--登錄SMTP服務(wù)器的用戶名v_passVARCHAR2(20):='pass';--登錄SMTP服務(wù)器的密碼v_senderVARCHAR2(50):='user@';--發(fā)送者郵箱,一般與ps_user對(duì)應(yīng)v_connUTL_SMTP.connection;--到郵件服務(wù)器的連接v_msgvarchar2(4000);--郵件內(nèi)容BEGINv_conn:=UTL_SMTP.open_connection(v_mailhost,25);UTL_SMTP.ehlo(v_conn,v_mailhost);--是用ehlo()而不是helo()函數(shù)--否則會(huì)報(bào):ORA-29279:SMTP永久性錯(cuò)誤:5035.5.2Sendhellofirst.UTL_SMTP.command(v_conn,'AUTHLOGIN');--smtp服務(wù)器登錄校驗(yàn)UTL_SMTP.command(v_conn,UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_user))));UTL_SMTP.command(v_conn,UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_pass))));UTL_SMTP.mail(v_conn,v_sender);--設(shè)置發(fā)件人UTL_SMTP.rcpt(v_conn,p_recipient);--設(shè)置收件人--創(chuàng)建要發(fā)送的郵件內(nèi)容注意報(bào)頭信息和郵件正文之間要空一行v_msg:='Date:'||TO_CHAR(SYSDATE,'ddmonyyhh24:mi:ss')||UTL_TCP.CRLF||'From:'||v_sender||'<'||v_sender||'>'||UTL_TCP.CRLF||'To:'||p_recipient||'<'||p_recipient||'>'||UTL_TCP.CRLF||'Subject:'||p_subject||UTL_TCP.CRLF||UTL_TCP.CRLF--這前面是報(bào)頭信息||p_message;--這個(gè)是郵件正文UTL_SMTP.open_data(v_conn);--打開流UTL_SMTP.write_raw_data(v_conn,UTL_RAW.cast_to_raw(v_msg));--這樣寫標(biāo)題和內(nèi)容都能用中文UTL_SMTP.close_data(v_conn);--關(guān)閉流UTL_SMTP.quit(v_conn);--關(guān)閉連接EXCEPTIONWHENOTHERSTHENDBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack);DBMS_OUTPUT.put_line(DBMS_UTILITY.format_call_stack);ENDsend_mail;在SQLDeveloper發(fā)送郵件的存儲(chǔ)過程3-19所示:圖3-193.5觸發(fā)器設(shè)計(jì)(1)刪除藏書類型的觸發(fā)器。Createorreplacetriggertr_delete_booktypeBeforedeleteonbook_typeforeachrowbeginDeletefrombookwherebooktype=:old.typeid;Deletefromrulewherebooktype=:old.typeid;End;在SQLDeveloper刪除藏書類型的觸發(fā)器運(yùn)行3-20所示:圖3-20(2)刪除讀者類型的觸發(fā)器。Createorreplacetriggertr_delete_readerypeBeforedeleteonreader_typeforeachrowbeginDeletefromreaderwherereadertype=:old.typeid;Deletefromrulewherereadertype=:old.typeid;End;在SQLDeveloper刪除讀者類型的觸發(fā)器運(yùn)行3-21所示:圖3-21(3)刪除圖書的觸發(fā)器。Createorreplacetriggertr_delete_bookBeforedeleteonbookforeachrowbeginDeletefromborrowwherebookid=:old.bookid;Deletefrompreconcertwherebookid=:old.bookid;End;在SQLDeveloper刪除圖書的觸發(fā)器運(yùn)行3-22所示:圖3-22(4)刪除讀者的觸發(fā)器。Createorreplacetriggertr_delete_readerBeforedeleteonreaderforeachrowbeginDeletefromborrowwherereaderid=:old.readerid;Deletefrompreconcertwherereaderid=:old.readerid;End;在SQLDeveloper刪除讀者的觸發(fā)器運(yùn)行3-23所示:圖3-233.6角色、用戶、權(quán)限設(shè)計(jì)Oracle數(shù)據(jù)安全機(jī)制包括以下6個(gè)方面:=1\*GB2⑴用戶管理:為了保證合法用戶才能訪問數(shù)據(jù),Oracle提供了3種用戶認(rèn)證機(jī)制,即數(shù)據(jù)庫身份認(rèn)證、外部身份認(rèn)證和全局身份認(rèn)證。只有通過認(rèn)證用戶才能訪問數(shù)據(jù)庫。=2\*GB2⑵權(quán)限管理:用戶登入數(shù)據(jù)庫后,只能進(jìn)行其權(quán)限范圍內(nèi)的操作。通過給用戶授權(quán)或回收用戶權(quán)限,可以達(dá)到控制用戶數(shù)據(jù)庫的操作的目的。=3\*GB2⑶角色管理:通過角色方便地實(shí)現(xiàn)用戶權(quán)限的授予與回收。=4\*GB2⑷表空間設(shè)置和配額:通過設(shè)置用戶的默認(rèn)表空間、臨時(shí)表空間和在表空間上的使用配額,可以有效地控制用戶對(duì)數(shù)據(jù)庫存儲(chǔ)空間的使用。=5\*GB2⑸用戶資源限制:通過概要文件,限制用戶對(duì)數(shù)據(jù)庫資源的使用。=6\*GB2⑹數(shù)據(jù)庫的審計(jì):監(jiān)視和記錄用戶在數(shù)據(jù)庫中的活動(dòng)。例如創(chuàng)建一個(gè)普通學(xué)生用戶lippie,口令為123,默認(rèn)表空間為USERS,在該表空間的配額為10M,初始狀態(tài)為鎖定。SQL>CREATEUSERlippieIDENTIFIEDBY123DEFAULTTABLESPACEUSERSACCOUNTLOCK;例如為用戶user授予CREATESESSION,CREATETABLE,CREATEVIEW系統(tǒng)權(quán)限。SQL>CONNECTsystem/manager@ORCLSQL>GRANTCREATESESSION,CREATETABLE,CREATEVIEWTOuser;例如分別給high_manager_role,middle_manager_role,low_manager_role角色授權(quán)及收回權(quán)限的過程。SQL>GRANTCONNECT,CREATETABLE,CREATEWIEWTOlow_manager_role;SQL>GRANTCONNECT,CREATETABLE,CREATEWIEWTOmiddle_manager_role;SQL>GRANTRESOURCE,DBATOhigh_manager_role;SQL>GRANTSELECTFROMhigh_manager_role;SQL>GRANTSELECTUPDATE,INSERT,DELETEONscott.empTOhigh_manager_role;SQL>REVOKECONNECTFROMlow_manager_role;SQL>REVOKECONNECTCREATETABLE,CREATEVIEWFROMmiddle_manager_role;SQL>REVOKEUPDATE,DELETE,INSERTONscott.empFROMhigh_manager_role;3.7備份方案設(shè)計(jì)在SQL*Plus環(huán)境中進(jìn)行數(shù)據(jù)庫冷備份的步驟如下。=1\*GB2⑴啟動(dòng)SQL*Plus,以SYSDBA的身份登入數(shù)據(jù)庫。=2\*GB2⑵查詢當(dāng)前的數(shù)據(jù)庫的所有數(shù)據(jù)文件、控制文件、聯(lián)機(jī)重做日志文件的位置。=3\*GB2⑶關(guān)閉數(shù)據(jù)庫。=4\*GB2⑷復(fù)制所有數(shù)據(jù)文件、聯(lián)機(jī)重做日志文件以及控制文件到備份磁盤。可以直接在操作系統(tǒng)中使用復(fù)制、粘貼方式進(jìn)行,也可以使用下面操作系統(tǒng)命令完成:SQL>HOSTCOPY原文件名稱目標(biāo)路徑名稱=5\*GB2⑸重新啟動(dòng)數(shù)據(jù)庫。SQL>STARTUP在SQL*Plus環(huán)境中進(jìn)行數(shù)據(jù)庫完全熱備份的步驟如下。=1\*GB2⑴啟動(dòng)SQL*Plus,以SYSDBA的身份登入數(shù)據(jù)庫。=2\*GB2⑵將數(shù)據(jù)庫設(shè)置為歸檔模式。=3\*GB2⑶以表空間為單位,進(jìn)行數(shù)據(jù)文件備份。=1\*GB3①查看當(dāng)前數(shù)據(jù)庫有哪些表空間,以及每個(gè)表空間中有哪些數(shù)據(jù)文件。 SQL>SELECTtablespace_name,file_nameFORMdba_data_filesORDERBYTablespace_name;=2\*GB3②分別對(duì)每個(gè)表空間中的數(shù)據(jù)文件進(jìn)行備份,其方法為:※將需要備份的表空間設(shè)置為備份狀態(tài) SQL>ALTERTABLESPACEUSERSBEGINBACKUP;※將表空間中所有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020-2025年中國鋁制包裝行業(yè)市場(chǎng)深度分析及行業(yè)發(fā)展趨勢(shì)報(bào)告
- 2025年中國廚余垃圾處理機(jī)行業(yè)市場(chǎng)全景分析及投資前景展望報(bào)告
- 2025年中國城市公共交通行業(yè)市場(chǎng)深度分析及投資戰(zhàn)略咨詢報(bào)告
- 2025年中國薄膜專用阻燃母料行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025年中國茶葉連鎖店市場(chǎng)運(yùn)行態(tài)勢(shì)及行業(yè)發(fā)展前景預(yù)測(cè)報(bào)告
- 二零二五版辦公樓智能化辦公系統(tǒng)升級(jí)合同3篇
- 二零二五版包裝印刷品安全標(biāo)準(zhǔn)執(zhí)行合同3篇
- 2025年水路貨物運(yùn)輸合同范本:水路貨物運(yùn)輸船舶租賃與維修合同3篇
- 2025年度智慧城市建設(shè)項(xiàng)目承包經(jīng)營合同4篇
- 二零二五年度電動(dòng)汽車充電接口及通信協(xié)議與能源互聯(lián)網(wǎng)平臺(tái)合同
- 焊錫膏技術(shù)培訓(xùn)教材
- 函授本科《小學(xué)教育》畢業(yè)論文范文
- 高考高中英語單詞詞根詞綴大全
- 江蘇省泰州市姜堰區(qū)2023年七年級(jí)下學(xué)期數(shù)學(xué)期末復(fù)習(xí)試卷【含答案】
- 藥用輔料聚乙二醇400特性、用法用量
- 《中小學(xué)機(jī)器人教育研究(論文)11000字》
- GB/T 22085.1-2008電子束及激光焊接接頭缺欠質(zhì)量分級(jí)指南第1部分:鋼
- 全過程人民民主學(xué)習(xí)心得體會(huì)
- 2023年上海期貨交易所招聘筆試題庫及答案解析
- 附圖1岑溪市行政區(qū)劃圖
- word企業(yè)管理封面-可編輯
評(píng)論
0/150
提交評(píng)論