因老师只能处理自己的学生,所以需要检查关系
输入是 student_id 和 teacher_id
class_student
查得学生所在的所有班级 ID class_ids,class_teacher
验证有考虑加个关系表 student_teacher 但想到每次加老师的,加学生到班级的时候,要插 n 条记录到关系表,不理想
1 jones2000 2020-12-28 14:54:51 +08:00 老师表和学生表增加班级 ID 数组的 json 字段。这样 1 条记录就可以保存 1 个学生对应多个班级的信息了 |
![]() | 2 gesse 2020-12-28 15:05:40 +08:00 “有考虑加个关系表 student_teacher 但想到每次加老师的,加学生到班级的时候,要插 n 条记录到关系表,不理想” 你考虑的这个方案是最优方案 且学生变动、老师变动,对数据库来说,不是频繁的数据变动事件。空间换时间,绝对划得来。 |
3 akmisty OP @jones2000 这方法还可以,但是在批量改动时 班级的学生、老师时,每个老师学生都要查出其所有班级,然后更新相应的字段 |
![]() | 4 cmdOptionKana 2020-12-28 15:12:11 +08:00 via Android 学生和老师一共就没几个人,完全不需要考虑性能问题,只考虑逻辑清晰易懂、不易出错就行。 |
![]() | 5 OaO 2020-12-28 15:16:13 +08:00 ![]() 对不起,我检讨,我不是带着学术讨论的目的点进这个标题的...( _ _)ノ |
6 leafre 2020-12-28 15:17:48 +08:00 对不起,我想歪了 |
8 piecezzz 2020-12-28 15:18:35 +08:00 对不起,我理解的关系不是这种关系 |
9 ClaudeCode 2020-12-28 15:39:25 +08:00 ![]() 学生和老师竟然有多对多的关系, 太可怕了. 道德沦丧. |
![]() | 10 cco 2020-12-28 15:40:37 +08:00 你这标题- -。我手误了。 |
11 LYEHIZRF 2020-12-28 15:40:45 +08:00 看到标题想到 NLP 关系抽取♀ 被论文支配的恐惧 |
![]() | 12 Ranying 2020-12-28 15:45:39 +08:00 希望的点进来,失望的走出去。 |
13 PeterYang1996 2020-12-28 15:51:23 +08:00 失望 |
14 reed2020 2020-12-28 16:06:28 +08:00 失望 |
![]() | 15 TimePPT PRO 试试图关系数据库 |
![]() | 16 wjfz 2020-12-28 16:14:04 +08:00 直接 INNER JOIN 现有两张关系表如何? |
17 jch 2020-12-28 16:33:12 +08:00 失望 |
![]() | 18 lyusantu 2020-12-28 16:49:11 +08:00 SELECT count(1) FROM class_teacher WHERE teacher_id in( SELECT class_id FROM class_student WHERE student_id = #{studentId} ) AND teacher_id = #{teacherId} 判断查询结果是否 > 0 即可知道是否有无关系? |
19 kevinGraham 2020-12-28 16:53:50 +08:00 对不起,这不是我想要看到的关系 |
![]() | 20 cking 2020-12-28 16:58:47 +08:00 对不起,我以为是师生恋 |
21 daijialong 2020-12-28 17:01:04 +08:00 对不起,我以为是某国剧情点进来了 |
![]() | 22 XiaoxiaoPu 2020-12-28 17:02:05 +08:00 ``` select 1 from `class_student` inner join `class_teacher` on `class_student`.`class_id` = `class_teacher`.`class_id` where `class_student`.`student_id` = #{student_id} and `class_teacher`.`teacher_id` = #{teacher_id} limit 1 ``` |
![]() | 23 dynastysea 2020-12-28 17:05:12 +08:00 引入缓存 |
![]() | 24 motherfaka 2020-12-28 17:06:13 +08:00 班级和老师也多对多的话,现有的方案就已经挺不错了,按道理一个班级的老师不会太多,可以考虑在班级字段里增加老师 id 的数组或者固定多个字段,降低业务复杂程度 |
25 laminux29 2020-12-28 17:14:12 +08:00 这个问题本质是愿意为了节约时间来浪费空间,还是为了浪费空间来节约时间。。 |
![]() | 26 bluefalconjun 2020-12-28 17:17:41 +08:00 希望的点进来,失望的走出去 +1 |
27 fuxiuyin 2020-12-28 17:20:19 +08:00 我怎么觉得这种一学期才会变一次的数据,程序起来的时候从数据库里读出来需要的数据,然后内存里面建方便用的数据结构之后查就行了,比如以教师 ID 为 key,学生 ID set 为 value 的 dict 。 |
![]() | 28 linux40 2020-12-28 17:22:48 +08:00 via Android ![]() 节点本来就是 MySQL,怎么这么多废话的? |
29 wednesdayco 2020-12-28 17:29:05 +08:00 对不起,这不是我想要看到的关系 |
![]() | 30 cue 2020-12-28 17:32:51 +08:00 我特喵的都脑补了好几个番号了 你就给我看这个??? |
![]() | 31 iscook 2020-12-28 17:54:42 +08:00 对不起,内容和我想的不一样 |
32 52coder 2020-12-28 17:59:50 +08:00 点进来看到内容有点失望,哈哈哈 |
![]() | 33 ZzFoo 2020-12-28 18:38:50 +08:00 什么关系?啊?你说什么关系?互为相反数啊! |
34 coderABC 2020-12-28 20:45:43 +08:00 via Android 这种问题不屑于回答,因为根本就不是我理解的关系 |
![]() | 36 9LCRwvU14033RHJo 2020-12-29 03:56:21 +08:00 不晓得 MySQL 还有这功能! |
![]() | 37 janssenkm 2020-12-29 07:53:00 +08:00 via iPhone 这么点数据量,怎么画都不慢 |
![]() | 38 zqwcrystal 2020-12-29 11:44:37 +08:00 如果纯用 sql 的话楼上就有解决办法,如果 sql 加代码逻辑实现的话可以分别查出来学生和老师对应的班级,然后两个数组取交集,为空则不存在关系,不为空则存在关系,即使学生或者老师表的数据再多,性能也不受影响 |
39 zifangsky 2020-12-29 14:59:33 +08:00 这种涉及到判断关系的问题,可以考虑试试用 并查集 这种数据结构来求解,每次有新的 学生 /老师 /班级 的关联关系时,就往并查集代表的数组中插入一条记录,删除关联关系时也做相应处理即可。最后,如果要判断某两者之间是否存在关系,也可以在线性时间复杂度内得到结果。 |
![]() | 40 xyjincan 2020-12-29 18:58:09 +08:00 via Android 当初我是定义了一个课程表, |
41 APi85 2020-12-29 19:35:32 +08:00 via iPhone 失望 |