【数据库】理解一对一、一对多、多对多关系

三种关系的实例

一对一关系实例

  • 一个人对应一张身份证,一张身份证对应一个人

一对多关系实例

  • 一个班级拥有多个学生,一个学生只能够属于某个班级

多对多实例

  • 一个学生可以选修多门课程,一个课程可以被多个学生选修
一对一关系

在这里插入图片描述
主键的设计方式

  • 一对一关系是最好理解的一种关系,在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面
    也就是说一对一关系的表,主键放在左表也可以,放在右表也可以

从用户表分析一对一关系
箭头所指向的表是 1 的一端,箭头所指向的表的主键,在被指向的表中即作为主键,又作为外键。
在这里插入图片描述

一对多关系

在这里插入图片描述
主键的设计方式

  • 方法1:班级是1端,学生是多端,结合面向对象的思想,1端是父亲,多端是儿子,所以多端具有1端的属性,也就是说多端里面应该放置1端的主键,那么学生表里面应该放置班级表里面的主键(该方法比较常用)
  • 方法2:新增一个关系表,用来表示学生与班级的属于关系,该关系表包含字段(学生号,班级号)。通过学生号与班级号的对应关系表示学生属于的班级。

在两张表所对应的java实体类中多的一端中有1的一端的java实体类的对象属性(学生类中有一个班级对象作为成员变量)。

多对多关系

在这里插入图片描述
主键设计方式

  • 对于多对多关系,需要转换成1对多关系,那么就需要一张中间表来转换,这张中间表里面需要存放学生表里面的主键和课程表里面的主键,此时学生与中间表是1对多关系,课程与中间表是1对多关系,学生与课程是多对多关系

从用户/角色表分析多对多关系
由三张表来体现, 两张是业务表,中间是关系表,箭头由中间表分别指向两张业务表,中间表由两张业务表的主键作为外键(联合主键),且中间表不能有其他字段,在java实体类中两张业务表分别具有对方业务表的集合属性(用户类中有一个List<角色>集合作为成员变量,角色表中有一个List<用户>集合做为成员变量)
在这里插入图片描述

总结

总而言之,最重要的关系就是1对多关系,根据面向对象思想在建表的时候将1端主键置于多端即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墩墩分墩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值