网站大量收购独家精品文档,联系QQ:2885784924

沈阳工业大学信息科学与工程学院数据库原理与应用课件 第五章.ppt

沈阳工业大学信息科学与工程学院数据库原理与应用课件 第五章.ppt

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 数据库完整性 什么是数据库的完整性 数据的正确性和相容性 防止不合语义的数据进入数据库。 例: 学生的年龄必须是整数,取值范围为14--29; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系; 完整性:能否真实地反映现实世界 DBMS完整性控制机制组成 完整性约束条件定义机制 根据实际应用需求, 数据库中的数据应满足一些规定的条件,是现实世界真实的反映 数据模型的组成部分,约束数据库中数据的语义 DBMS应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中 完整性检查机制 指DBMS中检查数据是否满足完整性条件的机制 检查用户发出的操作请求是否违背了完整性约束条件 违约反应 如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。 完整性约束条件 完整性约束条件分为: 值的约束和结构约束: 完整性约束条件 静态约束和动态约束: 立即执行约束和延迟执行约束: 5.1 实体完整性 实体完整性定义(定义主码) 在CREATE TABLE中用PRIMARY KEY定义 单属性构成的码可以定义为列/表级约束 多个属性构成的码可以定义为表级约束 例题 实体完整性检查和违约处理 插入新记录或修改主码时检查 主码是否唯一 主码的各个属性是否为空 5.2 参照完整性 参照完整性定义(外码定义) 在CREATE TABLE中用FOREIGN KEY定义外码 用REFERENCES指明外码参照哪些表的主码 例子 参照完整性检查和违约处理 外码是否可以接受空值的问题 例:学生-选课数据库 Student关系为被参照关系,其主码为Sno。 SC为参照关系,外码为Sno。 若SC的Sno为空值:表明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课程,其成绩记录在Grade中 与学校的应用环境是不相符的,因此SC的Sno列不能取空值。 显式说明参照完整性的违约处理示例 P156例4 5.3 用户定义的完整性 属性上的约束条件的定义 列值非空(NOT NULL短语) 列值唯一(UNIQUE短语) 检查列值是否满足一个布尔表达式(CHECK短语) 不允许取空值 CREATE TABLE SC (SNO CHAR(9) NOT NULL, CNO CHAR(4) NOT NULL, GRADE SMALLINT NOT NULL, PRIMARY KEY (SNO,CNO)); 列值唯一 CREATE TABLE DEPT (DEPTNO NUMBERIC(2), DNAME CHAR(9) UNIQUE, . . ); 指定列值应该满足的条件(例7、例8) CREATE TABLE STUDENT (SNO CHAR(9) PRIMARY KEY, SNAME CHAR(8) NOT NULL, SSEX CHAR(2) CHECK (SSEX IN (‘男’,’女’)), SAGE SMALLINT, SDEPT CHAR(20)); 属性上的约束条件检查和违约处理 元组上的约束条件的定义 在CREATE TABLE中用CHECK 短语定义 可以设置不同属性之间的取值的相互约束条件 例9 元组上的约束条件检查和违约处理 5.4 完整性约束命名子句 SQL提供了完整性约束命名子句 CONSTRAINT 〈完整性约束条件名〉 [PRIMARY KEY 短语|FOREIGN KEY 短语| CHECK 短语] 例题10 、11 5.6 触发器 触发器(Trigger)是用户定义在关系表上的一类特殊类型的存储过程。一旦定义,任何用户对表的插入、删除和更新操作均可由服务器自动激活相应的触发器。 实现复杂完整性约束的有效方法 定义触发器 CREATE TRIGGER 〈触发器名〉 {BEFORE|AFTER} 〈触发时间〉 ON 〈表名〉 FOR EACH {ROW|STATEMENT} [WHEN 〈触发条件〉 〈触发动作体〉 * * 指对数据取值类型、 范围、精度等的规 定, 例如对属性规定 某个值集, 规定属性 取值类型、格式(职 工号第一位为字母, 后面是四位数字) 指对数据之间联系的限制, 以关 系库为例:同一关系的不同属性 之间可能满足一定的约束条件( A1?A2); 不同关系之

文档评论(0)

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

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

1亿VIP精品文档

相关文档