关于权限管理数据库需要用到多少张表这个问题,网上有的说是建立六张表,有的说建立五张表,其实大同小异,根据你自己设计的表字段。不过建立五张表:用户表,角色表,权限表(即后来的菜单表),用户角色表,权限角色表。是最容易让新人理解的。
我是建立了四张表。
用户表
(我把后面的用户角色表整合到一个用户表上了,所以少建一张表)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | db_adminuser | CREATE TABLE `db_adminuser` ( `a_id` tinyint(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `a_gid` tinyint(4) NOT NULL COMMENT '所属群组(关联群组表-db_admingroup)', `a_account` varchar(30) NOT NULL COMMENT '管理员账号', `a_password` varchar(32) NOT NULL COMMENT '登陆密码', `a_department` varchar(30) DEFAULT NULL COMMENT '部门', `a_username` varchar(20) NOT NULL COMMENT '管理员姓名', `a_number` varchar(30) DEFAULT NULL COMMENT '工号', `a_tel` varchar(20) DEFAULT NULL COMMENT '联系电话', `a_logtime` int(11) NOT NULL COMMENT '最后登录时间', `a_logip` varchar(25) NOT NULL COMMENT '最后登录IP', `a_ispermit` enum('0','1') NOT NULL DEFAULT '0' COMMENT '是否禁止 0:未,1:禁止登陆', `a_regtime` int(11) NOT NULL COMMENT '注册时间', `shopid` int(11) DEFAULT '0' COMMENT '店铺ID', `a_recly` enum('0','1') NOT NULL DEFAULT '0' COMMENT '是否回收 0代表没有回收 1代表回收', PRIMARY KEY (`a_id`), UNIQUE KEY `a_account` (`a_account`) ) ENGINE=MyISAM AUTO_INCREMENT=154 DEFAULT CHARSET=utf8 COMMENT='用户员表'; |
角色表:
1 2 3 4 5 6 7 | db_admingroup | CREATE TABLE `db_admingroup` ( `g_id` tinyint(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `g_name` varchar(30) NOT NULL COMMENT '角色名称', `g_description` varchar(50) NOT NULL COMMENT '角色描述', `status` enum('1','0') NOT NULL DEFAULT '0' COMMENT '是否禁止 0:未,1:禁止登陆', PRIMARY KEY (`g_id`) ) ENGINE=MyISAM AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COMMENT='角色表' ; |
权限表
1 2 3 4 5 6 7 8 9 10 11 12 | db_menu | CREATE TABLE `db_menu` ( `m_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `m_pid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '父ID,为0为顶级分类', `m_name` varchar(30) NOT NULL COMMENT '权限英文名字', `m_url` varchar(100) NOT NULL COMMENT '权限URL', `m_level` tinyint(3) NOT NULL DEFAULT '1' COMMENT '层次', `status` enum('0','1') NOT NULL DEFAULT '1' COMMENT '是否显示(0:不显示,1:显示)', `m_remark` varchar(32) DEFAULT NULL COMMENT '样式备注', `m_title` varchar(32) DEFAULT NULL COMMENT '权限中文名字', `m_sort` tinyint(2) DEFAULT NULL COMMENT '排序', PRIMARY KEY (`m_id`) ) ENGINE=MyISAM AUTO_INCREMENT=494 DEFAULT CHARSET=utf8 COMMENT='权限表' ; |
角色权限表
1 2 3 4 5 6 | db_access | CREATE TABLE `db_access` ( `a_gid` int(10) NOT NULL DEFAULT '0' COMMENT '角色id', `a_mid` int(10) NOT NULL DEFAULT '0' COMMENT '权限id', `level` tinyint(2) DEFAULT NULL COMMENT '层次', `module` varchar(32) DEFAULT NULL COMMENT '模块' ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT '角色权限表'; |
以上是我用到的表。
大体设计思路是。
1 创建角色,例如:管理员
2 创建用户 隶属于哪个组
3 添加权限
4 给角色分配权限
5 然后关联表 得到某个用户所具有的权限
注意:以上基本上部分先后顺序。
转载请保留本文链接:https://www.zhe94.com/613.html