BestClever的gravatar头像
BestClever 2018-05-28 21:01:24

用户角色权限管理数据库表如何设计最为合理?

想建立一个用户,角色,部门,权限这几个表的关系,怎么设计最为合理

所有回答列表(3)
mySong的gravatar头像
mySong  LV11 2018年5月29日

个人拙见:用户表,角色表,权限表,用户角色表,角色权限表,用户权限表

针对以上几个表可以给用户通过角色授权(批量),也可给用户进行单独授权(用户权限表),个人建议别把权限和部门关联起来。

ps:如果系统采用组织权限隔离的话就需要将在 ~用户角色表 和 用户权限表中添加组织部门关联字段,用于标示在什么组织部门下的权限,其他表保存不变

评论(1) 最佳答案
罗大雨的gravatar头像
罗大雨  LV15 2018年5月29日

个人建议:设计五张表

1、用户表

2、用户_角色桥梁表

3、角色表

4、角色权限桥梁表

5、权限表

 

lonesafe的gravatar头像
lonesafe  LV11 2018年6月27日
SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for rs_menu
-- ----------------------------
DROP TABLE IF EXISTS `rs_menu`;
CREATE TABLE `rs_menu` (
  `MENU_ID` varchar(32) NOT NULL,
  `PARENT_ID` varchar(32) DEFAULT NULL,
  `MENU_NAME` varchar(255) DEFAULT NULL,
  `ORDER_ID` int(11) DEFAULT NULL,
  `MENU_ICON` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`MENU_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;


-- ----------------------------
-- Table structure for rs_menu_op
-- ----------------------------
DROP TABLE IF EXISTS `rs_menu_op`;
CREATE TABLE `rs_menu_op` (
  `OP_ID` varchar(32) NOT NULL,
  `MENU_ID` varchar(32) NOT NULL,
  `URL` varchar(1024) NOT NULL,
  `MENU_TYPE` varchar(32) NOT NULL,
  PRIMARY KEY (`OP_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for rs_organ
-- ----------------------------
DROP TABLE IF EXISTS `rs_organ`;
CREATE TABLE `rs_organ` (
  `ORGAN_ID` varchar(32) NOT NULL,
  `ORGAN_CODE` varchar(255) DEFAULT NULL,
  `ORGAN_NAME` varchar(255) DEFAULT NULL,
  `ORGAN_TYPE` varchar(255) DEFAULT NULL,
  `PARENT_ID` varchar(32) DEFAULT NULL,
  `ORDER_ID` varchar(255) NOT NULL DEFAULT '0',
  PRIMARY KEY (`ORGAN_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for rs_roles
-- ----------------------------
DROP TABLE IF EXISTS `rs_roles`;
CREATE TABLE `rs_roles` (
  `ROLE_ID` varchar(32) NOT NULL,
  `ROLE_NAME` varchar(50) NOT NULL,
  `DESCRIPTION` varchar(255) DEFAULT NULL,
  `CTIME` varchar(50) DEFAULT NULL,
  `UPDATA` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`ROLE_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for rs_role_menu
-- ----------------------------
DROP TABLE IF EXISTS `rs_role_menu`;
CREATE TABLE `rs_role_menu` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `ROLE_ID` varchar(32) NOT NULL,
  `MENU_ID` varchar(32) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=68 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for rs_users
-- ----------------------------
DROP TABLE IF EXISTS `rs_users`;
CREATE TABLE `rs_users` (
  `USER_ID` varchar(32) NOT NULL,
  `USER_NAME` varchar(1024) DEFAULT NULL,
  `USER_PASSWORD` varchar(32) DEFAULT NULL,
  `USER_STATUS` varchar(32) DEFAULT NULL,
  `CREATE_TIME` varchar(32) DEFAULT NULL,
  `LOCK_TIME` varchar(32) DEFAULT NULL,
  `EXPIRED_TIME` varchar(32) DEFAULT NULL,
  `PWD_UP_TIME` varchar(32) DEFAULT NULL,
  `PWD_TIME` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for rs_users_organ
-- ----------------------------
DROP TABLE IF EXISTS `rs_users_organ`;
CREATE TABLE `rs_users_organ` (
  `USER_ID` varchar(32) NOT NULL,
  `ORGAN_ID` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;


-- ----------------------------
-- Table structure for rs_users_role
-- ----------------------------
DROP TABLE IF EXISTS `rs_users_role`;
CREATE TABLE `rs_users_role` (
  `RULE_ID` varchar(32) NOT NULL,
  `USER_ID` varchar(32) NOT NULL,
  `ROLE_ID` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`RULE_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

 

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友