2026 年 PMP 培训机构怎么选?老考生整理 5 大硬核评判标准,避开 90% 行业套路
2026/6/20 18:57:56
采用RBAC(基于角色的访问控制)模型
主要包含四个核心表:
设计特点:
优化考虑:
实现租户级别的用户隔离
/* SQLyog Ultimate v13.1.1 (64 bit) MySQL - 8.0.30 : Database - carbon_management ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;CREATEDATABASE/*!32312 IF NOT EXISTS*/`carbon_management`/*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci *//*!80016 DEFAULT ENCRYPTION='N' */;USE`carbon_management`;/*Table structure for table `sys_permission` */DROPTABLEIFEXISTS`sys_permission`;CREATETABLE`sys_permission`(`id`varchar(36)NOTNULL,`code`varchar(100)NOTNULL,`name`varchar(50)NOTNULL,`description`varchar(200)DEFAULTNULL,`resource_type`varchar(20)NOTNULL,`resource_url`varchar(200)DEFAULTNULL,`resource_method`varchar(20)DEFAULTNULL,`parent_id`varchar(36)DEFAULTNULL,`sort_order`intDEFAULTNULL,`tenant_id`varchar(36)NOTNULL,`created_by`varchar(36)NOTNULL,`created_time`datetimeNOTNULL,`updated_by`varchar(36)DEFAULTNULL,`updated_time`datetimeDEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`code`(`code`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*Table structure for table `sys_role` */DROPTABLEIFEXISTS`sys_role`;CREATETABLE`sys_role`(`id`varchar(36)NOTNULL,`code`varchar(50)NOTNULL,`name`varchar(50)NOTNULL,`description`varchar(200)DEFAULTNULL,`tenant_id`varchar(36)NOTNULL,`created_by`varchar(36)NOTNULL,`created_time`datetimeNOTNULL,`updated_by`varchar(36)DEFAULTNULL,`updated_time`datetimeDEFAULTNULL,`status`varchar(1)DEFAULT'1',PRIMARYKEY(`id`),UNIQUEKEY`code`(`code`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*Table structure for table `sys_role_permission` */DROPTABLEIFEXISTS`sys_role_permission`;CREATETABLE`sys_role_permission`(`role_id`varchar(36)NOTNULL,`permission_id`varchar(36)NOTNULL,PRIMARYKEY(`role_id`,`permission_id`),KEY`permission_id`(`permission_id`),CONSTRAINT`sys_role_permission_ibfk_1`FOREIGNKEY(`role_id`)REFERENCES`sys_role`(`id`)ONDELETECASCADE,CONSTRAINT`sys_role_permission_ibfk_2`FOREIGNKEY(`permission_id`)REFERENCES`sys_permission`(`id`)ONDELETECASCADE)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*Table structure for table `sys_tenant` */DROPTABLEIFEXISTS`sys_tenant`;CREATETABLE`sys_tenant`(`id`varchar(36)NOTNULL,`code`varchar(50)NOTNULL,`name`varchar(100)NOTNULL,`description`varchar(500)DEFAULTNULL,`contact_name`varchar(50)DEFAULTNULL,`contact_phone`varchar(20)DEFAULTNULL,`contact_email`varchar(100)DEFAULTNULL,`status`enum('ACTIVE','INACTIVE','EXPIRED','SUSPENDED')NOTNULL,`carbon_quota`decimal(38,2)DEFAULTNULL,`quota_expiration_date`datetimeDEFAULTNULL,`created_by`varchar(36)NOTNULL,`created_time`datetimeNOTNULL,`updated_by`varchar(36)DEFAULTNULL,`updated_time`datetimeDEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`code`(`code`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*Table structure for table `sys_user` */DROPTABLEIFEXISTS`sys_user`;CREATETABLE`sys_user`(`id`varchar(36)NOTNULL,`username`varchar(50)NOTNULL,`password`varchar(255)NOTNULL,`real_name`varchar(50)NOTNULL,`email`varchar(100)DEFAULTNULL,`phone`varchar(20)DEFAULTNULL,`status`enum('ACTIVE','INACTIVE','LOCKED','DELETED')NOTNULL,`tenant_id`varchar(36)NOTNULL,`created_by`varchar(36)NOTNULL,`created_time`datetimeNOTNULL,`updated_by`varchar(36)DEFAULTNULL,`updated_time`datetimeDEFAULTNULL,`last_login_time`datetimeDEFAULTNULL,`last_login_ip`varchar(50)DEFAULTNULL,PRIMARYKEY(`id`),UNIQUEKEY`username`(`username`),KEY`idx_sys_user_username`(`username`),KEY`idx_sys_user_tenant_id`(`tenant_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*Table structure for table `sys_user_role` */DROPTABLEIFEXISTS`sys_user_role`;CREATETABLE`sys_user_role`(`user_id`varchar(36)NOTNULL,`role_id`varchar(36)NOTNULL,`id`intNOTNULLAUTO_INCREMENT,`created_by`varchar(36)DEFAULTNULL,`created_time`timestampNULLDEFAULTNULL,PRIMARYKEY(`user_id`,`role_id`,`id`),KEY`role_id`(`role_id`),KEY`id`(`id`),CONSTRAINT`sys_user_role_ibfk_1`FOREIGNKEY(`user_id`)REFERENCES`sys_user`(`id`)ONDELETECASCADE,CONSTRAINT`sys_user_role_ibfk_2`FOREIGNKEY(`role_id`)REFERENCES`sys_role`(`id`)ONDELETECASCADE)ENGINE=InnoDBAUTO_INCREMENT=46DEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;提供的数据库表结构,我给大家分析下完整的权限体系:
租户 (sys_tenant) ├── 用户 (sys_user) │ └── ←→ 角色 (sys_role) │ └── ←→ 权限 (sys_permission) └── 数据隔离边界| 表名 | 作用 | 关键字段 |
|---|---|---|
| sys_tenant | 租户管理 | code, name, status, carbon_quota |
| sys_user | 用户管理 | username, password, tenant_id, status |
| sys_role | 角色管理 | code, name, tenant_id, status |
| sys_permission | 权限管理 | code, resource_url, resource_method |
| sys_user_role | 用户角色关联 | user_id, role_id |
| sys_role_permission | 角色权限关联 | role_id, permission_id |
user.tenant_id控制数据访问范围sys_user_role关联表sys_role_permission关联表resource_url和resource_method多租户数据隔离
细粒度权限控制
RBAC角色管理
我已创建了完整的分析工具:
analyze-permissions.sql- 全面权限数据分析visualize-permissions.sql- 权限关系可视化check-permissions.bat- 一键执行分析PERMISSION_SYSTEM.md- 详细文档cdc:/DevOpsK8s/ABC/carbon-manage-platform ./check-permissions.bat这将显示:
这个权限体系设计非常完善,支持企业级多租户场景,具有良好的扩展性和安全性!
大家有好的建议可以一起学习,欢迎提出改进意见
需要分析工具的可以私信