1 laminux29 2020-11-09 01:37:04 +08:00 你需要的是成绩表吧? 表字段结构: 整数 ID,自增,唯一,非空。 外键 学生 ID,非空。 外键 科目 ID,非空。 浮点 成绩,非空。 表约束:学生 ID 、科目 ID 为联合唯一约束。 根据这种表结构,随便 jpa 映射一下就好了。 |
2 DarkEa OP @laminux29 #1 那中间表是要单独映射成对象么。如果我用 Mybatis 是直接映射关联的类(学生类和科目类)好还是直接映射外键 id |
3 ebingtel 2020-11-09 09:13:17 +08:00 觉得所有的 orm 多对多映射都很麻烦……所以一直把关联表映射成对象 -- ; 完全从 sql 的逻辑去搞 |
![]() | 4 SWALLOWW 2020-11-09 09:26:26 +08:00 这种啊,我一般设计好数据类型然后 ef codefirst 直接生成数据库 |
![]() | 5 kiracyan 2020-11-09 09:29:04 +08:00 这都不能叫中间表 |
6 securityCoding 2020-11-09 09:57:57 +08:00 中间表很单纯的,不要夹杂业务属性 |
7 DarkEa OP @securityCoding #6 但是如果只有比如一个多余字段,但是那个多余字段又是必要的再拆分一个表就有点多余了吧 |
8 securityCoding 2020-11-09 10:26:52 +08:00 @DarkEa 不多余 ,不同业务领域的属性不要揉在一起 ,合理的业务领域建模才能控制复杂度 |
![]() | 9 wysnylc 2020-11-09 10:49:00 +08:00 拆成 1 对多,使用 in 二次查询+代码拼接 不使用 join 避免多表查询,可提高性能和避免跨库事务 |
10 DarkEa OP @securityCoding #8 那我要如何映射这几个表呢。学生对象中直接存放一个课程对象数组和成绩数组么。还是直接把他们拆成一个(学生+成绩)的对象和一个(课程+成绩)的对象 |
11 DarkEa OP @wysnylc #9 用 in 二次查询是指先查出一个学生对应的所有课程 id 和成绩然后再通过 in 查询课程的 id 么 |
12 leesaijyun 2020-11-09 11:15:09 +08:00 用户和角色就是一种多对多的关系,中间表就是用户 ID 、角色 ID, 一个用户可以同时是老师, 超级管理员, 财务什么的 |
13 spbcu 2020-11-09 11:37:38 +08:00 这就不叫中间表了,这是成绩表,只是关联了另外两个表而已。 |