数据库设计--图书管理系统.docx

上传人:wj 文档编号:1781474 上传时间:2023-05-01 格式:DOCX 页数:46 大小:1.86MB
下载 相关 举报
数据库设计--图书管理系统.docx_第1页
第1页 / 共46页
数据库设计--图书管理系统.docx_第2页
第2页 / 共46页
数据库设计--图书管理系统.docx_第3页
第3页 / 共46页
数据库设计--图书管理系统.docx_第4页
第4页 / 共46页
数据库设计--图书管理系统.docx_第5页
第5页 / 共46页
数据库设计--图书管理系统.docx_第6页
第6页 / 共46页
数据库设计--图书管理系统.docx_第7页
第7页 / 共46页
数据库设计--图书管理系统.docx_第8页
第8页 / 共46页
数据库设计--图书管理系统.docx_第9页
第9页 / 共46页
数据库设计--图书管理系统.docx_第10页
第10页 / 共46页
数据库设计--图书管理系统.docx_第11页
第11页 / 共46页
数据库设计--图书管理系统.docx_第12页
第12页 / 共46页
数据库设计--图书管理系统.docx_第13页
第13页 / 共46页
数据库设计--图书管理系统.docx_第14页
第14页 / 共46页
数据库设计--图书管理系统.docx_第15页
第15页 / 共46页
数据库设计--图书管理系统.docx_第16页
第16页 / 共46页
数据库设计--图书管理系统.docx_第17页
第17页 / 共46页
数据库设计--图书管理系统.docx_第18页
第18页 / 共46页
数据库设计--图书管理系统.docx_第19页
第19页 / 共46页
数据库设计--图书管理系统.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库设计--图书管理系统.docx

《数据库设计--图书管理系统.docx》由会员分享,可在线阅读,更多相关《数据库设计--图书管理系统.docx(46页珍藏版)》请在冰点文库上搜索。

数据库设计--图书管理系统.docx

南昌大学软件学院

数据库实训大作业

课程名称:

数据库实训

院(系):

软件学院

专业 :

软件工程

班级 :

Java146

姓名 :

欧阳天雄、黎子杨、刘涛

学号 :

800011420、8000114213、8000114211

题目 :

图书馆管理系统数据库设计

指导老师:

王卓

完成日期:

2016/12/15

目录

一、系统概述 3

二、功能需求分析 3

1、功能概述 3

2、系统角色 4

三、数据流设计 5

2、数据流图 5

四、系统结构设计 9

1、数据字典 9

2、ER图 12

3、概念模型 16

4、逻辑模型 17

5、物理模型 18

五、表空间设计 18

六、安全管理 20

七、表、约束、索引、视图管理 23

八、PL/SQL语句 38

九、总结 40

十、参考文献 41

一、系统概述

图书馆管理系统是一类比较典型的系统开发系统。

它总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。

本系统主要实现对图书馆信息的管理,主要功能为管理有关读者、图书、借阅、查询、和删除管理员的信息等。

可以帮助图书馆管理员和读者更加方便地管理图书和借阅图书。

二、功能需求分析

1、功能概述:

本图书馆管理系统适用于校园等小型的图书馆使用,它的主要任务是建立详细的可借阅读者的信息(可表现为一张借阅卡,或者校园卡)以及图书馆内所有的图书种类以及对应书籍的记录。

并可以对借阅者和所借书籍进行登记,方便图书管理员能及时查看馆内书刊信息以及对借书以及还书做出操作。

对此,本系统应该具有的功能应该有

1、管理员信息管理:

管理员是本系统的管理者,具有最高权限,对图书和读者有添加,修改和删除等功能。

但管理员只能修改自己的信息,不能添加或删除自己的信息。

要想添加和删除管理员必须到数据库中去操作表结构。

2、借阅者信息管理:

由系统管理员,给每个借阅者创建一个账户,账户应具有借阅者的详细信息,并且借阅者的信息在借阅者的身份信息改变后可以修改或注销。

3、书库管理:

当有新的图书种类或者新书入库时候,要对书库记录进行添加记录,当有旧的书种或书被下架时,也要对书库进行删除记录。

当读者或者管理员要对某种书刊进行查询时,也可以通过本系统进行查询

4、书籍出借管理:

图书馆代理借阅者进行借书或者还书等各项义务。

在借阅书刊时,只要输入要借阅的书刊编号然后输入借阅者的ID,即可提交借书操作。

若书刊编号存在,且借阅卡号存在,且借阅卡的信息与借阅者本人的信息吻合,收取一定押金后即可完成借书操作。

完成借书操作后,数据库内书库记录该书刊的记录从在库状态改为借出状态。

则操作成功,系统会把该本书的加入借阅记录中去。

5、书籍归还管理:

管理员可以根据借阅者的关键信息,查询到该借阅者所有的借阅信息,借阅日期等,从中选择要归还的图书,显示有关本图书的所有借阅信息,方便让管理员判断出是否过期,是否对读者进行罚款,退还押金后并对数据库记录做出改变,,并把该本图书状态信息改为在库。

6、借阅书籍管理:

图书管理员要能够对所有被借出的书进行查询,了解哪些人借了哪些书,以及借阅书籍的日期,方便当一本书借出太久后管理员可以对该借书的人进行通知。

2、系统角色

本项目的主要用户包括以下两类。

(1)图书管理员

图书管理员负责管理书籍的维护,读者的管理,以及借阅归还业务的办理。

是服务的提供者。

(2)借阅者

借阅者主要是书籍的借阅和归还。

三、数据流设计

1、数据流分析:

(1)系统为图书管理员建立档案,管理员进入系统前需要进行身份验证,用户名,密码输入正确方可进入系统。

(2)系统预设一些借阅者,并为他们建立档案信息。

(3)在系统中,图书管理员可以新建新的借阅者信息,修改已有的借阅者信息,注销已经把书还清的借阅者信息。

(4)在系统中,图书管理员可以对拥有借阅卡的用户办理借书,还书业务。

(5)在系统中,图书管理员可以对还书违规的借阅者做出处罚金的处罚。

(6)在系统中,图书管理员可以修改库存信息,增加新书刊或新书种,删除书种或书刊。

(7)在系统中,借阅者可以自助查询书库信息,和自己的借阅记录。

(8)在系统中,图书管理员可以查看所有被借出书的信息。

2、数据流图:

1、顶层数据流图

2、借书管理的二层数据流图

3、还书管理的二层数据流图

书库管理的二层数据流图

4、读者管理的二层数据流图

罚款管理的二层流图

四、系统结构设计

1、数据字典:

由需求分析和数据流图中我们可以提取到几个不同的元素:

管理员,借阅者,书籍,借阅记录

表1-1图书包含的数据项的数据字典

数据项名

数据项含义

别名

数据类型

取值范围

BookID

唯一标识每本书籍

图书编号

Char(10)

BookName

图书名称

Varchar2(30)

class

图书类别

Char(20)

publishDate

出版日期

Date

Author

作者

Char(30)

Publisher

出版社

Varchar(20)

ISBN

ISBN号

Varchar2(20)

price

价格

Numeric(5,2)

Bookstate

表示图书在库还是借出

图书状态

Char(5)

表1-2管理员包含的数据项的数据字典

数据项名

数据项含义

别名

数据类型

取值范围

ID

唯一标识管理员

管理员编号

Char(4)

Name

管理员名字

Char(10)

tel

管理员电话

Char(11)

Pwd

登陆密码

Char(16)

Sex

管理员性别

Char

(1)

“男”或“女”

Phone

管理员照片

Image

一寸证件照

表1-3借阅者包含的数据项的数据字典

数据项名

数据项含义

别名

数据类型

取值范围

ReaderID

唯一标识每一位借阅者

借阅者编号

Char(10)

ReaderName

借阅者姓名

Char(15)

ReaderSex

借阅者性别

Char

(1)

“男”或“女”

ReaderPhone

用以借还书确认身份

借阅者照片

Image

证件照

ReaderPhone

用以管理员联系

借阅者电话

Char(11)

MaxDay

最大借阅天数

Number

(2)

>0

BookBorrowed

已借图书

Number

(2)

>=0

表1-4管理员操作的数据字典

处理名

说明

流入的数据流

流出的数据流

处理

借书操作

对借阅者的借书申请作出处理

书籍信息,借阅者信息

借阅单

根据借阅者挑选的书籍,查看借阅者是否满足借阅条件,如果满足条件,则收取一定的押金并保存记录到借阅记录表产生借阅单

还书操作

对借阅者的还书申请作出处理

书籍信息读者信息

退款

根据借阅者所持的借阅单和书籍借阅卡,查看借阅者的本次借阅记录,是否有违规使用的情况,若有则相应处以罚金,或退还押金,删除借阅记录。

添加借阅者

对申请借书的潜在客户的申请作出处理

客户信息

借阅卡

根据客户的准确身份信息,核对信息是否有效,若有效则给客户办借阅卡。

修改借阅者信息

对借阅者的信息进行更改

客户信息

借阅卡

根据客户的修改请求,核对修改的信息,若有效,则给客户更新借阅卡。

2、ER图:

1.实体:

管理员:

管理员

密码

身份证号

姓名

工作证号

读者:

图书:

罚款:

2.管理员图书读者之间的联系:

3、概念模型

4、逻辑模型

在得出概念结构设计的E-R图后,下一步的任务就是吧概念结构设计中的E-R模型转换为具体的数据库管理系统支持的组织层数据模型,也就是导出特定的数据库管理系统可以处理的数据库逻辑结构,由于在概念结构设计中我们就得出了若干个关系模式,因此在逻辑结构设计要做的就是把各个关系模式做一遍规范化处理,以减少冗余。

以下关系模式均已规范化到第三范式。

图书表(图书编号,图书类别编号,书名,出版日期,作者,出版社,ISBN号,价格)

图书类别表(类别编号,类别名称,类别解释)

借阅者表(借阅者编号,借阅等级,姓名,性别,照片,电话,已借图书)

借阅者类别表(借阅等级,等级名称,最大可借图书数,最长借阅期限)

管理员表(管理员编号,姓名,性别,登陆密码,电话,照片)

罚金表(罚金级别,罚金名称,罚款说,罚金数量)

借书记录表(借阅者编号,图书编号,借书时间,还书期限,押金)

还书记录表(借阅者编号,图书编号,还书时间,退款)

罚款表(借阅者编号,罚款类别,已缴罚款,罚款原因)

5、物理模型

五、表空间设计

通过之前的概念结构设计,逻辑结构设计,物理结构设计得出来的模型可以知道,本图书管理系统大概有十张表,这些表从业务角度来分,主要有以下三类:

(1)与书库相关的表。

包括图书表

(2)与系统角色相关的表,包括借阅者表,管理员表

(3)与案例业务相关的表,借书表,还书表。

除了这些表外,其他都是些参数类型的表。

在我们的案例中,本系统是面向小型图书馆的。

下面我们以一个借阅人数为500,藏书量为10000本的图书馆为例。

有五百个借阅者需要建立借阅信息,10000本图书需要建立图书信息。

预设10位管理员。

粗略估算一下数据表空间为2G,索引表也设为2G,临时表空间设为500M。

由于本系统大多数操作都是通过管理员进行的,并发性不高,所以回退表空间不需要很大,回退表空间就设为500M。

综上所述,本案例需要创建一个数据表空间,一个索引表空间,一个临时表空间并将回退表空间扩充,为其增加一个数据文件。

表空间名称分别libsys_data,libsys_idx,libsys_temp。

采用小文件类型的额数据文件。

每个数据文件的大小不超过1G.因此数据文件分别是libsys_data01.dbf,libsys_data02.dbf,libsys_idx01.dbf,libsys_idx02.dbf,libsys_temp01.dbf,libsys_undo01.dbf。

创建图书管理系统数据库 :

LIBSYS

建立表空间:

创建的数据库文件:

六、安全管理

6.1用户

通过前面的需求分析可以知道,系统主要有两个系统角色,分别是管理员和借阅者,管理员有很多种权限,可以对除管理员表外的所有表进行增删改查的操作,而借阅者的权限比较低,只能进行一些针对特殊表的查找操作,例如,当借阅者想查询图书馆有没有自己想要的书可以对书库表进行查询,想知道自己的借阅记录可以查询借阅记录表。

因此本例中我们新建两个角色,管理员和用户(operator和reader)

创建operator用户

创建reader用户

6.2、权限、角色管理

Operator用户是本系统的主用户,本案例数据库模型的数据库对象全部建立在此方案中,而reader用户只需要给他连接数据库的权限,然后由operator将部分数据库对象的查询权限授予他就行。

如上所述,暂给connect,resource权限给Operator用户,让operator用户可以建表等等:

而Reader用户先授予它连接数据库的权限,

由于Reader用户,前面说了可以查询书库和某些记录的权限。

因此我们自定义一个角色,具有选择任何表的权限,然后把这个角色授予Reader。

到目前为止,我们创建了两个用户Operator和Reader

Operator具有创建数据库对象的权利,而Reader只有查询的权限。

可以通过sql语句查询各个用户的权限

Operator用户的角色信息和使用空间表的配额信息

Reader用户的角色信息和权限信息

七、表、约束、索引、视图管理

7.1、表管理

表是ORACLE数据库中的主要对象,是数据库中的数据存储的基本单位,存储着与应用程序相关的一些信息。

其他许多数据库对象如索引、视图都以表为基础。

下面我们将以前面概念模型设计通过正向工程生成的物理数据模型进一步生成的数据库创建的SQL脚本来建表。

具体的建表过程如下。

7.2、约束

完整性约束是一种规则,它不占任何数据空间完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。

用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。

约束大致分为唯一性和主键约束、外键约束、检查约束、空值约束、默认值约束,等,对于本例来说,主要是应该添加外键约束,检查约束,和默认值约束。

例如,管理员表和借阅者表的性别字段应该添加检查约束,还有一些表与表之间的引用应该添加外键约束。

下面我们将进行添加约束工作。

对于表Manager只用添加一些检查约束和空值约束就行了

对于表Reader因为存在引用,所以除了检查约束和空值约束还得添加外键约束

对于Book表只需添加外键约束

对于Borrow表因为和很多实体存在联系,所以得添加几个外键约束

给Returnbook表添加外键约束

给punishpay表添加外键约束

7.3索引管理

虽然关系数据库中的数据行的物理位置无关紧要,但在本案例中,管理员和用户用Book,Borrow,ReturnBook三个表的查询是非常集中的,所以为了加快用户查找的速度有必要设置索引。

索引就是一种可以提高查询性能的数据结构。

在Book表中,用户查询一本书通常会按书名和书的类别进行查找,因此可以在书名和图书类别这两列设置非唯一索引

在borrow表中,通常会按书编号或借阅者id来查找一条借阅记录。

因此可在书编号和借阅者ID上建立索引

同理给还书记录表设置索引

给罚款记录表设置索引

7.4、视图管理

视图是从一个表或多个表中通过查询二导出数据的虚表,建立视图并不占据空间。

在本案例中在Reader表中有个已借图书数量borrowed,和readerclass,而在Readerclass表中规定了一个等级的用户可以借多少书,因此我们可以通过它来创建一个视图从而显示出用户还能借多少本图书。

步骤如下:

创建视图

从视图中选择数据

就这样管理员就可以方便地判断是否可以将书籍出借给借阅者了。

或者还可以对视图进行修改,

7.5、基本对象的信息查询及管理

在本案例中Book,Manager,Reader,Punish,ReaderClass,classIDTable

这六个表的查询及管理是最简单的。

而后面借书还书罚款三个表的查询及管理则稍微复杂一点。

因为这些联系涉及到多张表,插入,修改,删除会引起其他表记录的改变,因此我们将通过定义触发器或存储过程的方法来实现。

对Book表的基本管理

为book表新增一个bookState字段类型为char(5),表示图书室在库还是借出状态

对Reader表的基本管理

对Manager表的基本管理

对classidtable表的基本管理

对punish表的基本管理

对readerclass表的基本查询

对punishpay表的查询

对borrow表的基本管理

在borrow表创建三个触发器

对borrow表执行插入语句

查询borrow表插入了数据后,book,reader,borrow表的记录情况;

可以看到这样理想的一次借书就完成了但是当要对borrow修改时,现在只考虑,修改借阅者id,创建触发器

同样的,当借阅者要求还书的时候,也应该对以上的表做出修改,因此,也对returnbook表创建触发器

先看对returnbook表执行插入前的三个表情况做对比

向returnbook表插入数据

查完后各表的状态为

到此,所有数据库基本对象的信息查询和管理也都进行过了。

八、PL/SQL语句

编写PL/SQL语句实现管理员查询图书记录的过程

查询结果:

编写PL/SQL语句查询耽搁读者的借阅记录

编写PL/SQL语句查询读者想要借的图书信息

九、总结

在本次图书管理系统数据库设计中,通过每一个环节地亲历亲为,使我积累了一定经验。

首先、需求分析的很重要,在开始的需求分析阶段,过于急于求成,并没有把需求分析做到最精致,导致后来在数据库的实现中出现了很多问题,例如,表的重要属性缺失,数据类型设计不合理。

所幸,这些问题可以通过sql命令去解决。

其次,powerDesign是个好工具,它在概念结构设计,物理结构设计中帮了不少忙。

通过这次数据库设计也让我掌握了如何运用powerdesign,也明白了熟练掌握开发工具,会使你的项目开发事倍功半。

在数据库的实现过程中,也加深了我对数据库基本对 象的的理解。

熟练了各种DDL,DML语句的使用,尤 其是触发器的运用。

总之,这次的数据库设计让我受 益匪浅,同时也感谢授予我知识和技能的老师和书籍。

十、参考文献

《Oracle11g+ASP.NET数据库系统开发案例教程》

--欧阳浩

《Oracledatabase10gPL/SQL程序设计》

--ScottUrman

《Oracle触发器与存储过程高级编程》

--KevinsOwens

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

当前位置:首页 > 外语学习 > 法语学习

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

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