首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgresql位操作设计

问Postgresql位操作设计
EN

Stack Overflow用户
提问于 2014-07-14 21:50:59
回答 1查看 156关注 0票数 0

我正计划在数据库设计中存储权限,我的用户拥有的是位。

比方说,我的用户表有列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)这个设计好吗?有人能提出更好的选择吗?

感谢你对这个问题的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-14 22:01:39

正确的解决方案是在用户和权限之间使用多到多的关系,例如

代码语言:javascript
复制
CREATE TABLE user_permissions (
    user_id        int REFERENCES users(id),
    permission_id  int REFERENCES permissions(id),
    unique(user_id,permission_id)
);

不使用位字段。与用户和权限相关联的记录的存在表明用户具有该权限(例如,可以添加其他字段来指示他们收到该权限的原因/时间)。记录的缩写意味着用户没有该权限。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24746609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档