关系型数据库完整性约束规则总结

关系型数据库完整性约束规则总结

前几天去参加了广州一家公司的笔试,其中一道数据库的题目让我至今印象深刻,因为自身并没有深入地理解它的含义,也就没有做出来。
原题是这样的:

如果指定参照完整性的删除规则为"级联",则当删除父表中的记录时,__________

首先公布答案吧,应该是也会删除子表中所有的相关记录,级联的含义不言而喻,我理解为多级关联。
之前学习数据库的时候也曾经听说过参照完整性约束这个名词,但当时自身并没有很深入的了解它。笔试结束以后,就去查了很多的资料,现在对这一部分内容做出了简单的总结:

一、数据完整性

笔者认为要想了解数据库的三大完整性约束首先需要明白什么是数据完整性。
所谓的数据完整性,就是数据库中所有存储的数据应当是可靠和精确的,并且应当和现实的世界是相符合的。
其最主要的作用是:防止数据库中存在不符合语义规定的数据以及防止因错误信息的输入和输出造成的无效操作。
同时数据库也提供了多种方法来保证数据完整性,如外键、规则以及触发器等等。

二、三类完整性约束

在我们的关系模型当中,定义了三大类的完整性约束,分别是:实体完整性约束参照完整性约束用户自定义完整性约束。其中前两者是关系模型所必须满足的完整性约束条件,体现了具体领域中的语义约束。

1. 实体完整性约束

实体完整性约束必须确保

  • 每个元组都是可识别的以及唯一的
  • 关系型数据库中所有的表都必须要有主键
  • 在表中不能够存在无主键值的记录以及主键值相同的记录
  • 表中的实体对象必须能够区分

2. 参照完整性约束

所谓的参照完整性约束也叫引用完整性约束

  • 现实世界中,实体与实体之间往往存在着联系,这种联系反映到数据库系统中就是关系。
  • 参照完整性约束一般就是指多个实体或关系之间的关联关系。

以学生和课程为例,每个学生可以选修多门课程,而每门课程可以有多名学生进行选修。这就是典型的多对多关系。

然而参照完整性约束中,又可以进一步细分三种规则:更新规则、删除规则、插入规则。每个规则中又包含三种设置:级联、限制以及忽略
其中,插入规则中是不包含级联设置的

  • 更新规则:当父表中记录的关键字值被更新时触发。
    • 级联:用新的关键字值更新子表中的所有相关记录;
    • 限制:若子表中有相关记录,则禁止更新;
    • 忽略:允许更新,不管子表中的相关记录。
  • 删除规则:当父表中记录被删除时触发。
    • 级联:删除子表中所有相关记录;
    • 限制:若子表中有相关记录,则禁止删除;
    • 忽略:允许删除,不管子表中的相关记录。
  • 插入规则:当在子表中插入或更新记录时触发。
    • 限制:若父表中不存在匹配的关键字值,则禁止插入;
    • 忽略:允许插入。

3.用户定义完整性约束

用户定义完整性约束也被称为:域完整性约束或语义完整性约束。即是针对某一个具体的关系型数据库的约束条件。它反映的是某一具体的应用所涉及到的数据必须满足语义的要求。
这一约束机制一般不应由应用程序提供,而应有由关系模型提供定义并检验,用户定义完整性主要包括字段有效性约束和记录有效性约束。

  • 字段有效性约束:只能参考和约束本字段值,它无法参考其它字段来约束本字段的值;
  • 记录有效性约束:表级有效性规则,它可以参考和约束同一条记录不同字段之间须要满足某些条件。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值