1前言图书馆管理系统是具有管理功能的计算机系统,而数据库原理及应用课程设计在开发应用程序中至关重要,合理的数据表结构不仅有利于软件的快速开发,而且有利于以后对软件的维护,使之能够有效的存储数据,满足各种用户的应用需求。创建一个简单的图书管理系统包括图书的信息,读者(学生和老师)的信息以及读者的借阅信息,管理员的信息。系统在oracle的平台上用sql语言来编写实现,此系统功能分为面向读者和面向管理员两部分,其中读者可以进行借阅,归还和查询等功能,管理员可以完成书籍和读者的增加,删除和修改以及对读者借阅、归还,违规罚款的确认2需求分析2.1课程设计目的通过专业课程设计Ⅱ,即大型数据库系统课程设计,有助于培养学生综合运用数据库相关知识解决实际问题的能力。本设计要求对实际问题进行需求分析,提炼实际问题中的数据,建立关系模型,并在大型数据库中得以实现。同时要求对数据库的运营、管理及使用上进行必要的规划和实现。2.2课程设计任务基本任务:(1)根据需求,补充必要的数据库实体,建立ER模型,通过ER图表示。(2)在Oracle中创建该系统的数据库,并在数据库中实现各表,写入一定的数据。(3)从实际查询应用出发,为一些主要的应用模块设计至少3个参数化视图。(4)从数据检验的角度出发,为相关的表建立至少1个触发器。(5)从数据更新或修改的角度出发,设计至少1个存储过程。(6)从安全的角度出发,规划系统的角色、用户、权限,并通过相关的SQL实现。(7)预计每个表的大致容量和增长速度,指定备份的方案,写出相关的备份命令。2.3设计环境(1)WINDOWSXP系统(2)Oracle数据库管理系统2.4开发语言PL/SQL语言四号黑体,左顶格,段前段后0.5行,固定值22磅,大纲级别:2级3分析和设计为了实现图书管理系统数据库的设计,其主要思路是根据其任务书而来的。首先是根据资料和其任务书中要实现的主要功能对其进行分析并设计出系统的E-R图。其次根据E-R图创建主要的表。然后根据具体的需要创建相应的视图,存储过程和触发器,最后是用户、角色、权限设计和数据的备份方案。其全部功能的详细创建和实现过程。后面将会具体的给出。3.1系统E-R模型3.2表空间及表的设计createtablebook(bnovarchar(10)primarykey,bnamevarchar(40)notnull,writervarchar(30)notnull,btypevarchar(8),pricefloat,storenumint,pubvarchar(50),pubdayvarchar(15));createtablereader(rnovarchar(10)primarykey,rnamevarchar(20)notnull,sexvarchar(2)check(sex='男'orsex='女'),typevarchar(8)notnull,bwnumintnotnull,departvarchar(20),phonevarchar(15)notnull));createtableb_borrow(bnovarchar(10),rnovarchar(10),primarykey(bno,rno),rnamevarchar(20)notnull,bwdayvarchar(10)notnull,bkdayvarchar(10)notnull,foreignkey(bno)referencesbook(bno),foreignkey(rno)referencesreader(rno));createtablebmanager(mnovarchar(10)primarykey,mnamevarchar(20)notnull,msexvarchar(2)check(msex='男'ormsex='女'),mphonevarchar(15)notnull,addressvarchar(20)notnull);createtableb_manage(mnovarchar(10),bnovarchar(10),primarykey(mno,bno),mnamevarchar(20)notnull,tnumintnotnull,addtimevarchar(10),bwtimesvarchar(8)notnull,foreignkey(mno)referencesbmanager(mno),foreignkey(bno)referencesbook(bno));createtabler_manage(mnovarchar(10),rnovarchar(10),primarykey(mno,rno),rnamevarchar(20),backvarchar(2)check(back='是'orback='否'),foreignkey(mno)referencesbmanager(mno),foreignkey(rno)referencesreader(rno));createtablem_rule(mnovarchar(10),rnovarchar(10),primarykey(mno,rno),rnamevarchar(20)notnull,rtypevarchar(10)check(rtype='丢失赔款'orrtype=’损坏赔偿’orrtype='逾期罚款')notnull,cashnumvarchar(10)notnull,foreignkey(mno)referencesbmanager(mno),foreignkey(rno)referencesreader(rno));3.3视图设计createviewbookviewasselect*frombookwherebtype='计算机'withcheckoption;createviewreaderviewasselect*fromreaderwheresex='女'withcheckoption;createviewborrowinfo(bno,bname,storenum,btype,tnum,bwtimes)asselectb.bno,bname,storenum,btype,tnum,bwtimesfrombookb,b_managemwhereb.bno=m.bnowithcheckoption;3.4存储过程、函数的设计createorreplaceprocedureshow_reader(p_rnoreader.rno%type)asv_bwnumreader.bwnum%type;beginselectavg(bwnum)intov_bwnumfromreaderwhererno=p_rno;dbms_output.put_line(p_rno||''||'平均借书数是多少:'||v_bwnum);forv_readerin(selectrno,rname,typefromreaderwhererno=p_rnoandbwnumv_bwnum)loopdbms_output.put_line(v_reader.rno||''||v_reader.rname||''||v_reader.type);endloop;exceptionwhenno_data_foundthendbms_output.put_line('不存在最高借书数的读者!');endshow_reader;过程已创建。executeshow_reader(5);PL/SQL过程已成功完成。3.5触发器设计触发器createorreplacetriggertrig_viewinsteadofinsertonborrowinfoforeachrowdeclarev_bnob_manage.bno%type;beginselectbnointov_bnofromb_managewheretnum=:new.tnumandbwtimes=:new.bwtimes;insertintobook(bno,bname,storenum,btype)values(:new.bno,:new.bname,:new.storenum,:new.btype);endtrig_view;触发器已创建。3.7备份方案设计4课程设计总通过本次课程设计,加深了我对软件设计流程的进一步的深入理解,同时熟悉和巩固了自己在数据库上的一些不熟甚至是陌生的知识。相对于以前的课程设计,这次的课程设计最大的难度是在软件的使用上,在课程设计开始的时候,对于软件oracle10g,本人对其是一窍不通,甚至连对oracle最基本的安装和进入都不知道。在设计中,很多地方也是因不知道怎么使用oracle而引起的,如数据的备份。其次是对知识的不熟,在设计中对于数据的插入,过程、函数和触发器的创建,以及用户、角色、权限的授予都有遇到这样或那样的问题,如数据插入的数据与所定义的数据类型不同,过程创建的语法错误和权限授予不成功等。当然了,也有对设计报告编写的问题,如不知道要怎样排版。不过这些问题在设计过程中或最后都得以解决,同时也从中吸取了不少的经验教训。最后,在这次设计中,让我感触最深的一句话是“实践出真知”,只有自己亲自去动手了,才能找到问题,解决问题。这让我对自己不管是学习上还是生活上都会有很大的帮助。参考文献致谢这次的课程设计能在这么快的时间里完成,一个重要原因是身边人的倾囊相助。首先,要感谢编写数据库教材和资料的老师,让我有机会接触和熟悉数据库设计和软件开发过程及其中应注意的问题,为以后开发积累了宝贵的经验。其次,要感谢指导教师陈智老师,没有陈老师的耐心指导,我能完成这次课程设计可能还要十几二十天。最后,要感谢我身边的同学,正是有了他们的帮助,我在课程设计中的许多问题才能很快很好的得以解决。在此过程中我真切地体会到集体和团队的力量的强大。在课程设计结束之际,真心的对帮助过我的老师和同学说声谢谢,谢谢大家了!