山西大学软件学院
课 程 实 验 报 告
实验课程 数据库课程实验
实验名称 数据库系统设计与实现
实验地点 综合楼机房
实验时间 8:00到 9:50
学生班级 软工1909
学生学号 202202810904
学生姓名 崔杰华
指导教师 耿艳萍
2022年 6月 10日
实验目的:
1.理解并掌握数据库设计的概念、方法和步骤。
2.了解需求分析的内容。
3.重点运用ER模型进行概念设计。
4.将ER模型转换为关系模型。
5.掌握SQL Server的数据库的创建与管理。
6.掌握SQL Server表的概念、设计、创建与管理。
7.全面掌握Transcat-SQL命令。
8.掌握安全性的概念,创建登录、用户、角色,授予相应的权限。
9.掌握视图、存储过程、触发器等的创建与应用。
实验器材:
电脑 SQLserver 2022
实验内容:
实验项目:图书管理系统
(一)简要的系统需求分析
该实验设计开发一个简单的图书管理数据库系统,包括图书馆内书籍的信息、学校在校师生的信息以及师生的借阅信息。此系统用户面向图书管理员和借阅读者,图书馆管理员可以完成图书、读者、图书类型、学科类型、读者类型等基本信息的增加、删除和修改,可以制定借阅规则;读者可以进行图书的借阅、续借、归还、预约的确认等操作。
读者的基本数据有读者编号,姓名,联系电话,所在系,读者类型,权限状况。
图书的基本数据有书籍编号,书籍名称,作者,出版社,出版日期,价格,封面,类型。
管理员的基本数据有编号,密码,账号。
此外,一个成熟的管理系统不仅应该具有基本的处理、查询功能,还应该有一些分析、后台监控的功能。应该限制用户对数据的访问范围,限制用户操作级别(普通用户、管理员),限制对数据表修改权限。
最后,要求在进行设计系统中同时注意性能要求,响应各种操作的时间尽可能少。
借阅功能:
图书出借时考虑三个问题:
读者是否因为超期、罚款等情况被关闭了借阅权限;
读者是否已经借满其限额。
该书是否不在库中;
如果不存在以上情况,则可以出借。
预约功能:
读者想借的书如果不在库中(已经被出借),读者可以预约该图书,当该图书被归还时系统给读者发送信息,提醒他来借阅,此时其他读者也可以借阅该书。
续借功能:
读者还书的时候可以续借该图书,续借的过程包括先执行还书操作,再执行借阅操作。
发送催还信息:
管理员可以发送信息提醒读者到期还书。
读者管理功能:
对读者信息进行查看、添加、修改、删除。将读者分为不同类别,赋以不同权限。
系统管理功能:
对管理员的登录账号、密码进行添加、修改、删除。
借阅规则管理功能:
对图书借阅规则进行查看、添加、修改、删除。
(二)概念设计
设计系统的概念模型,采用ER模型。
概念设计是把用户的需求进行综合,归纳与抽象,统一到一个整体概念结构中,形成数据的概念模型,主要是用E-R模型来实现的。
下面就来显示上面各实体以及实体之间的关系的E-R模型。
1.读者(读者编号,姓名,联系电话,所在系,读者类型,权限状况)
2.图书(书籍编号,书籍名称,作者,出版社,出版日期,封面,价格,藏书类型,学科类型)
3.管理员(编号,密码,账号)
4.藏书类型
5.学科类型
6.读者类型:
上面的各个实体和关系之间的关系图:
(三)逻辑设计
将ER模型简化为关系模型,指出每个关系的主键,外键和必要约束。
关系模型为:
读者(读者编号,姓名,联系电话,所在系,读者类型,权限状况)
主键为读者编号
图书(书籍编号,书籍名称,作者,出版社,出版日期,封面,价格,藏书类型,学科类型)
主键为书籍编号
管理员(编号,密码,账号)
主键为编号。
应用关系规范化理论对上述产生的关系模式进行优化,具体步骤如下:
(1)确定每个关系模式内部各个属性之间的数据依赖以及不同关系模式属性之间的数据依赖。
(2)对各个关系模式之间的数据依赖进行最小化处理,消除冗余的联系。
(3)确定各关系模式的范式等级。
(4)按照需求分析阶段得到的处理要求,确定要对哪些模式进行合并或分解。
(5)为了提高数据操作的效率和存储空间的利用率,对上述产生的关系模式进行适当的修改、调整和重构。
(四)写出数据库的物理设计
表的结构设计等。
1.读者表
序号
字段名称
字段类型
字段长度
备注
1
读者编号
Varchar
20
主键
2
姓名
Varchar
20
不可空
3
联系电话
Varchar
20
不可空
4
所在系
Varchar
20
不可空
5
读者类型
Varchar
20
6
权限状况
Varchar
20
2.图书表
序号
字段名称
字段类型
字段长度
备注
1
书籍编号
Varchar
20
主键
2
书籍名称
Varchar
20
不可空
3
作者
Varchar
20
不可空
4
出版社
Varchar
20
不可空
5
出版日期
datetime
20
不可空
6
封面
7
价格
Varchar
20
8
藏书类型
Varchar
20
9
学科类型
Varchar
20
3.借书信息表
4.
序号
字段名称
字段类型
字段长度
备注
1
状态
Varchar
20
主键
2
借阅次数
Int
4
不可空
3
借书日期
datetime
0
不可空
4
还书日期
datetime
0
不可空
4.罚款信息表:
5.
序号
字段名称
字段类型
字段长度
备注
1
罚款日期
datetime
0
2
罚款价格
int
4
(五)T-SQL命令方式建立数据库
1.创建数据库
(1)创建名为book的数据库。
如下图所示:
如上图成功创建了book数据库。
2.在数据库中创建表
创建读者信息表:
创建图书信息表:
创建图书借阅表:
罚款信息表:
表全部创建完之后,刷新数据库,可以看到这些表:
3、在数据库中创建索引。
说明:索引包含“唯一性索引”,“主键索引”,“聚集索引”。
因为生成的表的时候系统自动的为每一个表设置了“主键索引”如图所示, “聚集索引”是指表中的各记录的物理顺序与键值的逻辑顺序一致。一张表中只能有一个“聚集索引”。而系统中的这个主键索引也是聚集索引,所以不能再对表格创建聚集索引。
所以我下面创建的是唯一性索引,全部都是非聚集索引。
(1)在读者信息表中创建了一个按“姓名”列建立的唯一索引“sno”
说明:这里创建的是唯一索引,唯一索引的含义是对于表中的任何两行记录来说,
索引键的值都各不相同。并且要注意,如果表中一个字段或者多个字段的组合在多行
记录中具有NULL值,则不能将这个字段或者字段组合作为唯一索引键。因为对于每
一个表的主键系统都自动的设置了相应的索引,在“客户表”中,身份证号是绝对不
能相同的,所以可以设置为唯一索引键。
(2)在图书信息表中创建了一个按“书籍编号”列建立的唯一索引“INDS”
(3)在借阅信息表中创建了一个按“借阅日期”列建立的唯一索引“time”
(4)在罚款信息表中创建了一个按“罚款金额”列建立的唯一索引“price”
实验步骤:
(5)检验索引已经创建成功
4、约束的创建。
说明:约束是SQL Server提供的自动保持数据库中的数据完整性的一种机制。它包含6种形式,分别是“主键约束”,“外键约束”,“唯一性约束”,“检查约束”,“默认约束”,“非空值约束”。
因为“主键约束”和“非空值约束”是在创建表的时候就已经创建了的,所以下面就不再讨论这两个。
一般而言,“外键约束”也是在创建表的时候就直接创建的,但是我这里没有创建,还可以用更改表的方法来创建,即利用“ALTER TABLE Y¥ADD”语句创建。
唯一约束指的是一个或者多个列的组合的值具有唯一性,它和主键索引的唯一区别就是可以为NULL。因为我在设置表的时候把那些属性均置为“不可为空”。所以在该数据库中建立不了唯一约束。
4.1外键约束的创建。
为“图书编号”创建外键“图书号”。
4.2检查约束的创建
1.为读者信息表创建的规定电话的格式检查约束
2.为借阅信息表创建的日期的格式检查约束
验证约束已经成功建立:
(六)关系图设置显示,存储
1.找到数据库关系图并右击新建数据库关系图
3.出现下面的界面的时候就把所有的表格全部添加
(七)利用T-SQL命令增加,删除,修改数据
1.对读者表的增加数据
2.对读者表的删除数据
其他的数据添加不是使用的SQL语句,最后读者表的信息如下图所示:
读者表:
(八)写出T-SQL查询:
1.按照某一个读者的其中几个字段的信息:
2.查询前两行的数据
3.count的查询方式:
4.where后有条件运算符的查询:
(1)between and
(2)exists查询是在订单明细表中存在的读者信息。
(3)In.后面跟的是子查询。查询的是在读者表中存在的读者信息
(4)Like
(九)创建登录,授予角色
1.SQL Server验证的创建用户user1的用户登录,登录密码是123 ,以及user2 456
然后可以通过这个用户和账号登录到SQL Server数据库中,如下图所示:
2.计算机windows验证的创建用户登录。
3.添加角色,因为固定服务器角色是不能添加,删除或修改,所以只能将用户登录添加为固定服务器角色的成员。
(1)为ueser1添加为固定服务器角色sysadmin的成员。
然后点开安全性中的sysadmin角色中包含了user1
因为user1添加了系统管理员sysadmin的角色,所以用可以进行所有的操作,具有所有的权限。
(九)创建数据库用户,角色,架构,授予相应的权限,更改拥有者,收回权限等
(十)
1.创建数据库用户
说明:因user1是sysadmin角色,相当于管理员
在user1登录用户下创建了user2数据库用户
2.添加数据库角色成员
3.创建结构,为user2授予架构的权限。
4.然后以user2的身份登录,然后user2就创造了一个架构SCI
5.然后我们在user1下,对user2授予创建表格的权限,然后再授予查询,删除,修改表格的权限。
6.更改架构的所有者,将架构SCI的所有者由user2更改为DBO.
7.静止与撤销权限。
(十一)创建视图
1.首先授予创建视图的权限给user2
2.创建一个视图V2,刷新后可以看到dbo.V2的视图
(十二)创建存储过程
创建读者表的存储过程P1
执行存储过程:
实验结果分析及结论:
实验正常运行,通过实验,理解并掌握了数据库设计的概念、方法和步骤,了解了数据库系统需求分析的内容,学会运用ER模型进行概念设计以及如何将ER模型转换为关系模型。
了解了一部分SQL Server的数据库的创建与管理以及SQL Server表的概念、设计、创建与管理。
实验和建议:
实验中途也遇到过很多问题,但查阅资料也解决了不少,也有一部分知识并不了解,所以在实验后半段的内容会有点简略,这也是自己的不足,要加以学习和改正,但也对数据库整体的知识点有了更深的认识。
实验评价及结论:
实验指导老师签字: 年 月 日
查看全文
false