实战 - 多租户用户体系数据库表结构设计

这是一个关于多租户用户体系的数据库设计,包括用户表`t_user`、角色-权限策略关联表`t_role_policy`、角色分配表`t_role_assignment`、角色表`t_role`、租户表`t_project`、权限策略表`t_policy`和域表`t_domain`。设计涵盖了用户信息、角色管理、权限策略、租户管理和域管理等方面,确保了系统的安全性与灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多租户用户体系数据库表结构设计
在这里插入图片描述

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='域表';
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我一直在流浪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值