第6篇-数据库保护机制_Z_New.ppt

  1. 1、本文档共114页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 数据库保护机制 6.1 数据库的完整性 数据库的完整性指数据的正确性和有效性 。 数据库的完整性是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓“垃圾进垃圾出”所造成的无效操作和错误结果。 数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库完整性是非常重要的。 6.1 数据库的完整性 数据库的完整性是由DBMS的完整性控制子系统实现的。其主要功能为: 1.完整性检查功能。检查用户发出的操作请求是否违背了完整性约束条件; 2.应对操作。如果发现用户操作违背了完整性规则,为保证数据的完整性而采取的动作。(如撤销用户操作) 6.1.1 完整性规则 完整性规则是指附加在数据库数据上的语义约束条件。 每一条完整性规则包括3个部分: (1)触发条件:确定什么操作使用规则进行检查; (2)约束条件: 确定要检查什么样的错误; (3)应对措施:确定如果查出错误该怎么处理。 完整性规则作用的对象可以是关系、元组和列。 6.1.2 SQL Server的完整性 本节介绍SQL Server的完整性控制策略。 SQL Server数据完整性有四种类型: 实体完整性、域完整性、 参照完整性、用户定义完整性 6.1.2 SQL Server的完整性 1. 实体完整性 构成主键的主属性不能取空值 。体现为: UNIQUE唯一性约束(不允许为null) PRIMARY KEY 约束(不允许为null) 例: CREATE TABLE 选课 (学号 CHAR(6) ,… … , PRIMARY KEY(学号,课号) , … ) 或 CREATE TABLE 学生 (学号 CHAR(6) UNIQUE,…) 6.1.2 SQL Server的完整性 2. 域完整性 属性列(字段)满足的约束条件。体现为: (1)对数据类型的约束:包括数据的类型、长度、单位、精度等。 (2)对数据格式的约束 例:规定学号的前两位表示入学年份,中间两位表示系的编号,后四位班级和序号,xxxxxxxx。 出生日期:YY-MM-DD 6.1.2 SQL Server的完整性 (3)对取值范围或取值集合的约束. ?例如:规定成绩的取值范围为0~100 ?域级check子句 (4)对空值的约束:有的列允许取空值,有的列不允许取空值。 (5)设置默认值default约束。 6.1.2 SQL Server的完整性 3. 参照完整性(外键完整性) 两个表之间满足的参照(引用)关系的约束。即:外键表中外键的取值参照主键表中主键的值 。 体现为: CREATE TABLE 选课 (…. , FOREIGN KEY(学号) REFERENCES 学生(学号) ON DELETE CASCADE | NO ACTION ON UPDATE CASCADE | NO ACTION, …) 6.1.2 SQL Server的完整性 4. 用户定义完整性 用户定义完整性是针对应用业务需要而定义的完整性约束条件。体现为: (1) 表定义语句中的CHECK子句 (2) 触发器 (3) 规则(下节介绍) 6.1.3 使用规则和触发器实现完整性 一般不是很复杂的完整性约束都是在create table语句中定义。更复杂的完整性实现要用触发器和规则。 定义表时没有定义的约束,可以在以后通过创建触发器和规则来实现。 check约束优先于触发器约束和规则约束执行。 6.1.3 使用规则和触发器实现完整性 *1. 使用规则实现完整性 规则是独立于表的单独定义、存储的数据库对象。 6.1.3 使用规则和触发器实现完整性 @Birthday=‘1980-01-01’ AND @Birthday=GETDATE( ) @grade IN(‘a’,’A’, ’B’,’b’, ’C’,’c’, ’D’,’d’) @code LIKE ‘ [a-z]%[0-9] ’ 例1 创建sno_rule规则,使得学号只能是6位数字字符。 CREATE RULE sno_rule AS @sno LIKE ‘[0-9][0-9][0-9][0-9][0-9][0-9]’ 6.1.3 使用规则和触发器实现完整性 规则的绑定 创建好规则后,规则只是存储在数据库中的对象并没有发生作用,只有将规则绑定到相应表的属性列,才能实现完整性约束。 用存储过程s

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档