集美大学计算机工程学院实验报告
课程名称: 数据库原理 指导教师: 吴晓晖
实验项目名称:数据库的安全性与完整性实践 实验项目编号:实验4
班级:软件0812 姓名:周海航 学号:2008813058 组号:
实验成绩:
上机实践日期: 上机实践时间:4 学时
一、实验目的:
掌握SQL SERVER的安全性及完整性定义语句及验证 二、实验内容:
SQL SERVER的登录用户创建与删除,数据库角色创建与删除,数据库用户的添加与删除,角色成员的添加与删除,配合视图语句与对象许可的灵活应用。数据库完整性包括域完整性(CHECK,DEFAULT,UNIUE,RULE,用户自定义类型)、表间完整性(复习实体完整性、参照完整性的定义与验证)、复杂完整性表达(触发器) 三、设计和编码
1. 掌握SQL SERVER的安全性设计与应用 1) 建立用户登录SQL SERVER账号。分别创建6个用户,分别属于学生,教师与教务员(提示:CREATE
LOGIN或SP_addlogin)
2) 删除用户登录SQL SERVER帐号,对题1)所建的一个教务员帐号进行删除操作 注:WINDOWS认证模式与混合认证模式在该两点上使用的存储过程不相同。
WINDOWS认证模式必须在WINDOWS下建立用户或组后,用存储过程sp_grantlogin, sp—_revokelogin完成用户登录SQL SERVER帐号的建立与删除
混合认证模式用存储过程sp_addlogin与sp_droplogin完成用户登录SQL SERVER帐号的建立与删除
3) 了解SQL SERVER的两类固定角色:服务器角色及数据库角色。
注:将用户添加、删除固定服务器角色的存储过程是sp_addsrvrolemember, sp_dropsrvrolemember 将用户添加为某数据库的固定数据库角色的存储过程是 ?
4) 在XSCJ库中建立与删除角色,建立三个角色,分别是studen--学生,teacher--教师,teachadmin--教务员。 注:所采用的存储过程是sp_addrole,sp_doprrole, create role, drop role
5) 将一个登录帐号添加为某个数据库的用户帐号。将1)建立的6个SQL SERVER服务器登录帐号添
加至在XSCJ数据库中
注:所采用的存储过程是sp_grantdbaccess, sp_revokedbaccess,CREATE USER DROP USER等
6) 给数据库角色添加与删除成员:将5)中的6个用户添加至对应的角色中 注:所用的存储过程是sp_addrolemember,sp_doprrolemember
7) 数据库用户、角色操作权限的授予、拒绝和收回 了解SQL SERVER的两种许可---语句许可与对象许可。将一个学生用户撤出STUDENT角色,假设其学号为’S001’(或你所给予的学号),配合视图为该学生授予只能查询STU表自已的信息,只能查询SC表自已的选课,及修改自已的选课
注:grant,revoke及DENY的T-SQL语句的使用
配合视图的使用。
create view MYSTUINFO as select * from Stu where sno='s001'
create view myscinfo as select * from SC where SNO = 's001'
2.安全性设计、实现及验证
分类叙述学生、教师、教务员三种角色的安全性要求。
根据你的叙述分别实现学生、教师、教务员三种角色的安全性要求,要求配合视图实现。 分别使用学生、教师及教务员的一个帐号登录,用SQL语句验证安全性设计。 Grant update,insert On table sc To teacher2
3.据SQL SERVER提供的完整性功能自行设计实验完成完整性实践
SQL SERVER提供的数据库完整性包括域完整性(CHECK,DEFAULT,UNQUE,RULE,用户自定义类型、基本数据类型)、表间完整性(复习实体完整性、参照完整性的定义与验证)、复杂完整性表达(触发器)
1) 主键定义例子一个
Create table student (
No char(4) primary key, name char(20) not null )
2) 外键定义例子一个 Create table score (
No char(4) not null, Grade int ,
Foreign key(no) references student(no) )
1)CHECK约束
a)定义学生的年龄在16-30之间。B)定义成绩在0-150之间,C)定义学号及课号是由数字构成的字符。
A:
B: C:
2)分别创建一个用户自定义
类型,用于定义STUCOU表的学号与课号(CREATE TYPE) Sp_addtype 'sno','char(4)',not null Sp_addtype 'cno','char(4)',not null
3)RULE:设计一个规则,共四个字符,定长,首字符为字母,其余三个字符为数字,并将该规则与用户自定义数据类型绑定上例中的用户自定义类型绑定(CREATE RULE,SP_BINDRULE,SP_UNBINDRULE,DROP RULE)
create rule cno_rule
as @range like '[A-Z][0-9][0-9][0-9]' go
exec sp_bindrule 'cno_rule','sno' exec sp_bindrule 'cno_rule','cno' 4)Unique专业名具有唯一性。 Cname Char(10) unique
5)Default:性别默认为TRUE(代表男性) create default sex as '男' sp_bindefault 'sex' , Stu.sex 6)not null:
4.触发器(create trigger) 1)每门课最多60个学生。
2)每个学生最多选修6门课
(3)“男子汉的培养”课程限男生选修。(注:在课程表中添加一条记录“男子汉的培养”)