我正计划在数据库设计中存储权限,我的用户拥有的是位。
比方说,我的用户表有列username VARCHAR(100), permbits BIT VARYING(64)
我的权限表有列permname VARCHAR(100), permbits BIT VARYING(64)
我的用户表中的示例行将是
(“Joe”,1001)
(“拉姆”,001)
我的perm表中的示例行是
(“查看记录”,0001)
(删除记录,0010),
(“创建记录”,0100)
(“编辑记录”,1000)
所以Joe将拥有编辑和查看记录的权限。
而拉姆只拥有查看记录的权限
我的问题是
1)可以创建的最大权限数是多少?
2)如何继续进行位操作(即扩展用户的权限并映射到权限表中的相应权限)。
( 3)这个设计好吗?有人能提出更好的选择吗?
感谢你对这个问题的建议。
发布于 2014-07-14 22:01:39
正确的解决方案是在用户和权限之间使用多到多的关系,例如
CREATE TABLE user_permissions (
user_id int REFERENCES users(id),
permission_id int REFERENCES permissions(id),
unique(user_id,permission_id)
);不使用位字段。与用户和权限相关联的记录的存在表明用户具有该权限(例如,可以添加其他字段来指示他们收到该权限的原因/时间)。记录的缩写意味着用户没有该权限。
https://stackoverflow.com/questions/24746609
复制相似问题