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
这就不叫中间表了,这是成绩表,只是关联了另外两个表而已。
|