多租户用户体系数据库表结构设计
CREATE TABLE `t_user` (
`id` varchar(32) NOT NULL COMMENT '主键ID',
`domainId` varchar(32) NOT NULL COMMENT '外键域ID',
`projectId` varchar(32) DEFAULT '' COMMENT '租户ID',
`name` varchar(95) NOT NULL COMMENT '用户名',
`password` varchar(128) NOT NULL COMMENT '密码hash',
`phone` varchar(20) DEFAULT '' COMMENT '手机号码',
`email` varchar(32) DEFAULT '' COMMENT '电子邮箱',
`description` varchar(255) DEFAULT '' COMMENT '用户描述',
`enabled` tinyint(4) NOT NULL COMMENT '是否可用(0:不可用,1:可用)',
`options` int(11) NOT NULL COMMENT '0:默认未定义;1:第一次登录不要求改密码;2:忽略密码过期检查;4:账号可以重置自己的密码;8:用户不可见',
`builtIn` tinyint(4) NOT NULL COMMENT '内置账号不能编辑、禁用、删除',
`loginTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '登录时间',
`changeTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改密码时间',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `domain_name_index` (`domainId`,`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用户表';
CREATE TABLE `t_role_policy` (
`id` varchar(32) NOT NULL,
`roleId` varchar(32) NOT NULL COMMENT '外键,角色ID',
`policyId` varchar(32) NOT NULL COMMENT '外键,策略ID',
`relationship` tinyint(4) NOT NULL COMMENT '权限关系:拥有关系、可授予关系',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='角色-权限策略关联表';
CREATE TABLE `t_role_assignment` (
`id` varchar(32) NOT NULL,
`userId` varchar(32) NOT NULL COMMENT '用户ID',
`domainId` varchar(32) DEFAULT '' COMMENT '域ID',
`projectId` varchar(32) DEFAULT '' COMMENT '租户ID',
`roleId` varchar(32) NOT NULL COMMENT '外键角色ID',
`type` varchar(16) NOT NULL COMMENT '用户权限类类型:1-云平台管理权限,2-域管理权限,3-租户管理权限,4-普通用户权限',
`builtIn` tinyint(4) NOT NULL COMMENT ' 内置角色分配不能删除、禁用、修改',
`systemType` varchar(8) DEFAULT '' COMMENT '云平台管理员',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='角色分配表';
CREATE TABLE `t_role` (
`id` varchar(32) NOT NULL,
`name` varchar(64) NOT NULL DEFAULT '' COMMENT '角色名',
`domainId` varchar(32) NOT NULL DEFAULT '' COMMENT '外键域ID',
`projectId` varchar(32) DEFAULT '' COMMENT '租户ID',
`description` varchar(255) DEFAULT '' COMMENT '角色描述',
`builtIn` tinyint(4) NOT NULL DEFAULT '0' COMMENT '内置角色不能删除、禁用、修改',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='角色表';
CREATE TABLE `t_project` (
`id` varchar(32) NOT NULL,
`domainId` varchar(32) NOT NULL COMMENT '域ID,外键',
`name` varchar(64) NOT NULL COMMENT '租户名',
`isDomain` tinyint(4) NOT NULL COMMENT '保留,用做拓展',
`description` varchar(255) NOT NULL COMMENT '租户描述',
`enabled` tinyint(4) NOT NULL,
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`builtIn` tinyint(4) NOT NULL COMMENT '内置,project不能编辑、删除、禁用',
`magnitude` tinyint(4) NOT NULL COMMENT '租戶等級3-普通,5-重要,8-核心',
`phone` varchar(20) NOT NULL COMMENT '手机号码',
`email` varchar(256) NOT NULL COMMENT '电子邮箱',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `domainId` (`domainId`,`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='租户表';
CREATE TABLE `t_policy` (
`id` varchar(32) NOT NULL,
`name` varchar(64) NOT NULL COMMENT '权限策略名',
`displayName` varchar(50) NOT NULL,
`lableCode` varchar(64) NOT NULL DEFAULT '' COMMENT '标签编码',
`lableName` varchar(64) NOT NULL DEFAULT '' COMMENT '标签名',
`description` varchar(255) NOT NULL COMMENT '权限策略描述',
`builtIn` tinyint(4) NOT NULL COMMENT '内置策略不能编辑、禁用、删除',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='权限策略表';
CREATE TABLE `t_domain` (
`id` varchar(32) NOT NULL,
`name` varchar(64) NOT NULL COMMENT '域名',
`description` varchar(255) NOT NULL COMMENT '内置域,对域的描述',
`enabled` tinyint(4) NOT NULL,
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`builtIn` tinyint(4) NOT NULL COMMENT '内置域不能编辑、删除、禁用',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='域表';