Database design 如何构造复杂的用户权限集

Database design 如何构造复杂的用户权限集,database-design,permissions,Database Design,Permissions,我的问题不是面向代码的,而是关于设计/架构的。我正在建立一个具有极其复杂的用户权限集的网站,我希望对stack overflow genius pool进行投票,看看是否有人有任何精彩的想法或建议:-D 我正在使用tank auth for codeigniter处理用户授权/跟踪,因此基本用户验证不是我要问的问题。此外,正如我所说,项目将需要处理一组非常复杂的用户权限,而简单的用户角色分配并不能解决这一问题。为了清楚起见,让我尽量解释一下网站的行为 该项目有一种社交网络基础。用户可以创建一个组

我的问题不是面向代码的,而是关于设计/架构的。我正在建立一个具有极其复杂的用户权限集的网站,我希望对stack overflow genius pool进行投票,看看是否有人有任何精彩的想法或建议:-D

我正在使用tank auth for codeigniter处理用户授权/跟踪,因此基本用户验证不是我要问的问题。此外,正如我所说,项目将需要处理一组非常复杂的用户权限,而简单的用户角色分配并不能解决这一问题。为了清楚起见,让我尽量解释一下网站的行为

该项目有一种社交网络基础。用户可以创建一个组,其他成员也可以加入该组。此外,用户可以创建和/或属于多个组,没有大小限制。因此,假设网站变得流行(希望如此…),那么可能存在500个群组,其中一个可能有5个成员,另一个群组可能有1000个成员;这1000人分别属于2、3或20个其他群体。“多对多”这个词似乎不够用

所以我的计划是通过数据库跟踪这些权限。然而,如果我试图在一个组的数据记录中跟踪该组的成员,我最终会遇到以下两个问题之一。在单个单元格中将属于某个组的用户列为字符串将使更新/访问数据成为一场噩梦。例如,如果某个用户注销了该站点的注册,db必须遍历每个组的权限字段才能删除该用户。另一方面,如果我在该记录的单个单元格中跟踪每个用户的id#,那么可以很容易地选择/删除数据,但最终会遇到无法管理的字段数量的问题。假设我留出100个字段来存储用户id。如果一个团队需要101,一切都会中断。这也存在大多数包含大量空字段的组的问题

目前我能想到的最好的方法是使用一个单独的表,表中有三个字段,PERMISSION\u ID,(一个基本上无用的主键)GROUP\u ID和USER\u ID;这样,每个权限都是一个单独的记录。有一个无用的主键(与不存在的主键一样好)让我感到困扰,这与我对数据库的了解背道而驰,但这是我能想到的最好的方法。至少通过这种方式,可以通过组id或用户id轻松搜索和更新表


在我开始实际实施这个解决方案之前,我想我会问一下,是否有我忽略的东西,或者是否有人有更好的方法。我完全愿意被别人的天才所蒙蔽。很抱歉,这个问题太冗长了,我想尝试清楚地说明情况。感谢您抽出时间阅读,以及您可能得到的任何建议。

9999文本临界值墙
9999文本临界值墙