【数据库】外键的作用

news/2024/11/17 6:54:05/

前言

说到外键,一般就会牵扯出约束。不谈约束,起始外键就是一个普通的字段(Column),起到一个关联的作用。

先把约束放一边,看看外键有哪些作用。


建立表中记录的一对一的关系

学生表:

手机表:

学生有一个字段是手机id,而手机存在多个属性,那现在把手机单独建一张表。

这样如果那天想查所有手机号时,直接查这张表效率更高。此时的PhoneId就是学生表的外键。而且是手机表的主键。

这里的一个特点,一个表的外键,在另一个表中,必须为主键。所以外键通常就一个ID。这个ID关联起两张表。如果是一对一,做表联结也非常简单。


一对多(多对一)的关系

假设这个学校有三个学生,两个老师,每个学生只能选择一个老师

学生表:

老师表:

可以看到,学生12选择导师Song,这就是多个学生选择一个老师, 这个和一对一几乎没啥变化。也就是告诉你外键本身是可以重复的。

这样,又发现一个好处,多对一的情况下,相比建一个表,通过外键建两张表更节省空间。


多对多的关系

但是,如果学生可以选择多个老师,老师也可以拥有多个学生呢?

这就是多对多。

学生表:

教师表:

外键表:

发现多对对的情况下,学生表和教师表,都不存在外键。外键存在于另外一张中间表,称之为外键表(当然这张表也有主键,这里为了关注重点,省略了)

通过这个外键表,可以清晰的看出,学生1拥有两个老师(2,3),学生3有三个老师(1,2,3)

而老师2,有两个学生(1,3),老师3有两个学生(3,1)


约束

更能体现外键作用的是约束,约束其实是定义好的规则,简化对数据库操作。就是某些操作在定义好的约束后,自动完成!这就是定义外键的另一好处。

约束分为删除和更新。删除用的较多。


删除约束

学生表:

手机表:

拿一对一的举例,通常将拥有外键的表称为子表,这里学生表就是子表,手机表就是学生表的主表。 删除约束,就是当主表中的某条记录被删除时,子表中对应的记录如何处理?

方式1:当主表中的某条记录被删除时,对应的子表中的记录中的外键自动置为Null。

方式2:当主表中的某条记录被删除时,对应的子表中的元素自动也删除。

方式3:当主表中的某条记录被删除时,如果子表有记录关联到该主表记录,此时无法删除主表中的这条记录,会报错。


更新约束

这个情况发生较少,就是当手机表中的PhoneId发生更改时,学生表中的PhoneId也会随之自动变化。


http://www.ppmy.cn/news/687947.html

相关文章

苹果8p电池多少毫安的_一位果粉的纠结:苹果8P电池健康度83%,换电池还是买新机?...

文 | 科技有意思,编辑 | 猫叔 我身边有一位果粉用户,在苹果iPhone12系列机型正式发布后想买一部。但是呢,他又有一些犹豫不决,关键原因在于手里的那部iPhone8P。下面,具体给大家聊下。 话说,这位果粉用户跟…

Arduino IDE的安装

https://www.arduino.cc/en/software/

Background-2 盲注的讲解基础概述二

文章目录 一、基于报错的 SQL 盲注------构造 payload 让信息通过错误提示回显出来二、基于时间的 SQL 盲注----------延时注入总结 一、基于报错的 SQL 盲注------构造 payload 让信息通过错误提示回显出来 select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,fl…

利用IDM下载QQ群文件

利用IDM下载QQ群文件 学习网络安全经常是在QQ群里和朋友们沟通交流,群文件中很多有用的工具或资料内容,小文件的下载比较方便,要是有1G以上的大文件就有些麻烦,速度往往只有100k左右,等着着急,这里分享一个…

QQ小程序服务器出错是什么意思,QQ小程序为什么打不开_为什么QQ下拉小程序显示请求失败没有权限_3DM手游...

最新版QQ推出了和微信一样的小程序功能,这可是腾讯未来计划的重要的第一步,在未来腾讯的软件一定会全部可以由小程序下拉添加直接使用,甚至无需下载,那时候的网络肯定也不是现在能比的,腾讯爸爸牛笔! 只因为…

qq文件对方接收后一定会有提示吗_qq发文件为什么显示对方无法接受文件

qq发文件为什么显示对方无法接受文件以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! qq发文件为什么显示对方无法接受文件 最常见的一种是有的人还在编辑。然后忘记关掉要发送的文件了。而QQ又不会很显著的标明发…

QQ视频下载并转化为mp4

QQ对视频的地址进行了严格的保密,是无法通过读取网页源码来获取地址并下载的,只能通过QQ软件下载并转化。 找到嵌套在任意页面的QQ视频,正常播放之后,直接拖到结尾处,会出现添加到收藏的的按钮,点击之后会…

QQ群共享总是下载失败怎么解决?

下载总是出现: 解决办法: (1)文件少的情况 方法1:手机QQ发送 我的电脑 方法2:手机QQ转存到我的微云,从微云下载(如果你有微云会员,这种方法下载简直如虎添翼&#xff…