# school_sys_menu 表文档 ## 表概述 **表名**: school_sys_menu **功能**: 系统菜单管理表,负责管理教务系统中的菜单结构、权限控制、导航层级、菜单图标等系统界面组织功能 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references 菜单ID app_type varchar(255) utf8mb4_general_ci NO admin select,insert,update,references 应用类型 menu_name varchar(32) utf8mb4_general_ci NO select,insert,update,references 菜单名称 menu_short_name varchar(50) utf8mb4_general_ci NO select,insert,update,references 菜单短标题 menu_key varchar(255) utf8mb4_general_ci NO select,insert,update,references 菜单标识(菜单输入,接口自动生成) parent_key varchar(255) utf8mb4_general_ci NO select,insert,update,references 父级key menu_type tinyint NULL NO 1 select,insert,update,references 菜单类型 0目录 1菜单 2按钮 icon varchar(500) utf8mb4_general_ci NO select,insert,update,references 图标 菜单有效 api_url varchar(100) utf8mb4_general_ci NO select,insert,update,references api接口地址 router_path varchar(128) utf8mb4_general_ci NO select,insert,update,references 菜单路由地址 前端使用 view_path varchar(255) utf8mb4_general_ci NO select,insert,update,references 菜单文件地址 methods varchar(10) utf8mb4_general_ci NO select,insert,update,references 提交方式POST GET PUT DELETE sort int NULL NO 1 select,insert,update,references 排序 status tinyint unsigned NULL NO 1 select,insert,update,references 正常,禁用(禁用后不允许访问) is_show tinyint NULL NO 1 select,insert,update,references 是否显示 create_time int NULL NO 0 select,insert,update,references delete_time int NULL NO 0 select,insert,update,references addon varchar(255) utf8mb4_general_ci NO select,insert,update,references 所属插件 source varchar(255) utf8mb4_general_ci NO system select,insert,update,references 菜单来源 system 系统文件 create 新建菜单 generator 代码生成器 menu_attr varchar(50) utf8mb4_general_ci NO select,insert,update,references 菜单属性 common 公共 system 系统 ``` ## 功能用途 ### 主要功能 - **菜单结构管理**: 建立系统的层级菜单结构和导航体系 - **权限控制**: 控制不同角色对菜单的访问权限 - **菜单层级**: 支持多级菜单的父子关系管理 - **菜单图标**: 配置菜单的显示图标和样式 - **菜单排序**: 控制菜单的显示顺序和位置 - **菜单状态**: 管理菜单的启用和禁用状态 - **路由管理**: 配置菜单对应的页面路由和组件 - **菜单类型**: 区分目录、菜单、按钮等不同类型 - **动态菜单**: 支持根据权限动态生成菜单 ### 业务场景 - **系统初始化**: 系统安装时创建基础菜单结构 - **权限分配**: 为不同角色分配菜单访问权限 - **菜单导航**: 用户登录后根据权限显示可访问菜单 - **功能扩展**: 新增功能模块时添加对应菜单 - **界面定制**: 根据业务需要调整菜单结构和样式 - **权限验证**: 访问页面时验证菜单权限 - **菜单维护**: 管理员维护和调整菜单配置 - **多端适配**: 支持PC端和移动端的菜单适配 - **菜单搜索**: 支持菜单的快速搜索和定位 ## 关联关系 ### 主要关联表 - `school_sys_role`: 系统角色表 (角色菜单权限关联) - `school_personnel`: 人员表 (用户菜单权限关联) - `role_menu_permissions`: 角色菜单权限表 (权限分配) - `school_sys_config`: 系统配置表 (菜单配置关联) - `school_addon`: 插件表 (插件菜单关联) - `sys_log`: 系统日志表 (菜单操作日志) ### 关联说明 - **角色关联**: 角色表通过权限表关联菜单,控制角色可访问的菜单 - **用户关联**: 用户通过角色间接关联菜单权限 - **权限关联**: 权限表记录角色与菜单的对应关系 - **配置关联**: 系统配置可能影响菜单的显示和行为 - **插件关联**: 插件安装时可能添加新的菜单项 - **日志关联**: 菜单的增删改操作记录在系统日志中 - **层级关联**: 菜单之间通过parent_id形成父子关系 ## 索引建议 - **主键索引**: menu_id (已存在) - **外键索引**: - parent_id (父菜单查询) - **业务索引**: - menu_type (菜单类型查询) - status (状态查询) - sort (排序查询) - menu_key (菜单标识查询) - **复合索引**: - (parent_id, sort) (同级菜单排序查询) - (status, menu_type) (有效菜单类型查询) - (parent_id, status) (有效子菜单查询) - **时间索引**: - create_time (创建时间查询) - update_time (更新时间查询) ## 注意事项 - **菜单标识唯一性**: menu_key必须唯一,避免菜单标识冲突 - **层级关系**: parent_id不能形成循环引用,避免无限递归 - **菜单类型**: menu_type需要明确定义(如:目录、菜单、按钮) - **路由配置**: menu_url需要与前端路由配置保持一致 - **权限验证**: 删除菜单前需要检查是否有角色权限关联 - **排序逻辑**: sort字段用于控制同级菜单的显示顺序 - **状态控制**: 禁用父菜单时需要考虑子菜单的处理 - **图标格式**: menu_icon建议使用统一的图标库标识 - **菜单深度**: 建议菜单层级不超过3-4级,避免过深嵌套 - **缓存策略**: 菜单数据变更频率低,适合缓存优化 - **权限同步**: 菜单变更时需要同步更新相关权限配置 - **多语言支持**: menu_name可能需要支持多语言 - **移动端适配**: 需要考虑移动端菜单的显示和交互 - **菜单搜索**: 支持菜单的模糊搜索和快速定位 - **数据完整性**: 确保菜单数据的完整性和一致性 - **权限控制**: 菜单配置需要严格的权限控制 - **备份恢复**: 菜单配置是系统核心数据,需要定期备份