首页 > 代码库 > 数据库原理-数据库完整性

数据库原理-数据库完整性

关系数据库的完整性规则是数据库设计的重要内容。绝大部分关系型数据库管理系统RDBMS都可自动支持关系完整性规则,只要用户在定义(建立)表的结构时,注意选定主键、外键及其参照表,RDBMS可自动实现其完整性约束条件。

实体完整性

实体完整性指表中行的完整性。主要用于保证操作的数据(记录)非空、唯一且不重复。即实体完整性要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为“空”(NULL)或重复。

 


 

参照完整性

参照完整性(Referential Integrity)属于表间规则。对于相互关联的表,在更新、插入或删除记录时,如果只改其一,就会影响数据的完整性。
在关系数据库中,关系之间的联系是通过公共属性实现的。这个公共属性经常是一个表的主键,同时是另一个表的外键。参照完整性体现在两个方面:实现了表与表之间的联系,外键的取值必须是另一个表的主键的有效值,或是“空”值。
数据发生不一致时,系统有三种策略可以处理这种情况。
no action
拒绝执行,该策略一般是默认策略。
cascade
级联,删除或修改所有不一致的元组。
null
将所有不一致的元组对应的属性设置为空值。

 

用户自定义完整性

由用户定义的完整性要求,一般有数据库管理系统检验这类完整性。

属性上的约束条件定义:

  1. 列值非空
  2. 列值唯一
  3. check检验

元组上的约束条件定义:

check


 

触发器

触发器(trigger)是由事件来触发的保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由DDL和DML等语句执行触发的。

定义触发器:

 1 create trigger tri_insert 2 on student 3 for insert 4 as 5 declare @student_idchar(10) 6 select @student_id=s.student_id from students 7 inner join insertedion s.student_id=i.student_id 8 if @student_id=0000000001 9 begin10 raiserror(不能插入1的学号!,16,8)11 rollbacktran12 end13 go

触发器执行顺序:

before,sql,after

同一个表上多个before触发器,遵循谁先创建谁执行的顺序。

删除触发器

drop trigger <触发器名> on <表名>

 

数据库原理-数据库完整性