跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 敢问大佬们是如何处理多对多关系的
未分類
15 11 月 2020

敢问大佬们是如何处理多对多关系的

敢问大佬们是如何处理多对多关系的

資深大佬 : DarkEa 5

比如我有两张表,学生表和科目表,通过一张中间表关联。但是中间表除了两个外键外还有其他的字段,比如科目的成绩之类的。那么如何映射 Java 对象稍微好点呢。
大佬有話說 (13)

  • 資深大佬 : laminux29

    你需要的是成绩表吧?

    表字段结构:
    整数 ID,自增,唯一,非空。
    外键 学生 ID,非空。
    外键 科目 ID,非空。
    浮点 成绩,非空。

    表约束:学生 ID 、科目 ID 为联合唯一约束。

    根据这种表结构,随便 jpa 映射一下就好了。

  • 主 資深大佬 : DarkEa

    @laminux29 #1 那中间表是要单独映射成对象么。如果我用 Mybatis 是直接映射关联的类(学生类和科目类)好还是直接映射外键 id

  • 資深大佬 : ebingtel

    觉得所有的 orm 多对多映射都很麻烦……所以一直把关联表映射成对象 — ; 完全从 sql 的逻辑去搞

  • 資深大佬 : SWALLOWW

    这种啊,我一般设计好数据类型然后 ef codefirst 直接生成数据库

  • 資深大佬 : kiracyan

    这都不能叫中间表

  • 資深大佬 : securityCoding

    中间表很单纯的,不要夹杂业务属性

  • 主 資深大佬 : DarkEa

    @securityCoding #6 但是如果只有比如一个多余字段,但是那个多余字段又是必要的再拆分一个表就有点多余了吧

  • 資深大佬 : securityCoding

    @DarkEa 不多余 ,不同业务领域的属性不要揉在一起 ,合理的业务领域建模才能控制复杂度

  • 資深大佬 : wysnylc

    拆成 1 对多,使用 in 二次查询+代码拼接
    不使用 join 避免多表查询,可提高性能和避免跨库事务

  • 主 資深大佬 : DarkEa

    @securityCoding #8 那我要如何映射这几个表呢。学生对象中直接存放一个课程对象数组和成绩数组么。还是直接把他们拆成一个(学生+成绩)的对象和一个(课程+成绩)的对象

  • 主 資深大佬 : DarkEa

    @wysnylc #9 用 in 二次查询是指先查出一个学生对应的所有课程 id 和成绩然后再通过 in 查询课程的 id 么

  • 資深大佬 : leesaijyun

    用户和角色就是一种多对多的关系,中间表就是用户 ID 、角色 ID, 一个用户可以同时是老师, 超级管理员, 财务什么的

  • 資深大佬 : spbcu

    这就不叫中间表了,这是成绩表,只是关联了另外两个表而已。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具