数据库系统原理 您所在的位置:网站首页 管理员原理试卷3 数据库系统原理

数据库系统原理

2024-01-22 10:16| 来源: 网络整理| 查看: 265

实验三 数据库完整性、安全性实现

一、实验目的

使学生加深对数据库安全性和完整性的理解,并掌握 SQL Server 中有关用户、角

色及操作权限的管理方法,学会创建和使用规则、缺省和触发器以及存储过程。

二、实验要求

通过实验对数据进行完整性控制、安全性维护。

三、实验步骤

1、 开始→程序→Microsoft SQL Server→SQL Server Management Stdio。

2、 在“连接到服务器”对话框中,选择“Windows 身份验证”,点击“连接”,进

入 SQL Server Management Stdio 操作界面。

3、数据库的安全性实验:设置 SQL Server 的安全认证模式,实现对 SQL Server

的用户和角色管理,设置和管理数据操作权限。

4、数据库的完整性实验:使用 Transact-SQL 设计规则、缺省、约束和触发器,

通过 SQLServer 管理器定义它们。

创建 students 数据库。利用如下 sql 语句在 students 数据库中创建表(具体

含义见课本 P37 页)。

CREATE TABLE Student (

Sno char ( 7 ) PRIMARY KEY,

Sname char ( 10 ) NOT NULL,

Ssex char (2),

Sage tinyint ,

Sdept char (20)

)

CREATE TABLE Course (

Cno char(10) NOT NULL,

Cname char(20) NOT NULL,Ccredit tinyint ,

Semester tinyint,

PRIMARY KEY(Cno)

)

CREATE TABLE SC

(

Sno char(7) NOT NULL,

Cno char(10) NOT NULL,

Grade tinyint,

XKLB char(4) ,

PRIMARY KEY ( Sno, Cno ) ,

FOREIGN KEY (Sno) REFERENCES Student (Sno),

FOREIGN KEY (Cno) REFERENCES Course (Cno)

)

完成如下操作:

在 SQL Server 管理器中,创建一个新的 windows 登录名。

(2)在 SQL Server 管理器中为自己建立一个 SQL SERVER 服务器登录名(自己

学号)。

为所属的 SQL 服务器设置混合认证安全认证模式。

用自己创建的登录名登录服务器。

(5)在 SQL Server 管理器中为自己建立一个 students 数据库用户(自己学号

-user)和角色(自己学号-role)。

(6)用管理器实现如下权限的分配:

① 将 student 表中“sname”、“ssex”、“sage”的修改权限赋予自己创建的数据库用户。

use shiyan3

go

grant update on Student(Sname,Ssex,Sage) to [20192163-user]

go

② 将 student 表、course 表、sc 表的查询权限授予自己创建的角色。

grant select on Student to [20192163-role];

grant select on Course to [20192163-role];

grant select on SC to [20192163-role];

③ 拒绝自己创建的角色拥有 sc 表中 grade 的修改权限。

deny update on SC(grade) to [20192163-role]

④ 将自己创建的数据库用户添加为自己创建的角色成员。

exec sp_addrolemember '20192163-role','20192163-user'

(7)用管理器创建触发器实现如下安全性和完整性:

①定义 course 表中 credit 属性为“3”的缺省。

create trigger dbo.st1

on [dbo].[Course]

after insert,update

as

begin

set nocount on;

update Course set Ccredit=3 from Course

join SC on SC.Cno=Course.Cno

where Sno in(select Sno from inserted where Cno=null)

end

go

②建立 course 与 sc 表间来维护参照完整性而使用的一个级联删除触发器、一 个级联修改触发器和一个受限插入触发器。

一个级联删除触发器:

Create trigger st2

On student

After delete

as

begin

set nocount on;

delete from SC where Sno=(select sno from deleted)

end

go

一个级联修改触发器:

Create trigger st3

On student

After update

as

begin

set nocount on;

update SC set Sno=(select Sno from inserted)

where Sno=(select sno from deleted)

end

go

一个受限插入触发器:

Create trigger st4

On student

After insert

as

begin

set nocount on;

delete from SC where Sno=

(select Sno from inserted where Sno not in(select Sno from student))

or Cno=

(select Cno from inserted where Cno not in(select Cno from course))

end

go

(8)对“students 数据库”编写存储过程,完成下面功能:

① 统计成绩 60 分以下的人数;

create procedure pr1

as

begin

set nocount on;

select count(*) from SC where Grade



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有