news 2026/6/15 6:53:37

企业级权限表结构设计经典设计--纯个人分享

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
企业级权限表结构设计经典设计--纯个人分享

权限体系设计

    • 我的数据库表结构:
    • 🔐 碳管理系统权限体系详解
      • 🏗️ **核心架构:多租户RBAC模型**
      • 📊 **权限表关系**
      • 🔗 **权限控制流程**
      • 🎯 **权限验证维度**
      • 📋 **关键安全特性**
      • 🛠️ **分析工具**
      • 🚀 **使用方法**

我的权限表设计思路如下:
  1. 采用RBAC(基于角色的访问控制)模型

  2. 主要包含四个核心表:

    • 用户表:存储用户基本信息
    • 角色表:定义系统角色
    • 权限表:记录具体操作权限
    • 用户角色关联表:建立用户与角色的多对多关系
    • 角色权限关联表:建立角色与权限的多对多关系
  3. 设计特点:

    • 通过角色间接分配权限,简化权限管理
    • 支持权限继承,上级角色自动继承下级权限
    • 预留字段支持权限扩展
    • 使用状态标识实现权限的灵活启用/禁用
  4. 优化考虑:

    • 建立合适的索引提升查询效率
    • 使用外键确保数据完整性
    • 通过缓存机制减少频繁查询
  5. 实现租户级别的用户隔离

我的数据库表结构:

/* 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 */;

🔐 碳管理系统权限体系详解

提供的数据库表结构,我给大家分析下完整的权限体系:

🏗️核心架构:多租户RBAC模型

租户 (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

🔗权限控制流程

  1. 多租户隔离user.tenant_id控制数据访问范围
  2. 角色分配:通过sys_user_role关联表
  3. 权限授权:通过sys_role_permission关联表
  4. API验证:基于resource_urlresource_method

🎯权限验证维度

用户请求
JWT解析
用户身份验证
租户权限检查
角色权限检查
API权限验证
允许/拒绝访问

📋关键安全特性

  1. 多租户数据隔离

    • 每个用户绑定特定租户
    • 跨租户数据访问被严格禁止
    • 租户配额和状态管理
  2. 细粒度权限控制

    • 资源类型分类
    • HTTP方法级别权限(GET/POST/PUT/DELETE)
    • 支持权限层次结构(parent_id)
  3. RBAC角色管理

    • 用户可多角色
    • 角色权限灵活配置
    • 租户级角色定制

🛠️分析工具

我已创建了完整的分析工具:

  1. analyze-permissions.sql- 全面权限数据分析
  2. visualize-permissions.sql- 权限关系可视化
  3. check-permissions.bat- 一键执行分析
  4. PERMISSION_SYSTEM.md- 详细文档

🚀使用方法

cdc:/DevOpsK8s/ABC/carbon-manage-platform ./check-permissions.bat

这将显示:

  • 所有租户、用户、角色、权限的完整关系
  • 权限分配统计
  • 用户具体权限详情
  • 权限层次结构

这个权限体系设计非常完善,支持企业级多租户场景,具有良好的扩展性和安全性!
大家有好的建议可以一起学习,欢迎提出改进意见

需要分析工具的可以私信

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:12:19

41、gawk 扩展功能详解与应用实践

gawk 扩展功能详解与应用实践 1. 文件相关属性及 C 代码实现 在处理文件时,我们可以在 awk 程序中使用 in 运算符来测试文件的一些类型属性。以下是一些常见的属性及其含义: - “blksize” :文件 I/O 的首选块大小。不过,并非所有类 POSIX 系统的 C stat 结构中都…

作者头像 李华
网站建设 2026/6/15 7:30:46

43、awk语言的演变、扩展与gawk安装指南

awk语言的演变、扩展与gawk安装指南 1. SVR4与POSIX awk的变化 1992年的POSIX命令语言和实用工具标准为awk语言带来了一系列变化: - 使用 -W 来设置特定于实现的选项。 - 利用 CONVFMT 控制数字到字符串的转换。 - 引入了数字字符串的概念,并制定了更严格的比较规则。 …

作者头像 李华
网站建设 2026/6/15 5:26:14

【完整源码+数据集+部署教程】儿童动画标记检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

一、背景意义 随着信息技术的迅猛发展,计算机视觉领域的研究日益受到关注,尤其是在物体检测和识别方面。儿童动画作为一种重要的文化产品,不仅在娱乐方面具有广泛的影响力,还在教育和心理发展中扮演着不可或缺的角色。近年来&…

作者头像 李华
网站建设 2026/6/9 16:28:20

【完整源码+数据集+部署教程】浮标检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

一、背景意义 随着全球航运业和水上活动的快速发展,浮标作为重要的水上标识和导航工具,其检测与识别的准确性显得尤为重要。浮标不仅在航道标示、气象监测、海洋环境保护等领域发挥着重要作用,还在水上运动、渔业管理等方面具有广泛的应用。因…

作者头像 李华
网站建设 2026/6/14 18:58:25

Snort 入侵检测系统搭建指南

一、安装准备:环境依赖安装 在 CentOS7 系统中搭建 Snort,需先安装必备依赖库与拓展包,确保后续安装顺利进行。 复现平台 天枢一体化虚拟仿真平台 操作系统 CentOS7 1.1 基础依赖库安装 执行以下命令安装核心依赖: sudo yum…

作者头像 李华
网站建设 2026/6/11 12:33:22

JSP中如何利用多线程技术实现大文件并行上传?

大文件传输系统解决方案 作为浙江IT行业软件公司项目负责人,我们面临的大文件传输需求具有很高的技术挑战性。以下是我针对该需求的专业解决方案分析。 需求分析总结 超大文件传输:单文件100GB,文件夹层级结构保持高稳定性:支持…

作者头像 李华