一对一,一对多,多对多三种关系简单理解

今天单位有个小朋友问起,一对一,一对多,多对多 这三种关系该怎么理解。

一、一对一的关系

简单的说这个东西是和你绑定的,你和它都是唯一的对应关系。
举例说明: 你和你的身份证号,你和你的学生卡,你和银行卡 等等,这些关系都是一对一的关系。
数据表示:
表A (人员姓名表)

ID人员姓名
ry1张三
ry2李四

表B (人员姓名表)

ID身份账号外键
sfzh1422411********1234ry1
sfzh2433411********2345ry2

二、一对多的关系

简单的说就是 一个 对应 多个
举例说明: 销售记录和销售明细,一条销售记录对多条的销售明细。
注意: 这里不要钻牛角尖,如果我一张单据就买一个东西呢,岂不是就是一对一的关系了?不对的,我们设计东西时,会设计成一对一吗?如果是,那出现一对多的情况时,该怎么处理呢?是否就出现了设计失误呢。设计是无法完美的,只能是尽善尽美,尽可能的将前期想到的在使用中可能会出现的情况,纳入系统设计中。
数据表示:
表C (销售单据表)

销售单号(主键)销售人员
dh1张三
dh2李四

表D (销售明细表)

明细ID产品名称外键
mx1上衣dh1
mx2裤子dh1

一对多时,多 代表的这一张数据表,可设置外键,进行联表查询。

三、多对多的关系

可以理解为:一张表A中的一条记录可以对应另一张表B中的多条记录,另一张表B中的一条记录也可以对应一张表A中的多条记录
举例说明: 学生与老师的关系。一名老师同时教授多个学生,一名学生同时被多名老师教导(数学老师、语文老师 等等),因此是多对多的关系。
数据表示:

表E (学生表)

学号(主键)学生名称
xh1张小小
xh2李大大
xh3王乎乎

表F (销售明细表)

老师ID老师名称
ls1原老师
ls2韩老师

表G (关系表)

关系ID(主键)学生ID老师ID
1xh1ls2
2xh2ls2
3xh3ls2
4xh1ls1
5xh2ls1
6xh3ls1

当出现对多对多的关系时,就要考虑好第三者关系表,用以存放多对多关系的外键
有很多类似的场景,都需要。如用户与角色的关系,角色与权限的关系等等,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Spring Boot JPA中的多对多增删改操作,可以按照以下步骤进行操作: 1. 首先,在Spring Boot项目中创建两个实体类,表示多对多关系的两个实体对象。这两个实体类需要使用`@ManyToMany`注解来定义它们之间的关联关系。同时,需要在两个实体类中分别定义对方实体类的集合属性,并使用`@JoinTable`注解来指定关联表的名称和关联字段的配置。 2. 接下来,创建两个Repository接口分别用于操作这两个实体类。在这两个接口中,可以使用Spring Data JPA提供的方法来进行增删改查的操作。 3. 在需要进行多对多关系操作的地方,可以通过调用相关的Repository方法来实现增删改的功能。例如,可以使用`save()`方法来保存对象,使用`delete()`方法来删除对象。 4. 如果需要进行关联表的增删改操作,可以使用`cascade`属性来定义级联操作。例如,可以在一方实体类的集合属性上使用`cascade = {CascadeType.PERSIST, CascadeType.MERGE}`来指定级联保存和更新操作。 5. 最后,可以通过Controller来实现对多对多关系的增删改操作的接口。可以使用`@PostMapping`来处理增加操作,使用`@DeleteMapping`来处理删除操作,使用`@PutMapping`来处理更新操作。 请注意,以上是一种通用的实现方式,具体的代码实现需要根据你的实际需求和实体类设计进行相应的调整。同时,为了更好地理解和实践这个过程,建议参考引用中提供的教程,其中提供了关于Spring Boot JPA的增删改查的详细示例代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springbootjpa实现增删改](https://blog.csdn.net/qq_57392213/article/details/128450489)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Springboot整合Hibernate thymeleaf,添删改查,分页查询等,单元测试,亲测百分之白可运行](https://download.csdn.net/download/s54156s4/10606800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [SpringBoot JPA:JPARepository的增删改(简单理解)](https://blog.csdn.net/qq_43055855/article/details/110144484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值