维护数据的完整性剖析.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
维护数据的完整性 7.1 数据完整性概述 数据库的完整性描述为数据库内容的完整性约束集合,其中完整性约束指数据库的一个状态是否合理。数据库系统检查数据的状态和状态转换,判定它们是否合理,是否应予接受。对一个数据库操作,要判定其是否符合完整性约束,全部判定无矛盾时才可以执行。 数据完整性包括实体完整性、域完整性、引用完整性、用户定义完整性。 7.1.1 实体完整性 实体完整性(Entity Integrity)保证一个表中的每一行必须是唯一的(元组的唯一性)。 实体完整性可以通过索引、UNIQUE 约束、PRIMARY KEY 约束或 IDENTITY 属性来实现。 表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。 一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。 可使用 UNIQUE 约束确保在非主键列中不输入重复值。尽管 UNIQUE 约束和 PRIMARY KEY约束都强制唯一性,但在强制非主键的一列或列组合的唯一性时应使用 UNIQUE 约束而不是 PRIMARY KEY 约束,另外对于允许空值的列也使用UNIQUE约束。 标识符列可用 IDENTITY 属性建立,使应用程序开发人员得以对表中所插入的第一行指定标识数字(Identity Seed 属性),并确定要添加到种子上的增量(Identity Increment 属性)以决定后面的标识数字。 7.1.2 域完整性 域完整性(Field Integrity)保证一个数据库不包含无意义的或不合理的值,即保证表的某一列的任何值是该列域(即合法的数据集合)的成员。 强制域有效性的方法有:限制类型(通过数据类型)、格式(通过 CHECK 约束和规则)或可能值的范围(通过CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则) CHECK 约束通过限制输入到列中的值来强制域的完整性 通过为列定义DEFAULT,如果该列没有输入数据时,可以强制填充,以此强制域的完整性。 为列定义NOT NULL限制列不能为空值,也可以实现域的完整性。 7.1.3 引用完整性 引用完整性(Reference Integrity)定义了一个关系数据库中不同的列和不同的表之间的关系(主键与外键)。要求一列或一组列中的值必须要与相关的一列或一组列中的值相匹配。从属的一列或一组列称之为外键(Foreign Key)。被引用的列或一组列称之为父键,父键必须是一个主键或唯一键。外键属于子表或明细表,父键属于父表或主表。若父键和外键属于同一表,则称之为自引用完整性。子表某行的外键必须与主表的主键相匹配,只要依赖于某主键的外键仍存在,主表中包含该主键的行就不能删除。 在输入或删除记录时,引用完整性保持表之间已定义的关系,确保键值在所有表中一致。 7.1.4 用户定义完整性 用户定义完整性使您得以定义不属于其它任何完整性分类的特定业务规则。由于每个公司的数据库都有自己独特的业务规则集,所以系统必须有一种方式来实现定制的业务规则即定制的数据完整性约束。 用户定义完整性可以通过用户定义数据类型、规则、存储过程和触发器来实现。 7.2 利用约束维护数据的完整性 利用约束可以实现数据完整性,约束包括:DEFAULT约束、CHECK约束、UNIQUE约束、PROMARY KEY约束、FOREIGN KEY 约束和级联引用完整性约束。 7.2.1 DEFAULT 约束 DEFAULT通过指定列的默认值,每个列中只能有一个DEFAULT约束。如果列已有默认值,必须除去旧默认值后才能添加新默认值。 DEFAULT约束只用于INSERT INTO 语句,当在INSERT 语句中没有指定一个值,DEFAULT约束在列中自动输入一个值。 7.2.1 DEFAULT 约束 实现语法: [CONSTRAINT contraint_name] DEFAULT contraint_expression 例程7.1:在Contract表中有一列币种(MoneyType),如果在新建一个合同时,没有指定币种,则系统自动填充为人民币(RMB),为此需要建立一个DEFAULT约束如下: ALTER TABLE Contract ADD CONSTRAINT def_Contract DEFAULT ‘RMB’ FOR MoneyType 7.2.2 CHECK约束 CHECK约束是通过限制可输入到一列或多列中的可能值来强制实现域的完整性。可

文档评论(0)

舞林宝贝 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档