【发布时间】:2021-05-11 07:02:33
【问题描述】:
在我的应用程序中,用户可以加入群组,这些群组的管理员可以为每个用户授予不同类型的权限。用户可以根据需要加入任意数量的组。我将如何构建数据库表?
Users Groups Permissions Group_User_Permissions
----------- ----------- ------------------- -----------------------
| UID(pk) | | GID(pk) | | PID(pk) | VALUE | | UID | GID | PID |
这是正确的做法吗? 或者这是必要的:
Users Groups Permissions User_Groups Group_User_Permissions
----------- ----------- ------------------- ------------------------ -----------------------
| UID(pk) | | GID(pk) | | PID(pk) | VALUE | | UGID(pk) | UID | GID | | UGID(pk) | PID |
显然性能很重要,但我不确定最终哪个会更好。有什么想法吗?
【问题讨论】:
-
只是一些观察; Group_User_Permissions 似乎与 user_groups 有 1-1 的相关性,所以我不明白为什么它是一个单独的表。从中,我看不出 UGID 提供了任何有用的目的。
-
是的,我想我会使用
UGID,因为它会是一个AIPK,使其连接速度更快,并且还限制了User_Groups中的行数。但这只是一个想法。我不确定哪个更好。 -
为什么它会“更快地加入”?第一个模型对我来说似乎很好(但我不是专家)。
-
我不确定,只是一个想法
-
你有两个 msny to many 关系(用户 - 组和组 - 权限)。对这些建模的问题究竟是什么?
标签: database-design permissions