我正在创建我的第一个复杂的J2E解决方案,在每个教程中我都会找到某种中间表用法,例如:
表:用户,User_Roles,角色 虽然逻辑只是向用户表添加一个键,引用它在Roles表上的角色,为什么使用该中间表?
我认为这是一两个开发人员的选择,但在我寻找教程的每个地方,我都会找到这种sql架构。
更好吗?它对特定的东西有帮助吗?速度,安全?从逻辑的角度来看,使用一个表User和一个外键来更好。
谢谢
答案 0 :(得分:2)
这是一种常见的数据库关系建模,称为M-N(多对多)。用户可以拥有多个角色,并且可以将角色分配给许多用户,因此您需要中间表。另一个例子是教师可以教授许多课程,每个课程都可以由许多老师教授(例如,在不同的学期)。那么你需要一个教师级的中间表。
其他类型的关系是1-N(从1到N)。用户可以拥有多部电话,但每部电话都由一位用户拥有。在这种情况下,用户的PK将作为FK导出到电话表中。不需要中间表。