大数据库图书借阅管理系统.docx

上传人:scccc 文档编号:14750406 上传时间:2022-02-16 格式:DOCX 页数:29 大小:266.30KB
返回 下载 相关 举报
大数据库图书借阅管理系统.docx_第1页
第1页 / 共29页
大数据库图书借阅管理系统.docx_第2页
第2页 / 共29页
大数据库图书借阅管理系统.docx_第3页
第3页 / 共29页
大数据库图书借阅管理系统.docx_第4页
第4页 / 共29页
大数据库图书借阅管理系统.docx_第5页
第5页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《大数据库图书借阅管理系统.docx》由会员分享,可在线阅读,更多相关《大数据库图书借阅管理系统.docx(29页珍藏版)》请在三一文库上搜索。

1、标准大型数据库课程设计设计报告题目:图书借阅管理系统学号:学生姓名:指导教师:提交时间:2014-11-22文案目录1 .需求分析21.1 需求调查21.2 系统功能分析22 .概念结构设计32.1 概念设计32.2 E-R图建立33 .逻辑结构设计83.1 E-R图向关系模式转换 83.2 建立关系模式83.3 关系模式规范化处理83.4 用户子模式建立83.5 关系模式逻辑结构定义 104 .物理结构设计115 .数据库实施与测试 125.1 数据库实施125.1.1 数据库及数据库对象建立 125.1.2 数据存入数据库 135.1.3 函数设计135.2 数据库测试146 .数据库完整

2、型设计 166.1 主键及唯一性索引 166.2 参照完整型166.3 Check 约束166.4 触发器设计176.5 规则177 .数据库视图设计 188 .数据库存储过程设计 199 .总结2710 .参考文献 27某书店图书借阅管理系统第1章需求分析1.1 需求调查通过对各个书店的市场调查,该图书借阅管理系统的需求如下:1)系统管理:实现系统管理人员对系统的管理,包括添加删除用户,数据备份,数据还原,注销等功能。2)读者信息管理:添加读者信息,根据借书证编号查看读者信息,根据读者ID删除读者,借阅证到期的读者更改借阅证办证时间。3)书籍信息管理:添加一条书籍信息,删除一条书籍信息,查看

3、一条图书信息,根据图 书名查看图书信息,根据图书类别查看图书信息,根据作者查看图书信息, 根据出版社产看图书信息,根据ISBN查看图书库存,根据书籍名查看库存。4)借阅管理:借书管理,还书管理,续借管理,查看所有借阅信息,根据读者ID查看借阅信息,根据读者ID查看借书记录,根据读者 ID查看借书记录,根据读者 ID查 看罚款信息。书籍信息管理读者信息管系 统 管 理图1-2系统功能分析图第2章概念结构设计2.1 概念设计概念结构设计阶段的目标是通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS勺概念模型。即通过对数据流程图的分析归纳和总结,建立 E-R图。概念结构的设计方法有两种:

4、(1)集中式模式设计法: 这种方法是根据需求由一个统一机构或人员设计一个综合的全局模式。这种方法简单方便,适用于小型或不复杂的系统设计,由于该方法很难描述复杂的语义关联,而不适于大型的或复杂的系统设计。(2)视图集成设计法:这种方法是将一个系统分解成若干个子系统,首先对每一个子系统进行模式设计,建立各个局部视图, 然后将这些局部视图进行集成,最终形成整个系统的全局模式。2.2 E-R图建立局部E-R图1 .对读者建立E-R图,其中读者ID为主键读者ID读者姓名联系方式、一R什读者性别办证时间、七口 读者类力I读者单位图2-1读者E-R图2 .对书籍建立E-R图,其中图书ID为主键定价书籍类别书

5、籍作者书籍名称图书IDSi-出版日期状态登记日期ISBN图2-2书籍E-R图出版社3.对读者类别建立E-R图,其中读者类别编号为主键借阅证期限持有图书最长期限读者类别名、七口 H读者类力I读者类别编号图2-3读者类别E-R图允许借阅图书最大数4、对借阅建立E-R图图书 ID )( ISBN读者ID借阅|图书名JrTit读者借书时间读者姓名1图2-4借阅E R图5、对还书建立E-R图图书 ID ) ISBN读者ID 还书 图书名还书时间读者姓名图2 5还书E R图6、对罚款建立E-R图读者姓名读者ID图书ID处理状态书籍名归还日期应还日期ISBN罚款类别编借阅日期图2 67、对罚款类别建立E-R

6、图罚款ER图罚款名称罚款类别编罚款原因罚款类别图2 7罚款类别E R图全局E-R图还书实体归还书籍实体读者实体借阅借阅信息实体罚款实体读者类别实体罚款类别实体第3章逻辑结构设计3.1 E-R图向关系模式转换数据库的逻辑结构设计就是把概念Z构设计阶段设计好的基本E R图转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。逻辑结构是独立于任何一种数据模型的,在实际应用中,一般所用的数据库环境已经给定(如SQL Server或Oracel或MySql)。由于目前使用的数据库基本上都是关系数据库,因 此首先需要将 E-R图转换为关系模型,然后根据具体DBMS的特点和限制转换为特定的DBMS支持

7、下的数据模型,最后进行优化。3.2 建立关系模式读者信息:读者ID,密码,读者姓名,读者性别,读者类别,读者单位,办证时间,联系方式;读者类别信息:读者类别编号,读者类别名,允许借阅图书最大数 ,持有图书最长期限,借阅证期限;书籍信息:图书ID, ISBN,书籍名称,书籍类别,书籍作者,出版社,定价,出版日期,登记日期,状态;借书信息:借书证编号,读者姓名,书籍编号,ISBN,书籍名,读者借书时间;还书信息:借书证编号,书籍编号,ISBN,图书名,读者姓名,还书时间;罚款信息:借书证编号,读者姓名,书籍编号,ISBN,书籍名,借阅日期,归还日期,应还日期,罚款类别编号,处理状态;罚款类别:罚款

8、类别编号,类别名,罚款原因,罚款金额3.3 关系模式规范化处理根据F,分析每一个关系模式是否满足 3NF,对不满足3NF的关系模式要进行规范化处理。优化处理,消除不必要的数据冗余3.4 用户子模式建立根据需求分析,研究建立满足不同需求的用户子模式,子模式表示形式为:子模式名(属性列表)3.5 关系模式逻辑结构定义1.读者详细信息数据类型长度叱IDChar10主键,Not null密码char20Not null姓名char15Not null性别char2男/女,not null类别编号char2外键,not null单位char30null办证日期dateNot null联系方式char20

9、Null表3-12、读者类别详细信息数据类型长度约束读者类别编号char2主键,01/02读者类别名char15普通读者/高级读者可借阅最大数目smallint3/6持有最长期限smallint30/60借阅证期限smallint1表3-23、书籍详细信息字段名数据类型长度约束图书IDchar10主键ISBNchar20Not null书籍名char30Not null书籍类别Char10Not null作者char15Not null出版社char30Not null定价moneyNot null出版日期dateNot null登记日期dateNot null状态bitNot null表3-

10、34、罚款类别详细信息字段名数据类型长度约束罚款类别编号char5主键罚款类别名char15Not null罚款原因char30Not null罚款金额moneynull表3-45、借阅详细信息字段名数据类型长度约束IDint主键,自增图书IDchar10Not null叱IDchar10Not nullISBNchar20Not null借走日期dateNot null归还日期datenull应还日期dateNot null罚款类别编号char5null处理状态bitnull表3-5第4章数据库物理结构设计RDBMS (如逻辑数据模型这个过程就是数据库物理设计:设计数据库的物理结构,根据数据

11、库的逻辑结构来选定 Oracle、Sybase等),并设计和实施数据库的存储结构、存取方式等。数据库物理设计是后半段。将一个给定逻辑结构实施到具体的环境中时, 要选取一个具体的工作环境, 这个工作环境提供了数据存储结构与存取方法, 数据库的物理设计。物理结构依赖于给定的 DBMS和和硬件系统,因此设计人员必须充分了解所用RDBMS的内部特征、存储结构、存取方法。数据库的物理设计通常分为两步,第一,确定数据库的 物理结构,第二,评价实施空间效率和时间效率确定数据库的物理结构包含下面四方面的内容:1、确定数据的存储结构2、设计数据的存取路径3、确定数据的存放位置4、确定系统配置数据库物理设计过程中

12、需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,选择一个优化方案作为数据库物理结构。在数据库物理设计中, 最有效的方式是集中地存储和检索对象。第5章数据库实施与测试5.1数据库实施5.1.1数据库及数据库对象建立(1)-建立读者类别表(读者类别编号 读者类别名可借阅最大数目 持有最长期限 借阅证期限)create table读者类别char(2) primary key not null check(读者类别J编号in(01,02),char(15) not null check(读者类别名in(普通读者,高级读者),smallint not null check(可借阅最大数目in

13、(3,6),smallint not null check(持有最长期限in(30,60),smallint not null check(借阅证期限in( 1)(2)-建立读者表create table 读者(读者 IDchar(10) not null primary key,密码char(20)not null,姓名char(15)not null,性另ijchar(2)not null check(性别 in(男,女),类别编号char(2) not null foreign key(类别编号References读者类别(读者类别编号),单位char(30)null,办证日期date

14、notnull,联系方式char(20)null)(3)-建立书籍表create table 书籍(图书IDchar(10) not null primary key,ISBNchar(20) not null,书籍名char(30) not null,书籍类别char(10) not null,作者char(15) not null,出版社char(30) not null,定价moneynot null,出版日期datenot null,登记日期datenot null,状态bitnot null(4)-建立罚款类别表 create table罚款类别 (罚款类别编号罚款类别名罚款原因罚款

15、金额)char(5) not null primary key, char(15)not null, char(30)not null, money null(idint primary key identity (1,1), -id 自增图书ID 读者ID ISBN借走日期 归还日期 应还日期 罚款类别编号 处理状态char(10) not null, char(10) not null, char(20) not null, datenot null,datenull,datenot null,char(5) null, bitnullforeign key(图书 ID) referenc

16、es 书籍(图书 ID), foreign key(i ID) references(ilF ID),foreign key(罚款类别编号)references罚款类别(罚款类别编号)(5)-建立借阅信息表 create table借阅信息)100条数据,代码略100条数据,代码略,判断依据:将读者办证日期加上一年,再和当前系统时间比较5.1.2 数据存入数据库读者信息由存储过程随机产生书籍信息由存储过程随机产生5.1.3 自定义函数-根据t者ID判断读者证是否过期 alter function check_reader_date (reader_id char(10) returns bit

17、 asbegindeclare reader_register_date date,result bitsetreader_register_date =(select 办证日期 from 读者 where 读者 ID =reader_id) if (Dateadd(year,1,reader_register_date)CAST (GETDATE () as date)-如果过期,返回 bit=0set result=0elsesetresult=1 return resultend-测试 check_reader_date()declare result bitset result=dbo

18、.check_reader_date(1000002)if (result=1)print 没过期elseprint 过期-判断读者已借的书籍数量是否超出限制create function check_reader_books(reader_id char(10) returns bitasbegindeclare result bit 一记录返回值declare up_book_num smallint -记录读者最高可借的书籍数量declare borrow_num smallint-记录读者已借的书籍数量set up_book_num =(select 可借阅最大数目from dbo.读

19、者类别where读者类别编号=(select类别编号from dbo.读者where 读者 ID =reader_id)set borrow_num =(select count(*) from dbo.借阅信息where 读者 ID = reader_id and 处理犬态=0)if (borrow_num 0 -如果上面一条语句出错,则回滚事物,并返回 beginrollback tranprint 执行过程中遇到错误return 0endselect * from 读者 where 读者 ID =n-print 增加成功end-管理员根据借书证编号查看读者信息的存储过程create pr

20、ocedure reader_info reader_no char(10)asbeginif (select COUNT (*) from 读者 where 读者 ID=reader_no)=1)select* from 读者 where 读者 ID = reader_noelseprint 没有该读者end-根据t者ID删除读者的存储过程create procedure delete_reader reader_no char(10)asbeginif (select COUNT (*) from 读者 where 读者 ID =reader_no)=1)begindelete from

21、读者 where 读者 ID = reader_no print 删除成功 endelseprint 没有该读者end-管理员删除读者证到期的读者的信息create procedure delet_reader_by_date asbegindeclare now_date datesetnow_date=GETDATE ()delete from 读者where Dateadd(year, 1,办证日期)CAST (GETDATE () as date)end- -管理员借阅证到期的读者延长借阅证时间create procedure alter_reader_register_date re

22、ader_id char(10) asbeginupdate 读者 set 办证日期=cast(GETDATE () as DATE ) where 读者 ID =reader_id print 修改成功end- -书籍信息管理- -存储过程添加一条书籍信息alter procedure add_book ISBN char(20),book_name char(30),book_kinds char(10), book_author char( 15),book_publish char(30),book_pricesmallint , book_publish_date dateasbeg

23、in-产生编号declare book_id char(10),m int ,n intset m=(select count(*) from 书籍)setn=100000000+mset book_id =cast(n aschar(10)-产生登记日期declare book_rigste_date date set book_rigste_date =GETDATE ()-产生书籍状态declare book_state bitset book_state= 1insert into 书籍values(book_id ,ISBN ,book_name ,book_kinds ,book_

24、author ,book_publish ,book_price , book_publish_date ,book_rigste_date ,book_state)select * from 书籍 where 图书 ID=book_id print 插入成功end-根据图示ID删除一条书籍信息create procedure delete_book book_id char(10) asbegindelete from 书籍 where 图书 ID = book_idend-根据图书ISBN查看一条图书信息create procedure find_book_by_id book_id ch

25、ar(10)asbeginselect * from 书籍 where 图书 ID =book_idend-根据图书名查看图书信息create procedure find_book_by_name book_name char(30) asbeginselect * from 书籍 where 书籍名=book_nameend-根据图书类别查看图书信息create procedure find_book_by_kinds book_kinds char(10)asbeginselect * from 书籍 where 书籍类别=book_kindsend-根据作者查看图书信息create p

26、rocedure find_book_by_author book_author char(15)asbeginselect * from 书籍 where 作者=book_authorend-根据出版社产看图书信息create procedure find_book_by_publishment book_publishment char(30)asbeginselect * from 书籍 where 出版社=book_publishment end- -根据ISBN查看图书库存create procedure find_book_stock_by_ISBN ISBN char(20)as

27、beginselect * from dbo.book_stock where ISBN =ISBNend- -根据书籍名查看库存create procedure find_book_stock_by_name book_name char(30)asbeginselect * from dbo.book_stock where 书籍名=book_nameEnd- -书籍借阅管理- -借书管理alter procedure reader_borrow_book reader_id char(10),book_id char(10)asbegindeclare state bitset stat

28、e=dbo.check_reader_date(reader_id)if (select COUNT (*) from dbo.读者 where 读者 ID = reader_id)= 1)-读者存在-判断读者证是否过期if (state= 1)-没有过期-判断读者已借的书籍数量是否超出限制if(dbo.check_reader_books (reader_id )= 1)-已借的书籍数量没有超出限制-判断读者是否有付款没有交if (dbo.check_ticket (reader_id )= 1)-没有罚款未交if(select 状态 from dbo.书籍 where 图书 ID =boo

29、k_id )= 1)-图书状态为可借begin-插入借阅信息declare ISBN char(20),reader_borrow_date date,up_date date set ISBN =(select ISBN from dbo书籍 where 图书 ID =book_id ) set reader_borrow_date =GETDATE ()set up_date=dbo.lend_date(reader_id)insert into借阅信息(图书ID ,读者ID,ISBN,借走日期应还日期,处理状 态)values(book_id ,reader_id ,ISBN ,read

30、er_borrow_date ,up_date,0)update dbo.书籍 set 状态=0 where 图书 ID = book_idselect* from dbo.借阅彳W息 where 图书 ID=book_id and 读者ID =reader_idendelseprint 图书不可借elseprint 有罚款未交,不能借书,请交罚款elseprint 已借的书籍数量达到限制,不能再借else-过期print 借阅证过期 elseprint 读者不存在 end-还书管理alter procedure reader_lend_book reader_id char(10),book

31、_id char(10),tickte_kinds char(5)asbegindeclare reader_lend_date date,state bitset state= 1set reader_lend_date=cast(GETDATE () as date)if (select COUNT (*) from dbo.借阅彳W息 where 图书 ID =book_id and 读者ID =reader_id)=0)print 没有该读者或该书籍的借阅信息elseif (select COUNT (*) from dbo.借阅彳W息 where 图书 ID =book_id and

32、 处理状态=0)=0) print 该图书已经归还else-判断是否丢失书籍if(tickte_kinds =02)-丢失书籍,更新借阅信息beginupdate dbo.借阅彳W息 set归还日期=reader_lend_date,罚款类别编号= tickte_kinds,处理状态=state where 图书 ID =book_id and 处理犬态=0select* from dbo.借阅彳W息 where 图书 ID = book_id-delete from 书籍 where 图书 ID=book_idendelse-判断是否损坏书籍if (tickte_kinds =01)beginupdate dbo.借阅彳W息 set归还日期=reader_lend_date ,罚款类别编号 = tickte_kinds,处理状态=state where 图书 ID=book_id and 处理犬态=0select * from dbo.借阅彳W息 where 图书 ID=book_idupdate dbo.书籍 set 状态=1 where 图书 ID = book_id end

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1