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;