dqh*_*cks 59
user_table
id, etc
permission table
id, user_id, permission_type
这种结构中,每个用户可以有自己的帐户,每个组的特点,他们相关的一些权限类型可以有机会获得.您永远不需要更改表结构以添加新类型的权限.
为了更进一步,您可以使每种类型的权限成为二进制数.这样,您可以通过使用按位运算符使一组权限由一个整数表示.
例如,如果你有常数
PERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1
PERMISSION_MAKE_CHANGES = bindec('010') = 2
PERMISSION_ACCEPT_CHANGES = bindec('100') = 4
你可以使用按位运算符"|"将这些值组合成一个整数
(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions
然后检查他们是否具有特定权限,使用按位运算符"&"
($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true
如果您这样做,则每个权限集只需要一个db记录.