假设我有一个包含常规用户名、密码、电子邮件字段的用户数据库表。为任何给定用户添加启用/禁用功能的附加布尔字段的明智方法是什么。
例如,
user_can_view_page_x
user_can_send_emails
user_can_send_pms
etc
向现有用户表添加一堆布尔列似乎是错误的方法。
假设我有一个包含常规用户名、密码、电子邮件字段的用户数据库表。为任何给定用户添加启用/禁用功能的附加布尔字段的明智方法是什么。
例如,
user_can_view_page_x
user_can_send_emails
user_can_send_pms
etc
向现有用户表添加一堆布尔列似乎是错误的方法。
是的,我认为这是错误的方法。
我宁愿创建一个
User_Features Table
有类似的列
UserID
FeatureName
并检查给定用户是否在表格中启用/输入了相关功能。
您甚至可以创建一个Users_Groups
表,其中用户也与组相关联,并且可以从组设置中继承/禁止功能。
我会用三张桌子。
一个是您现有的用户表:
USER table
----
user_id (pk)
name
email
...
另一个是包含可能的用户权限的表:
PRIVILEGE table
----
privilege_id (pk)
name
最后是一个连接表,其中包含每个用户的每个权限设置的条目:
USER_PRIVILEGE table
----
user_id (pk) (fk)
privilege_id (pk) (fk)
allowed
这是两个用户的一些示例数据,一个具有发送电子邮件权限和发送 pms 权限,另一个具有查看页面权限:
用户数据
USER_ID NAME EMAIL
------- ----- -------------------
1 USER1 user1@somewhere.com
2 USER2 user2@somewhere.com
特权数据
PRIVILEGE_ID NAME
------------ -----------
1 view_page_x
2 send_email
3 send_pms
USER_PRIVILEGE 数据
USER_ID PRIVILEGE_ID ALLOWED
------- ------------ -------
1 1 'N'
1 2 'Y'
1 3 'Y'
2 1 'Y'
2 2 'N'
2 3 'N'