实验八 使用规则实现数据完整性

更新时间:2023-11-25 19:24:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

思考题:

1. 在创建关系表时,是如何实现数据完整性的?

实体完整性:主键 参照完整性:外键

用户自定义:default约束,SQL约束,unique约束 2. 这些约束是如何存储的?

存储在表里面

3. 能否使约束不随表的删除而删除?能否将相同的约束应用于多个表的多列上?

建立规则就不会随表的删除而删除,可以

实验八 使用规则实现数据完整性

一、知识准备

1.规则的概述 (1)规则的含义

规则是绑定到列上的数据库对象,用来指定列可以接受哪些数据值。 规则是实现域完整性的方法之一。 (2)规则与CHECK约束的区别

CHECK约束是用CREATE TABLE语句在建表时指定的,而规则是要用CREATE RULE语句创建,且可作为单独的数据库对象来使用。

在一列上只能使用一个规则,但可以使用多个CHECK约束。

一个规则可以应用于多个列,而CHECK约束只能应用于它所定义的列。 2.创建规则

CREATE RULE 规则名 AS 条件表达式 其中:“条件表达式”用于指定列值的格式或取值范围。 书写条件表达式的注意事项:

①不能引用列名或其它数据库对象名。

②条件表达式中包含一个以@开头的局部变量,该变量代表在修改该列的记录时用户输入的数值。 3.绑定规则

规则创建好后,必须绑定到列上才能生效。

用系统存储过程实现绑定:exec sp_bindrule ‘规则名’,’表名.列名’ 说明:

①如果列上已经绑定了规则,当再次向它绑定规则时,旧规则将被新规则覆盖。

②绑定规则后,当有不符合规则的数据输入时,系统会给出错误信息,拒绝接受该值。 例:在xscj库中,创建一个名为“ro_学时”的规则,以限制学时数至少在20以上,并将该规则绑定到KC表的“学时”列上。

Use xscj go

Create rule ro_学时 as @xueshi>=20 Go

Sp_bindrule ‘ro_学时’,’kc.学时’ 4.解除绑定的规则

1

用系统存储过程解除绑定

Exec sp_unbindrule ‘表名.列名’’ 例:解除绑定在KC表列上的规则

Exec sp_unbindrule ‘kc.学时’ 5.删除规则

语法格式: drop rule 规则名[,?n]

删除一个柜子前,必须先将规则从它所绑定的列上解除,否则,会显示错误信息。

二、实验准备

在xscj数据库中创建如下三张表:

xsqk表:

kc表:

xs_kc表:

三、实验内容

1.创建一个关于开课学期的规则,开课学期取值必须是[1-8],并绑定到列,实现数据的完整性。(输入数据检查规则实现)

2

2.创建一个关于性别的规则,约束其值只能是“男”或“女”,并绑定到列,实现数据的完整性。(输入数据检查规则实现)

3.创建一个关于学分的规则,要求“学分”列的值只能是1~6之间的数字,并绑定到列,实现数据的完整性。(输入数据检查规则实现)

3

本文来源:https://www.bwwdw.com/article/74kt.html

Top