为了账号安全,请及时绑定邮箱和手机立即绑定

如何设计多对多关系表?

如何设计多对多关系表?

对于多对多关系表,有以下疑问,望各位经验丰富的大神能指点一二,感激不尽...第一,关于多对多关系表是否都可以设计成物理删除?什么情况会设计成逻辑删除?第二,关系表是否需要设计create_time等时间记录字段?如设计是出于什么考虑?
查看完整描述

3 回答

已采纳
?
灬紫羽

TA贡献107条经验 获得超71个赞

多对多点数据关系表,一般都是要用中间表来记录两张表的对应关系
例如:学生选课来说,学生和课程分别是2张多对多点表,一个学生可以选择多门课程,一门课程可以被多个学生选择,那么就要使用中间表来记录,方案我这里有两种

1.一个学生选一门课就在中间表记录一条关系记录,当选择多门课就添加多条,这种方式维护起来方便,添加/取消选课关系只需删除对应记录即可,但是当数据量大的时候这个表会很大,数据查询效率是个问题;
一般用户体量不大的就使用这种方案就行

2.从学生和课程角度分别创建中间表,即2张中间表,
学生中间表:以学生为例:存储方式为:学生ID, 课程ID1_课程ID2
课程中间表:以课程为例:存储方式为:课程ID, 学生ID1_学生ID2
这样的设计,数据量相对于第一种方式会少很多,而且不管是从查询某个学生选的课程,或者查询某个课程选择的学生有哪些,都可以很方便的去对应维度的中间表中查询即可,(数据量再大就进行分库分表,这里不进行详细介绍)不过这种方案维护成本会很大,学生选课或者取消选课都需要修改2个表的数据

所以根据你系统的用户体量来进行选择吧
个人偏见,仅供参考,欢迎大家一起交流


查看完整回答
2 反对 回复 2019-04-25
  • 3 回答
  • 0 关注
  • 2710 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信