数据库的完整性和安全性实验报告

  • 格式:doc
  • 大小:113.50 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息工程学院实验报告

课程名称:《数据库原理》

实验项目名称:数据库的完整性和安全性

一、实 验 目 的:

(1)掌握数据库约束的概念;

(2)熟悉SQL SERVER 的完整性约束技术。 (3)了解SQL SERVER 的违反完整性处理措施。 (4)了解登录账户的管理理念与具体方法。 (5)了解数据库用户的管理的要则。 (6)了解用户权限管理的内涵与方法。 二、实 验 设 备 与 器 件 Win7 +Sql server 2008 三、实 验 内 容 与 步 骤

(一)测试完整性

运行附录中的SQL 语句,理解SQL 语句中包含的完整性定义。然后执行下面的SQL 语句,看是否能正常运行,若无法执行,请说明原因。

1.对dept 表进行数据增删改,并检查完整性规则 Dept 已存在的完整性规则如下: dno CHAR(2)

PRIMARY KEY

dname

V ARCHAR(20) NOT NULL,UNIQUE

(1)增加数据

INSERT INTO dept V ALUES('D1','计科系');----正常插入

INSERT INTO dept V ALUES('D2','电信系');----正常插入

INSERT INTO dept V ALUES(NULL,'机械系'); ----违反dno 主键(NOT NULL )规则

INSERT INTO dept V ALUES('D2','机械系'); ----违反dno 主键(UNIQUE )

INSERT INTO dept V ALUES('D3',NULL); ----违反dname 的NOT NULL 规则

INSERT INTO dept V ALUES('D3','计科系'); ----违反dname 的UNIQUE 规则

INSERT INTO dept V ALUES('D3','机械系');----正常插入

(2)删除数据

DELETE FROM dept WHERE dno='D3';----正常删除

(3)修改数据

UPDA TE dept SET dname='计算机科学系' WHERE dno='D1';----正常修改

UPDA TE dept SET dname='电信系' WHERE dno='D1'; ----违反dname的UNIQUE规则

UPDA TE dept SET dname=NULL WHERE dno='D1'; 违反dname的UNIQUE规则

2.对student表进行数据增删改,并检查完整性规则

Student已存在完整性规则如下:

sno CHAR(2) PRIMARY KEY

sname V ARCHAR(20) NOT NULL,

ssex CHAR(2) NOT NULL, CHECK(ssex in('男','女'))

sage INT NOT NULL,

dno CHAR(2) NOT NULL, FOREIGN KEY REFERENCES dept(dno)

ON DELETE CASCADE ON UPDATE CASCADE

(1)增加数据

INSERT INTO student V ALUES('S1','张刚','男',20,'D1');----正常插入

INSERT INTO student V ALUES('S2','李梅','女',21,'D2');----正常插入

INSERT INTO student V ALUES('S2','吴敏','男',20,'D1'); ----正常插入

INSERT INTO student V ALUES(NULL,'吴敏','男',20,'D1'); ----违反sno 的主键(NOT NULL)规则

INSERT INTO student V ALUES('S3','吴敏','男',NULL,'D1'); 违反sage 的主键(NOT NULL)规则

INSERT INTO student V ALUES('S3','吴敏','M',20,'D1'); 违反ssex 的CHECK规则

INSERT INTO student V ALUES('S3','吴敏','男',20,'D3'); ----正常插入

INSERT INTO student V ALUES('S3','吴敏','男',20,'D1');----正常插入

(2)删除数据

DELETE FROM student WHERE sno='S3'; ----正常删除

(3)修改数据

UPDA TE student SET sname='赵强',dno='D2' WHERE sno='S1'-----正常修改

UPDA TE student SET ssex='F' WHERE sno='S1'; -----违反ssex的CHECK 规则

UPDA TE student SET sno='S2' WHERE sno='S1'; -----违反sno的主键(UNIQUE)规则

UPDA TE student SET dno='D3' WHERE sno='S1'; 违反dno 的外键规则

UPDA TE dept SET dno='D3' WHERE dno='D1';----检查dno的外键ON UPDATE规则,观察运行后效果

DELETE FROM dept WHERE dno='D2';----检查dno的外键ON DELETE规则,观察运行后效果

(二)使用规则实现数据完整性

(1)在查询分析器中,利用命令(CREATE RULE),创建一个关于年龄(sage)约束的规则,将“sage”列的值约束在0~200之间;然后将所创建的规则绑定到“sage”列(提示:用命令Sp_bindrule)。CREATE RULE rule_sage as@sage between 1 and 100;

Sp_bindrule'rule_sage','student.sage';

(2)在查询分析器中,利用命令(CREATE RULE),创建一个关于学分(credit)约束的规则,将“credit”列的值约束在1~8之间的整数;然后将所创建的规则绑定到“credit”列(提示:用命令Sp_bindrule)。CREATE RULE rule_credit as@credit between 1 and 8;

Sp_bindrule'rule_credit','course.credit';

(3)在企业管理器中,创建一个关于成绩(grade)约束的规则,将“grade”列的值约束在0~100以内;然后将所创建的规则绑定到“grade”列。

CREATE RULE rule_grade as@grade between 1 and 100;

Sp_bindrule'rule_grade','study.grade';

(三)使用触发器实现数据完整性(选做)

(1)在查询分析器中,输入以下CREATE TRIGGER语句,创建以下触发器:为student表创建一个