当前位置:文档之家› 图书管理系统数据库概述

图书管理系统数据库概述

一、实验目的
利用一种DBMS作为设计平台,理解并应用课程中关于数据库设计的相关理论,能按照数据库设计步骤完成完整的数据库设计,包括需求分析、概念设计、逻辑设计、物理设计和实施。同时能够正确应用各个阶段的典型工具进行表示。
二、设备与环境
(1) 硬件设备:PC机一台
(2) 软件环境:安装Windows操作系统,安装数据库管理系统SQL Server2000等。
select @总册数 = count(Bno)
from Borr_info
where Rno = @Rno
return @总册数
end
go
3.触发器
当管理员对系统中的图书借阅表进行数据的插入操作时,就会触发触发器。
代码:
if exists(select name from sysobjects where name = '触发器_图书信息表_插入' and type = 'TR')
结果如图:
4.函数
用下面这段代码检验结果:
use Bkman
go
select distinct
Rdep,Rname,Rsex,
借阅总册数 = dbo.fun_读者借阅册数(Borr_info.Rno)
from Read_info,Borr_info
where Read_info.Rno = Borr_info.Rno
三、实验内容
1.系统概述
1.1需求分析:
图书管理系统是一种基于集中统一规划的数据库管理新模式。
在对图书,读者的管理,其实是对图书、读者数据的管理。本系统所完成的功能是图书馆管理人员可以管理读者对于图书的借阅情况、图书的购入、借出、归还等;以及查询某位读者或者某本图书的信息。
1.2 概念设计
1.3逻辑设计
on Read_info(Rdep,Rname)
2.登录控制
标准登录和混合登录
用户管理系统
角色
权限
细分
学生
1借书
一般借书
续借
管理员
1.图书入库
图书入库
图书分类
2.添加学生(给学办理图书证)
第一次办理
补办
系统员
1.图书入库
图书入库
图书分类
2.添加学生(给学办理图书证)
第一次办理
补办
3.添加管理员
添加,修改,删除(离职后清除她的记录)
在使用触发器插入数据的时候,要注意与约束之间的问题。
通过这次实验,对于数据库有了更深的了解。当然,越了解的同时也就越能发现自己的不足之处,有很多地方都有待提高。
教 师 评 价
评定项目
A
B
C
D
评定项目
A
B
C
D
需求分析清楚
完整性设计完善
概念结构符合需求
游标和存储过程的使用
逻辑结构设计合理
操作熟练
索引设计合理
通过对视图的修改,分类,方便管理的同时增加数据库的安全性。
3.数据加密
通过对数据的加密,可以增加数据库的安全性。
四、实验结果及分析
对本数据库进行查询操作来检验结果,实验结果图如下:
1.存储过程:
存储过程_作者出书信息
存储过程_借阅信息
2.视图
3.触发器
insert into borr_info
values(100008,'借阅','jsj29',2010-8-19)
可以创建多个角色,给这些角色赋予不同权限
5.2数据完整性:参照完整性、实体完整性、自定义完整性(包括触发器)
在设计过程中,设计了一个计算借阅总册数的函数。
use Bkman
go
create function fun_读者借阅册数
(
@Rno as char(12)
)
returns int
begin
declare @总册数 as int
文字流畅
有完全性的设置
报告规范
其他:
评价教师签名:
年月日
角色
CREATE TABLE `roles` (
`role_id` int(11) NOT NULL COMMENT '角色id',
`role_name` char(255) NOT NULL COMMENT '色角名称'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Roles表的作用:
drop trigger 触发器_图书信息表_插入
go
create trigger 触发器_图书信息表_插入 on Borr_info
for insert
as
begin
print'触发器开始执行…'
declare @提示 char(30)
set @提示 = '你成功插入了一条新记录!'
print @提示
xxxx学院计算机系综合性实验
实 验 报 告
课程名称数据库系统概述
实验学期2010至2011学年 第一学期
学生所在系部计算机
年级专业班级Biblioteka 学生姓名xxx学号zzzzzzzzzzzzzzz
任课教师xxz
实验成绩
计算机系制
《数据库系统概述》课程综合性实验报告
开课实验室:年月日
实验题目
《图书管理系统》数据库设计

1.4 物理设计
图书编码(Bno),读者编码(Rno)为主码。系统会自动创建它们的索引。除了系统自动建立的索引,这里还建立了两个个索引,并且这里设计的索引都是非聚集索引,因为聚集索引具有完全独立于数据行的结构,不会影响数据表中记录的实际存储顺序,而且它比聚集索引需要较少的存储空间,但检索效率比聚集索引低。对于聚集索引,每个表只能有一个。而非聚集索引,可以在同一个表中建立多个,但是最多也不能创建超过249个。以下是两个索引及代码:
备注
管理员和系统员有借书权限(1.为学生办理借书2.为自己办理借书)
混合登录
当用户登录时判断用户所对应的role_id,
0为普通用户,登陆后可查看图书,也可查看自己所借阅的信息
1为管理员,登陆后查看用户信息,并对用户进行一系列操作,还可查看图书
并对图书进行一系列操作
10为系统管理员,登陆后可进行各种操作
执行结果如下图:
6.问题与不足
问题:触发器与约束之间的区别?
约束和触发器在特殊情况下各有优势。触发器的主要好处在于它们可以包含使用Transact-SQL代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。实体完整性总应在最低级别上通过索引进行强制,这些索引或是PRIMARY KEY和UNIQUE约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过CHECK约束进行强制,而引用完整性(RI)则应通过FOREIGN KEY约束进行强制。在约束所支持的功能无法满足应用程序的功能要求时,触发器就极为有用。
end
go
数据库的安全设计:
1.不同用户操作数据库权限不同
普通用户只能对自己的信息进行查询,修改,不可以删除。
而管理员可以对普通用户进行管理,并且可以对图书信息以及借阅信息进行管理,即增加,删除,修改,查询操作和对用户的授权。
2.视图
增加视图可以增加数据库的安全,因为它可以隐藏数据,如果设置查看视图的时间,那样安全性会更高,因为可以让用户在指定的时间内无法查看。
系统中对应的逻辑关系如下:
描述图书信息的属性有:图书编码(Bno),书名(Bname),作者(Bauthor),定价(Bprice),类别(Bclass),出版单位(Bpublish),版次(Border),内容简介(Bsynopsis)
描述读者信息的属性有:读者编号(Rno),姓名(Rname),性别(Rsex),所在部门(Rdep)
--图书基本信息表(出版单位,作者)
create unique nonclustered index index_publisherandauthor
on Book_info(Bpublish,Bauthor)
--读者基本信息表(所在部门,姓名)
create unique nonclustered index index_depandRname
描述图书借阅信息的属性有:图书编码(Bno),图书状态(Bstate),读者编号(Rno),借阅日期(Borrdate)
为了查询方便,这里建立两个存储过程,即:存储过程_作者出书信息和存储过程_作者借阅信息。
并且建立了视图:图书借阅信息视图(view_jyinfo),其中的属性包括:书名,读者编号,姓名,所在部门,图书编码,借阅日期(Book_info.Bname, Read_info.Rno, Read_info.Rname, Read_info.Rdep, Borr_info.Bno, Borr_info.Borrdate)
相关主题