已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
An Introduction to Database Systems,1,上节回顾,第四章 数据库安全性 4.2 数据库安全性控制 授权与回收 数据库角色 强制存取控制方法 4.4 审计 4.5 数据加密 4.6 统计数据库安全性,An Introduction to Database Systems,2,数据库系统概论 An Introduction to Database System 第五章 数据库完整性,东莞理工学院城市学院 计算机与信息科学系,An Introduction to Database Systems,3,第五章 数据库完整性,定义 指数据的正确性和相容性 目的 为了防止不合语义的数据进入数据库。 现实世界的实例: 学生的性别只能是男或女; 本科生的年龄必须是整数,取值范围为1450; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系;,An Introduction to Database Systems,4,第五章 数据库完整性,完整性和安全性的区别 目的不同 完整性是防止数据库中存在不正确的数据; 安全性是防止数据库被恶意破坏或非法存取。 防范对象不同 完整性是防范不合语义、不正确的数据; 安全性是防范非法用户和非法操作。,An Introduction to Database Systems,5,数据库完整性,完整性控制机制包括: 完整性约束条件定义机制 DBMS应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中 完整性检查的方法 检查用户发出的操作请求是否违背了完整性约束条件,一般在:INSERT、UPDATE、DELETE语句执行后以及事务提交时检查。,An Introduction to Database Systems,6,数据库完整性,违约处理 如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性,包括:拒绝(NO ACTION)执行该操作,或级联(CASCADE)执行其他操作。,An Introduction to Database Systems,7,第五章 数据库完整性,5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 5.6 触发器 5.7 小结,An Introduction to Database Systems,8,5.1.1 实体完整性定义,在CREATE TABLE中用PRIMARY KEY定义,可以是列级约束条件也可以是表级约束条件,但有些时候只能定义表级约束条件。,An Introduction to Database Systems,9,5.1.1 实体完整性定义,【例1】将Student表中的Sno属性定义为码 CREATE TABLE Student /*列级定义主码*/ (Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(15);,An Introduction to Database Systems,10,5.1.1 实体完整性定义,CREATE TABLE Student /*表级定义主码*/ (Sno CHAR(9) , Sname CHAR(20) NOT NULL, Ssex CHAR(2) , Sage SMALLINT, Sdept CHAR(15), PRIMARY KEY (Sno) );,An Introduction to Database Systems,11,5.1.1 实体完整性定义,【例2】将SC表中的Sno,Cno属性组定义为码 CREATE TABLE SC /*只能在表级定义主码*/ (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno) );,An Introduction to Database Systems,12,5.1.2 实体完整性检查和违约处理,检查 当用户程序对基本表插入一条记录或对主码进行更新操作时进行检查。 包括: 检查主码的值是否唯一,不唯一则拒绝操作; 检查主码的各个属性是否为空,只要有一个为空就拒绝操作。,An Introduction to Database Systems,13,第五章 数据库完整性,5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 5.6 触发器 5.7 小结,An Introduction to Database Systems,14,第五章 数据库完整性,附:创建Course表的SQL语句 CREATE TABLE Course( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) );,An Introduction to Database Systems,15,5.2.1 参照完整性定义,在CREATE TABLE中用FOREIGN KEY定义哪些列为外码,用REFERENCES短语指明这些外码参照哪些表的主码。,An Introduction to Database Systems,16,5.2.1 参照完整性定义,【例3】定义SC中的参照完整性 CREATE TABLE SC( Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) );,An Introduction to Database Systems,17,5.2.2 参照完整性检查和违约处理,检查 当用户程序对被参照表和参照表时进行增删改操作时进行检查。 处理: 对参照表的增、改外码值时可能破坏参照完整性,则以拒绝操作处理。 对被参照表进行删、修改主码值时可能破坏参照完整性,则以拒绝/级联删除/设置为空值操作处理。,An Introduction to Database Systems,18,5.2.2 参照完整性检查和违约处理,【注意】系统默认的处理方式是拒绝处理,如果要让系统采用其他策略,则要在创建表时显式定义。,An Introduction to Database Systems,19,5.2.2 参照完整性检查和违约处理,【例4】显式说明参照完整性的违约处理示例 CREATE TABLE SC( Sno CHAR(9) , Cno CHAR(4) , Grade SMALLINT, PRIMARY KEY (Sno, Cno), FOREIGN KEY Sno REFERENCES Student(Sno) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY Cno REFERENCES Course(Cno) ON DELETE NO ACTION ON UPDATE CASCADE, );,当删除Student表中的元组时,级联删除SC表中相应的元组,An Introduction to Database Systems,20,第五章 数据库完整性,5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 5.6 触发器 5.7 小结,An Introduction to Database Systems,21,5.3.1 属性上的约束条件的定义,在CREATE TABLE中根据需要定义,包括: 列值非空(NOT NULL) 列值唯一(UNIQUE) 检查列值是否满足一个布尔表达式(CHECK),An Introduction to Database Systems,22,5.3.1 属性上的约束条件的定义,用CHECK短语指定列值应该满足的条件 【例8】SC表的Grade的值应该在0和100之间。 CREATE TABLE SC( Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT CHECK (Grade=0 AND Grade=100), PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) );,An Introduction to Database Systems,23,5.3.2属性上的约束条件检查和违约处理,检查 当往表中插入元组或修改属性的值时进行检查。 处理: 不满足则以拒绝操作处理。,An Introduction to Database Systems,24,5.3.3 元组上的约束条件的定义,用CHECK短语指定表级应该满足的条件 【例9】当学生的性别是男时,其名字不能以Ms.打头。 CREATE TABLE Student (Sno CHAR(9) , Sname CHAR(20) NOT NULL, Ssex CHAR(2) , Sage SMALLINT, Sdept CHAR(15), PRIMARY KEY (Sno), CHECK (Ssex=女 OR Sname NOT LIKE Ms.%) );,An Introduction to Database Systems,25,5.3.4 元组上的约束条件检查和违约处理,检查 当往表中插入元组或修改属性的值时进行检查。 处理: 不满足则以拒绝操作处理。,An Introduction to Database Systems,26,第五章 数据库完整性,5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 5.6 触发器 5.7 小结,An Introduction to Database Systems,27,1 完整性约束命名子句,在CREATE TABLE中提供了完整性约束命名子句:CONSTRAINT。 CONSTRAINT 格式: CONSTRAINT PRIMARY KEY 短语|FOREIGN KEY 短语|CHECK 短语,An Introduction to Database Systems,28,1 完整性约束命名子句,【例10】建立学生登记表Student,要求学号在2010000120102999,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。,An Introduction to Database Systems,29,1 完整性约束命名子句,CREATE TABLE Student (Sno NUMERIC(8) CONSTRAINT C1 CHECK (Sno BETWEEN 2010001 AND 20102999), Sname CHAR(20) CONSTRAINT C2 NOT NULL, Ssex CHAR(2) CONSTRAINT C3 CHECK (Ssex IN(男,女), Sage NUMERIC(3) CONSTRAINT C4 CHECK (Sage30), Sdept CHAR(15) CONSTRAINT StudentKey PRIMARY KEY (Sno) );,An Introduction to Database Systems,30,1 完整性约束命名子句,【例11】建立教师表TEACHER,要求每个教师的应发工资不低于3000元。 CREATE TABLE TEACHER (Eno NUMERIC(4) PRIMARY KEY, Sname CHAR(10), Job CHAR(10), Sal NUMERIC(7,2), Deduct NUMERIC(7,2), Deptno NUMERIC(2), CONSTRAINT EmpFKey FOREIGN KEY(Deptno) REFERENCES DEPT(Deptno), CONSTRAINT C1 CHECK (Sal+Deduct=3000) );,An Introduction to Database Systems,31,2 修改表中的完整性限制,在ALTER TABLE中修改表中完整性限制。 可先删除原来的约束条件再增加新的约束条件。 删除:ALTER TABLE 表名 DROP CONSTRAINT 增加:ALTER TABLE 表名 ADD CONSTRAINT CHECK 例子见课本P159例13。,An Introduction to Database Systems,32,SQL Server 2000中添加默认值约束,格式: ALTER TABLE 用户名.表名 ADD CONSTRAINT 默认值名 DEFAULT 具体值 FOR 字段名 删除: ALTER TABLE 用户名.表名 DROP CONSTRAINT 默认值名,An Introduction to Database Systems,33,【例】: ALTER TABLE dbo.Student ADD CONSTRAINT df_Stu DEFAULT 计算机系 FOR Sdept; 删除: ALTER TABLE dbo.Student DROP CONSTRAINT df_Stu;,SQL Server 2000中添加默认值约束,An Introduction to Database Systems,34,第五章 数据库完整性,5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名子句 5.6 触发器 5.7 小结,An Introduction to Database Systems,35,5.6 触发器,触发器(Trigger)是一种特殊类型的存储过程; 触发器主要是通过事件进行触发而被执行的; 当对某一表进行诸如UPDATE、 INSERT、 DELETE 这些操作时,SQL Server 就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则; 触发器的主要作用就是其能够实现由主码和外码所不能保证的复杂的参照完整性和数据的一致性。,An Introduction to Database Systems,36,5.6.1 定义触发器,SQL2000中创建触发器的一般格式: CREATE TRIGGER 触发器名 ON 表名 | 视图名 FOR|AFTERINSERT,UPDATE,DELETE AS IF UPDATE(列名)AND|ORUPDATE(列名)n SQL语句 n ,An Introduction to Database Systems,37,5.6.1 定义触发器,说明: 创建表的用户才可以创建此表的触发器,一个表只能创建一定数量的触发器。 表名为触发器的目标表的名称。 AFTER:指定触发器只有在触发 SQL 语句中指定的所有操作都已成功执行后才激发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。,An Introduction to Database Systems,38,5.6.1 定义触发器,触发事件可以是:INSERT、DELETE、UPDATE或上述事件的组合,另外,UPDATE后面还可以有OF,即进一步指明修改哪些列时触发器激活。 AS:是触发器要执行的操作。 SQL语句:是触发器的条件和操作。触发器条件指定其它准则,以确定 DELETE、INSERT 或 UPDATE 语句是否导致执行触发器操作。,An Introduction to Database Systems,39,5.6.1 定义触发器,触发器被激活时,只有当触发条件为真时,触发动作体才执行;否则触发动作体不执行。如果省略触发条件,则触发动作体在触发器被激活后立即执行。 触发器动作体可以是SQL过程块或对已创建的存储过程的调用。,An Introduction to Database Systems,40,5.6.1 定义触发器,IF UPDATE (列名) :测试在指定的列上进行的 INSERT 或 UPDATE 操作,不能用于 DELETE 操作。可以指定多列。因为在 ON 子句中指定了表名,所以在 IF UPDATE 子句中的列名前不要包含表名。,An Introduction to Database Systems,41,5.6.1 定义触发器,【例】定义一个BEFORE行级触发器,为教师表Teacher定义完整性规则“教授的工资不得低于4000元,如果低于4000元,则自动改为4000元”。 CREATE TRIGGER Insert_Or_Update_Sal BEFORE INSERT OR UPDATE ON Teacher FOR EACH ROW AS BEGIN IF(new.Job=教授) AND (new.Sal4000) THEN new.Sal:=4000; END IF; END,An Introduction to Database Systems,42,5.6.1 定义触发器,【例18】SQL2000 CREATE TRIGGER Insert_Or_Update_Sal ON Teacher FOR INSERT, UPDATE AS IF EXISTS (SELECT * FROM Teacher WHERE Job=教授 AND Sal4000) UPDATE Teacher SET Sal=4000;,An Introduction to Database Systems,43,5.6.2 激活触发器,【例】Insert触发器 CREATE TRIGGER insert_student ON Student AFTER INSERT AS PRINT 数据插入成功!; 当执行Insert语句时,会激活此触发器: insert into Student values(201015131,王五,男,20,CS);,An Introduction to Database Systems,44,5.6.2 激活触发器,【例】Insert触发器 CREATE TRIGGER insert_student_1 ON Student AFTER INSERT AS DECLARE a CHAR(9) Select a=Inserted.Sno From Inserted PRINT 学号为+a+的学生数据插入成功!;,An Introduction to Database Systems,45,5.6.2 激活触发器,【例】Update触发器 CREATE TRIGGER update_student ON student AFTER UPDATE AS SELECT * FROM student ORDER BY sno; 当更新数据时就触发了这个查询语句,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年《工程造价计价与控制》造价专业期末试题
- 电路理论二考试题及答案
- 专利代理人考试专利法试题及参考答案
- 2026生物高考浙江省模拟试题试卷+参考答案
- 2026年《薪酬福利管理》人力资源管理期末试卷
- 体育理论考试题库及参考答案
- 2026煤炭知识试题及答案
- 《瑞士千分杠杆表》课件
- 《现代社区工作导言》课件
- 《朗读课文思考讨论》课件
- 2026年绍兴市原水集团有限公司人员招聘笔试参考试题及答案详解
- 第八版内科冠心病课件讲课教案
- 2026年第三季度典型事故案例警示教育
- 第一次月考试卷(1~2单元)(含答案)-2026-2027学年人教版数学三年级上册
- T/CAPA 16-2025医疗美容从业人员执业规范
- 《人工智能技术与应用》课件 项目9 人工智能训练
- 大体积混凝土浇筑施工应急预案
- 四上《习作:我的心儿怦怦跳》课件
- 2026年秋季开学教师防欺凌治理培训课件
- 安全风险辨识评估作业指导书
- 2026年新编军事理论考试题及答案
评论
0/150
提交评论