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

  • 格式:doc
  • 大小:119.54 KB
  • 文档页数:7

下载文档原格式

  / 7
  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 VARCHAR(20) NOT NULL,UNIQUE (1)增加数据

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

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

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

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

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

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

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

(2)删除数据

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

(3)修改数据

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

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

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

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

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

sno CHAR(2) PRIMARY KEY

sname VARCHAR(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 VALUES('S1','张刚','男',20,'D1');----正常插入

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

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

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

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

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

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

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

(2)删除数据

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

(3)修改数据

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

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

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

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

UPDATE 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';