第6章实现数据完整性_第1页
第6章实现数据完整性_第2页
第6章实现数据完整性_第3页
第6章实现数据完整性_第4页
第6章实现数据完整性_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第六章第六章 实现实现SQL server 2000SQL server 2000数据完整性数据完整性 数据完整性就是指存储在数据库中的数据正确性和相关数据具有一致性。例如在学生表中学号要具有唯一性,数据库的完整关系到否能真实反映现实世界,因此十分重要。 数据完整性可分实体完整性、域完整性、参照完整性和用户定义完整性(4种)类型。6.1 完整性的概念完整性的概念 1.1.实体完整性实体完整性 实体是指表中的纪录,一个实体就是表中的一条纪录。完整性要求在表中不能存在完全相同的纪录,而且每条记录都要具有一个非空且不重复的主键值。这样就能保证事物的唯一性。 实体完整性将行定义为特定表的唯一实体。实

2、体完整性强制表的标识符列或主键的完整性(通过惟一索引、惟一(UNIQUE)约束、主键(PRIMARY KEY)约束和IDENTITY 属性)。 2.2.域完整性域完整性 域完整性也可称为列完整性,是指给定列的输入有效性的验证限制。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过 CHECK 约束和规则)或有效数据的范围(通过 FOREIGN KEY(外键)约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则)。 3.3.引用(参照)完整性引用(参照)完整性 参照完整性又称为引用完整性。参照完整性是指作用于有关联的两个或两个以上的表,通过使用主键和外键或主键和唯一

3、键之间的关系,使表中的键值在相关表中保持一致。在输入或删除记录时,引用完整性保持表之间已定义的关系。引用完整性基于外键与主键之间或外键与唯一键之间的关系(通过 FOREIGN KEY 和 CHECK 约束)。引用完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。 4.4.用户定义完整性用户定义完整性 用户定义完整性是应用领域需要遵守的约束条件,允许用户定义不属于其它任何完整性分类的特定业务规则。所有的完整性类型都支持用户定义完整性(CREATE TABLE 中的所有列级和表级约束、存储过程和触发器)。6.2

4、 6.2 约束的类型约束的类型 约束是SQL Server提供的自动强制数据完整性的一种方法,它是通过定义列的取值规则来维护数据的完整性。约束定义关于列中允许值的规则,是强制完整性的标准机制。使用约束优先于使用触发器、规则和默认值。常用的约束有主键、UNIQUE(惟一)、CHECK(检查)、 FOREIGN KEY(外键)、DEFAULT(默认)约束。 1.PRIMARY KEY1.PRIMARY KEY(主键)约束(主键)约束 表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性实体完整性。当创建或更改表时可通过定义 PRIMAR

5、Y KEY 约束来创建主键。 一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。 当为表指定 PRIMARY KEY 约束时,SQL 通过为主键列创建唯一索引强制数据的唯一性。当在查询中使用主键时,该索引还可用来对数据进行快速访问。 如果 PRIMARY KEY 约束定义在不止一列上,则一列中的值可以重复,但 PRIMARY KEY 约束定义中的所有列的组合的值必须唯一。 2.UNIQUE2.UNIQUE(惟一)约束(惟一)约束 可使用 UNIQUE 约束确保在非主键列非

6、主键列中不允许输入重复值。尽管 UNIQUE 约束和 PRIMARY KEY约束都强制唯一性,但在强制下面的唯一性时应使用 UNIQUE 约束而不是 PRIMARY KEY 约束: 特点: (1)非主键的一列或多列组合。 一个表可以定义多个 UNIQUE 约束,而只能定义一个 PRIMARY KEY 约束。 (2)允许空值的列。 允许空值的列上可以定义 UNIQUE 约束,而不能定义 PRIMARY KEY 约束。FOREIGN KEY 约束也可引用 UNIQUE 约束。 3.CHECK3.CHECK(检查)约束(检查)约束 CHECK 约束通过限制输入到列中的值来强制域的完整性。这与 FOR

7、EIGN KEY 约束控制列中数值相似。区别在于它们如何判断哪些值有效:FOREIGN KEY 约束从另一个表中获得有效数值列表,CHECK 约束从逻辑表达式判断而非基于其它列的数据。 例如,通过创建 CHECK 约束可将 salarysalary 列的取值范围限制在 $15,000 至 $100,000 之间,从而防止输入的薪金值超出正常的薪金范围。逻辑表达式为:salary = 15000 AND salary = 10) 与 CHECK (max= $1000 AND range $20000 sp_bindrulesp_bindrule将规则绑定到列或用户定义的 数据类型。语法格式:

8、execute sp_bindrule 规则名称,表名.字段名例如:创建一个规则,并绑定到表kc的课程 号列,用以限制课程号的输入范围。Use studentcreate rule kc_rule as range like1-50-90-9gouse studentexec sp_bindrule kc-rule,kc.课程号go例:创建一个规则,绑到学生表的学号列上。CREATE RULE id_chk AS id BETWEEN 0 and 10000GOCREATE TABLE 学生表 ( 学号 int not null)GOsp_bindrule id_chk, 学生表.学号GO 例

9、:在student数据库中建立一个规则,其名称为“专业规则”.Use studentgocreate rule 专业规则 as guize in (电子商务,计算机网络,信息管理) go-查看规则定义sp_helptext 专业规则例:将专业规则绑定到学生表的专业字段上,可以限制录入或修改记录时提供的专业名称必须是电子商务,计算机网络,信息管理.Use studentgoexec sp_bindrule 专业规则,学生.专业go3.sp_unbindrulesp_unbindrule 在当前数据库中为列或用户定义数据类型解除规则绑定。语法格式: execute sp_unbindrule 表名

10、.字段名例:为学生表 的专业列解除规则绑定。EXEC sp_unbindrule 学生表.专业 4.DROP RULEDROP RULE 从当前数据库中删除一个或多个用户定义的规则。语法格式:语法格式:DROP RULE rule , ,.n 注意:删除规则对象前,首先解除绑 定关系。课堂练习: 创建一个规则是id在00001到10000范围内,绑到学生表的学号列上,再解除绑定,最后删除规则。分析代码如下:CREATE RULE id_chk AS id BETWEEN 00001 and 10000 GO CREATE TABLE 学生表 ( 学号 int not null) GO sp_b

11、indrule id_chk, 学生表.学号 GO EXEC sp_unbindrule 学生表.学号 DROP RULE id_chk 6.7 6.7 使用默认使用默认 创建称为默认值的对象。当绑定到列或用户定义数据类型时,如果插入时没有明确提供值,默认值便指定一个值,并将其插入到对象所绑定的列中(或者在用户定义数据类型的情况下,插入到所有列中)。默认值是一个向后兼容的功能,它执行一些与使用 ALTER 或 CREATE TABLE 语句的 DEFAULT 关键字创建的默认值定义相同的功能。默认值定义是限制列数据的首选并且标准的方法,因为定义和表存储在一起,当除去表时,将自动除去默认值定义。

12、 只能在当前数据库中创建默认值的名称。在数据库中,每个所有者的各默认值名称必须是唯一的。创建默认值后,使用 sp_bindefaultsp_bindefault 将其绑定到列或用户定义数据类型。 1.1.创建默认值对象创建默认值对象CREATE DEFAULT default AS constant_expression例子:创建简单的字符默认值例子:创建简单的字符默认值unknownunknown。 USE pubs USE pubs GO GO CREATE DEFAULT def_phone AS CREATE DEFAULT def_phone AS unknown unknown 2

13、. sp_bindefault 将默认值绑定到列或用户定义的数据类型。语法格式:execute sp_bindfault 规则名称, 表名.字段名例:创建一个默认,将其绑定到学生表的学分 字段,默认值是4。create default def_xuefen as 4goexec sp_bindefault def_xuefen, 学生表.学分go3. 解绑默认值语法格式:execute sp_unbindfault 表名.字段名4.删除默认值语法格式:drop default drfault_namen例:删除默认,先解绑。exec sp_unbindefault 学生表.学分godrop default def_xuefen课堂练习: 建立默认,绑定到学生表的性别上,约束名自行定义,然后解绑、删除。课后小结: 1. 数据完整性包括(四种)通过定义约束、规则和默认值来实现。 2. 约束是一种方法。 3. 规则和默认值是一种数据库对象。1.何谓数据完整性?2.约束是方法还是数据库对象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论