以下为《课程设计--参考逻辑设计》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
目 录
1. 课程设计的目的 3
2.课程设计的内容 3
2.1 设计的题目及要求 3
2.1.1 绘制系统流程图如图 3-1 3
2.2 需求分析 4
2.3 数据库的分析与设计 4
2.4 数据库概念设计 5
2.4.1 图书信息实体E-R图 5
2.4.2 管理员信息实体E-R图 5
2.4.3 读者信息实体E-R图 6
2.4.4 图书借阅信息实体E-R图 6
2.4.5 图书归还信息实体E-R图 7
2.5 数据逻辑结构设计 7
2.5.1图书信息表的逻辑结构 8
2.5.2 管理员信息表的逻辑结构 8
2.5.3读者信息表的逻辑结构 8
2.5.4 图书借阅信息表的逻辑结构 9
2.5.5 图书归还表的逻辑结构 9
2.6 绘制表之间关系E-R图 10
2.7 物理设计、SQL编程 11
2.7.1 图书信息表的创建 11
2.7.2 管理员信息表的创建 11
2.7.3 读者信息表的创建 11
2.7.4 图书借阅信息表的创建 12
2.7.5 图书归还信息表的创建 12
2.7.6 图书信息的操作 13
2.7.7 管理员信息的操作 13
2.7.8 读者信息表的操作 13
2.7.9 图书借阅信息表的操作 14
2.7.10 图书归还信息表的操作 14
2.7.11 触发器创建 15
2.7.12 存储过程创建 17
2.8 数据测试 17
2.8.1 插入图书信息 17
2.8.2 插入管理员信息 18
2.8.3 插入读者信息表 18
2.8.4 插入图书借阅信息 18
2.8.5 插入图书归还信息 18
2.8.6 触发器的实现 18
2.8.8 存储过程的实现 19
3.课程设计及其心得体会 19
4.参考文献 19
1. 课程设计的目的
数据库系统原理课程设计是数据库系统原理实践环节的及为重要的一部分,其目的是:
(1)培养学生能够应用数据库系统原理在需求分析的基础上对系统进行概念设计,学会设计局部ER,全局ER图。
(2)培养学生能够应用数据库系统原理在概念设计的基础上应用关系规范化理论对系统进行逻辑设计,学会在ER图基础上设计出易于查询和操作的合理的规范化关系模型。
(3)培养学生能够应用SQL语言对所设计的规范化关系模型进行物理设计,并且能够应用视图,存储过程,触发器,游标技术以保证数据库系统的数据完整性,安全性,一致性,保证数据共享和防止数据冲突.
(4) 培养学生理论与实际相结合能力, 培养学生开发创新能力
2.课程设计的内容
2.1 设计的题目及要求
题目:图书馆管理系统
要求:用SQL语言实现,可以对用户身份进行验证,可以进行各种插入、修改、删除操作,具有触发器,存储过程等功能并对其功能进行检验。
2.1.1 绘制系统流程图如图 3-1
图3-1 系统流程图
2.2 需求分析
图书馆管理系统是一个高度集成的图书馆信息处理系统,通过将图书管理的各种功能进行整合,从而达到高速检索信息,提高工作效率,降低管理成本等目的。一个典型的图书馆里系统应该能够管理所有的图书种类,图书信息,读者信息,还需要提供各种检索查询功能。
该系统还需要能够对图书借阅、归还进行管理并对读者的罚款进行计算。
2.3 数据库的分析与设计
在SQL Server中新增一个数据库,其数据库名为Library。数据库中共有5张某某,用来存储不同的信息,详细如图3-1所示:
图3-1
2.4 数据库概念设计
本系统一共设计规划了5个实体,分别是图书信息实体,管理员信息实体,读者信息实体,图书借阅信息实体,图书归还信息实体。
2.4.1 图书信息实体E-R图
对图书馆来说最重要的是管理其下的书籍,所以建立一个图书信息表,用来保存图书的所有信息。图书信息实体E-R图2-1所示:
图2-1 图书信息实体E-R图
2.4.2 管理员信息实体E-R图
图书馆一般都有一个以上的管理员,需要建立一个管理员信息表,用来保存管理员的身份信息。管理员信息实体E-R图如图2-2所示:
图2-2 管理员信息实体E-R图
2.4.3 读者信息实体E-R图
想要借书需要进行登记,所以需要建立一个读书信息表来保存图书馆所有读者的基本信息。读者信息实体E-R图如图 1-3所示:
图 1-3 读者信息实体E-R图
2.4.4 图书借阅信息实体E-R图
图书馆最大的功能就是借书,这是就需要建立一个图书借阅信息表,用来保存读者的借阅信息。图书借阅信息实体E-R图如图 1-4所示:
图 1-4 图书借阅信息实体E-R图
2.4.5 图书归还信息实体E-R图
既然有借书,那么还书是必不可少的,这就需要一个图书归还信息表,用来保存图书归还的信息。图书归还信息实体E-R图如图 1-5所示:
图 1-5 图书归还信息实体E-R图
2.5 数据逻辑结构设计
根据设计还的各实体E-R图创建数据库的逻辑结构,数据库各表的结构如下。
2.5.1图书信息表的逻辑结构
图书信息表用来储存所有的图书信息,包括图书编号,图书类别名称,图书名称,图书作者,出版社,出版日期,价格,图书所在位置,是否借出9个字段,该表的逻辑结构如表1-1所示:
表1-1 图书信息表(Book_Info)
字段名
数据类型
是否是主键
描 述
Id
char
是
图书编号
Typename
varchar
否
图书类别名称
Bookname
varchar
否
图书名称
Writer
varchar
否
图书作者
Publisher
varchar
否
出版社
Date
datetime
否
出版日期
Price
money
否
价格
Address
varchar
否
图书所在位置
Islend
varchar
否
是否借出
2.5.2 管理员信息表的逻辑结构
管理员信息表用来保存管理员信息,包括管理员证件号,管理员姓名,性别,年龄,工作时间,联系电话,管理员住址7个字段,该表的逻辑结构如表1-2所示:
表1-2 管理员信息表(Administrator_Info)
字段名
数据类型
是否是主键
描 述
Id
varchar
是
管理员证件号
Name
varchar
否
管理员名字
Sex
varchar
否
性别
Age
int
否
年龄
Workdate
datetime
否
工作时间
Telephone
char
否
联系电话
Address
varchar
否
管理员住址
2.5.3读者信息表的逻辑结构
读者信息表用来储存所有读者的信息,包括借书证件号,读者姓名,性别,所在的系别,最大借书数量,已借数量,电话号码,读者住址8个字段,该表的逻辑结构如表 1-3所示:
表1-3 读者信息表(Reader_Info)
字段名
数据类型
是否是主键
描 述
Id
varchar
是
借书证件号
Name
varchar
否
读者姓名
Sex
varchar
否
性别
Department
varchar
否
所在的系别
Maxnum
int
否
最大借书数量
Borrowed
int
否
已借数量
Telephone
varchar
否
电话号码
Address
varchar
否
读者住址
2.5.4 图书借阅信息表的逻辑结构
图书借阅信息表用来保存所有图书的借阅情况,包括读者证件号,书籍编号,管理员编号,借出时间4个部分,该表的逻辑结构如表 1-4所示:
表1-4 图书借阅信息表(BookLend_Info)
字段名
数据类型
是否是主键
描 述
Readerid
varchar
否(外键)
读者证件号
Bookid
char
否(外键)
书籍编号
Administratorid
char
否(外键)
管理员编号
Lenddate
datetime
否
借出时间
2.5.5 图书归还表的逻辑结构
图书归还表用来保存所有图书的归还信息,包括书籍编号,管理员证件号,读者证件号,借出时间,归还时间,超过天数6个字段,该表的逻辑结构如表 1-5所示:
表1-5 图书归还信息表(BackBook_Info)
字段名
数据类型
是否是主键
描 述
Bookid
char
否(外键)
书籍编号
Administratorid
char
否(外键)
管理员证件号
ReaderId
varchar
否(外键)
读者证件号
Lenddate
datetime
否
借出时间
Backdate
datetime
否
归还时间
Movedays
int
否
超过天数
2.6 绘制表之间关系E-R图
根据各表的关系绘制关系E-R图如下:
图
1-1 关系E-R图
2.7 物理设计、SQL编程
2.7.1 图书信息表的创建
create table Book_Info
(
Id varchar(20)primary key, 主键
Bookname varchar(20),
Writer varchar(20),
Publisher varchar(20),
Date varchar(20),
Price money,
Address varchar(20),
Islend varchar(20) default 'no'
)
2.7.2 管理员信息表的创建
create table Administrator_Info
(
Id varchar(20) primary key, 主键
Administratorname varchar(20),
Sex varchar(20),
Age int,
Workdate varchar(20),
Telephone char(12),
Address varchar(20)
)
2.7.3 读者信息表的创建
create table Reader_Info
(
Id varchar(20) primary key, 主键
Readername varchar(20),
Sex varchar(20),
Department varchar(20),
Maxnum int,
Borrowed int default 0,
Telephone varchar(12),
Address varchar(20)
)
2.7.4 图书借阅信息表的创建
create table BookLend_Info
(
Readerid varchar(20) 外键
foreign key(Readerid) references Reader_Info(Id),
Bookid varchar(20) 外键
foreign key (Bookid) references Book_Info(Id),
Administratorid varchar(20) 外键
foreign key (Administratorid) references Administrator_Info(Id),
Lenddate datetime default getdate()
)
2.7.5 图书归还信息表的创建
create table BackBook_Info
(
Bookid varchar(20) 外键
foreign key(Bookid) references Book_Info(Id),
Administratorid varchar(20) 外键
foreign key(Administratorid) references Administrator_Info(Id),
Readerid varchar(20), 外键
foreign key(Readerid) references Reader_Info(Id),
Lenddate datetime,
Backdate datetime default getdate(),
Movedays int
)
2.7.6 图书信息的操作
(1)添加
insert into Book_Info
values(Id,Bookname,Writer,Publisher,Date,Price,Address,Islend)
(2)删除
delete from Book_Info
where Id=#Id
(3) 更新
update Book_Info
set(Id=#Id,Bookname=#Bookname,Writer=#Writer,Publisher=#Publisher,
Date=#Date,Price=#Price,Address=#Address,Islend=#Islend)
2.7.7 管理员信息的操作
(1)添加
insert into Administrator_Info
values(Id,Administratorname,Sex,Age,Workdate,Telephone,Address)
(2)删除
delete from Administrator_Info
where Id=#Id
(3)更新
update Administrator_Info
set(Id=#Id,Administratorname=#Administratorname,Sex=#Sex,Age=#Age,Workdate=#Workdate,Telephone=#Telephone,Address=#Address)
2.7.8 读者信息表的操作
(1)添加
insert into Reader_Info
values(Id,Readername,Sex,Department,Maxnum,Borrowed,Telephone,Address)
(2)删除
delete from Reader_Info
where Id=#Id
(3)更新
update Reader_Info
set (Id=#Id,Readername=#Readername,Sex=#Sex,Department=#Department,Maxnum=#Maxnum,
Borrowed=#Borrowed,Telephone=#Telephone,Address=#Address)
2.7.9 图书借阅信息表的操作
(1)添加
insert into BookLend_Info
values(Readerid,Bookid,Administratorid,Lenddate)
(2)删除
delete from BookLend_Info
where Bookid=#Bookid
(3)更新
update BookLend_Info
set (Readerid=#Readerid,Bookid=#Bookid,Administratorid=#Administratorid,Lenddate=#Lenddate)
2.7.10 图书归还信息表的操作
(1)添加
insert into BackBook_Info
values(Bookid,Administratorid,Readerid,Lenddate,Backdate,Movedays)
(2)删除
delete from BackBook_Info
where Bookid=#Bookid
(3)更新
update BackBook_Info
set (Bookid=#Bookid,Administratorid=#Administratorid,Readerid=#Readerid,
Lenddate=#Lenddate,Backdate=#Backdate,Movedays=#Movedays)
2.7.11 触发器实例
(1)如果向借阅信息表中添加数据时,该图书在图书信息表中的是否借出列由‘no’变成‘yes’,该读者在读者信息表中已借数目加一。
create trigger tri1
on BookLend_Info
after insert
as
begin
if not exists(select * from Book_Info where Book_Info.Id=(select BookId from inserted ))
begin
raiserror ('不存在这本书',16,1)
rollback transaction
end
if not exis 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 s(1,1,1)
图书信息表中的‘no’变成‘yes’,已借书数量变成‘1’。
(2)
insert into BackBook_Info(Bookid)
values(1)
图书信息表中的‘yes’变成‘no’,已借书数量由‘1’变成‘0’。
2.8.8 存储过程的实现
exec proc1 '1'
查询读者的名称为‘李四’,借过的书为‘新编应用文教程’,现在没有借出
3.课程设计及其心得体会
通过这次SQL实训,我不仅复习了以前学习过的知识,还对数据的插入、修改、删除等操作有了新的认识。虽说刚开始的时候有些迷糊,不知从开始,但经过分析,查资料的方式,也终于弄懂了大概的制作流程,从中我得出了一个结论:我们学软件的,书上的来的总得用到操作上,也只有在操作上,我们才能够知道自己学到了多少东西.
4.参考文献
(1) 电子出版社
(2) 清华大学出版社
(3) 清华大学出版社
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]
以上为《课程设计--参考逻辑设计》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。