当前位置: 首页 / 网站建设 / 正文

PHP用户管理后台权限数据表怎么设计合理

发布时间:2020-02-27 19:25:02 作者:小超越君

关于权限管理数据库需要用到多少张表这个问题,网上有的说是建立六张表,有的说建立五张表,其实大同小异,根据你自己设计的表字段。不过建立五张表:用户表,角色表,权限表(即后来的菜单表),用户角色表,权限角色表。是最容易让新人理解的。
PHP用户管理后台权限数据表怎么设计合理

我是建立了四张表。

用户表

(我把后面的用户角色表整合到一个用户表上了,所以少建一张表)

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

小超越
热爱折腾,曾想着改变世界,如今只能向生活低头,寻找可口的牛奶和面包
添加站长微信作者头像
专注高品质湛江网站建设及湛江SEO优化服务 立即咨询