猿问
下载APP

如何设计多对多关系表?

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

qq_Cc_37
浏览 467回答 1
1回答

灬紫羽

多对多点数据关系表,一般都是要用中间表来记录两张表的对应关系 例如:学生选课来说,学生和课程分别是2张多对多点表,一个学生可以选择多门课程,一门课程可以被多个学生选择,那么就要使用中间表来记录,方案我这里有两种 1.一个学生选一门课就在中间表记录一条关系记录,当选择多门课就添加多条,这种方式维护起来方便,添加/取消选课关系只需删除对应记录即可,但是当数据量大的时候这个表会很大,数据查询效率是个问题; 一般用户体量不大的就使用这种方案就行 2.从学生和课程角度分别创建中间表,即2张中间表, 学生中间表:以学生为例:存储方式为:学生ID, 课程ID1_课程ID2 课程中间表:以课程为例:存储方式为:课程ID, 学生ID1_学生ID2 这样的设计,数据量相对于第一种方式会少很多,而且不管是从查询某个学生选的课程,或者查询某个课程选择的学生有哪些,都可以很方便的去对应维度的中间表中查询即可,(数据量再大就进行分库分表,这里不进行详细介绍)不过这种方案维护成本会很大,学生选课或者取消选课都需要修改2个表的数据 所以根据你系统的用户体量来进行选择吧 个人偏见,仅供参考,欢迎大家一起交流
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答