一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情。
MYSQL-数据库的完整性
需要:
掌握实体完整性的定义和维护方法
掌握参照完整性的定义和维护方法
掌握用户自定义完整性的定义和维护方法
掌握数据库触发器的设计和使用方法。
推荐内容:
1、定义实体完整性,删除实体完整性。能够写出两种方式定义实体完整性的SQL语句:创建表时定义实体完整性、创建表后定义实体完整性。设计SQL语句验证完整性约束是否起作用。
2、定义参照完整性,定义参照完整性的违约处理,删除参照完整性。写出两种方式定义参照完整性的SQL语句:创建表时定义参照完整性、创建表后定义参照完整性。
3、针对具体应用语义,选择NULL/NOT NULL、DEFAULT,UNIQUE等,定义属性上的约束条件。
4、定义BEFORE触发器和AFTER触发器。能够理解不同类型触发器的作用和执行原理,验证触发器的有效性。
实体完整性:
实体完整性是在关系模型中,数据库完整性三项规则的其中之一。实体完整性这项规则要求每个数据表都必须有主键,而作为主键的所有字段,其属性必须是独一及非空值。
参照完整性规则:
若属性或属性组F是基本关系R的外键,它与基本关系S的主键Ks相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组在F上的值必须为:
(1)空值,F的每个属性值均为空值。
(2)S中某个元组中的主键值(主码值)。
即参照的关系中的属性值必须能够在被参照关系找到或者取空值,否则不符合数据库的语义。在实际操作时如更新、删除、插入一个表中的数据,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确,不正确则拒绝操作。
用户自定义完整性:
实体完整性和参照完整性适用于任何关系型数据库系统,它主要是针对关系的主关键字和外部关键字取值必须有效而做出的约束。用户定义完整性则是根据应用环境 的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。这一约束机制一般不应由应用程序提供,而应有由关系模型提供定义并检验,用户定义完整性 主要包括字段有效性约束和记录有效性。
使用触发器和存储过程实现数据完整性:
触发器是一种特殊的存储过程,它不能被显示地调用,而是在向表中插入、更新或删除数据时被自动激活。所以,触发器可以用来对表实施复杂的完整性约束,当触发器所的数据发生改变时,触发器会自动被激活,从而防止对数据的不正确修改。
DROP TRIGGER IF EXISTS `.._.`;
DELIMITER ;;
CREATE TRIGGER XX
AFTER UPDATE ON X
FOR EACH ROW
BEGIN IF new.Grade >= 1.1*old.Grade
THEN INSERT INTO XX_X(Sno,Cno,OldGrade,NewGrade)
VALUES(old.Sno,old.Cno,old.Grade,new.Grade);
END IF;
END;
;;
DELIMITER ;