首页 新闻 赞助 找找看

关于用户信息的权限控制的数据库设计问题

0
悬赏园豆:50 [待解决问题]

就像博客园的个人设置一样,对每个用户信息字段都有,任何人,朋友,自己三个权限,那么这样的数据库该怎么设计呢?

我个人想到的方案有两种:

1.每个属性是一个单独的表

user(id, nikename); --用户信息主表

permission(id, level);  --权限表

name(id,user_id,permission_id);  --用户名名称属性表

address(id,user_id,permission_id);  --用户地址属性表

.....这样一次类推,每个属性是一张单独的表.

这样设计的好处是逻辑控制比较好做,但坏处是没加载一次用户信息都要把所有的属性表查询一次,这样至少也要查询10多张表,肯定不行.

 

2.以属性名为标识,控制权限

user(id, nikename,name,address,.......); --用户信息主表

permission(id, infoname,permission);  --权限表

数据示例:

1, name, public

2, address, private

这样的设计方便的表的查询,但不好的地方在于不符合数据库设计规范,如果主表中的name,address名称改变,将会导致权限表对应不到

 

本人已经想不到还有什么好的的办法可以解决这个问题了,请各位大虾指点一二.

DolphinBoy的主页 DolphinBoy | 初学一级 | 园豆:156
提问于:2013-04-04 17:50
< >
分享
所有回答(4)
1
AttributeId, AttributeName, Status


AttributeId, AttributeValue

类似

sinhbv | 园豆:2579 (老鸟四级) | 2013-04-04 18:51
0

http://framework.supesoft.com/ 这个开源的权限,可以看看。

问题很严重,加班吧。 | 园豆:18 (初学一级) | 2013-04-08 17:16
0

参照sap权限

zhi++ | 园豆:487 (菜鸟二级) | 2013-04-10 20:38
0

user(id, nikename,name,address,public,private,persion....); --用户信息主表 

其中public,private,persion字段记录每个分别记录公开,私有,选择相关人的权限,例如nikename这个字段是公开的,那么在public中会记录这个字段的名字,或者做一个标识.

DolphinBoy | 园豆:156 (初学一级) | 2013-04-22 09:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册