前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据库关系模型的三类完整性约束[通俗易懂]

数据库关系模型的三类完整性约束[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-09-13 02:43:23
发布于 2022-09-13 02:43:23
2.3K01
代码可运行
举报
运行总次数:1
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

关系模型中有三类完整性约束,分别是:实体完整性,参照完整性,用户定义完整性


实体完整性

定义:实体完整性是用于保证关系数据库中每个元组都是可区分的,唯一的。

它的意思就是说数据表中每一行都应该有办法将其唯一区分开来,这自然指的就是主键了,而且主键必须不能为空或部分为空。

那么它大可以直接叫一些诸如“要有主键”等通俗的名字,但是为何要叫实体完整性呢? 首先第一点,“实体完整性”这个名字听起来就很高大上,嘿嘿; 好了不开玩笑了,说认真的。

  • 一个基本表实际上是对应了现实生活中的一个实体集的,比如学生关系就对应了学生的集合,因此我们所谓的表,其实就相当于现实生活中的某一种实体的集合。
  • 而现实生活中的实体都是可以唯一区分的,他们本身就都具有了某种唯一性标识,比如学生的学号,人的身份证等等。
  • 所以既然我们的表是相对于实体集的,那么表中必然需要一个主键来作为这个实体在被抽象后的唯一标识
  • 而主键不能为空就更好理解了,主键要是为空了那还拿什么来唯一标识这个实体呢?即这样就会存在不可区分的实体了,那就和我们上面讲的矛盾了。
  • 因此,这个规则就叫做实体完整性,私下里(不正式啊,只是辅助理解与记忆)可以理解为主键完整性。

参照完整性

参照完整性中的参照,说白了就是数据表里的外键。 举个例子,下面有三个关系:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
学生(学号,姓名)
课程(课程号,课程名)
选修(学号,课程号,成绩)

显然,在选修关系中的学号,必须是学生表里真正存在的学号,且选修表里的课程号,也必须是课程表里真正存在的课程号。这就是参照完整性的一个典型表现了。

在上面的例子中,选修表中的学号就称为选修表的一个外码,它对应的是学生表中的学号。并且称选修关系为参照关系,而学生关系为被参照关系

但是仅仅这么说还有很多细节没有讲到,下面我们理一理外码的定义。 首先要知道,外码不能是这个关系(参照关系)的主码,但是是它参照的关系(被参照关系)的主码。 什么意思呢,就是说学号这个属性在学生表中是主码,而在选修表中不是,这就称学号是选修表中的一个外键(课程号同理)。

而且参照关系和被参照关系可以是同一个关系,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
学生(学号,姓名,班级,班长)

在上面的关系中,班长属性保存的是班长的学号,那么这就是自己参照自己了。 即“班长”是外码,而学号是主码。

而参照完整性,就是指如果属性(或属性组)F是关系R的外码,且对应了关系S的主码K(R和S可以是同一个关系),那么对于R中的每个元组中的F上的值,必须满足: (1) 要么F取空值 (2) 要么等于S中某个元组的主码的值

比如上面那个学生的例子,或许那个班级还没有选出班长,则班长属性为空。而如果选出了班长,那么班长必然是某一个学生,则他的学号一定是在所有的学号中的某一个。

用户定义的完整性

任何关系型数据库,都一定要支持实体完整性和参照完整性。 但同时往往在不同的情况下,我们还需要一些特殊的约束条件,比如性别只能是男或女,年龄不能超过150岁等等。 这种针对某一具体关系数据库的约束条件称为用户定义的完整性,它反映某一具体应用所涉及的数据必须满足的语意要求。

Additionally

另外,还有一种说法,说关系模型有四种完整性约束,而另外那种完整性约束即为—— 域完整性

域完整性:(Domain Integrity)是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定

不过我觉得,域完整性其实就是所谓的用户定义的完整性…

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160200.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
四、数据完整性
数据完整性是指存储在数据库中的数据应该保持一致性和可靠性。关系模型允许定义四类数据约束,分别是:实体完整性、参照完整性、用户定义完整性约束以及域完整性约束。前两个和最后一个完整性约束由关系数据库系统自动支持。
喵叔
2021/06/14
1.1K0
数据库的完整性
导读: 本文深入的介绍了数据库的完整性. O、 数据库的完整性(总体概述) 一、实体完整性 二、参照完整性 三、用户定义完整性 O、数据库的完整性 数据的正确性 是指数据是符合现实世界语义,反映了当前实际情况。 数据的相容性 是指数据库同一对象在不同关系表中的数据是符合逻辑的。 数据的完整性和安全性是两个不同概念 数据的完整性 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据 防范对象:不合语义、不正确的数据 数据的安全性 保护数据库 防止恶意的破坏和非法的存取 防范对象:非法用户
企鹅号小编
2018/01/30
1.2K0
数据库的完整性
《数据库系统概论》| 第五章 数据库完整性 知识梳理
(主码约束的定义、外码约束的定义和参照完整性的定义和修改删除规则、属性约束的定义)、表级约束和属性级约束的区分。
Twcat_tree
2022/11/30
4660
《数据库系统概论》| 第五章 数据库完整性 知识梳理
『数据库』这篇数据库的文章真没人看--数据库完整性
什么是数据库的完整性 ➢ 数据的正确性和相容性 ➢ 防止不合语义的数据进入数据库。 ➢ 完整性:真实地反映现实世界
风骨散人Chiam
2020/10/28
1.3K0
MySQL_关系的码,关系的完整性
注意一个地方,外码 只是 不是主码,不代表外码不能是主属性,通过下面的例子来对候选码、主码、外码进行说明:
用户10551528
2024/07/20
1840
MySQL_关系的码,关系的完整性
数据库关系运算理论:关系数据操作与关系完整性概念解析
查询操作可以分为:选择(select)、投影(Project)、除(Divide)、并(Union)、交(Intersection)、连接(Join)、差(Except)和笛卡儿积等
Srlua
2024/03/23
5100
数据库关系运算理论:关系数据操作与关系完整性概念解析
数据库系统关系模型概念
关系模型简述 关系模型就是处理TABLE,它由三部分组成:  描述DB各种数据的基本结构形式(Table/Relation)  描述Table与Table之间所可能发生的各种操作(关系运算)  描述这些操作所应遵循的约束条件(完整性约束) 关系模型的三个要素 完整性约束: 实体完整性、参照完整性和用户自定义的完整性 实体完整性  关系的主码中的属性值不能为空值;  空值:不知道或无意义的值;  意义:关系中的元组对应到现实世界相互之间可区分的一个个个 体,这些个体是通过主码来唯一标识的;若主码为
互联网金融打杂
2018/04/03
1.4K0
数据库系统关系模型概念
数据库学习笔记(三)
SC 表增加一个元组,该元组的 Sno 属性的值在表 Student 中找不到一个元组,能让其 Sno 属性的值与之相等
赤蓝紫
2023/01/02
7540
数据库学习笔记(三)
数据库原理02——关系数据库
外码: 设 F 是基本关系 R 的一个或一组属性,但不是关系 R 的码。如果 F 与基本关系 S 的主码 Ks 相对应,则称 F 是 R 的外码(外键):
wsuo
2020/07/30
2.3K0
数据库原理02——关系数据库
数据库原理期末复习总结
本文内容为我大三上学期数据库原理期末复习时总结的知识点,文章分为三部分:第一部分是手写的知识点总结,第二部分是电子版的简答题总结,第三部分是部分SQL练习题及其解析!
Cyril-KI
2022/09/19
7760
数据库原理期末复习总结
【愚公系列】软考高级-架构设计师 057-键与约束
在数据库设计中,键(Key)和约束(Constraint)是确保数据完整性和实现关系模型理论的基本概念。它们定义了数据如何存储、访问以及保证数据的有效性和一致性。
愚公搬代码
2024/07/03
1950
【数据库SQL server】关系型数据库的基本知识
​ 表示方法:一张二维表,行对应元组,列对应属性【域】 3. 关系 定义: D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为 R(D1,D2,…,Dn) R:关系名,n:关系的目或度 当n=1时,称该关系为一元关系 当n=2时,称该关系为二元关系 相关概念
SarPro
2024/02/20
2210
【数据库SQL server】关系型数据库的基本知识
数据库基础知识一(MySQL)[通俗易懂]
数据管理技术好坏评判的标准: (1)数据冗余 (2)数据共享 (3)数据独立性 (4)数据统一集中管理
全栈程序员站长
2022/08/03
2K0
数据库基础知识一(MySQL)[通俗易懂]
数据库关系模型基本概念「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160183.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
3080
数据库原理及应用
在数据库中使用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息,通俗地来讲,数据模型就是现实世界的模拟。
程序员Leo
2023/08/07
1K0
数据库原理及应用
数据库的一点理解
整个数据库系统包括数据,数据库,数据库管理系统。数据库管理系统是位于操作系统和应用程序开发工具之间的的一层,可以由数据库管理员来对数据库管理系统和数据库进行操作。数据库具有以下特点: 1.数据结构化; 2 .数据的共享性高,冗余度第且易于扩充; 3.数据独立性高; 值得注意的是,数据库并不能对现实世界存在的东西进行存储,所以需要对现实世界的事物进行抽象处理。将数据模型分为两种:一是概念模型(便于人类理解),二是逻辑模型/物理模型(数据库可以识别)。 概念模型中包括实体,属性,实体集,实体型,关系等。 逻辑模型(也称数据模型)通常由数据结构,数据操作,数据的完整性约束条件三部分组成。
戈贝尔光和热
2018/12/27
5880
三种数据模型---层次模型、网状模型以及关系模型
  其实层次数据模型就是的图形表示就是一个倒立生长的树,由基本数据结构中的树(或者二叉树)的定义可知,每棵树都有且仅有一个根节点,其余的节点都是非根节点。每个节点表示一个记录类型对应与实体的概念,记录类型的各个字段对应实体的各个属性。各个记录类型及其字段都必须记录。
Twcat_tree
2022/11/30
12K0
三种数据模型---层次模型、网状模型以及关系模型
MySQL技能完整学习列表——1、数据库基础概念——2、数据库管理系统(DBMS)——3、数据模型(Data Model)
数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库的软件系统。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据,数据库管理员也通过数据库管理系统进行数据库的维护工作。
红目香薰
2023/12/01
3310
关系模型的相关术语[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106918.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/04
1.3K0
关系模型由浅及深讲解【数据库概论】
DBMS 采用某种数据模型进行建模,提供了在计算机中表示数据的方式,其包括,数据结构、数据操作、数据完整性三部分。在关系模型中,通过关系表示实体与实体之间的联系,然后基于关系数据集合进行数据的查询、更新以及控制等操作同时对数据的更新操作进行实体完整性、参照完整性、用户自定义完整性约束。而在前期,通过关系代数和逻辑方式(关系演算)表示对关系操作的能力,而后出现了 SQL 语言,其吸纳了关系代数的概念,和关系演算的逻辑思想
BWH_Steven
2020/05/09
1.8K0
推荐阅读
相关推荐
四、数据完整性
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验