字符集utf8mb4,排序规则 utf8mb4_unicode_ci

t_role t_permisson 角色、权限表

t_role

CREATE TABLE `t_role` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `role_name` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色名',
  `role_key` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色唯一标识',
  `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0:启用 1:禁用)',
  `sort` int unsigned NOT NULL DEFAULT 0 COMMENT '管理系统中的显示顺序',
  `remark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间',
  `is_deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除(0:未删除 1:已删除)',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_role_key` (`role_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';
字段名数据类型约束条件默认值备注
idbigint unsignedPRIMARY KEY, AUTO_INCREMENT-主键ID
role_namevarchar(32)NOT NULL-角色名
role_keyvarchar(32)NOT NULL, UNIQUE-角色唯一标识
statustinyintNOT NULL0状态(0:启用 1:禁用)
sortint unsignedNOT NULL0管理系统中的显示顺序
remarkvarchar(255)-NULL备注
create_timedatetimeNOT NULLCURRENT_TIMESTAMP创建时间
update_timedatetimeNOT NULLCURRENT_TIMESTAMP最后一次更新时间
is_deletedbit(1)NOT NULLb'0'逻辑删除(0:未删除 1:已删除)

索引

  • PRIMARY KEYid
  • UNIQUE KEYrole_key 确保 role_key 唯一

t_permisson

CREATE TABLE `t_permission` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `parent_id` bigint unsigned NOT NULL DEFAULT '0' COMMENT '父ID',
  `name` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '权限名称',
  `type` tinyint unsigned NOT NULL COMMENT '类型(1:目录 2:菜单 3:按钮)',
  `menu_url` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '菜单路由',
  `menu_icon` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '菜单图标',
  `sort` int unsigned NOT NULL DEFAULT 0 COMMENT '管理系统中的显示顺序',
  `permission_key` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '权限标识',
  `status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '状态(0:启用;1:禁用)',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `is_deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除(0:未删除 1:已删除)',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='权限表';
字段名数据类型约束条件默认值备注
idbigint unsignedPRIMARY KEY, AUTO_INCREMENT-主键ID
parent_idbigint unsignedNOT NULL0父ID(表示层级关系)
namevarchar(16)NOT NULL-权限名称
typetinyint unsignedNOT NULL-类型(1:目录 2:菜单 3:按钮)
menu_urlvarchar(32)NOT NULL''菜单路由
menu_iconvarchar(255)NOT NULL''菜单图标
sortint unsignedNOT NULL0管理系统中的显示顺序
permission_keyvarchar(64)NOT NULL-权限标识(唯一标识权限项)
statustinyint unsignedNOT NULL0状态(0:启用;1:禁用)
create_timedatetimeNOT NULLCURRENT_TIMESTAMP创建时间
update_timedatetimeNOT NULLCURRENT_TIMESTAMP更新时间
is_deletedbit(1)NOT NULLb'0'逻辑删除(0:未删除 1:已删除)

索引

  • PRIMARY KEYid

设计特点:

  1. 层级结构支持parent_id 字段用于表示权限的层级关系,可用于构建树状权限结构。
  2. 权限类别type 字段区分权限类型(目录、菜单、按钮),便于管理不同层级的权限。
  3. 前端菜单信息
    • menu_url:定义菜单路由
    • menu_icon:存储菜单图标
  4. 权限标识permission_key 用于唯一标识某个权限项,通常用于后端权限控制。
  5. 状态管理status 用于控制权限的启用/禁用状态。
  6. 逻辑删除is_deleted 作为软删除字段,避免直接物理删除数据。

这个表适用于权限管理系统,结合 t_role 表可以实现基于角色的权限控制 (RBAC)。

关联表

t_user_role_rel

CREATE TABLE `t_user_role_rel` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` bigint unsigned NOT NULL COMMENT '用户ID',
  `role_id` bigint unsigned NOT NULL COMMENT '角色ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `is_deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除(0:未删除 1:已删除)',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色表';

以下是 t_user_role_rel 表的设计概述,以表格形式展示:

字段名数据类型约束条件默认值备注
idbigint unsignedPRIMARY KEY, AUTO_INCREMENT-主键ID
user_idbigint unsignedNOT NULL-用户ID
role_idbigint unsignedNOT NULL-角色ID
create_timedatetimeNOT NULLCURRENT_TIMESTAMP创建时间
update_timedatetimeNOT NULLCURRENT_TIMESTAMP更新时间
is_deletedbit(1)NOT NULLb'0'逻辑删除(0:未删除 1:已删除)

索引

  • PRIMARY KEYid
  • 推荐添加 (user_id, role_id) 组合唯一索引,以确保一个用户只能有一个相同的角色。

设计特点:

  1. 用户与角色的多对多关系:该表是 t_user(用户表)和 t_role(角色表)之间的中间表,实现多对多关联。
  2. 角色管理:用户可以分配多个角色,每个角色可以对应多个用户,适用于基于角色的访问控制 (RBAC)。
  3. 软删除is_deleted 作为逻辑删除字段,避免物理删除数据,方便数据恢复。
  4. 创建与更新时间:提供 create_timeupdate_time,确保可追溯数据变更。

该表的作用是连接 t_usert_role,用于管理用户与角色的对应关系。

t_role_permisson_rel

CREATE TABLE `t_role_permission_rel` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `role_id` bigint unsigned NOT NULL COMMENT '角色ID',
  `permission_id` bigint unsigned NOT NULL COMMENT '权限ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `is_deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '逻辑删除(0:未删除 1:已删除)',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户权限表';

以下是 t_role_permission_rel 表的设计概述,以表格形式展示:

字段名数据类型约束条件默认值备注
idbigint unsignedPRIMARY KEY, AUTO_INCREMENT-主键ID
role_idbigint unsignedNOT NULL-角色ID
permission_idbigint unsignedNOT NULL-权限ID
create_timedatetimeNOT NULLCURRENT_TIMESTAMP创建时间
update_timedatetimeNOT NULLCURRENT_TIMESTAMP更新时间
is_deletedbit(1)NOT NULLb'0'逻辑删除(0:未删除 1:已删除)

索引

  • PRIMARY KEYid
  • 推荐添加 (role_id, permission_id) 组合唯一索引,确保同一个角色不能重复分配相同的权限。

设计特点:

  1. 角色与权限的多对多关系:该表是 t_role(角色表)和 t_permission(权限表)之间的中间表,实现多对多关联。
  2. 权限管理:每个角色可以拥有多个权限,每个权限可以分配给多个角色,适用于基于角色的访问控制 (RBAC)。
  3. 软删除is_deleted 作为逻辑删除字段,避免直接物理删除数据,方便数据恢复和审计。
  4. 创建与更新时间:提供 create_timeupdate_time,便于追踪权限分配的变更历史。

该表的作用是连接 t_rolet_permission,用于管理角色与权限的对应关系。