首页 2_第5章_数据库完整性_1

2_第5章_数据库完整性_1

举报
开通vip

2_第5章_数据库完整性_1null第五章 数据库完整性第五章 数据库完整性褚龙现 chulongxian@126.com回顾--存取控制回顾--存取控制自主存取控制方法- 授权与回收一、GRANT GRANT语句的一般格式: GRANT [,]... [ON ] TO [,]... [WITH GRANT OPTION]; 语义:将对指定操作对象的指定操作权限授予指定的用户 回顾-- 存取控制回顾-- 存取控制自主存取控制方法- 授权与回收二、REVOKE 授予的权限可以由DBA或...

2_第5章_数据库完整性_1
null第五章 数据库完整性第五章 数据库完整性褚龙现 chulongxian@126.com回顾--存取控制回顾--存取控制自主存取控制方法- 授权与回收一、GRANT GRANT语句的一般 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 : GRANT <权限>[,<权限>]... [ON <对象类型> <对象名>] TO <用户>[,<用户>]... [WITH GRANT OPTION]; 语义:将对指定操作对象的指定操作权限授予指定的用户 回顾-- 存取控制回顾-- 存取控制自主存取控制方法- 授权与回收二、REVOKE 授予的权限可以由DBA或其他授权者用REVOKE语句收回 REVOKE语句的一般格式为: REVOKE <权限>[,<权限>]... [ON <对象类型> <对象名>] FROM <用户>[,<用户>]...;回顾-- 存取控制回顾-- 存取控制自主存取控制方法-数据库角色一、角色的创建 CREATE ROLE <角色名> 二、给角色授权 GRANT <权限>[,<权限>]… ON <对象类型>对象名 TO <角色>[,<角色>]…回顾--存取控制回顾--存取控制自主存取控制方法-数据库角色三、将一个角色授予其他的角色或用户 GRANT <角色1>[,<角色2>]… TO <角色3>[,<用户1>]… [WITH ADMIN OPTION] 四、角色权限的收回 REVOKE <权限>[,<权限>]… ON <对象类型> <对象名> FROM <角色>[,<角色>]…回顾--视图机制回顾--视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护 主要功能是提供数据独立性,无法完全满足要求 间接实现了支持存取谓词的用户权限定义null 数据库完整性 完整性约束命名子句12教 学 内 容教 学 目 标教 学 目 标教学具体内容教学具体内容数据库完整性概述 实体完整性 参照完整性 用户定义的完整性 完整性约束命名字句5.1 数据库完整性概述5.1 数据库完整性概述数据库的完整性 数据的正确性和相容性 数据的完整性和安全性是两个不同概念 数据的完整性 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据 防范对象:不合语义的、不正确的数据 数据的安全性 保护数据库防止恶意的破坏和非法的存取 防范对象:非法用户和非法操作5.1 数据库完整性概述5.1 数据库完整性概述为维护数据库的完整性,DBMS必须: 1.提供定义完整性约束条件的机制 2.提供完整性检查的方法 3.违约处理5.2 实体完整性5.2 实体完整性关系模型的实体完整性 CREATE TABLE中用 PRIMARY KEY定义 单属性构成的码有两种说明方法 定义为列级约束条件 定义为 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 级约束条件 对多个属性构成的码只有一种说明方法 定义为表级约束条件 5.2 实体完整性5.2 实体完整性[例1]将Student表中的Sno属性定义为码 (1)在列级定义主码 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) NOT NULL, Ssex CHAR(2) , Sage SMALLINT, Sdept CHAR(20) );5.2 实体完整性5.2 实体完整性[例1]将Student表中的Sno属性定义为码 (2)在表级定义主码 CREATE TABLE Student (Sno CHAR(9), Sname CHAR(20) NOT NULL, Ssex CHAR(2) , Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY (Sno) ); 5.2 实体完整性5.2 实体完整性[例2]将SC表中的Sno,Cno属性组定义为码 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno,Cno) /*只能在表级定义主码*/ ); 5.2.1 实体完整性检查和违约处理5.2.1 实体完整性检查和违约处理插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括: 1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改 2. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改 5.3 参照完整性5.3 参照完整性关系模型的参照完整性定义 在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码 用REFERENCES短语指明这些外码参照哪些表的主码 5.3 参照完整性5.3 参照完整性[例3] 定义SC中的参照完整性 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno), /*在表级定义实体完整性*/ FOREIGN KEY (Sno) REFERENCES Student(Sno), /*在表级定义参照完整性*/ FOREIGN KEY (Cno) REFERENCES Course(Cno) /*在表级定义参照完整性*/ );5.3.1 参照完整性检查和违约处理5.3.1 参照完整性检查和违约处理可能破坏参照完整性的情况及违约处理5.3.1 参照完整性检查和违约处理5.3.1 参照完整性检查和违约处理参照完整性违约处理 1. 拒绝(NO ACTION)执行 默认策略 2. 级联(CASCADE)操作 3. 设置为空值(SET-NULL) 对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值5.3.1 参照完整性检查和违约处理5.3.1 参照完整性检查和违约处理[例4] 显式说明参照完整性的违约处理示例 CREATE TABLE SC ( Sno CHAR(9) NOT NULL,Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE /*级联删除SC表中相应的元组*/ ON UPDATE CASCADE, /*级联更新SC表中相应的元组*/ FOREIGN KEY (Cno) REFERENCES Course(Cno) ON DELETE NO ACTION /*当删除course 表中的元组造成了与SC表不一致时拒绝删除*/ ON UPDATE CASCADE /*当更新course表中的cno时,级联更新SC表中相应的元组*/ );5.4 用户定义的完整性5.4 用户定义的完整性用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求 RDBMS提供,而不必由应用程序承担5.4.1 属性上的约束条件5.4.1 属性上的约束条件CREATE TABLE时定义 列值非空(NOT NULL) 列值唯一(UNIQUE) 检查列值是否满足一个布尔表达式(CHECK)5.4.1 属性上的约束条件5.4.1 属性上的约束条件1.不允许取空值 [例5] 在定义SC表时,说明Sno、Cno、Grade属性不允许取空值 CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT NOT NULL, PRIMARY KEY (Sno, Cno), /* 如果在表级定义实体完整性,隐含了Sno,Cno不允许取空值,则在列级不允许取空值的定义就不必写了 * / ); 5.4.1 属性上的约束条件5.4.1 属性上的约束条件2.列值唯一 [例6] 建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主码 CREATE TABLE DEPT (Deptno NUMERIC(2), Dname CHAR(9) UNIQUE,/*要求Dname列值唯一*/ Location CHAR(10), PRIMARY KEY (Deptno) );5.4.1 属性上的约束条件5.4.1 属性上的约束条件3. 用CHECK短语指定列值应该满足的条件 [例7] Student表的Ssex只允许取“男”或“女”。 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Ssex IN (‘男’,‘女’) ) , /*性别属性Ssex只允许取'男'或'女' */ Sage SMALLINT, Sdept CHAR(20) );5.4.1 属性上的约束条件5.4.1 属性上的约束条件插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足 如果不满足则操作被拒绝执行 检查和违约处理5.4.2 元组上的约束条件5.4.2 元组上的约束条件在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制 同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件 5.4.2 元组上的约束条件5.4.2 元组上的约束条件[例9] 当学生的性别是男时,其名字不能以Ms.打头。 CREATE TABLE Student (Sno CHAR(9), Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY (Sno), CHECK (Ssex='女' OR Sname NOT LIKE 'Ms.%') /*定义了元组中Sname和 Ssex两个属性值之间的约束条件*/ );5.4.2 元组上的约束条件5.4.2 元组上的约束条件检查和违约处理插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足 如果不满足则操作被拒绝执行 5.5 完整性约束命名子句5.5 完整性约束命名子句CONSTRAINT 约束 CONSTRAINT <完整性约束条件名> [ PRIMARY KEY短语 | FOREIGN KEY短语 | CHECK短语 ]5.5 完整性约束命名子句5.5 完整性约束命名子句[例10] 建立学生 登记表 调解登记表下载应聘登记表下载调解登记表下载调解登记表下载调解登记表下载 Student,要求学号在90000~99999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。 CREATE TABLE Student (Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999), Sname CHAR(20) CONSTRAINT C2 NOT NULL, Sage NUMERIC(3) CONSTRAINT C3 CHECK (Sage < 30), Ssex CHAR(2) CONSTRAINT C4 CHECK (Ssex IN ( '男','女')), CONSTRAINT StudentKey PRIMARY KEY(Sno) );5.5 完整性约束命名子句5.5 完整性约束命名子句修改表中的完整性限制 使用ALTER TABLE语句修改表中的完整性限制5.5 完整性约束命名子句5.5 完整性约束命名子句[例13] 修改表Student中的约束条件,要求学号改为在900000~999999之间,年龄由小于30改为小于40 可以先删除原来的约束条件,再增加新的约束条件 ALTER TABLE Student DROP CONSTRAINT C1; ALTER TABLE Student ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999), ALTER TABLE Student DROP CONSTRAINT C3; ALTER TABLE Student ADD CONSTRAINT C3 CHECK (Sage < 40);null小 结数据库完整性指的是数据的正确性和相容性 实体完整性主要对主键进行约束 实体完整性的检查和违约处理 参照完整性主要对外码进行约束 参照完整性的检查和违约处理 用户定义的完整性可以从列角度定义也可从行的角度 用户定义的完整性也有违约处理 完整性约束命名子句的语法下次课程内容 触发器下次课程内容 触发器
本文档为【2_第5章_数据库完整性_1】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_034467
暂无简介~
格式:ppt
大小:2MB
软件:PowerPoint
页数:0
分类:工学
上传时间:2013-04-17
浏览量:18