我正在开展个人/娱乐项目。我正在使用cakePHP,但这更像是一个数据库设计问题。
目前我的USERS表中有一个名为group的字段。我有一个GROUPS表,列出了几个组,如admin,confirm,new等......
我还有一个NOTIFICATIONS表,用于跟踪不同类型的通知。我想在组的NOTIFICATIONS表中添加一个字段,其中group来自GROUPS表。
问题是如果我将通知标记为“已确认”组的一部分,我该如何确保“admin”组中的用户也可以访问它。基本上我希望“管理员”可以访问“确认”做的所有事情,等等。
1)允许用户成为多个组的一部分会更好吗?管理员是否在管理员和确认组中?
2)我的代码中是否应该有一些额外的逻辑。就像我可以传递“组”的功能一样,它会告诉我用户是否可以访问该组?
3)......其他方法?我在考虑这个错误吗?
答案 0 :(得分:2)
让用户分成多个组并不难。您只需要一个users_groups
列,其中包含user_id
列和group_id
列。
更大的问题是:你的应用程序是否有意义这样做?这样做的原因是什么? 不这样做的原因是什么?
另外,我不确定“确认组”是什么意思,但这听起来更像是一个状态指示器,而不是真正的“组”。但不知道详细要求,很难肯定。
更新
如果只有管理员可以在多个组中,那么最好只允许用户在一个组中。然后,为了表明用户是否也是管理员,您可能希望拥有is_admin
指标。当然,管理员仍然必须在某些组中(除非您允许用户为零组),因此您也可以将它们放在“admin”组中。或者这是一种情况,管理员只是*某些组的管理员,但不是全部?在这种情况下,您可以拥有一个admins_groups
表,其中包含user_id
个管理员,以及他们管理的组group_id
。同一user_id
的多个记录允许管理员用户管理非常特定的组。
那么......您的用户是否在多个组中是否有意义?如果不是现在,这是你将来可能想要的东西吗?