mysql表关系一对一_数据库表关系(单表、一对一、一对多、多对多)

写在开头:

一直搞不清楚数据库表之间的关系,看了很多博客还是有些弥漫,没有具体的例子辅助。所以写了下面的内容,此文中的案例以学校为例,个人理解,可能会有诸多不妥之处,仅供参考。

一、两个重要概念:

什么是主键?外键?

1.主键:主键是表的一个特殊字段,可以唯一地标识表中的每条信息。比如:身份证号。一个表中可以有一个或多个主键。

作用:唯一标识、快速查找

2.外键:如果表B的一个字段(外键)依赖于表A的主键。则成表A为父表,表B为子表。

原则:外键必须依赖于数据库中已经存在的父表的主键,外键可以为空

作用:建立该表与父表的关联关系

二、表关系

包括单表、多表(一对一、一对多、多对多)

1.单表

就是一张表,所有的数据都在一张表中。

例:下面这张表,学习信息都存在一张表中。

3090fcb2158b0476e2999333ce5f4ad5.png

2.多表

2.1一对一   (不常用)

A 表中的一行最多只能匹配于 B 表中的一行

应用场景:

1.单表太大,一分为二

2.由于安全原因而隔离表的一部分

例:为了收集学生的联系方式,又建了一张学生联系表,如下图。

联系表(子表)中的外键(学号),必须依赖于信息表(父表)中的主键(学号)存在。

56f07891422e8ba7a829762d4df0dccb.png

2.2一对多

A 表中的一行可以匹配 B 表中的多行,但是 B 表中的一行只能匹配 A 表中的一行

例:学生到校后,需要分班,下面的两张表就产生了。一个班有多个学生,一个学生只能归属一个班级,

8287411c3049a6f9d311223ac6b8dfdd.png

56f7bea27ae131e194559a28decb710c.png

2.3多对多

多对多就是两个一对多

A 表中的一行可以匹配 B 表中的多行,反之亦然。要创建这种关系,需要定义第三个表,称为结合表,它的主键由 A 表和 B 表的外键组成。

例:办级分好之后学生就该选课了。我们需要一张课程表。一个学生可以选择多门科,一门课也可以多名同学上。此时我们通过第三张表来映射这种关系。

课程表:

6a92618a0be2b2fe445d137897821a96.png

学生分班表:

56f7bea27ae131e194559a28decb710c.png

选课结果(第三张表):

4e14e771ebc5c32b817fc874770e0027.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值