6第六章 SQL中的约束和触发程序.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6第六章 SQL中的约束和触发程序

第六章 SQL中的约束和触发程序 Constraints and Triggers in SQL 概述 关系数据模型 关系数据结构 关系操作集合 关系完整性约束 是对关系的某种约束条件 防止对数据的意外破坏 概述 关系模型的完整性约束 实体完整性 参照完整性 用户定义的完整性 概述 完整性的要求 数据库中数据的正确性、相容性 约束的实现 DBMS支持对约束的声明 for data 使用触发器(触发程序) for action (event) SQL中的键码 主码和候选吗 Primary Key Unique Key Index 一般在Primary Key上自动加上Index 在Unique上的Index需另行声明 SQL中的键码 实体完整性 候选码的属性不能取Null、也不能有重复值 反映同一关系中属性与属性之间的约束 SQL中的键码——声明 Create Table MovieStar( name char(30) Primary Key, address Varchar(255), gender char(1), birthday Date ); SQL中的键码——声明 SQL中的键码——声明 Create Table Movie( title char(20), year integer, incolor boolean, studioname char(20), producerC# integer, Primary Key(title,name) ); SQL中的键码——声明 SQL中的键码——声明 参照完整性和外键 参照完整性和外键——声明 参照完整性和外键——声明 保持参照完整性 参照完整性的违例 从表 插入从表元组,且外键不为Null 修改从表外键,且不为Null 主表 删除主表元组,其已被参照 修改主表主键,其已被参照 Drop Table 保持参照完整性——策略 RESTRICT 前述违例的情况均不能操作 这是所有DBMS产品均支持的方式 安全的默认方式 保持参照完整性——策略 CASCADE 对主表的违例操作 所有从表中的相关元组被级联删除或更新 保持参照完整性——策略 SET NULL 对主表的违例操作 从表中相关外键的值均被置为Null(前提是允许为Null) 保持参照完整性——策略 SET DEFAULT 对主表的违例操作 从表中相关外键的值均被置为相应的Default Value 保持参照完整性——策略 对属性值的约束 属性约束 not null check( ) with attribute 域约束 check( ) with domain 对属性值的约束——Not Null 在定义属性时约束该属性不可取Null sname char(20) not null Primary Key约束: 隐含Not Null 不加约束: 隐含允许Null 对属性值的约束——Check 在定义属性时约束该属性必须使Check 为True sage smallint Check(sage =15), gender char(1) Check(gender in (‘F’, ‘M’)) Be Careful ! !不合适的情形 Check中的子查询 Check中涉及其他属性或关系 对属性值的约束——Domain 使Domain包含Check 将Domain作用于属性 Create Domain GenderDomain char(1) Check(Value in (‘F’, ‘M’)) gender GenderDomain, 以Value替代属性名 全局约束 针对元组/关系的约束声明 基于元组的Check 基于整个关系或多个关系的Check 全局约束——元组Check 存在于关系定义中的Check 对关系中的当前元组的约束 不适于多关系、子查询 …… check(gender = ‘F’ OR sname Not Like ‘Ms.%’), check(gender = ‘M’ OR sname Not Like ‘Mr.%’), …… 全局约束——断言Assertion 涉及整个关系、多关系的约束 适用涉及子查询、复杂约束 真正的全局约束 独立于关系 全局约束——断言Assertion Assertion的声明 Create Assertion 名称 Check(表达式) 表达式中属性的引用必须显式说明 Select-From-Where Check(presC# Not In (Select cert# From Movieexec Where netWorth ) 约束的命名 属性约束 Name char(10) Const

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档