# school_sys_role 表文档 ## 表概述 **表名**: school_sys_role **功能**: 系统角色管理表,负责管理教务系统中的用户角色定义、权限分配、角色层级、数据权限等访问控制功能 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment role_id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references 角色id role_name varchar(255) utf8mb4_general_ci NO select,insert,update,references 角色名称 role_key varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 角色英文标识|market=销售,teacher=老师,manager=经理 rules text utf8mb4_general_ci YES NULL select,insert,update,references 角色权限(menus_id) mobile_rules text utf8mb4_general_ci YES NULL select,insert,update,references 移动端权限规则JSON addon_keys text utf8mb4_general_ci YES NULL select,insert,update,references 角色应用权限(应用key) status tinyint unsigned NULL NO 1 select,insert,update,references 状态 create_time int NULL NO 0 select,insert,update,references 添加时间 update_time int NULL NO 0 select,insert,update,references 最后修改时间 dept_id int NULL YES NULL select,insert,update,references 部门id is_supervisor tinyint NULL YES 0 select,insert,update,references 是否为主管:1是 0 否 campus_id int NULL YES NULL select,insert,update,references 所属校区 ``` ## 功能用途 ### 主要功能 - **角色定义管理**: 定义系统中的各种用户角色和职责 - **权限分配**: 为角色分配相应的功能权限和数据权限 - **角色层级**: 支持角色的层级关系和权限继承 - **数据权限控制**: 控制角色可访问的数据范围 - **角色状态管理**: 管理角色的启用和禁用状态 - **角色排序**: 控制角色的显示顺序和优先级 - **角色描述**: 提供角色的详细说明和备注 - **权限模板**: 作为权限分配的模板和基础 - **访问控制**: 实现基于角色的访问控制(RBAC) ### 业务场景 - **系统初始化**: 创建系统默认角色(超级管理员、管理员等) - **用户注册**: 为新用户分配默认角色 - **权限管理**: 管理员为角色分配和调整权限 - **组织架构**: 根据组织结构创建对应角色 - **业务流程**: 不同角色在业务流程中承担不同职责 - **数据安全**: 通过角色控制敏感数据的访问 - **功能授权**: 控制用户可使用的系统功能 - **审计合规**: 角色权限变更的审计和合规管理 - **多租户**: 支持多校区的角色权限隔离 ## 关联关系 ### 主要关联表 - `school_personnel`: 人员表 (用户角色关联) - `school_sys_menu`: 系统菜单表 (角色菜单权限) - `role_menu_permissions`: 角色菜单权限表 (权限分配) - `school_campus`: 校区表 (数据权限范围) - `school_department`: 部门表 (部门角色关联) - `school_sys_config`: 系统配置表 (角色配置) - `sys_log`: 系统日志表 (角色操作日志) - `school_approval_process`: 审批流程表 (角色审批权限) ### 关联说明 - **用户关联**: 人员表中的role_id字段关联此表,确定用户角色 - **菜单关联**: 通过权限表关联菜单,控制角色可访问的功能 - **权限关联**: 权限表记录角色与具体权限的对应关系 - **数据权限**: 角色可能限制在特定校区或部门的数据范围 - **部门关联**: 部门可能有默认角色或角色层级关系 - **配置关联**: 系统配置可能影响角色的权限和行为 - **日志关联**: 角色的创建、修改、删除操作记录在日志中 - **审批关联**: 角色决定用户在审批流程中的权限和职责 ## 索引建议 - **主键索引**: role_id (已存在) - **唯一索引**: - role_key (角色标识唯一) - **外键索引**: - parent_id (父角色查询) - **业务索引**: - status (状态查询) - sort (排序查询) - role_name (角色名称查询) - **复合索引**: - (status, sort) (有效角色排序查询) - (parent_id, status) (有效子角色查询) - (role_key, status) (角色标识状态查询) - **时间索引**: - create_time (创建时间查询) - update_time (更新时间查询) ## 注意事项 - **角色标识唯一性**: role_key必须唯一,避免角色标识冲突 - **角色名称唯一性**: role_name建议唯一,避免角色名称混淆 - **层级关系**: parent_id不能形成循环引用,避免无限递归 - **权限继承**: 子角色可能继承父角色的部分权限 - **数据完整性**: 删除角色前需要检查是否有用户关联 - **权限同步**: 角色权限变更时需要同步更新用户权限 - **状态控制**: 禁用角色时需要考虑关联用户的处理 - **排序逻辑**: sort字段用于控制角色的显示顺序 - **权限最小化**: 遵循最小权限原则,避免权限过度分配 - **角色粒度**: 角色设计要平衡粒度,避免过细或过粗 - **默认角色**: 系统应该有默认角色,新用户自动分配 - **超级管理员**: 超级管理员角色需要特殊保护,不能删除 - **权限验证**: 所有操作都需要验证用户角色权限 - **缓存策略**: 角色权限信息适合缓存,提高性能 - **审计日志**: 角色权限变更需要详细的审计日志 - **多租户隔离**: 不同校区的角色权限需要隔离 - **权限模板**: 可以基于角色创建权限分配模板 - **临时权限**: 考虑是否需要支持临时权限授权 - **权限回收**: 用户离职或角色变更时及时回收权限