中间SQL表:用于什么?

问题描述 投票:1回答:1

我正在设法创建我的第一个复杂的J2E解决方案,并且在每个教程中,我都找到了某种中间表用法,例如这里:

表:用户,用户角色,角色尽管逻辑会简单地向用户表添加一个密钥,以指代它在Roles表上的角色,但为什么要使用该中间表?

我认为这是一个或两个开发人员的选择,但是到处寻找教程,我都会发现这种SQL模式。

更好吗?有什么特别的帮助吗?速度,安全性?从逻辑角度考虑,使用一个表User和一个Roles外键比较好。

谢谢

mysql java-ee-7
1个回答
2
投票

这是一个通用的数据库关系模型,称为M-N(多对多)。一个用户可以具有多个角色,并且一个角色可以分配给多个用户,因此您需要中介表。这是另一个示例:一位老师可以教很多班,而每个班级可以由很多老师教(例如,在不同的学期中)。在这种情况下,您需要一个教师级中介表。

一种不同类型的关系是1-N(一对N)。一个用户可以有多个电话,但是每个电话由一个用户拥有。在这种情况下,用户的主键(PK)作为外键(FK)导出到电话表中。不需要中间表。

热门问题
推荐问题
最新问题