数据库中外键的作用

瑞芯微RK3506开发板DSM音频开发避坑指南:从硬件改接到内核配置全流程 本文详细解析了在瑞芯微RK3506开发板上进行DSM音频开发的完整流程与关键避坑点。内容涵盖从硬件改造(如电阻焊接)、内核驱动配置(DTS参数、补丁应用)到系统调试与波形分析的全过程,旨在帮助嵌入式开发者高效实现高信噪比、低成本的音频方案,避免常见错误。 阅读详情

外键用来干什么

为了一张表记录的数据不要太过冗余。这和软件工程的模块化思想差不多类似,只不过在数据库中是对表关系进行解耦,尽量让表 记录的数据单一化。就如你贴的图片中,把成绩和学生信息放在一张表中就太冗余了,成绩完全可以以学生的id作为区分标识。

为什么说外键能保持数据的一致性、完整性

你想想,你的图中的第一章表分割成了表1和表2,表2的学号引用了表1的学号字段作为外键,如果不建立外键,只是和表1一样单纯性 地设立一个学号字段,那么和建立外键有什么区别呢?

比如表1中张三的学号为20140900001,那么我在表2中插数据的时候在学号字段插20140900001来记录张三的成绩不也是做到了表 的解耦了吗?

这里存在的问题是,在不设置外键的情况下,表2的学号字段和表1的学号字段是没有关联的。只是你自己认为他们有关系而已,数据库并 不认为它俩有关系。也就是说,你在表2的学号字段插了一个值(比如20140999999),但是这个值在表1中并没有,这个时候,数据库还是允 许你插入的,它并不会对插入的数据做关系检查。然而在设置外键的情况下,你插入表2学号字段的值必须要求在表1的学号字段能找到。 同时,如果你要删除表1的某个学号字段,必须保证表2中没有引用该字段值的列,否则就没法删除。这就是所谓的保持数据的一致性和完整性。你想,如 果表2还引用表1的某个学号,你却把表1中的这个学号删了,表2就不知道这个学号对应的学生是哪个学生。数据的一致性还包括数据类型的一致性(这 个见下面就知道了)。

外键的使用规则

从表的字段必须与外键类型相同(如上,分数表 stu 的类型必须和学生表 sid 的类型相同,比如都是 int(10) 类型)外键必须是主表的唯一键(如上,学生表 sid 是主键,而主键是唯一的,所以可以作为分数表 stu 的外键)有关联的字段(如上,分数表之所以使用学生表的 sid 是因为两者有关联,分数表记录的是学生的分数,而学生可以用 sid 来唯 一标识)避免使用复合键(也就是说从表可以同时引用多个外表的字段作为一个外键,一般不推荐这种做法)

你的问题

如果表1有多个外键可不可以是这样的情况,表2中的多个字段是表1的外键;或者说表1的多个外键是在多个表中。

都可以。因为表1的外键不一定是表2的主键,也可以是唯一键(UNIQUE)。比如表2有个主键 A,有个唯一键 B,表1两个字段 A' 和 B’ 分别引用表2的 A 和 B,这就是多对多的关系了。再或者表2主键 A,表3主键 B,表1的两个字段 A' 和 B' 分别引用表2的 A 和表3 的 B。

这个外键可以不是表1的主键,但必须是子表的主键。(简单的说就是,如果一个字段是某个表的外键时,那么该字段必须是主键)

因为你前面就理解错了,所以这句话本身就是错的。对于从表来说,外键不一定需要作为从表的主键,外键也不一定是外表的主键,外表的唯一键就可以作 为从表的外键。

【项目实战】使用Python - Mediapipe、OpenCV进行手部面部检测(Python源码) 本文介绍了使用MediaPipe和OpenCV库进行实时面部和手部关键点检测的方法。通过MediaPipe的Holistic模型,可以获取468个面部特征点及每只手21个特征点。文章详细说明了环境配置、模型初始化参数设置,并提供了完整的代码实现,包括视频流处理、关键点绘制和FPS计算等功能。这套方案可应用于手语识别、疲劳检测等计算机视觉场景,为开发者提供了一套高效的开箱即用解决方案。 阅读详情

相关推荐

JS逆向实战:从宿务航空机票搜索到参数签名算法解析

在现代Web应用开发中,前端与后端的数据交互安全是核心技术环节。其原理通常涉及参数签名、令牌验证等机制,用于防止未授权访问和数据篡改。这些技术的核心价值在于保障接口调用的合法性与数据完整性,广泛应用于电商、金融、旅行预订等对数据安全要求较高的场景。以机票搜索为例,网站常通过动态生成的签名参数来验证请求来源。本文以宿务太平洋航空为案例,深入解析其搜索请求中关键参数(如signature)的生成逻辑,并演示如何通过浏览器开发者工具进行断点调试、变量追踪,最终使用Node.js与crypto-js库本地复现完整请

weixin_26642481的博客 752

数据库中的外键

此ALTER TABLE语句告诉数据库管理系统为订单表(Order)中的customer_id列添加一个外键,它的名称为fk_order_customer,同时指定此外键引用顾客表(Customer)的customer_id列。在这种情况下,表之间的关系是经理表是“参照表”(也称为主表),员工表(Employee)是“引用表”。为了限制员工表中每个员工记录中的ManagerID列只能引用有效的经理记录,我们可以对员工表中的ManagerID列创建一个外键约束,引用经理表中的ManagerID列。

cpy1356140308的博客 7688

内核工作FAST‘25 Artifact Evaluation流程记录

在我们的paper中,复现需要用到傲腾持久化内存,因此,需要AE Reviewer访问到内网服务器中。我们的思路是购买云服务器,将其作为跳板机,内网服务器通过SSH反向代理与公网服务器建立隧道,AE Reviewer通过隧道访问内网服务器。我们在AE过程中使用。然后,把一切复现需要的代码环境,在chroot里面配置完成。

不定期更新系统使用、编程小技巧,哔哩哔哩账号:https://space.bilibili.com/399455629,欢迎关注 1216

【ZT】外键 (FK)

数据库外键的使用 外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值! 例如: a b 两个表 a表中存有客户号,客户名称 b表中存有每个客户的订单 有了外键后 你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x 建立外...

weixin_33974433的博客 1430

点餐系统数据库设计--SQL Server

友情链接 1、学生成绩管理系统数据库设计–MySQL 学生成绩管理系统数据库设计–MySQL 2、医疗信息管理系统数据库–MySQL 医疗信息管理系统数据库–MySQL 3、邮件管理数据库设计–MySQL 邮件管理数据库设计–MySQL 4、SQL Server医疗信息管理系统数据库【英文版-源码】–(Medical Management System Database) SQL Server医疗信息管理系统数据库【英文版-源码】–(Medical Management System Database) 5

若如初见 8万+

apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】

这个是最最简单的反编译操作了。写这个教程的目的是其中很多粉丝要求出一点入门的教程。当然演示的是使用MT来操作。还有很多类似的软件可以达到目的。例如NP apltool等等或者电脑端也有很多反编译软件修改。对于玩机用户来说。也可以在系统包里直接修改一些app。

小马哥的专栏 7266

数据库外键

外键是一个指向另一张表格的字段,它的值必须与被指向的表格中的某个字段的值相同。需要注意的是,外键所引用的主键必须是唯一的,否则将无法确保数据的一致性和正确性。数据一致性:通过外键约束,可以确保在插入、更新或删除数据时,所引用的外键值必须存在于被引用表的主键值中,从而保证了数据的一致性。外键的主要作用是建立关系型数据库中的表之间的联系,保证数据的一致性和完整性。级联操作:外键还可以实现级联操作,例如当删除主表中某条记录时,其相关从表的记录也会被删除,从而达到级联删除的目的。外键可以由一个或多个字段组成。

m0_73180708的博客 2752

【机器人技术基础】MATLAB Robotics Toolbox PUMA560 运动学正逆解

机器人技术基础实验2报告 1. 实验目的和要求 2. 实验手段 2.1 实验原理 2.2 函数详解 3. 实验主要内容 4. 实验结果和分析 4.1 正运动学求解 例1 例2 4.2 逆运动学求解 例1 例2 1. 实验目的和要求 掌握常见形式的机器人的D-H坐标系建立方法、运动学建模; 正逆运动学分析与求解; 使用Robotics Toolbox对直角坐标机器人、圆柱坐标机器人、球坐标机器人、PUMA560其中之一建立运动学模型,正逆求解和仿真。 2. 实验手段 2.1

【人工智障 | 计算鸡视觉 | 机器孩】 1万+

【数据库】外键的作用

数据库外键作用

wangshiqi666的博客 1750

MFC Windows 程序设计[122]之树形下拉列表框(附源码)

MFC是微软公司提供的一个类库(class libraries),用以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。有很多初学MFC的小伙伴们都觉得MFC比较难学,看书吧,看了就忘了,网上的一些教程又是写的含糊不清,故而学习起来很吃力...... 故此,本专栏亲自研究,实践,由易到难,层层深入,将调试过程中所遭所遇进行详细讲解,注意事项进行一一列举,希望能够帮助到各位初学MFC的小伙伴,避免走弯路,费时费力。.........

hnjzfwy的博客 460

Harmony:C# 动态代码补丁的5大秘密武器

Harmony 是一个开源库,它允许你在运行时修改托管代码(即使用 .NET 或 Mono 编译的语言编写的应用程序)。它通过利用 AOP(面向切面编程)的思想,可以在不重新编译代码的情况下添加、替换或修改方法的行为。这对于游戏模组(Modding)、插件开发以及调试工具非常有用。安装 Harmony要使用 Harmony,你需要首先安装它。Harmony 作为一个 NuGet 包,可以直接通过 Visual Studio 的 NuGet 包管理器进行安装。安装步骤打开 Visual Studio。

java专栏 1193

彻底理解数据库外键

彻底理解数据库外键

papaya的博客 4571

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

数据库设计中外键的作用

       从实体对应关系考虑,我一直以外键来表达多条记录对应一条记录,从业务上讲就是一对多的关系。如果多对多,可以通过中间表来个联合主键,拆成两个一对多的关系。       一直认为外键的用途是这个,却忘了外键的根本用途,参照完整性规则,这个我早学过,早知道,唯一的体会就是级联操作,删除,插入的时候,却对于维持数据的完整性方面少有体会。       其实在第一节的拆多对多的关系时,也用到了...

chyy001的专栏 361

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

mysql中外键作用_MySQL外键在数据库中的作用

MySQL外键是MySQL数据库中非常重要的部分,那么,MySQL外键究竟起到哪些作用呢?下文就将带您一探其中的秘密。MySQL外键的作用:保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!例如:a b 两个表a表中存有 客户号,客户名称b表中存有 每个客户的订单有了外键后你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x建立...

weixin_31915631的博客 778

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Mysql数据库中外键作用及属性

Navicat for Mysql在对外键操作时 1.外键的作用: 使两张表形成关联,外键只能引用外表中的指定列的值! 2.建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表的主键)。 3.事件触发限制: on delete(删除)和on update (更新),       cascade:可设参数(跟随外键改动),       restrict:(限制外表中的外

hnwolfs的博客 970

数据库中外键的作用以及和主键的区别

http://blog.youkuaiyun.com/tiantian1980/article/details/1603126 外键是数据库一级的一个完整性约束,就是数据库基础理论书中所说的“参照完整性”的数据库实现方式。           外键属性当然是可以去掉的,如果你不想再用这种约束,对编程当然不会有什么影响,但相应的录入数据的时候就不对录入的数据进行“参照完整性”检查了。   

SCGH_Fx的专栏 1779

数据库中的外键是否必要存在

说起来为什么谈到这个话题,其实原因特别简单。在我做毕业设计的时候,我本身再设计表的时候并没有加外键。这是正常的。但是在老师检查的时候,一直在说,一定要有外键约束。不然不符合数据库设计规范。(当然这句话是不对的。)最后强制我在数据库中加了好多条外键。因为在我们日常工作中确实很少用到外键。甚至都不会用。包括在阿里的JAVA开发规范中也有下面这一条 【强制】不得使用外键与级联,一切外键概念必须在应用层解决。 但是呢,如果真问一下具体为什么。可能会这么说。 每次做DELETE 或者UPDATE都必须考虑外键约束,会

qq_45601069的博客 3808

mysql中外键作用_mysql进阶(十一)外键在数据库中的作用

MySQL外键在数据库中的作用MySQL外键的目的是控制存储在外键表中的数据,使两张表形成关联,是MySQL数据库中非常重要的组成部分,值得我们去深入了解。那么,MySQL外键究竟起到哪些作用呢?下文就将带您一探其中的秘密。MySQL外键的作用保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。使两张表形成关联,外键只能引用外表中列的值!例1ab两个表a表中存有客户号,客户名称b表中存...

weixin_34079307的博客 272

oracle外建什么作用,列举在数据库中外键的好处以及优劣

外键的好处:1减少重复数据在删除主表数据前先删除与之相关的子表的相关数据原则上主表的数据是不允许删除的2可以设置级联删除和更新,保证数据库的完整性3外键在一定程度上说明了业务逻辑,会使设计周到具体全面保证了数据的一致性,完整性,程序无法100%确保数据的完整性,从这个角度看,外键似乎很有必要,最主要的无非是数据的完整性外键的缺点:1过分强调或者说使用主键/外键会平添开发难度,导致表过多等问题2不用...

weixin_31156945的博客 1302

ORM外键相关

外键关联的优缺点优点:插入修改数据时,会自动查询关联表,如果数据不合法,就不能修改,保证数据不会错乱,不会出现脏数据。缺点:每次校验会消耗资源,数据量大会很慢,其实可以通过程序控制脏数据不被录入。公司一般建立外键,但是不会有约束。on_delete参数 ManyToMany参数(through,db_constraint) 如果ManyToMany没有指定through参数,django会自动创建第三张表,通过对第三张关系表进行操作。但是第三张表的扩展性很差,不能给第三张表添加字段。而如果不写ManyTo

weixin_68531269的博客 2401

SQL中外键的作用,不用外键行不行?

外键的作用 外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。 测试用例:我们先建有外键关联的两张表 然后在course表中插入一条数据 INSERT INTO tb_course (StuId, CourseName, Score) VALUES (1, 'java基础', 80) 很显然,他会报错 原因就是Student表中并没有主键Id为1的这条记录,那么就不...

KeithRong的博客 1万+

数据库mysql和oracle

1.DB,DBS,DBMS的区别 DB:是指datebase(数据库) DBS:是指datebase systerm (数据库系统) DBMS:是指datebase mangement systerm(数据库管理系统) 区别:数据库就是存放数据的仓库,数据库管理系统就是用来管理数据库的, 其中数据库系统是一个通称,包括数据库、数据库管理系统、数据库管理人员等的统称,是最大的范畴。 2.什么数据库的...

weixin_43929900的博客 175

MySQL中外键的定义、作用、添加和删除

1 简介 在实际开发的项目中,一个健壮数据库中的数据一定有很好的参照完整性。例如学生档案和成绩单两张表,如果成绩单中有张三的成绩,学生档案中张三的档案却被删除了,这样就会产生垃圾数据或者错误数据。为了保证数据的完整性,将两张表之间的数据建立关系,因此就需要在成绩表中添加外键约束。 2 外键的定义 外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束。外键用来建立和加强...

不当初 4万+

MySQL中的外键是什么、有什么作用

      近期自学数据库MySQL。然后有个疑问。一直不得其解。查询了相关资料。最后还是没有解决。       我的疑问是 "使用外键约束" ,然后我对 "外键" 这个词不是非常理解。查询相关资料都是讲一些术语。说外键的主要作用是:保持数据的一致性、完整性。听得我是一头雾水。       关于外键。我有自己的一些理解,可是不晓得是否正确,举个样例来表达我的看法:假如如今须要建立一个表...

weixin_34270865的博客 379

数据库外键的作用

外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值! 例如: a b 两个表 a表中存有客户号,客户名称 b表中存有每个客户的订单 有了外键后 你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x 建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键)。

humiaor的博客 5873
上一篇: 主键设置中的字段类型选择
下一篇: maven详解
cpp152
博客等级 码龄16年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值