北京邮电大学
实验报告
课程名称 数据库系统原理
实验内容 实验五
数据库完整性与安全性实验
班级 2012211314 姓名 韩植/吴梦
指导老师 卢向群 成绩_________
2015年 5月 12日
实验五 数据库完整性与安全性实验
实验目的
1. 通过对完整性规则的定义实现,熟悉了解SQL SERVER中完整性保证的规则和实现方
法,加深对数据完整性的理解。
2. 通过对安全性相关内容的定义,熟悉了解SQL SERVER中安全性的内容和实现方法,
加深对数据库安全性的理解
实验内容
完整性实验与要求:
1. 分别定义数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;
设置了学生选课数据库中基表的主外键
2. 向学生表插入具有相同学号的数据,验证其实体完整性约束; (1) Enterprise Manager
(2)T_SQL
3. 向学生表中插入一条数据,班级号是学生表的外键,验证参照完整性约束; (1)Enterprise Manager
(2)T_SQL
4. 删除教师表中的所有数据,验证参照完整性约束; (1)Enterprise Manager
(2)T_SQL
5. 定义存储过程,完成查询学生表中学号=g9940206的行,并执行。
create procedure chouzhu as
select student$.student_id,student$.student_name,course$.course_name,student_course$.credit from student$,course$,student_course$ where student$.student_id ='g9940206'
and student$.student_id=student_course$.student_id and course$.course_id =student_course$.course_id go
定义存储过程chouzhu
执行后得到
6. 定义触发器,当向学生表插入一条记录时,将所有学生的学号值加1;并对其进行测试
USE [学生选课] GO
/****** Object: Trigger [dbo].[hhhhhh] Script Date: 05/12/2015 17:01:52 ******/ SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON GO
ALTER trigger [dbo].[hhhhhh] on [dbo].[student$] after insert as begin
update student$ set student_id=substring(student_id,1,1)+cast((substring(student_id,2,7)+1)as varchar(5 0)) end
安全性实验内容与要求:
1. 定义一新的登陆帐号、数据库用户,并授予其访问学生选课数据库的读权限; (1)Enterprise Manager
新建了登陆账号chouzhu
新建数据库用户chouzhu_hi
(2)Transact_SQL
use 学生选课 go
exec sp_addlogin 'chouzhu2' exec sp_grantdbaccess 'chouzhu2'
exec sp_addrolemember 'db_datareader','chouzhu2' Go
2. 分别采用Windows NT/2000验证方式和Windows NT/2000及SQL Server混合验证方
式用不同的用户进行登录连接;
成功创建chouzhu2登录名和用户名
俩种验证方式均可登陆连接成功
3. 分别用sa用户和新定义的用户访问通信数据库,并对其中的学生表数据进行修改; Sa用户登陆成功,并成功修改了学生表数据
Chouzhu用户登陆成功,但无权限修改学生表
4. 创建数据库角色,并授予访问通信数据库的读、写权限;
(1)Enterprise Manager 新建数据库角色chouzhu6
(2)Transact_SQL
新建数据库角色chouzhu
create role chouzhu
grant select,insert on book$ to chouzhu grant select,insert on class$ to chouzhu grant select,insert on class_course$ to chouzhu grant select,insert on course$ to chouzhu
grant select,insert on department$ to chouzhu grant select,insert on student$ to chouzhu grant select,insert on student_course$ to chouzhu grant select,insert on teacher$ to chouzhu
grant select,insert on teacher_course_class$ to chouzhu
5. 将角色赋予(1)中定义的用户,建立用户和角色联系;
(1)Enterprise Manager
(2)Transact_SQL
EXEC sp_addrolemember 'chouzhu', 'chouzhu_hi' 建立了用户和角色的联系
6. 再次用此用户访问通信数据库,并对其中的学生表数据进行修改。
实验总结:
通过这次实验对完整性和安全性有了更全面的认识,遇到不明白的问题主要是靠网上查询解决的。设置主键和外键都是比较容易的,但是在设置外键时要注意数据类型的一致性。至于设置一系列的新登录名用户则是更加深入的了解了理论知识的运用。
因篇幅问题不能全部显示,请点此查看更多更全内容