用户应该有多个群组吗?

时间:2011-05-16 15:34:29

标签: database-design cakephp

我正在开展个人/娱乐项目。我正在使用cakePHP,但这更像是一个数据库设计问题。

目前我的USERS表中有一个名为group的字段。我有一个GROUPS表,列出了几个组,如admin,confirm,new等......

我还有一个NOTIFICATIONS表,用于跟踪不同类型的通知。我想在组的NOTIFICATIONS表中添加一个字段,其中group来自GROUPS表。

问题是如果我将通知标记为“已确认”组的一部分,我该如何确保“admin”组中的用户也可以访问它。基本上我希望“管理员”可以访问“确认”做的所有事情,等等。

1)允许用户成为多个组的一部分会更好吗?管理员是否在管理员和确认组中?

2)我的代码中是否应该有一些额外的逻辑。就像我可以传递“组”的功能一样,它会告诉我用户是否可以访问该组?

3)......其他方法?我在考虑这个错误吗?

1 个答案:

答案 0 :(得分:2)

让用户分成多个组并不难。您只需要一个users_groups列,其中包含user_id列和group_id列。

更大的问题是:你的应用程序是否有意义这样做?这样做的原因是什么? 这样做的原因是什么?

另外,我不确定“确认组”是什么意思,但这听起来更像是一个状态指示器,而不是真正的“组”。但不知道详细要求,很难肯定。


更新

如果只有管理员可以在多个组中,那么最好只允许用户在一个组中。然后,为了表明用户是否也是管理员,您可能希望拥有is_admin指标。当然,管理员仍然必须在某些组中(除非您允许用户为零组),因此您也可以将它们放在“admin”组中。或者这是一种情况,管理员只是*某些组的管理员,但不是全部?在这种情况下,您可以拥有一个admins_groups表,其中包含user_id个管理员,以及他们管理的组group_id。同一user_id的多个记录允许管理员用户管理非常特定的组。

那么......您的用户是否在多个组中是否有意义?如果不是现在,这是你将来可能想要的东西吗?