You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.5 KiB
5.5 KiB
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字段用于控制角色的显示顺序
- 权限最小化: 遵循最小权限原则,避免权限过度分配
- 角色粒度: 角色设计要平衡粒度,避免过细或过粗
- 默认角色: 系统应该有默认角色,新用户自动分配
- 超级管理员: 超级管理员角色需要特殊保护,不能删除
- 权限验证: 所有操作都需要验证用户角色权限
- 缓存策略: 角色权限信息适合缓存,提高性能
- 审计日志: 角色权限变更需要详细的审计日志
- 多租户隔离: 不同校区的角色权限需要隔离
- 权限模板: 可以基于角色创建权限分配模板
- 临时权限: 考虑是否需要支持临时权限授权
- 权限回收: 用户离职或角色变更时及时回收权限