1. 创建基本表
创建User、Role和Module三张表,User中每一行对应一个用户信息,Role每一行保存一个角色信息,包括角色id及对应的name,Module中的每一行保存一个模块信息,包括模块id及对应的name。
创建三张表的sql语句(MySql环境)如下:
1)创建user表,表结构如下:
?
2)创建role表,表结构如下:
?
3)创建module表,表结构如下: CREATE TABLE `of_user` ( `USER_ID` varchar(100) ', `USERNAME` varchar(255), `PASSWORD` varchar(255), `NAME` varchar(255) , `ROLE_ID` varchar(100) , `NUMBER` varchar(100), PRIMARY KEY (`USER_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; CREATE TABLE `of_role` ( `ROLE_ID` varchar(50) , `ROLE_NAME` varchar(100), PRIMARY KEY (`ROLE_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `of_menu` ( `MENU_ID` int(11) NOT NULL, `MENU_NAME` varchar(254) , `MENU_URL` varchar(254) , `PARENT_ID` varchar(20) , `MENU_ORDER` varchar(80), `MENU_ICON` varchar(30), PRIMARY KEY (`MENU_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `of_user_group` ( `id` varchar(50) , `user_id` varchar(50) , `group_id` varchar(50) , PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 插入初始数据
1)定义模块,假设有以下模块a.查询报表 b.账号管理 c.信息发布 d.注册用户列表 e.招聘信息列表几个模块,将各模块插入module表中。
插入后module内容如下:
?
2)定义角色,初始定义以下角色a.超级管理员 b.管理员 c.信息发布者 d.求职者等角色,插入后role内容如下:
?
3)定义用户,初始用户如下,liubei,zhugeliang,zhangfei,lvbu
插入后user内容如下
?
?
3. 创建关联表
1)创建user和role的关联表user_role,一个user对应一个或者多个role,一个role可以对应多个user,设liubei的角色为administrator,zhugeliang为admin和distributor,zhangfei为distributor,lvbu为jobseeker。用户zhugeliang和role之间是一对多关系,角色distributor和user之间是一对多关系。
创建后的user_role表结构如下:
?
内容如下,保存了用户和角色之间的映射关系:
?
2)创建role和module之间的关联映射表role_module,administrator可以查看journal_sheet模块,admin可以查看除journal_sheet的所有模块:info_distribute,account_manage,user_list,job_list,distributor可以查看info_distribute模块,jobseeker可以查看job_list模块。
创建后的role_module表结构如下:
?
内容如下,保存了role和module之间的映射关系
?
CREATE TABLE `of_user_role` ( `user_id` int(50), `role_id` int(50) , PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=urf-8; CREATE TABLE `of_role_menu` ( `role_id` int(50) , `menu_id` int(50) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
至此,通过数据库完成了用户权限的设计。