复习六——数据库完整性

Posted terieqin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复习六——数据库完整性相关的知识,希望对你有一定的参考价值。

数据库完整性概念

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

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

完整性规则定义

  • 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#));

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

以上是关于复习六——数据库完整性的主要内容,如果未能解决你的问题,请参考以下文章

六千字快速复习七种常用排序

六千字快速复习七种常用排序

2021-10-21java:六千字快速复习七种常用排序

VSCode自定义代码片段——git命令操作一个完整流程

SQL复习六(视图)

VSCode自定义代码片段15——git命令操作一个完整流程