中级SQLTable:干什么?

Intermediate SQL Table : What for?

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

Tables:用户,User_Roles,角色 虽然逻辑会简单地向用户 Table 添加一个密钥,指的是它在角色 table 上的角色,但为什么要使用该中介 table ?

我认为这是一两个开发人员的选择,但无论我在哪里寻找教程,我都能找到这种 sql 模式。

好点了吗?它对某些特定的事情有帮助吗?速度,安全?从逻辑的角度来看,使用一个 table 用户和角色的外键更好。

谢谢

这是一种常见的数据库关系建模,称为M-N(多对多)。一个User可以有很多Roles,一个Role可以分配给很多User,所以需要中介table。这是另一个例子:一个老师可以教很多 Class 课,每个 Class 课可以由很多老师教(例如,在不同的学期)。在这种情况下你需要一个老师-Class 中介 table.

另一种关系是 1-N(一对 N)。一个用户可以拥有多个电话,但每个电话都属于一个用户。在这种情况下,用户的主键 (PK) 作为外键 (FK) 导出到电话 table 中。无需中介 table.