MySQL设计用户权限控制数据表

目录

何为权限

权限数据模型

 数据表设计


何为权限

权限是指为了保证职责的有效执行,而对某事项进行决策的范围和程度的控制。 

权限数据模型

该模型主要有三个实例,分别为用户、角色、权限。

用户----------->角色(一个用户可以有多种角色,比如管理员、运营者、编辑者、销售者等)

角色----------->权限(一个角色可以有多种权限,比如增加数据权限、修改数据权限、删除数据权限等)

 

MySQL设计用户权限控制数据表

 数据表设计

该模型中由五种表构成,分别为用户表、角色表、权限表、用户所属角色表、角色所属权限表

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for authority
-- ----------------------------
DROP TABLE IF EXISTS `authority`;
CREATE TABLE `authority` (
  `id` int(11) NOT NULL,
  `describe` char(20) NOT NULL COMMENT '权限描述',
  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否启用(0禁用,1启用)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
  `id` int(11) NOT NULL,
  `role` char(20) NOT NULL,
  `status` tinyint(1) NOT NULL COMMENT '是否启用',
  `create_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `update_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for role_authority
-- ----------------------------
DROP TABLE IF EXISTS `role_authority`;
CREATE TABLE `role_authority` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `role_id` int(11) NOT NULL COMMENT '角色id',
  `authority_id` int(11) NOT NULL COMMENT '权限id',
  PRIMARY KEY (`id`),
  KEY `authority_id_fkey` (`authority_id`),
  KEY `role2_id_fkey` (`role_id`),
  CONSTRAINT `role2_id_fkey` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`),
  CONSTRAINT `authority_id_fkey` FOREIGN KEY (`authority_id`) REFERENCES `authority` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` char(20) NOT NULL,
  `pwd` char(32) NOT NULL,
  `email` varchar(255) DEFAULT NULL,
  `create_at` datetime DEFAULT NULL,
  `update_at` datetime DEFAULT NULL,
  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '用户状态(0禁用,1启用,3已注销)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for user_role
-- ----------------------------
DROP TABLE IF EXISTS `user_role`;
CREATE TABLE `user_role` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL COMMENT '用户id',
  `role_id` int(11) NOT NULL COMMENT '角色id',
  PRIMARY KEY (`id`),
  KEY `user_id_fkey` (`user_id`),
  KEY `role1_id_fkey` (`role_id`),
  CONSTRAINT `role1_id_fkey` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`),
  CONSTRAINT `user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;