【请教复杂权限的数据库设计问题】

fason 2004-10-18 01:18:15
自己使用的是这样:
设置一个"组"与"权限值"对应关系表,用户可以设置是属于哪个组,被操作的文件设置权限植
----------
组 权限值
sa g1
sa g2
public g1


这样做比较简单,有类似于nt里面的权限的设计,但对于类似公司内的职别权限,用起来不好用,不知有更好的设计么?
...全文
268 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
snower01 2005-01-29
  • 打赏
  • 举报
回复
关注!
zcwmxn 2005-01-24
  • 打赏
  • 举报
回复
对,用户-岗位-权限 实现起来相对容易些,但也基本上可以满足大多数情况的要求。只是一个人对应多个岗位,岗位的继承关系,实现起来就麻烦的多了。
myvicy 2005-01-24
  • 打赏
  • 举报
回复













大家说的都不错,结合自己的经验办事情。

chinawn 2005-01-24
  • 打赏
  • 举报
回复
marked
blueonly 2005-01-24
  • 打赏
  • 举报
回复
up
cuipi2003 2005-01-24
  • 打赏
  • 举报
回复
老狼的办法好像不能解决一个人对应两个职位的情况哟?
我觉得window的权限可以借鉴
一个人可以被加入多个组,组有可以嵌套别的组,继承别的组的权限
用户、角色、动作、模块

访问权限=动作+模块
用户权限=特殊权限+多角色
角色=访问权限+角色

用户可以有多个角色
角色可以由多个角色叠加而成

create table Person(
id int
userName varchar
password varchar
rolesID varchar
userPermit varchar
)

create table roles(
id int
roles varchar
rolesID varchar
rolesPermit varchar
)

create table model(
id int
modelName varchar
)

create table action(
id int
action
)
chang1216 2005-01-24
  • 打赏
  • 举报
回复
权限最终还是要 确定到 某个人身上 一个人员表 一个菜单(也就是表现的东西)表 一个 权限表 人员id-->对应 菜单id
newhandtoo 2005-01-24
  • 打赏
  • 举报
回复
楼主提供的功能需求不明确,偶理解不了
chang1216 2005-01-24
  • 打赏
  • 举报
回复
阿信大哥 也有问题 关注 学习中
mqjshanghai 2005-01-24
  • 打赏
  • 举报
回复
帮你顶

努力
631799 2005-01-24
  • 打赏
  • 举报
回复
--参考:
--软件权限设置控制的例子

CREATE TABLE 功能 (
id int IDENTITY (1, 1),
功能名称 nvarchar (50),
parentid int
)
GO

CREATE TABLE 用户 (
id int IDENTITY (1, 1) NOT NULL,
用户名 nvarchar (50),
密码 nvarchar (50),
修改日期 datetime,
起始日期 datetime
)
GO

CREATE TABLE 权限 (
id int IDENTITY (1, 1) NOT NULL,
用户ID int,
功能id int,
操作权限,
)
GO

--数据
--软件的功能分类
insert into 功能
select '产品销售',0
union all select '电器',1
union all select '食品类',1
union all select '日常用品',1
union all select '家电',2
union all select '电脑',2

--用户
insert into 用户
select '张三',null,getdate(),getdate()
union all select '李四',null,getdate(),getdate()

--权限分配,假设每个功能都有这样的权限设置:1.新增/2.修改/3.删除/4.打印
insert into 权限
select 1,2,power(2,1)+power(2,2)+power(2,4) --张三具有电器类的1.新增/2.修改/4.打印的功能
select 1,4,power(2,1)+power(2,2) --张三具有日常用品类的1.新增/2.修改的功能
select 2,1,power(2,1)+power(2,2)+power(2,3)+power(2,4) --李四具有所有权限
zsh211 2005-01-24
  • 打赏
  • 举报
回复
一闪一闪亮晶晶 满天都是小星星
everywhen 2005-01-24
  • 打赏
  • 举报
回复
我采用的是类似 yhd0411(二分之一) 的方法,但是在组权限和自定义权限方面采用的是将每个模块对应的权限都作为一个模块,这样可以针对每个模块设定权限,也就是说可以设定一个用户可以具有某啊模块的修改权限,同时也可具有另一个模块的删除权限,......,精确的控制用户每个模块的操作权限。当然这是一个特殊例子,楼主可能不需要这么做。

用户信息表
userid username groupid
0001 张三 1
0002 李四 2
0004 赵五 3

用户组表:
id 组名 组权限
1 党支部 1242
2 团支部 1111
3 小脚侦察队 0002
4 特权组 4444

用户权限表
id 组名 M1权限 M2权限 M3权限 M4权限
0001 张三 1 2 4 2
0002 李四 2 2 2 2
0004 赵五 0 0 0 0

当人员加入或离开小组时权限的取舍一般由业务规则决定。我们采用的是加入小组时,若用户的某个模块权限高于小组对该模块的权限则保留用户权限,若用户权限低于小组对该模块的权限则上将用户权限升级。离开小组时,若用户的权限与小组的权限相同或是低于小组的权限则将该用户的权限置为最低级别,即为0,反之保留。

等待星星们的高见。
mrshelly 2005-01-24
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topicview.asp?id=3301579
yhd0411 2005-01-24
  • 打赏
  • 举报
回复
组权限和自定义权限

如果是1111代表全部功能有权限
如果是1011代表第2位看报纸没有权限
yhd0411 2005-01-24
  • 打赏
  • 举报
回复
权限信息表
id Name 权限位数
1 扫地 1
2 看报纸 2
3 看毛片 3
4 罚款 4

用户组表:
id 组名 组权限
1 党支部 1111
2 团支部 0001
3 小脚侦察队 1001
4 特权组 1101

用户信息表
userid username groupid 自定义权限 是否自定义
0001 张三 1 1110 1
0002 李四 2 0
0004 赵五 3 0

aifox 2005-01-23
  • 打赏
  • 举报
回复
我觉得superdullwolf的方法可以解决大多数的问题了
楼主怎么没有回贴呢
是不是还有什么地方不能解决的
权限的问题,我的老板说要能做到灵活
就是有人事变动的时候
他的权限也可以跟着相应的改变
superdullwolf方法如果所有的组都不能满足一个人的需要的话
就需要为这个人重新订制一个组权限
然后把这个人加到这个组里才行
这样操作就比较麻烦
不知道怎么办好??
超级大笨狼 2004-11-01
  • 打赏
  • 举报
回复
多对多

一,人 表
id 姓名 组id
1 张三 1
2 李四 2

二, 组 表

id 组名
1 党支部
2 团支部
3 小脚侦察队
4 特权组

三,权限表
id 权限名
1 扫地
2 看报纸
3 看毛片
4 罚款

四,组权对应表
id 组id 权id
1 1 1
2 1 2
3 2 2
4 2 3
5 3 3
6 3 4
7 4 1
8 4 2
9 4 3
10 4 4

cs1001 2004-10-18
  • 打赏
  • 举报
回复
天王级的问题,那么多星星!
keanuone 2004-10-18
  • 打赏
  • 举报
回复
类似公司内的职别权限一般使用树型结构吧
加载更多回复(6)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧