用户 + 成员资格 + 组的 SQL 数据库结构

Posted

技术标签:

【中文标题】用户 + 成员资格 + 组的 SQL 数据库结构【英文标题】:SQL Database Structure for Users + Memberships + Groups 【发布时间】:2016-06-17 12:08:23 【问题描述】:

我正在开发一个电子商务网站,我想了解这个社区对组、用户及其成员资格的数据库结构的看法。

目标:在登录时确定用户的组成员身份和访问权限。用户可以是此站点上的卖家、管理员、站点支持人员或任何东西。必须是可扩展的。

初步想法:三个单独的表:usersgroupsmemberships。成功登录后,在成员表中搜索用户 ID 并从成员表中的同一行获取组 ID。从那里,另一个查询从组表中获取组信息(如组名、描述等)。将成员资格存储在用户的会话中并收工。

顾虑:在登录时,我不想不必要地执行额外的查询。上述“初步想法”由登录时的 3 个单独查询组成。


问题:

这是正确的方法吗? 有更好的设计解决方案吗? 最好将管理员分到他们自己的表中,还是将它们扔到同一个groups 表中?

【问题讨论】:

【参考方案1】:

数据库设计合理。由于一个用户可以属于多个组并且可以拥有多个成员资格,因此需要两个额外的表 USER_GROUPUSER_MEMBERSHIP 来保存用户和组之间以及用户和成员资格之间的关系。

【讨论】:

以上是关于用户 + 成员资格 + 组的 SQL 数据库结构的主要内容,如果未能解决你的问题,请参考以下文章

通过 C# 确定本地组的成员

成员资格提供程序产生意外的 SQL 错误

具有 ASP 成员资格的 Sql Server 中的安全性和 SQL 注入

Azure IAM - 是不是可以使用 Azure Policy 审核组成员资格?

使用 SQL Server 2005 通过 LDAP 访问 Active Directory 角色成员资格

SQL Server 成员资格日期范围