我正在考虑涉及用户和用户角色的架构设计,但我不确定什么是更好的路线。
选项 1
创建三张表,一张包含用户信息,一张包含角色信息,一张包含用户角色关系。
users {
u_id,
etc
}
roles {
r_id,
r_name,
etc
}
user_roles {
u_idm
r_id
}
选项 2
创建两张表,一张包含用户信息,另一张包含角色、角色信息和关系信息。
users {
u_id,
etc
}
roles {
r_id,
u_id,
r_name,
etc
}
选项 1 更强大,但需要额外的联接。选项 2 将需要一个额外的主键,但只会是一个连接。如果我更改了角色名称,则使用选项进行更新将需要更长的时间,但我不认为更新会很频繁。
对于可扩展的解决方案,哪一个更好?我的失踪还有哪些其他见解?这是针对 mysql 和 postgresql 解决方案。
最佳答案
选项 1。 如果每个角色只有一个用户可以拥有,那么角色有什么用呢? 如果您有 100 个注册用户,则“注册用户”将有 100 个重复定义。
“etc”越多,您的数据库就会越大。
拥有如此多的重复项会减慢数据库速度,即使少一个连接,最终速度也会慢很多。
如果您运行大量基于角色的查询和 relly eel,就像您需要一个像选项二中的数据库一样,您仍然可以创建一个 View 并让数据库缓存它,但我怀疑这对您有任何好处。
关于php - 用户角色数据库架构设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9316478/