数据库设计--用户、角色及权限管理

数据库设计--用户、角色及权限管理
关键字: 数据库设计
关于用户、角色及权限管理。如下设计是在oracle数据库环境下demo.



1、table user(用户表)



-------------------------------------------------
ID username password name ...
-------------------------------------------------
1 admin admin 测试1
2 lx lx 测试2



2、table group(用户组)



-------------------------------------------------
ID name description ...
-------------------------------------------------
1 js 技术人员
2 yw 业务人员



3、table permission(权限及菜单表)



-------------------------------------------------------------------------------------
ID name depth parentid link description showmenu ...
-------------------------------------------------------------------------------------
1 系统管理 1 0 1
2 用户管理 2 1 1
3 用户组管理 2 1 1
4 添加用户 3 2 /user/adduser.do 1
5 查询用户 3 2 /user/listuser.do 1



说明:depth 为菜单级次,1为1级主菜单...



4、table user_permission(用户权限对照表)


-------------------------------------------------
userId permissionid
-------------------------------------------------


5、table group_permission(用户组权限对照表)


-------------------------------------------------
groupId permissionid
-------------------------------------------------
2 1
2 2
2 3
2 4
2 5

6、table user_group(用户用户组对照表)


-------------------------------------------------
userId groupId
-------------------------------------------------
1 2
2 2



7、Start with...Connect By子句递归查询



Sql代码
select p.id, p.name, p.link , p.depth , p.parentId, p.description , p.showAsMenu
from permission p join (select gp.permissionid from user_group ug
join group_permission gp on ug.userid=1 and ug.groupid=gp.groupid union select up.permissionid
from user_permission up where up.userid=1) t on p.id=t.permissionid and p.showasmenu=1 and p.depth<=3
start with p.parentid=1 connect by prior p.id=p.parentid order siblings by p.id

select p.id, p.name, p.link , p.depth , p.parentId, p.description , p.showAsMenu
from permission p join (select gp.permissionid from user_group ug
join group_permission gp on ug.userid=1 and ug.groupid=gp.groupid union select up.permissionid
from user_permission up where up.userid=1) t on p.id=t.permissionid and p.showasmenu=1 and p.depth<=3
start with p.parentid=1 connect by prior p.id=p.parentid order siblings by p.id

O了, 显示效果就不写了!

你可能感兴趣的:(Java)