《数据库系统原理及应用教程》(苗雪兰等,第五版) 实验六:数据库的视图和关系图定义及使用实验

阅读前注意:

1. 本实验报告配套《数据库系统原理及应用教程》(苗雪兰等,第五版) 实验六:数据库的视图和关系图定义及使用实验(书上10.4节以及第八章部分内容),书本中采用Microsoft SQL Server Management Studio 2008,实验报告中采用Microsoft SQL Server Management Studio 2019。

2. 如果你的数据库课程选用的书目是这本书的话,那么大概率这会是你的实验作业。建议先自己独立完成后再作参考,数据库这门课是需要自己动手的。

3. 实验报告中可能增加了一些书中没有的附加内容,读者可以有兴趣自行完成。

4. 实验报告仅供初学者参考。

5. 请谅解实验报告中可能存在的问题或错误,欢迎指出,欢迎交流讨论。



一、实验目的

本实验的目的是使学生掌握SQL Server中的视图创建工具和数据库关系图创建工具的使用方法,加深对视图和关系图的理解;通过实验使学生加深对数据安全性和完整性的理解,熟练掌握SQL SERVER 中有关用户、角色及操作权限的管理方法,以及数据库备份和恢复的方法。

二、实验内容

按教材P300 10.4.6的内容完成基本操作实验,实验内容包括:
1)创建、查看、修改和删除视图;
2)创建、编辑和删除数据库关系图;
3) 按教材P301 10.4.7,的内容完成基本操作实验,熟练掌握SQL SERVER 中有关用户、角色及操作权限的管理方法,以及数据库备份和恢复的方法。


三、实验过程


1. 创建视图实验

1)在SQL Server Management Studio中,选中图书读者数据库下的视图对象,调出创建视图工具,在图书读者库中通过Transact-SQL描述创建读者视图。

下面列出该实验常见的两种错误及解决方法:

错误一:

在这里插入图片描述

错误原因:“CREATE VIEW”必须是批处理中仅有的语句。这一段代码中出现了不是用于批处理的语句SELECT * FROM Book。

解决方法:删除语句SELECT * FROM Book,保证语句中仅有批处理语句。(或者选中后运行)


错误二:

在这里插入图片描述

错误原因:各视图或函数中的列名必须唯一。在视图或函数’Reader_VIEW’ 中多次指定了列名’b_number’。下图是Book、Loan表的各列:

在这里插入图片描述
能看出如果按照上面的代码执行的话,b_number被指定了两次。为了避免该情况,可对SELECT后的代码段进行调整。详见下面的代码段。



运行下面这段代码以创建视图:

CREATE VIEW Reader_VIEW
AS SELECT Book.*, Loan.r_number, Loan.l_date 
FROM Book, Loan, Reader
WHERE Book.b_number=Loan.b_number 
AND Loan.r_number=Reader.r_number

运行结果如下:

在这里插入图片描述


2)在SQL Server Management Studio中,选中图书读者数据库下的视图对象,调出创建视图工具,在图书读者库中通过Transact-SQL描述的视图定义,创建借阅_计算机图书视图。

运行代码:

CREATE VIEW Loan_Book_of_计算机
AS SELECT Book.*, Loan.r_number, Loan.l_date
FROM Book, Loan, Reader
WHERE Book.b_number=Loan.b_number AND Book.b_type='计算机'

执行结果:

在这里插入图片描述



3. 数据库安全性实验

(1)设置服务器安全认证模式

在SQL Server Management Studio中,为正在使用的SQL服务器设置Windows安全认证模式。

在这里插入图片描述
右键点击“对象资源管理器”中的服务器,选择“属性”。

在这里插入图片描述

在“属性”卡片中,左侧选择页选择“安全性”,服务器身份验证选择“SQL Server和Windows身份验证模式”,点击确定即可完成设置。


(2)建立用户和角色

1)为正在使用的SQL服务建立新登录名(“login1”),使用SQL Server身份验证。

展开“对象资源管理器”中的服务器,展开“安全性”,右键点击“新建登录名”。

在这里插入图片描述
“常规”页中,选择SQL Server身份验证,登录名“login1”,录入密码“login1”,点击确定。

在这里插入图片描述
在这里插入图片描述

2)学生课程库中,新建数据库用户名“user1”(登录名“login1”),新建数据库角色名“rose1”。

展开服务器的“数据库”,展开学生课程数据库的“安全性”,右键“用户”,点击新建用户。

在这里插入图片描述
录入用户名和登陆名。

在这里插入图片描述
在这里插入图片描述
选择“角色”中的“数据库角色”,新建数据库角色。

在这里插入图片描述
录入角色名,点击确定。

在这里插入图片描述
在这里插入图片描述

3)在图书读者数据库中,新建数据库用户名“user2”(登录名“login1”),新建数据库角色名“rose2”。

按照2)的方式进行操作。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



(3)设置权限

1)使新登录“login1”加入到System Administrators服务器角色中,可访问学生课程数据库和图书读者数据库。

重新登陆SQL Server,选择SQL Server身份验证,输入用户名和密码,连接即可。

在这里插入图片描述
在这里插入图片描述


2)学生课程数据库中,将“user1”加入“rose1”和db-owner,通过选择角色对“rose1”授权。

用户user1的属性中,搜索安全对象,在对象类型中加入数据库角色。

在这里插入图片描述
在“浏览”中加入rose1和db_owner:

在这里插入图片描述
在下面的框中勾选需要授权的权限即可。

在这里插入图片描述


3)在图书读者数据库中,将“user2”加入“rose2”和db-owner,通过对象(选择图书、读者和借阅表)对“rose2”授权。

用户user2的属性中,搜索安全对象,在对象类型中加入数据库角色。

在这里插入图片描述
在“浏览”中加入rose2和db_owner:

在这里插入图片描述
在下面的框中勾选需要授权的权限即可。

在这里插入图片描述


4)使“rose2”和“rose1”都有创建表、创建视图和备份数据库的权限。

在“rose2”和“rose1”的属性中,“安全对象”里先搜索“安全对象”,在特定对象中选择对象类型数据库和表,选定对应的数据库和表,在下方创建表、创建视图和备份数据库的权限对应的方框打钩后确定即可。

选择学生课程数据库“角色”中的rose1,右键点击“属性”。

在这里插入图片描述
点击“搜索”,选择“特定对象”,确定。

在这里插入图片描述
点击“对象类型”,添加数据库和表。点击“浏览”,选择对象中选定学生课程数据库和其对应的3个表,确定。

在这里插入图片描述
在权限对应的地方勾选即可。rose2操作同理:

在这里插入图片描述
在这里插入图片描述



(4)数据库完整性试验

建立学生选课数据库中选课表的插入数据类型触发器,保证学生选课库中选课表的参照完整性,以维护其外码与参照表中的主码一致。

代码如下:

CREATE TRIGGER SC_insert ON Select_Course
FOR INSERT
    AS IF(SELECT COUNT(*)
	    FROM Student, inserted, Course
		WHERE Student.s_number=inserted.s_number
		AND Course.c_number=inserted.c_number)=0
ROLLBACK TRANSACTION
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K2SO4钾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值