# role_menu_permissions 表文档 ## 表概述 **表名**: role_menu_permissions **功能**: 角色菜单权限关联表,用于管理系统中角色与菜单之间的权限关联关系,实现基于角色的访问控制(RBAC),支持细粒度的菜单权限管理和动态权限分配,为系统安全和权限控制提供核心数据支持 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment id int NULL NO PRI NULL auto_increment select,insert,update,references role_id int NULL NO MUL NULL select,insert,update,references 角色ID menu_id int NULL NO MUL NULL select,insert,update,references 菜单ID is_enabled tinyint(1) NULL YES 1 select,insert,update,references 是否启用 created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references ``` ## 功能用途 ### 主要功能 - **角色菜单权限关联**: 建立角色与菜单之间的权限关联关系 - **权限控制**: 控制不同角色对系统菜单的访问权限 - **权限启用管理**: 通过is_enabled字段控制权限的启用和禁用 - **细粒度权限**: 实现菜单级别的精细化权限控制 - **权限继承**: 支持角色权限的继承和覆盖机制 - **动态权限**: 支持运行时动态调整角色菜单权限 - **权限审计**: 记录权限分配的时间和变更历史 - **批量权限**: 支持批量分配和回收角色权限 - **权限模板**: 为角色权限分配提供模板支持 ### 业务场景 - **权限分配**: 为新创建的角色分配菜单访问权限 - **权限调整**: 根据业务需要调整角色的菜单权限 - **权限回收**: 回收离职人员或角色变更的菜单权限 - **权限审核**: 定期审核和清理不必要的权限分配 - **功能上线**: 新功能菜单上线时的权限分配 - **权限继承**: 角色层级变化时的权限继承处理 - **临时权限**: 临时授予特定角色某些菜单权限 - **权限模板**: 基于角色模板快速分配权限 - **合规检查**: 满足权限管理的合规性要求 ## 关联关系 ### 主要关联表 - `school_sys_role`: 系统角色表 (role_id外键关联) - `school_sys_menu`: 系统菜单表 (menu_id外键关联) - `school_personnel`: 人员信息表 (通过角色关联用户) - `sys_log`: 系统日志表 (权限变更日志) - `school_sys_config`: 系统配置表 (权限相关配置) - `school_campus`: 校区信息表 (数据权限范围) ### 关联说明 - **角色关联**: role_id关联school_sys_role表,确定权限归属角色 - **菜单关联**: menu_id关联school_sys_menu表,确定可访问的菜单 - **用户关联**: 通过角色间接关联用户,实现用户菜单权限控制 - **日志关联**: 权限变更操作记录到系统日志中 - **配置关联**: 权限相关的系统配置参数 - **数据权限**: 结合校区等信息实现数据级权限控制 - **层级关联**: 支持菜单层级权限的继承和控制 ## 索引建议 - **主键索引**: id (已存在) - **外键索引**: - role_id (角色权限查询) - menu_id (菜单权限查询) - **业务索引**: - is_enabled (启用状态查询) - **复合索引**: - (role_id, menu_id) (角色菜单权限唯一性) - (role_id, is_enabled) (角色启用权限查询) - (menu_id, is_enabled) (菜单启用权限查询) - (role_id, menu_id, is_enabled) (完整权限查询) - **时间索引**: - created_at (创建时间查询) - updated_at (更新时间查询) ## 注意事项 - **权限唯一性**: (role_id, menu_id)组合应保证唯一性,避免重复权限记录 - **外键完整性**: role_id和menu_id必须在对应的表中存在 - **权限一致性**: 权限变更时需要同步更新相关缓存和会话 - **启用状态**: is_enabled字段变更需要实时生效到用户权限 - **权限继承**: 角色层级变化时需要重新计算权限继承关系 - **批量操作**: 批量权限分配时需要保证事务一致性 - **权限验证**: 菜单访问时需要验证对应的权限记录 - **软删除**: 建议使用软删除而非物理删除权限记录 - **权限缓存**: 频繁访问的权限信息建议使用缓存机制 - **审计日志**: 权限变更操作需要记录详细的审计日志 - **默认权限**: 新角色创建时需要分配默认的基础权限 - **权限回收**: 角色删除时需要同步清理相关权限记录 - **数据完整性**: 删除角色或菜单时需要检查权限依赖关系 - **权限模板**: 建议建立权限模板机制简化权限分配 - **最小权限**: 遵循最小权限原则,只分配必要的菜单权限 - **权限监控**: 建立权限使用监控,及时发现异常权限访问 - **时效性**: 权限变更需要及时生效,避免权限延迟