《网络数据库课程综合性实验报告图书借阅系统数据库设计》.docx
《《网络数据库课程综合性实验报告图书借阅系统数据库设计》.docx》由会员分享,可在线阅读,更多相关《《网络数据库课程综合性实验报告图书借阅系统数据库设计》.docx(20页珍藏版)》请在冰豆网上搜索。
《网络数据库课程综合性实验报告图书借阅系统数据库设计》
华北科技学院计算机系综合性实验
实验报告
课程名称网络数据库
实验学期至学年第学期
学生所在系部
年级专业班级
学生姓名学号
任课教师
实验成绩
计算机系制
实验报告须知
1、学生上交实验报告时,必须为打印稿(A4纸)。
页面空间不够,可以顺延。
2、学生应该填写的内容包括:
封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。
3、教师应该填写的内容包括:
实验成绩、教师评价等。
4、教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。
综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。
任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。
5、未尽事宜,请参考该课程的实验大纲和教学大纲。
《网络数据库》课程综合性实验报告
开课实验室:
软件一室1年月日
实验题目
图书借阅系统数据库设计
一、实验目的
通过该实验把数据库的理论知识(数据库和数据表的设计理论、数据完整性的实现、存储过程、触发器、数据库安全等)应用到具体的综合实例中,达到数据库知识整合的目的。
二、设备与环境
硬件:
多媒体计算机
软件:
WindowsXP以上的操作系统、VisualBasic或其它可视化语言及SQLServer2008版本
三、实验内容及要求
1.数据库设计
要求数据库设计要合理,对数据库设计作必要的说明并抓图。
数据库名必须与自己真实姓名有关,所有同学不能同名。
图不要太大,看清即可。
2.数据表设计
要求数据表设计要合理,要符合数据库设计的理论范式,对数据表设计作必要的说明并抓图。
数据表名必须与自己真实姓名有关,所有同学不能同名。
3.视图设计
要求根据系统需求作必要的视图设计,如在一次查询中涉及到多个表,应该创建视图。
不可以只取一个表的几个字段就算创建视图。
4.索引设计
要求根据系统需求作必要的索引设计,本系统需要的聚集索引、非聚集索引、唯一索引、全文索引等。
5.数据完整性设计
根据系统需求作必要的数据完整性设计,本系统需要的实体完整性体现、域完整性体现、参照完整性体现等。
6.存储过程和触发器设计
根据系统需求作必要的存储过程和触发器设计,本系统需要的存储过程和触发器设计。
必要的存储过程和触发器设计都要写全说明,图可以是一个表的完整存储过程或触发器。
7.备份与恢复设计
根据系统需求作必要的备份与恢复设计,如需要对那些内容备份,备份策略、由谁来做备份、什么时间做备份等。
8.数据库安全设计
根据系统需求作必要的数据库安全设计,如本系统分几级用户、分别是什么角色成员具有什么操作权限等。
四、实验结果及分析
1.数据库设计
(一)设计思想
图书管理系统数据库的主要任务是对读者信息、管理员信息、图书资料信息、借阅归还图书信息、罚款信息的基本信息的操作及处理。
此系统功能分为面向读者和面向管理员两部分,其中读者可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和读者信息的增加,删除和修改,对数据表维护。
根据以上功能分析,图书管理系统应该包含:
读者信息表、管理员信息表、图书信息表、借阅信息表。
针对图书管理系统目前的用户量(假设为15000人)和图书量(假设为10万册)考虑,系统主数据文件初始大小设置为:
110M(15000*512Byte(读者表一条记录大小)+100000*1024Byte(图书表一条记录大小)+其他表大小),自动增长设置为20M;日志文件设置为:
5M,自动增长设置为5M。
考虑图书管理系统最经常的操作是查找,所以为了提高查找效率,应为图书表、读者表建立索引。
(二)具体实现
通过SQL语句来创建图书管理数据库,创建代码如下:
CREATEDATABASETSGL_133
ON
(
NAME='TSGL',
FILENAME='J:
\TSGL.MDF',
SIZE=110MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=20MB
)
LOGON
(
NAME='TSGL_LOG',
FILENAME='J:
\TSLG_LOG.LDF',
SIZE=5MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=5MB
);
2.数据表设计
(一)设计思想
根据以上对图书管理系统的功能分析,需要设计读者信息表、管理员信息表、图书信息表和借阅信息表。
(1)读者表(学号、姓名、性别、系部、专业班级、借阅数量、欠罚款、联系电话)
读者表主要记录读者信息,通过读者表可以查看读者的具体信息,如:
学号、姓名、性别、系部、专业班级、借阅数量、欠罚款等。
(2)管理员表(工号、姓名、性别、管理员身份、登陆口令、登陆密码、联系电话)
管理员表主要记录管理员信息,通过管理员表可以查询管理员信息以及用于验证管理员身份及其管理权限。
(3)图书表(图书编号、ISBN条码、书名、作者、出版社、出版日期、单价、分类、借阅状态、管藏位置)
图书表主要记录图书的各种信息,包括:
ISBN条码、书名、作者、出版社、出版日期、单价、分类、借阅状态、管藏位置。
读者可以通过查询此表得到需要的与图书相关的信息。
例如:
读者可以通过查询图书的ISBN号,查看该图书当前的借阅状态和馆藏位置等信息。
(4)借阅表(图书编号、学号、借阅日期、应还日期、归还日期、罚款金额、缴纳状态)
读者通过借阅表查询借书情况,例如:
借阅日期、应还日期、归还日期等信息。
(二)具体实现
通过SQL语句来创建图书管理数据表,创建代码如下:
USETSGL_133
GO
CREATETABLET_READER
(
学号char(12)NOTNULLPRIMARYKEY,
姓名nchar(4)NOTNULL,
性别bitNULLDEFAULT1,
系部nchar(10)NULL,
专业班级nchar(8)NULL,
借阅数量intNULLDEFAULT0,
欠罚款floatNULL,
联系电话char(11)NULL
)
GO
CREATETABLET_ADMIN
(
工号char(12)NOTNULLPRIMARYKEY,
姓名nchar(4)NOTNULL,
性别bitNULLDEFAULT1,
管理员身份nchar(10)NOTNULL,
登陆口令char(12)NOTNULL,
登陆密码char(16)NOTNULL,
联系电话char(11)NULL,
)
GO
CREATETABLET_BOOK
(
图书编号intidentityPRIMARYKEY,
ISBN条码char(20)NOTNULL,
书名nchar(30)NOTNULL,
作者nchar(20)NULL,
出版社nchar(20)NULL,
出版日期dateNULL,
单价floatNULL,
分类nchar(10)NULL,
借阅状态bitNULL,
馆藏位置nchar(20)NULL,
)
GO
CREATETABLET_LEND
(
图书编号intNOTNULL,
学号char(12)NOTNULL,
借阅日期dateNOTNULL,
应还日期dateNOTNULL,
归还日期dateNOTNULL,
罚款金额floatNULL,
缴纳状态bitNULL,
PRIMARYKEY(图书编号,学号)
)
GO
3.视图设计
(一)设计思想
(1)为了查询读者借阅情况时方便,建立读者借阅情况视图。
其字段信息包括:
学号、姓名、性别、系部、专业,班级、图书编号、借阅日期、应还日期、归还日期、罚款金额、缴纳状态
(2)建立图书借阅情况视图。
其字段信息包括:
图书编号、ISBN、书名、借阅状态,借阅日期,应还日期。
(3)工作人员需要查看当前逾期未还的图书,所以需要建立逾期未还图书信息视图,其字段包括:
学号、姓名、系部、专业班级、书名、借阅日期、应还日期、罚款金额。
其中,罚款金额通过计算得出。
(4)读者需要查看图书信息,所以建立图书信息视图,其字段包括:
ISBN条码、书名、图书总量、可外借数量、馆藏位置。
其中图书总量和可外借数量通过计算得出。
(5)为数据库所有表创建单独的视图,如图书表视图、管理员表视图、借阅表视图和读者表视图。
(二)具体实现
(1)读者借阅情况视图实现代码:
USETSGL_133
GO
CREATEVIEWREADER_LENDED_VIEW
AS
SELECTT_READER.学号,姓名,性别=(
CASEWHEN性别=1THEN'男'ELSE'女'END),系部,专业,班级,
图书编号,借阅日期,应还日期,归还日期,罚款金额,缴纳状态
FROMT_LEND,T_READER
WHERET_LEND.学号=T_READER.学号
(2)图书借阅情况视图实现代码:
USETSGL_133
GO
CREATEVIEWBOOK_LENDED_VIEW
AS
SELECTT_BOOK.图书编号,ISBN条码,书名,借阅状态='被借阅',
借阅日期,应还日期
FROMT_BOOK,T_LEND
WHERET_BOOK.图书编号=T_LEND.图书编号AND
借阅状态=1
(3)逾期未还图书信息视图使用getdate()函数获取系统时间;使用借阅表中“应还日期”字段信息与系统当前日期对比判断读者借阅书籍是否超期未还;使用datediff()函数计算读者借阅书籍的超期天数并求出相应的罚款金额。
(注:
罚款金额以超出一天罚款0.1元计算)
逾期未还图书信息视图具体实现代码如下:
USETSGL_133
GO
CREATEVIEWNOT_RETURN_VIEW
AS
SELECTT_LEND.学号,姓名,系部,专业班级,书名,借阅日期,应还日期,罚款金额=convert(float,datediff(day,[应还日期],CAST(LEFT(getdate(),10)ASDATE)))/10
FROMT_LEND,T_BOOK,T_READER
WHERET_LEND.学号=T_READER.学号and
T_LEND.图书编号=T_BOOK.图书编号and
归还日期ISNULLand
CAST(LEFT(getdate(),10)ASDATE)>应还日期
上述代码运行结果如下图“图1超期未还读者”。
图1超期未还读者
(4)读者查阅图书信息视图实现代码如下:
USETSGL_133
GO
CREATEVIEWBOOKINFO_READER_VIEW
AS
SELECTDISTINCTT_BOOK.ISBN条码,书名,图书总量,可借阅数量,馆藏位置
FROMT_BOOK,
(SELECTISBN条码,图书总量=COUNT(ISBN条码)
FROMT_BOOK
GROUPBYIS