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

干嘛用中间表!!??

比如:用户和角色,两个模型用个外键不就可以关联了吗,干嘛要用一个中间表关联他们呢?这样不是增加操作的复杂度吗???

正在回答

3 回答

数据库设计的第三范式 要求。可以读一下相关书籍,很难解释,这里是拆分表,还有拆分字段,都是为了后期性能考虑。

1 回复 有任何疑惑可以回复我~
#1

hen_nam

和数据库设计范式没有关系。
2019-07-06 回复 有任何疑惑可以回复我~

用户和角色,如果只存在一对一的关系,可以不使用中间表;如果存在一对多的关系,就必须使用中间表。

0 回复 有任何疑惑可以回复我~
#1

菜鸟Wenco

用中间表同样可以实现,楼上的说的才是正解:一般实际项目中不使用外键,因为会提高系统的复杂性,比如级联删除等问题。
2019-07-16 回复 有任何疑惑可以回复我~
#2

菜鸟Wenco 回复 菜鸟Wenco

打错了,用外键同样可以实现
2019-07-16 回复 有任何疑惑可以回复我~
#3

hen_nam 回复 菜鸟Wenco

只有用户表、角色表,没有用户角色表的情况下,怎么实现一个用户拥有多个角色?
2019-07-21 回复 有任何疑惑可以回复我~
#4

菜鸟Wenco 回复 hen_nam

1,2,3,4
2019-08-18 回复 有任何疑惑可以回复我~
#5

菜鸟Wenco 回复 hen_nam

以分隔符分割角色id
2019-08-18 回复 有任何疑惑可以回复我~
#6

慕粉2306363686 回复 hen_nam

你这个算是多对多的关系吧,一般是多对多的关系才会使用中间表,一对多的关系如果不是特别复杂的话没必要使用中间表
2019-10-28 回复 有任何疑惑可以回复我~
查看3条回复

    还是不能理解!! 希望视频的老师能亲自回答一下~~~~~~~~

0 回复 有任何疑惑可以回复我~
#1

菜鸟Wenco

第三范式(3NF)    满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)***要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。***简而言之,第三范式就是属性不依赖于其它非主属性。 也就是说, 如果存在非主属性对于码的传递函数依赖,则不符合3NF的要求。
2018-10-30 回复 有任何疑惑可以回复我~
#2

菜鸟Wenco 回复 菜鸟Wenco

看***之间的解释,有了这个中间表那么主表中就不能出现重复信息,没有这个中间表就应当去建立它。
2018-10-30 回复 有任何疑惑可以回复我~
#3

西交大扛把子 提问者 回复 菜鸟Wenco

员工表有个部门外键,典型的一对多,怎么就冗余了呢?!搞个中间表,把他们关键起来,有必要吗!!!??如果有100张表呢,那不更加复杂
2018-10-30 回复 有任何疑惑可以回复我~
#4

西交大扛把子 提问者 回复 菜鸟Wenco

员工表有个部门外键,典型的一对多,怎么就冗余了呢?!搞个中间表,把他们关键起来,有必要吗!!!??如果有100张表呢,那不更加复杂
2018-10-30 回复 有任何疑惑可以回复我~
#5

菜鸟Wenco 回复 西交大扛把子 提问者

https://www.cnblogs.com/limingxian537423/p/8037076.html、https://blog.csdn.net/LQW_java_home/article/details/51172172 我觉的这里写的比较好,我在我们项目中也没有看到过用外键的
2018-10-31 回复 有任何疑惑可以回复我~
#6

慕尼黑0553641 回复 西交大扛把子 提问者

一般实际项目中不使用外键,因为会提高系统的复杂性,比如级联删除等问题。
2019-04-20 回复 有任何疑惑可以回复我~
#7

SETME

其实是一个多对多的设计关系,如果一个用户只能有一个角色,2张表可以表示,如果一个用户可以有多个角色,如果只用2张表来也可行,不过代码写起来很麻烦,特别是更新
2020-11-19 回复 有任何疑惑可以回复我~
查看4条回复

举报

0/150
提交
取消

干嘛用中间表!!??

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信