在表中设置外键实现的是参照完整性。

参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。参照完整性又称引用完整性。(推荐学习:MySQL视频教程)

参照完整性是关系模型的完整约束之一,属于数据完整性的一种,其余还有:实体完整性、用户自定义完整性。

参照完整性规则:若属性或属性组F是基本关系R的外键,它与基本关系S的主键Ks相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组在F上的值必须为:

(1)空值,F的每个属性值均为空值。

(2)S中某个元组中的主键值(主码值)。

即参照的关系中的属性值必须能够在被参照关系找到或者取空值,否则不符合数据库的语义。在实际操作时如更新、删除、插入一个表中的数据,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确,不正确则拒绝操作

性质

参照完整性属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性:

例如修改父表中关键字值后,子表关键字值未做相应改变;删除父表的某记录后,子表的相应记录未删除,致使这些记录成为孤立记录;对于子表插入的记录,父表中没有相应关键字值的记录;等等。对于这些设计表间数据的完整性,统称为参照完整性。

参照完整性则是相关联的两个表之间的约束,具体的说,就是从表中每条记录外键的值必须是主表中存在的,因此,如果在两个表之间建立了关联关系,则对一个关系进行的操作要影响到另一个表中的记录。

如果实施了参照完整性,那么当主表中没有相关记录时,就不能将记录添加到相关表中。也不能在相关表中存在匹配的记录时删除主表中的记录,更不能在相关表中有相关记录时,更改主表中的主键值。

也就是说,实施了参照完整性后,对表中主键字段进行操作时系统会自动地检查主键字段,看看该字段是否被添加、修改、删除了。如果对主键的修改违背了参照完整性的要求,那么系统就会自动强制执行参照完整性。

更多MySQL相关技术文章,请访问MySQL教程栏目进行学习!

php任何读取外键数据,在表中设置外键实现的是哪一类数据完整性相关推荐

  1. 实际开发中,是否会在数据库表中设置外键?

    本科学习数据库的时候,书上明确的写了对于多对多关系必须要创建外键,可是最近在跟师兄做一个B/S架构的项目,发现所设计的数据库表虽然是多对多关系但并没有要求外键,查了一下之后才发现目前的大型系统中(尤其 ...

  2. mysql创建表时设置外键_mysql创建表时设置外键约束的方法

    mysql创建表时设置外键约束的方法 发布时间:2020-06-17 15:54:11 来源:亿速云 阅读:312 作者:元一 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中, ...

  3. mysql建表时主键_mysql建表时设置主键的方法

    mysql建表时设置主键的方法 发布时间:2020-10-10 15:17:28 来源:亿速云 阅读:119 作者:小新 mysql建表时设置主键的方法?这个问题可能是我们日常学习或工作经常见到的.希 ...

  4. Oracle建表不设主键,oracle建表,设置主键,修改属性等

    --建表 create table book( book_id number(10), book_name varchar2(20), book_price number(10,2), book_au ...

  5. 关于hibernate的关联外键生成以及外键属性列的正确插入即:解决外键插入时,在关联表中除了外键列为空,其它属性均正常级联保存

    关于hibernate的关联外键生成以及外键属性列的正确插入即:解决外键插入时,在关联表中除了外键列为空,其它属性均正常级联保存 其实解决办法十分简单: 首先确保你能够级联保存数据,当然除了关联表的外 ...

  6. Oracle中给表添加主键 外键,给表中添加主键、外键

    1.创建表的同时创建主键约束 (1)无命名 create table student ( studentid int primary key not null, studentname varchar ...

  7. Delphi读取并用ListView打印输出Excel表中数据

    Delphi7读取并用ListView打印输出Excel表中数据 我自己也是才开始学的,想做这么个功能在网上看了蛮多案例,感觉缺了很多细节,很多案例不能说是差不多吧,完全就是一模一样,属于是你抄我我抄 ...

  8. 数据透视表汇总行在顶部显示_在数据透视表中比较顶部和底部销售

    数据透视表汇总行在顶部显示 An Excel pivot table is a great way to summarize a large amount of data, and with its ...

  9. mysql创建表设置自增_mysql 创建表并设置主键自增

    mysql 创建表并设置主键自增 mysql 创建表: mysql> create table user( -> userid int(4) primary key not null au ...

最新文章

  1. TF-IDF 原理及sklearn中的tf-idf实例分析
  2. cisco 2950 3550 端口速率限制实现方法
  3. 远哥教你MuleESB系列视频教程
  4. 读书笔记之《Windows内核原理与实现》
  5. DataObjects.NET -- A Excellent O/R Mapping Framework!
  6. 【项目源码分享】基于C++实现的网店购物管理系统(VS2019控制台)
  7. 【Microstation】第一章:Microstation三维模型构建概述
  8. Ext Grid Json分页(asp.net)
  9. 使用CocoaPods被卡住:Updating local specs repositories
  10. 智能家居实训系统的项目有感!
  11. 深入浅出统计学-第一章
  12. Python FastAPI 微信公众号后台服务器验证
  13. Redis 实战案例总结
  14. java rms是什么意思,关于RMS的使用
  15. 计算机切换桌面快捷方式,显示桌面快捷键,教您win10怎样快速切换到桌面
  16. SDOI2019 R2退役记
  17. 肖特基二极管型号大全之ASEMI肖特基常见型号
  18. Yade安装+优化教程
  19. 在做ADAU1452和ADAU1467的硬件设计时,输入输出通道的设计是怎么做的?(含原理图)
  20. 山海演武传·黄道·第一卷 雏龙惊蛰 第六章 八卦与奇门

热门文章

  1. 口腔取模过程及注意事项_数字化口 腔的发展与展望
  2. Linux空间过满无法登录,linux下磁盘空间不足导致oracle无法登录的解决方案
  3. 小学生数学测试软件c语言流程图,小学生数学测试软件-C语言课程设计
  4. 用Spring Cloud Alibaba开发微服务会更香吗?
  5. Java 9 - 17 特性解读:Java 10
  6. Redis 是并发安全的吗?你确定?
  7. 皮一皮:中国好男友?
  8. 把Vi改造成Vim的作者,现在又让Vim快了70倍
  9. kali Linux 屏幕旋转,MSF基础命令新手指南
  10. linux添加理由,让大家使用Linux的6个理由