第6章 数据库安全性及完整性.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * CREATE TABLE SC (S# CHAR(8)NOT NULL C# CHAR(10)NOT NULL G NUMBERIC(3)NOT NULL PRIMARY KEY(S#,C#)); 6.4.3 用户定义完整性约束 * 例6-22 定义关系DEPT CREATE TABLE DPET (DEP# NUMBERIC(2), Dn CHAR(8)UNIQUE, /*C#属性不允许取空值*/ Loc CHAR(10), PRIMARY KEY(DEP#); /*在关系级别上定义主键*/ 6.4.3 用户定义完整性约束 * 例6-23 S关系中限定Se只能取“male”或“female”。 CREATE TABLE S (S#  CHAR(8)PRIMARY KEY,/*在属性列级别上定义主键*/ Sn CHAR(8)NOT NULL,/*C#属性不允许取空值*/ Se CHAR(2)CHECK(Se IN(“male”,“female”)),    /*Se属性只能取“male”或“female” */ Sd CHAR(20)); 6.4.3 用户定义完整性约束 * 2.基于元组约束 基于元组完整性限制可以设置不同属性间取值的相应约束条件。 在例8-12中加入CHECK子句: …… Sa NUMERIC(2), CHECK(Sa BETWEEN 18 AND 25), UNIQUE(Card#), PRIMARY KEY(S#); 6.4.3 用户定义完整性约束 * CHECK子句只对定义其的关系起到约束作用,对其他关系没有约束作用,有可能会产生违反参照完整性的情形。 例8-25 对关系SC中加入CHECK子句: CHECK (S# IN (SELECT S# FROM S)) CHECK (C# IN (SELECT C# FROM C)) 6.4.3 用户定义完整性约束 * 此时,就会出现违反参照完整性的情况,即当关系S中删除一个元组时,该操作与关系SC中的CHECK无关。这样,如果SC还存在被删除学生的选课元组,SC就会不满足CHECK子句的约束。在CHECK子句中的条件最好不要涉及其他关系,而使用外键子句或断言子句定义相关完整性。 6.4.3 用户定义完整性约束 * CREATE TABLE SC (S# NUMBERIC(6), C# CHAR(3), G INT, RRIMARY KEY (S#,C#), FOREIGN KEY(S#)REFRERCENCE S, FOREIGN KEY(C#)REFRERCENCE S, CHECK((G IS NULL)OR(G BETWEEN 0 AND 100))); 6.4.3 用户定义完整性约束 * 3.域约束与断言约束 在用户自定义完整性约束过程中,还可以使用域约束和断言约束两种技术。 (1)域约束 SQL域约束的含义是作用于所有属于指定域的属性列的约束,并且使用“CREATE DOMAIN”语句实现该约束,约束语句中允许出现CHECK子句。 6.4.3 用户定义完整性约束 * 域约束规则基本形式为 CREATE DOMAIN 域名域类型CHECK条件 为了便于引用,约束可以命名。约束命名使用保留字CONSTRAINT。 6.4.3 用户定义完整性约束 * 例6-26 CREATE DOMAIN Grades CHAR(1)DEFULT‘?’ CONSTRAINT VALID-Grades CHECK(VALUE IN (‘A’,‘B’,‘C’,‘D’,‘E’,‘?’)); 8.4.3 用户定义完整性约束 * 说明 上述语句定义了一个新的域Grades,并且加了一个名为“VALID-Grades”的域约束,CHECK子句指明了定义在该域上列上的取值,缺省值为“?”。 如果对学生成绩基本关系SC(S#,C#,G)中的G用域Grades定义: CREATE TABLE SC (S# NUMERIC(6), C# CHAR(6), G Grades, ……); 6.4.3 用户定义完整性约束 * 则关系示对SC进行插入操作时,每插入一条学生成绩记录,其成绩G就必须为CHECK子句中指明的值,缺省时为“?”,否则为非法成绩值,系

文档评论(0)

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

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

1亿VIP精品文档

相关文档