oracle三级项目Word格式.docx

上传人:b****4 文档编号:6423859 上传时间:2023-05-06 格式:DOCX 页数:29 大小:263.42KB
下载 相关 举报
oracle三级项目Word格式.docx_第1页
第1页 / 共29页
oracle三级项目Word格式.docx_第2页
第2页 / 共29页
oracle三级项目Word格式.docx_第3页
第3页 / 共29页
oracle三级项目Word格式.docx_第4页
第4页 / 共29页
oracle三级项目Word格式.docx_第5页
第5页 / 共29页
oracle三级项目Word格式.docx_第6页
第6页 / 共29页
oracle三级项目Word格式.docx_第7页
第7页 / 共29页
oracle三级项目Word格式.docx_第8页
第8页 / 共29页
oracle三级项目Word格式.docx_第9页
第9页 / 共29页
oracle三级项目Word格式.docx_第10页
第10页 / 共29页
oracle三级项目Word格式.docx_第11页
第11页 / 共29页
oracle三级项目Word格式.docx_第12页
第12页 / 共29页
oracle三级项目Word格式.docx_第13页
第13页 / 共29页
oracle三级项目Word格式.docx_第14页
第14页 / 共29页
oracle三级项目Word格式.docx_第15页
第15页 / 共29页
oracle三级项目Word格式.docx_第16页
第16页 / 共29页
oracle三级项目Word格式.docx_第17页
第17页 / 共29页
oracle三级项目Word格式.docx_第18页
第18页 / 共29页
oracle三级项目Word格式.docx_第19页
第19页 / 共29页
oracle三级项目Word格式.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

oracle三级项目Word格式.docx

《oracle三级项目Word格式.docx》由会员分享,可在线阅读,更多相关《oracle三级项目Word格式.docx(29页珍藏版)》请在冰点文库上搜索。

oracle三级项目Word格式.docx

(1)表的设计

1.管理员体集可以转换为关系:

ADMINISTRATOR(ADMIN_ID,ADMIN_NAME,PASSWORD,TELEPHONE,EMAIL,ADDRESS)

ADMIN_ID表示管理员用户ID,ADMIN_NAME表示姓名,PASSWORD表示密码,TELEPHONE表示管理员电话,EMAIL表示管理员邮箱地址,ADDRESS表示联系地址

2.图书详细信息可以转换为关系

BOOK_DETAILS(BOOK_ID2,BOOK_NAME,KIND_ID,WRITER,PUBLISHER_ID,INTRODUCTION,PUBLISH_DATE,IN_DATE,ACCOUNT)

BOOK_ID2表示书号,BOOK_NAME表示书名,KIND_ID表示借阅量,WRITER表示最大借阅量,PUBLISHER_ID出版社号,INTRODUCTION表示读者名,PUBLISH_DATE表示借出日期,IN_DATE表示归还日期,ACCOUNT表示书的状态

3.图书管理记录可以转换为关系

BOOK_MANAGE_RECORDS(ADMIN_ID,BOOK_ID,ACTION,TIME)

ADMIN_ID表示管理员号,BOOK_ID表示图书号,ACTION表示开始状态,TIME表示借阅时间

4.图书分类可以转换为关系

BOOKKINDS(KIND_ID,KIND_NAME,FATHER_TYPE,)

KIND_ID表示索书号,KIND_NAME表示索书名,FATHER_TYPE表示上次借书记录

5.出版社实体可以转化的关系

PUBLISHER("

PUBLISHER_ID"

"

TELEPHONE"

"

FAX"

EMAIL"

"

ADDRESS"

PUBLISHER_NAME"

)"

出版社ID"

电话"

传真"

邮箱"

地址"

出版社名字

6.读者实体可以转化为

READERS("

READER_ID"

,"

READER_NAME"

,"

PASSWORD"

COMPANY"

SEX"

IN_DATE"

"

读者号"

读者名称"

密码"

电话"

公司"

性别"

日期

7.图书预约转化表为

RESERVATIONS("

BOOK_ID2"

R_DATE"

)"

读者ID"

书ID"

8.图书实体转化为

BOOKS("

BOOK_ID"

"

STATE"

)"

书号"

检索书号"

书的状态

9.借阅记录

BORROW_RECORDS("

,"

BORROW_DATE"

RETURN_DATE"

RENEWABLE"

读者号"

借书日期"

还书日期"

书的状态"

续订

10.图书荐购

BUY_RECOMMENDATION("

RECOMMENDATION_ID"

BOOK_NAME"

WRITER"

SUMMARY"

)"

荐购号"

读者号"

书名"

作者"

出版社名"

总价

(2)序列的设计

创建一个名为“TUSER_SEQ”的序列,用于产生读者学号,起始值为307,步长为1,不缓存,不循环。

创建一个名为“TBOOK_SEQ”的序列,用于产生部门编号,起始值为380,步长为10,最大值为9990,不缓存,不循环.

创建一个seq_Borrow,用于产生读者编号,起始值为1,步长为1,不缓存,不循环。

(3)视图的设计

读者当前借阅

新进书目

图书推荐

图书视图

(4)索引的设计

在图书表上创建唯一性索引

在读者表表上的sex列上创建一个位图索引

4.数据库实施

(1)创建用户,并给用户授权

insertinto"

WIN2008"

."

ADMINISTRATOR"

values('

070411'

'

admin'

123456789'

,'

121212@com'

’大连’);

(2)创建表

1.管理员表

ADMINISTRATOR

("

ADMIN_ID"

CHAR(10)NOTNULLENABLE,

"

ADMIN_NAME"

CHAR(50)NOTNULLENABLE,

VARCHAR2(20)NOTNULLENABLE,

NUMBER,

VARCHAR2(50),

VARCHAR2(100),

CONSTRAINT"

PRIMARY_ADMIN_ID"

PRIMARYKEY("

2.读者表

READERS

VARCHAR2(50)NOTNULLENABLE,

CHAR(13),

CHAR(3)NOTNULLENABLE,

DATE,

PRIMARY_READER_ID"

3.借阅记录表

BORROW_RECORDS

CHAR(10)DEFAULT1NOTNULLENABLE,

DATENOTNULLENABLE,

CHAR

(1)DEFAULT1NOTNULLENABLE,

PRIMARY_RECORD_ID"

4.图书预约表

RESERVATIONS

PRIMARY_KEY_1"

5.图书荐购表

BUY_RECOMMENDATION

VARCHAR2(1000),

PRIMARY_REC_ID"

6.图书表

BOOKS

CHAR

(1)NOTNULLENABLE,

PRIMARY_KEY"

7.图书管理记录表

BOOK_MANAGE_RECORDS

ACTION"

TIME"

PRIMARY_BOOK_MANAGE_RECORDS"

8.图书详细信息表

BOOK_DETAILS

KIND_ID"

INTRODUCTION"

PUBLISH_DATE"

TIMESTAMP(6)NOTNULLENABLE,

ACCOUNT"

PRIMARY_BOOK_ID2"

9.图书分类表

BOOKKINDS

KIND_NAME"

FATHER_TYPE"

PRIMARY_KIND_ID"

10.出版社表

PUBLISHER

CHAR(13)NOTNULLENABLE,

VARCHAR2(20),

VARCHAR2(100)NOTNULLENABLE,

PRIMARY_PUBLISHER_ID"

(3)创建序列

CREATESEQUENCETUSER_SEQSTARTWITH307INCREMENTBY1NOCACHENOCYCLE;

CREATESEQUENCETBOOK_SEQSTARTWITH380INCREMENTBY10MAXVALUE9990NOCACHENOCYCLE;

创建一个seq_Borrow,用于产生读者编号,起始值为1,步长为1

Createsequenceseq_Borrowstartwith1incrementby1nocycle

(4)创建索引

CreateuniqueindexBook_cBooksTypeonBOOKS(BOOK_ID)tablespaceusers;

CreatebitmapindexREADERS_sexonREADERS(sex)tablespaceusers;

(5)创建视图

createorreplaceviewcurrent_borrow_viewas

select"

fromborrow_records

wherestate='

1'

createorreplaceviewnew_coming_booksas

selectbook_id2,book_name,writer,publisher_name

frombook_details,publisher

wherebook_details.publisher_id=publisher.publisher_idandbook_details.in_date>

add_Months(sysdate,-1)

createorreplaceviewgb_recas

selectid,book_name,publisher_name,writer,b_numfrom

(selectbooks.book_id2id,count(*)b_num

fromborrow_records,books

whereborrow_records.book_id=books.book_id

groupbybooks.book_id2

),books_view

wherebooks_view.BOOK_ID2=id

orderbyb_numdesc

CREATEORREPLACEFORCEVIEW"

BOOKS_VIEW"

("

AVAILABLE_ACCOUNT"

)AS

selectdistinctbook_details.BOOK_ID2,BOOK_NAME,WRITER,PUBLISHER_NAME,ACCOUNT,(selectcount(*)frombookswherebooks.book_id2=book_details.book_id2andbooks.state='

groupbybooks.book_id2)AVAILABLE_ACCOUNT,INTRODUCTION

frombooks,book_details,publisher

wherebooks.book_id2=book_details.book_id2andbook_details.publisher_id=publisher.publisher_id

;

5.PL/SQL程序设计

(1)存储过程的设计

创建一个名为proc_Due的存储过程,实现还书操作

创建一个名为trg_BorrowBook的存储过程,返回某个学生当前没有归还的所有图书

创建名为“Pro_secure_dml”的存储过程,检查当前用户操作时间是否为工作时间,即非周六周日,时间为08:

00~18:

00

(2)函数的设计

创建一个名为func_dept_book的函数,以读者号为参数,查看借阅的书号:

创建一个名为fun_DEPT_RECORDS的函数,以图书号为参数,查看还书的日期:

(3)触发器的设计

创建名为check_borrow_book的触发器,实现读者借书时更新书的可借与不可借状态。

创建名为check_BORROW_RECORDS的触发器,当插入、删除或修改借阅信息时,统计人数,并输出

创建名为check_BORROW_number的触发器,当插入一条借书记录,保证单个人不超过10本书。

(4)包的设计

创建book_manage包,用于存储图书入库,借书,还书,时间等信息,实现获取图书,插入图书,借书,还书,续借书,更新借书记录的功能。

创建reader_manage包,用于存储读者信息,读者的借书信息,实现查询借阅信息,查询历史借阅信息,插入新读者,更新读者信息的功能。

6.PL/SQL程序开发

(1)存储过程的实现

CREATEORREPLACEPROCEDUREproc_due(

P_borrowCardIdVARCHAR2,p_ISBNVARCHAR2,p_dueDateDATEDEFAULTSYSDATE)

AS

V_numberNUMBER;

BEGIN

SELECTcount(*)INTOv_numberFROMborrow_records

WHEREREADER_ID=p_borrowCardIdANDBOOK_ID=p_isbn;

IFv_number=0THEN

RAISE_APPLICATION_ERROR(-20000,'

对不去,没有相应借书记录!

'

);

ENDIF;

UPDATEborrow_recordsSETRETURN_DATE=p_dueDateWHEREREADER_ID=p_borrowCardIdANDBOOK_ID=p_isbn;

END;

CREATEORREPLACEPROCEDUREproc_BorrowBook(

P_borrowCardIdVARCHAR2,p_bookCurssorOUTsys_refcursor)

OPENp_bookCurssorFORSELECTbooks.book_id,BORROW_DATE,RETURN_DATEFROMbooks,borrow_records

WHEREbooks.book_id=borrow_records.book_idANDREADER_ID=p_borrowCardIdANDRETURN_DATEISNULL;

createorreplaceprocedurePro_secure_dml

is

begin

ifto_char(sysdate,'

HH24:

MI'

)notbetween'

08:

00'

and'

18:

orto_char(sysdate,'

DY'

'

NLS_DATE_LANGUAGE=AMERICAN'

In('

SAT'

SUN'

)thenraise_application_error(-20205,'

只能在正常的工作时间内改变。

endif;

endPro_secure_dml;

(2)函数的实现

CREATEORREPLACEFUNCTIONfunc_dept_book(

p_deptnoreaders.reader_id%type)

returnborrow_records.book_id%type

as

v_maxsalborrow_records.book_id%type;

selectbook_idintov_maxsalfromborrow_recordswhereborrow_records.reader_id=p_deptno;

returnv_maxsal;

exception

whenno_data_foundthen

dbms_output.put_line('

nodata'

endfunc_dept_book;

CREATEORREPLACEFUNCTIONfun_DEPT_RECORDS(

p_bookidBORROW_RECORDS.BOOK_ID%type)

returnborrow_records.return_date%type

v_dateborrow_records.return_date%type;

selectreturn_dateintov_datefromborrow_recordswhereborrow_records.book_id=p_bookid;

returnv_date;

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

当前位置:首页 > 农林牧渔 > 水产渔业

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

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