复习六――数据库完整性

匿名 (未验证) 提交于 2019-12-03 00:32:02

数据库完整性概念

数据库完整性是指保护数据库中数据的

  • 正确性:数据的合法性
  • 有效性:数据是否在有效范围内
  • 相容性:指表示同一个事实的两个数据应该一致

完整性规则定义

  • D(Data):约束作用的数据对象
  • O(Operation):触发完整性检查的数据库操作,立即检查还是延迟检查。
  • A(Assertion):数据对象要满足的断言或语义规则
  • C(Condition):受A作用的数据对象值的谓词
  • P(Procedure):违反完整性规则时触发的过程

完整性约束按约束作用类型分类

域完整性

域是一组具有相同类型的值的集合。SQL支持域的概念。通过以下语句创建域,并对其中的限制命名。

create Domain GenderDomain char(2)      constraint chkGD check (value in (,Ů));  # 使用域,sex的取值来自GenderDomain create Table student (     Sno char(10),     sex GenderDomain,     Sname char(20) )

实体完整性

关系模式R的主码不可为空

参照完整性

参照关系R的任一个外码值必须等于被参照关系S中所参照的候选码的某个值,或者为空

完整性的实施途径

约束(Constraint)

  • 主键约束(Primary Key)
  • 唯一键约束(Unique)
  • 外键约束(Foreign Key)
  • 检查约束(Check)
  • 默认值约束(Default)

触发器(Trigger)

与特定表关联的存储过程。当在该表上执行DML操作时,可以自动触发该存储过程执行相应的操作

规则(Rule)

创建规则

create rule rule_name as condition_expression # rule_name:是新规则的名称。 # condition_expression:是定义规则的条件。规则可以是where子句中任何有效的表达式

 

绑定规则

sp_bindrule rule_name,object_name;

 

举例

 

create rule r1_email as @val like %@%  sp_bindrule r1_email,student.Email

 

个人感觉这样的规则跟域的作用差不多

 

断言(Assertion)

create assertion asser1 check(60>=all (select count(*) from sc group by c#));

对断言涉及的数据进行操作后会触发断言;断言为假,操作将会被拒绝。

原文:https://www.cnblogs.com/terieqin/p/9215824.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!