数据库设计(大作业)
题目:图书馆管理系统
一、数据库需求分析
系统简介
郑州大学北校区图书馆现需要更新图书馆管理系统,根据具体要求使用SQLserver2005编辑出合理的图书馆管理系统。
要求实现功能:
1:将图书按照一定的规则分门别类。
2:本校师生根据师生的身份不同可以借阅一定量的书籍。
3:各师生必须按照图书馆规定按时还书逾期还书将受到一定的处罚。
4:……
本系统将会改变以前图书馆管理的状况,提高工作效率。
希望能为员工和学校的工作带来便利。
一:系统数据字典
经过对汽车租赁系统业务处理过程的调研,得到系统的数据字典如下所示:
a)数据项:图书号;
含义说明:每本书籍的唯一标识
别名:书籍编号
类型: int型
长度: 8
取值范围: 00000000至99999999
取值含义:前两位标别该书籍的分类,后六位按照汉语拼音排序
数据项:书名;
含义说明:书籍代号
别名:无
类型:字符型
长度: 8
取值范围: 00000000至99999999
取值含义:作者为本书所起的名字,简要的说明了这本书的内容是描写那个方面的。
b)数据结构:读者
含义说明:读者是图书馆管理子系统的主体数据结构,定义了一个读者的有关信息
组成:读者编号号,姓名,性别,年龄,联系方式,可借阅数量.
c)数据流:借阅书籍
说明:读者借阅书籍所需遵守的规则
数据流来源:借阅书籍
数据流去向:允许借阅
组成:读者,管理员,书籍,
平均流量:30次
高峰期流量:50次
d)数据存储:读者信息表
说明:记录读者的个人基本信息
流入数据流:读者个人信息采集表
流出数据流:读者个人信息正式表
组成:读者编号,姓名,性别,年龄,联系方式,可借阅书籍量。
数据量:每年5000张
存取方式:随机存取
二、概念模型设计
三:逻辑结构
图书借阅管理系统
有实体:
书籍(图书号、分类、书名、作者)
复本(图书号、复本号)
员工(工号、姓名、性别、出生年月)
读者(阅读证号,姓名,性别,联系电话)
部门(部门号、部门名称、电话)
出版社(出版社名、地址、电话、联系人)
实体之间联系:
书籍与复本之间有属于关系,是一对多的。
复本与读者之间有借阅关系,是多对多的。
员工与部门之间有属于关系,是一对多的。
书籍与出版社之间有出版关系,是一对多的。
关系模式
书籍(图书号、分类、书名、作者、出版社名#、价格、复本数量)
复本(图书号、复本号、出借状态)
员工(工号、部门号#、姓名、性别、出生年月)
读者(阅读证号,姓名,性别,联系电话)
部门(部门号、部门名称、电话)
出版社(出版社名、地址、电话、联系人)
借阅(工号#、图书号#、复本号、借阅日期、应归还日期)
四:物理设计
五、系统实现代码
创建数据库代码: create database 图书馆管理系统
创建表代码:
A表
Create table a
(
ID INT not null,
NAME CHAR(30) not null,
WRITER CHAR(10) not null,
GROUp1 CHAR(10) not null,
CNAME CHAR(20) not null,
MONEYS INT not null,
FNUM INT not null,
FID INT not null,
FNOW CHAR(10) not null,
Primary key (ID,fid),
foreign key (CNAME) references f(name)
)
B表
Create table b
(
ID INT not null,
NAME CHAR(10) not null,
sex CHAR(3) not null,
age int not null,
NUM INT not null,
tel int not null,
Primary key (id),)
C表
Create table c
(
dnum INT not null,
id int not null,
fid int not null,
jdate datetime not null,
hdate datetime not null,
Primary key (dnum),
foreign key (id,fid) references a(ID,FID),
foreign key (dnum) references b(id))
D表
Create table d
(
bnum INT not null,
tel int not null,
NAME CHAR(10) not null,
Primary key (NAME,bnum)
)
E表
Create table e
(
dnum INT not null,
NAME CHAR(10) not null,
sex CHAR(3) not null,
born datetime not null,
NUM INT not null,
age int,
Primary key (dnum),
foreign key (num) references d(bnum))
F表
Create table f
(
name char(20) not null,
addre CHAR(20) not null,
tel int not null,
people char(10) not null,
Primary key (name),
)
创建约束的代码:
alter table a
add constraint c1 check(id between 00000 and 99999)
alter table e
add constraint c2 check(dnum between 0000 and 2999)
alter table e
add constraint c3 check(sex in ('男','女'))
创建视图的代码:
Create VIEW aa (图书号,分类,书名,价格,复本号,出借状态)
AS
SELECT ID,GROUP1,NAME,moneys,Fid,FNOW
FROM a
创建触发器的代码:Create trigger a_禁止修改姓名
on a
for update
as
if update(writer)
begin print '作者姓名不能被修改'
rollback transaction
end
Create trigger a_插入
after insert on a
FOR EACH ROW
as BEGIN
insert INTO A V ALUES
(NEW.ID,,new.writer,new.group1,ame,new.moneys, new.fnum,new.fid,new.fnow)
select cname,name
from a,f
where ame= if(ame!=)
begin print '请现在f表中插入此出版社’
rollback transaction
end
授予权限的代码
create login 图书管理员
with password='123456'
create user 图书管理员
from login 图书管理员
grant update
on a
to 图书管理员
create login 图书管馆长
with password='123456'
create user 图书管馆长
from login 图书管馆长
grant select
on a,b,c,e,f
to 图书管理员
查询代码:
select jdate,hdate
from c
where ID=10001
select avg(age)平均年龄
from e
where num=1
select name,cname,A VG(moneys)平均价格from a
GROUP by name,cname。