mysql中表怎么建立联系_数据库(三) 表与表建立联系-外键

article/2025/8/14 9:25:55

1.理解表与表之间建立关系的必要性

比如我们建立了一张个人信息表,把所有人的信息都存在这张表中

f6211d2dad946d1470b2b9fdbf7e8bb4.png

这张表中有老师和他们所属的部门,并且不同的部门工作也是不同的

所有数据存放在一张表中的弊端

1.组织结构不清晰

2.浪费存储空间

3.扩展性差

针对这个问题我们可以将他们分成两张表,一张专门记录个人信息,一张专门记录部门和部门工作

建立表的时候我们需要进行分析

1.站在个人信息表的角度:一个老师能否属于多个部门,不能!!!

2.站在部门表的角度:一个部门能否有多个老师,可以!!!

那这两张表的关系就是老师表多对一部门表,也可以这么说,部门表一对多老师表

在表中是如何表示这种关系,需要找出一个两者中独一无二的东西并且把他们连接起来,我们在部门表中创建一个部门的id,在老师表中添加这个属性并指向部门id

如下表所示

26852d2a6109b87bc4adea41999d3b60.png

这样我们就可以把两者联系起来了,但是老师的dep_id我们还是可以随意的修改,应该有一个限制,限制他们只能和部门表的id相同才对

2.外键(foreign key)

什么是外键

如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。

外键的作用

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。外键拥有能使两张表阻止执行和级联执行的特点

所以要把两张有关联的表联系起来需要用到外键(foreign key)

阻止执行

从表插入新行,其外键值不是主表的主键值便阻止插入;

从表修改外键值,新值不是主表的主键值便阻止修改;

主表删除行,其主键值在从表里存在便阻止删除(要想删除,必须先删除从表 的相关行);

主表修改主键值,旧值在从表里存在便阻止修改(要想修改,必须先删除从表的相关行)。

级联执行

主表删除行,连带从表的相关行一起删除;

主表修改主键值,连带从表相关行的外键值一起修改。两种方法提供给用户选择。无论选取哪种方法,从表里都不会有多余行。从另一个角度理解,用拒绝同一事物在从表中的标志与主表不一致来实现与主表中的标志一致。

3.表与表关系之一对多

还是使用上面老师表和部门表的例子,两者是一对多的关系


http://chatgpt.dhexx.cn/article/2FD36Yr2.shtml

相关文章

使用Visio 2010 画数据库中表与表的关系

1.在visio中新建数据库模型图 打开visio 2010,文件—>新建—>数据库—>数据库模型图。建立数据库模型图之后,菜单栏多出一个菜单项"数据库"。 看下图菜单栏多出了一个数据库项 2.依次画数据库建立的每张表、视图等 进入了画图状态&#xff0c…

DBGridEh的表中表设置

DBGridEh的表中表设置步骤 在进行数据呈现时,表中表的显示方式也是一种常用的主从表显示类型,DBGridEh控件在这方面的表现是相当优秀的,它不需要任何代码就可以实现该功能。 首先比较重要的是打开主表格控件(DBGridEh)的RowDetailPanel属性…

Hive 分桶表及作用

Hive 分桶表 一.概述分桶和分区的区别 ?如何创建分桶表 ?分桶表的作用 ? 二. 补充:通用的 join 优化(1)空key过滤(2)空key转换 三. 分桶表的作用2.1 数据的采样2.2 提升查询效率&…

服!造成程序员脱发的两大原因竟然是……

-“不管怎么样,这个项目一定要在这个ddl前完成。” 作为程序员,我们特别痛恨PM根据主观判断就随便订ddl!!有时候,因为一个小小的问题我们要回头检查好久,因此也特别容易不小心错过ddl。 -“Andy&#xff…

作为程序员你脱发吗?

每天熬夜加班,忙着敲代码,现在的你还有多少头发? 不管是80后还是90后,甚至是00后(热搜:98年的小伙子去植发),脱发好像是不可避免的事情,更何况是程序员? 记得…

Python程序员别秃了,护发防脱发小妙招,收藏吧

每个健康人大约有10万根左右的头发,每天可有70—100根脱落,同时也有等量头发再生,头发摸起来手感柔滑,一根一根的,结实牢固,易于梳理。 可是在生活中,有些人却经常出现这样的问题:头…

为程序员爆肝整理的防治脱发大集锦

防治脱发“感觉有用”系列 食疗 多吃蛋白质,鸡蛋清、瘦肉、牛奶和豆腐等高蛋白食物都是头发的最爱。此外,每周最好吃3次亚麻籽油,每次1茶匙,其中的植物雌激素可防脱发。缺铁也会导致大量脱发,建议多吃绿色和黄色的蔬…

绝密|程序员与脱发的故事

欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。 问题描述 现当今,脱发正成为办公室工作者的一个大烦恼,而在这批为脱发而担心…

《程序员脱发自救指南》笔记--头发基础知识

本博文源于《脱发自救指南》,如果接受审核,希望审核通过,毕竟这都是要面对的话题。脱发竟然发生在身边,我同学脱了。为了给予他更好的头发知识,我更新了此篇博文,收藏即可。 文章目录 1.头发的构造2、位于…

程序员脱发?看看各个创始人的发量?

前言 作为一个小白,在学习之前,我非常的明确,自己要学什么编程语言。   在这里我还是要说一下,我提供一个我的学习交流群,456926667,里面可以解决你们遇到的很多问题,共同学习进步 怎么判断某门编程语言掉不掉发? 说起掉发,在前言中讲过,程序员很多掉发原因都是…

1024全方位防脱发攻略?做发量和代码最刚的程序员

秋收冬藏,又到了年底冲刺撸代码的时节。 程序员宝宝天天和产品经理撕逼 半夜又和bug生死相依 某天,你选择了红色药丸,从Matrix中觉醒 突然发现: “我的头发呢!? 是不是有人在代码里面下了毒!&#x…

为什么程序员大多数都会脱发?( ConcurrentHashMap 并发)

为什么程序员大多数都会脱发? 其实这是一种误解,来看看现状数据说话,真实情况是这样的。 据脉脉统计出来的《程序员真相大调研2019》中,71.2%的程序员是不脱发的,仅有28.8%的程序员存在秃头情况。 为什么很多人印象中程…

程序员常秃顶?Python创始人笑了,防脱发还得学这门语言,不然干脆转行得了

程序员爱脱发,是不争的事实,经常面对电脑,工作压力大,都会导致脱发的产生。正所谓“聪明绝顶”,越厉害的程序员,谢顶的可能性就越大。那么,我们看看世界上顶级的程序员们,看看是否能…

为什么学计算机容易秃顶,为什么程序员更容易脱发?知道答案惊呆了!

在过去几年程序员是一个很抢手的行业,很多人都希望自己能够成为一名程序员,但最近几年程序员的工作岗位竞争压力却越来越小,有人指出这是因为程序员非常容易脱发,而且死得相对较早。为什么程序员更容易脱发呢? 长期面对…

程序员脱发自救:用计算机视觉技术安全植发

点击蓝色“程序猿DD”关注我 回复“资源”获取独家整理的学习资料! 脱发已经成了这个时代最严重的一种威胁。 从电商平台上护发产品的热销,到无处不在的植发广告,再到各大论坛里脱发话题的热度,都能窥见人们对于头发的深度焦虑。 …

程序员为什么更容易掉头发?

来源 | web前端教程(webjiaocheng) 近期,百度 CEO 李彦宏在中国科技大学院搞了一个演讲,后来到互动环节有个人提问:“李总对于科研狗防脱发有什么建议吗?” 瞬间全场都乐了,李彦宏说:“我不知道怎么回答&am…

学计算机应用技术掉头发,为什么程序员更容易脱发呢?

原标题:为什么程序员更容易脱发呢? 在过去几年程序员是一个很抢手的行业,很多人都希望自己能够成为一名程序员,但最近几年程序员的工作岗位竞争压力却越来越小,有人指出这是因为程序员非常容易脱发,而且死得…

程序员为什么更容易脱发?

转自微信号:web前端教程(webjiaocheng) 近期,百度CEO李彦宏在中国科技大学院搞了一个演讲,后来到互动环节有个人提问:“李总对于科研狗防脱发有什么建议吗?” 瞬间全场都乐了,李彦宏说:“我不知…

论程序员脱发是传言还是真的?

脱发到底和职业有关系吗? 脱发到底和职业有关系吗?为什么秃你心里没点数吗?遗传影响“我们”不秃为什么很多人印象中程序员秃头?先入为主(可能是历史上诸位编程大牛们的影响) 导致程序员脱发的真正原因1. 大…

秃头不用怕!程序员脱发自救指南来了

国家卫健委2019年的调查数据显示,我国脱发人数超2.5亿,平均每6人中就有1人脱发,其中男性约1.63亿,女性约0.88亿,30岁前脱发的比例高达84%,比上一代人的脱发年龄提前了20年,呈现明显的低龄化趋势…