数据库图书借阅管理系统Word格式.docx
- 文档编号:17442014
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:32
- 大小:375.46KB
数据库图书借阅管理系统Word格式.docx
《数据库图书借阅管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《数据库图书借阅管理系统Word格式.docx(32页珍藏版)》请在冰豆网上搜索。
6.1主键及唯一性索引......................................................................................16
6.2参照完整型..................................................................................................16
6.3Check约束....................................................................................................16
6.4触发器设计..................................................................................................17
6.5规则..............................................................................................................17
7.数据库视图设计....................................................................................................18
8.数据库存储过程设计............................................................................................19
9.总结........................................................................................................................27
10.参考文献..............................................................................................................................27
某书店图书借阅管理系统
第1章 需求分析
1.1 需求调查
通过对各个书店的市场调查,该图书借阅管理系统的需求如下:
1)系统管理:
实现系统管理人员对系统的管理,包括添加删除用户,数据备份,数据还原,注销等功能。
2)读者信息管理:
添加读者信息,根据借书证编号查看读者信息,根据读者ID删除读者,借阅证到期的读者更改借阅证办证时间。
3)书籍信息管理:
添加一条书籍信息,删除一条书籍信息,查看一条图书信息,根据图书名查看图书信息,根据图书类别查看图书信息,根据作者查看图书信息,根据出版社产看图书信息,根据ISBN查看图书库存,根据书籍名查看库存。
4)借阅管理:
借书管理,还书管理,续借管理,查看所有借阅信息,根据读者ID查看借阅信息,根据读者ID查看借书记录,根据读者ID查看借书记录,根据读者ID查看罚款信息。
1.2系统功能分析
图1-2系统功能分析图
第2章 概念结构设计
2.1概念设计
概念结构设计阶段的目标是通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
即通过对数据流程图的分析归纳和总结,建立E-R图。
概念结构的设计方法有两种:
(1)集中式模式设计法:
这种方法是根据需求由一个统一机构或人员设计一个综合的全局模式。
这种方法简单方便,适用于小型或不复杂的系统设计,由于该方法很难描述复杂的语义关联,而不适于大型的或复杂的系统设计。
(2)视图集成设计法:
这种方法是将一个系统分解成若干个子系统,首先对每一个子系统进行模式设计,建立各个局部视图,然后将这些局部视图进行集成,最终形成整个系统的全局模式。
2.2E-R图建立
局部E-R图
1.对‘读者’建立E-R图,其中‘读者ID’为主键
图2-1读者E-R图
2.对‘书籍’建立E-R图,其中‘图书ID’为主键
图2-2书籍E-R图
3.对‘读者类别’建立E-R图,其中‘读者类别编号’为主键
图2-3读者类别E-R图
4、对‘借阅’建立E-R图
图2-4借阅E-R图
5、对‘还书’建立E-R图
图2-5还书E-R图
6、对‘罚款’建立E-R图
图2-6 罚款E-R图
7、对‘罚款类别’建立E-R图
图2-7 罚款类别E-R图
全局E-R图
第3章 逻辑结构设计
3.1 E-R图向关系模式转换
数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本E一R图转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。
逻辑结构是独立于任何一种数据模型的,在实际应用中,一般所用的数据库环境已经给定(如SQLServer或Oracel或MySql)。
由于目前使用的数据库基本上都是关系数据库,因此首先需要将E-R图转换为关系模型,然后根据具体DBMS的特点和限制转换为特定的DBMS支持下的数据模型,最后进行优化。
3.2建立关系模式
读者信息:
读者ID,密码,读者姓名,读者性别,读者类别,读者单位,办证时间,联
系方式;
读者类别信息:
读者类别编号,读者类别名,允许借阅图书最大数,持有图书最长期
限,借阅证期限;
书籍信息:
图书ID,ISBN,书籍名称,书籍类别,书籍作者,出版社,定价,出版日期,
登记日期,状态;
借书信息:
借书证编号,读者姓名,书籍编号,ISBN,书籍名,读者借书时间;
还书信息:
借书证编号,书籍编号,ISBN,图书名,读者姓名,还书时间;
罚款信息:
借书证编号,读者姓名,书籍编号,ISBN,书籍名,借阅日期,归还日期,应
还日期,罚款类别编号,处理状态;
罚款类别:
罚款类别编号,类别名,罚款原因,罚款金额
3.3关系模式规范化处理
根据F,分析每一个关系模式是否满足3NF,对不满足3NF的关系模式要进行规范化处理。
优化处理,消除不必要的数据冗余
3.4用户子模式建立
根据需求分析,研究建立满足不同需求的用户子模式,子模式表示形式为:
子模式名(属性列表)
3.5关系模式逻辑结构定义
1.读者详细信息
字段名
数据类型
长度
约束
读者ID
Char
10
主键,Notnull
密码
char
20
Notnull
姓名
15
性别
2
男/女,notnull
类别编号
外键,notnull
单位
30
null
办证日期
date
联系方式
Null
表3-1
2、读者类别详细信息
读者类别编号
主键,'
01'
/'
02'
读者类别名
'
普通读者'
高级读者'
可借阅最大数目
smallint
3/6
持有最长期限
30/60
借阅证期限
1
表3-2
3、书籍详细信息
图书ID
主键
ISBN
书籍名
书籍类别
作者
出版社
定价
money
出版日期
登记日期
状态
bit
表3-3
4、罚款类别详细信息
罚款类别编号
5
罚款类别名
罚款原因
罚款金额
表3-4
5、借阅详细信息
ID
int
主键,自增
借走日期
归还日期
应还日期
处理状态
表3-5
第4章数据库物理结构设计
数据库物理设计:
设计数据库的物理结构,根据数据库的逻辑结构来选定RDBMS(如Oracle、Sybase等),并设计和实施数据库的存储结构、存取方式等。
数据库物理设计是后半段。
将一个给定逻辑结构实施到具体的环境中时,逻辑数据模型要选取一个具体的工作环境,这个工作环境提供了数据存储结构与存取方法,这个过程就是数据库的物理设计。
物理结构依赖于给定的DBMS和和硬件系统,因此设计人员必须充分了解所用RDBMS的内部特征、存储结构、存取方法。
数据库的物理设计通常分为两步,第一,确定数据库的物理结构,第二,评价实施空间效率和时间效率
确定数据库的物理结构包含下面四方面的内容:
1、确定数据的存储结构
2、设计数据的存取路径
3、确定数据的存放位置
4、确定系统配置
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,选择一个优化方案作为数据库物理结构。
在数据库物理设计中,最有效的方式是集中地存储和检索对象。
第5章 数据库实施与测试
5.1数据库实施
5.1.1数据库及数据库对象建立
(1)--建立读者类别表
createtable读者类别
(
读者类别编号char
(2)primarykeynotnullcheck(读者类别编号in('
'
)),
读者类别名char(15)notnullcheck(读者类别名in('
可借阅最大数目smallintnotnullcheck(可借阅最大数目in(3,6)),
持有最长期限smallintnotnullcheck(持有最长期限in(30,60)),
借阅证期限smallintnotnullcheck(借阅证期限in
(1))
)
(2)--建立读者表
createtable读者
读者IDchar(10)notnullprimarykey,
密码char(20)notnull,
姓名char(15)notnull,
性别char
(2)notnullcheck(性别in('
男'
女'
类别编号char
(2)notnullforeignkey(类别编号)references读者类别(读者类别编号),
单位char(30)null,
办证日期datenotnull,
联系方式char(20)null
(3)--建立书籍表
createtable书籍
图书IDchar(10)notnullprimarykey,
ISBNchar(20)notnull,
书籍名char(30)notnull,
书籍类别char(10)notnull,
作者char(15)notnull,
出版社char(30)notnull,
定价moneynotnull,
出版日期datenotnull,
登记日期datenotnull,
状态bitnotnull
(4)--建立罚款类别表
createtable罚款类别
罚款类别编号char(5)notnullprimarykey,
罚款类别名char(15)notnull,
罚款原因char(30)notnull,
罚款金额moneynull
(5)--建立借阅信息表
createtable借阅信息
idintprimarykeyidentity(1,1),--id自增
图书IDchar(10)notnull,
读者IDchar(10)notnull,
借走日期datenotnull,
归还日期datenull,
应还日期datenotnull,
罚款类别编号char(5)null,
处理状态bitnull
foreignkey(图书ID)references书籍(图书ID),
foreignkey(读者ID)references读者(读者ID),
foreignkey(罚款类别编号)references罚款类别(罚款类别编号)
5.1.2数据存入数据库
读者信息由存储过程随机产生100条数据,代码略
书籍信息由存储过程随机产生100条数据,代码略
5.1.3自定义函数
--根据读者ID判断读者证是否过期,判断依据:
将读者办证日期加上一年,再和当前系统时间比较
alterfunctioncheck_reader_date(@reader_idchar(10))returnsbit
as
begin
declare@reader_register_datedate,@resultbit
set@reader_register_date=(select办证日期from读者where读者ID=@reader_id)
if(Dateadd(year,1,@reader_register_date)<
CAST(GETDATE()asdate))
--如果过期,返回bit=0
set@result=0
else
set@result=1
return@result
end
--测试check_reader_date()
declare@resultbit
set@result=dbo.check_reader_date('
1000002'
if(@result=1)
print'
没过期'
过期'
--判断读者已借的书籍数量是否超出限制
createfunctioncheck_reader_books(@reader_idchar(10))returnsbit
as
declare@resultbit--记录返回值
declare@up_book_numsmallint--记录读者最高可借的书籍数量
declare@borrow_numsmallint--记录读者已借的书籍数量
set@up_book_num=(select可借阅最大数目
fromdbo.读者类别
where读者类别编号=(select类别编号
fromdbo.读者
where读者ID=@reader_id
)
set@borrow_num=(selectcount(*)fromdbo.借阅信息
where读者ID=@reader_idand处理状态=0)
if(@borrow_num<
@up_book_num)
--可以再借
--所借数目达到上限
--判断读者是否有罚款没有交
alterfunctioncheck_ticket(@reader_idchar(10))returnsbit
if((selectcount(*)fromdbo.借阅信息where读者ID=@reader_idand罚款类别编号!
=null)=0)
--如果借阅信息里读者的罚款记录为空,返回
--selectdbo.check_ticket('
1000043'
--根据读者ID获得图书应该归还的日期
createfunctionlend_date(@reader_idchar(10))returnsdate
declare@datedate
declare@up_borrow_datesmallint
set@up_borrow_date=(select持有最长期限fromdbo.读者类别
where读者类别编号=(select类别编号fromdbo.读者
where读者ID=@reader_id))
set@date=Dateadd(day,@up_borrow_date,cast(getdate()asdate))
return@date
end
第6章 数据库完整性设计
6.1主键及唯一性索引
主键及索引表
表名
建立唯一性索引
读者表
(手
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 图书 借阅 管理 系统