# Hertz 权限管理系统数据库说明文档 ## 1. 数据库概述 - **数据库名称**: `hertz_springboot` - **数据库类型**: MySQL - **字符集**: utf8mb4 - **排序规则**: utf8mb4_general_ci (推荐) ## 2. ER 图设计概要 系统主要包含 5 张表,采用标准的 RBAC(用户-角色-权限)设计模型: - `sys_user`: 用户表 - `sys_role`: 角色表 - `sys_menu`: 菜单/权限表 - `sys_user_role`: 用户-角色关联表 - `sys_role_menu`: 角色-菜单关联表 ## 3. 表结构详解 ### 3.1 系统用户表 (sys_user) 存储系统的登录用户信息。 | 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 | | :--- | :--- | :--- | :--- | :--- | :--- | | **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID | | username | varchar | 50 | NO | | 用户名 (唯一) | | password | varchar | 100 | NO | | 加密密码 (BCrypt) | | nickname | varchar | 50 | NO | | 用户昵称 | | avatar_path | varchar | 255 | YES | NULL | 头像路径 | | phone | varchar | 20 | YES | NULL | 手机号 | | email | varchar | 100 | YES | NULL | 邮箱 | | gender | tinyint | 1 | YES | 0 | 0-未知 1-男 2-女 | | status | tinyint | 4 | YES | 1 | 0-禁用 1-启用 | | created_at | datetime | | YES | CURRENT_TIMESTAMP | 创建时间 | | updated_at | datetime | | YES | CURRENT_TIMESTAMP | 更新时间 | ### 3.2 系统角色表 (sys_role) 存储系统的角色信息。 | 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 | | :--- | :--- | :--- | :--- | :--- | :--- | | **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID | | role_key | varchar | 50 | NO | | 角色标识 (唯一,如 ADMIN) | | role_name | varchar | 50 | NO | | 角色名称 (如 管理员) | | status | tinyint | 4 | YES | 1 | 0-禁用 1-启用 | | created_at | datetime | | YES | CURRENT_TIMESTAMP | 创建时间 | | updated_at | datetime | | YES | CURRENT_TIMESTAMP | 更新时间 | ### 3.3 系统菜单表 (sys_menu) 存储菜单和按钮权限信息,支持树形结构。 | 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 | | :--- | :--- | :--- | :--- | :--- | :--- | | **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID | | parent_id | bigint | 20 | YES | 0 | 父菜单 ID (0为顶级) | | type | varchar | 10 | NO | | 菜单类型: D-目录 M-菜单 B-按钮 | | name | varchar | 50 | NO | | 菜单名称/按钮名称 | | path | varchar | 200 | YES | NULL | 路由路径 (前端路由) | | component | varchar | 200 | YES | NULL | 组件路径 (Vue组件) | | perms | varchar | 100 | YES | NULL | 权限标识 (如 system:user:view) | | icon | varchar | 100 | YES | NULL | 菜单图标 | | sort | int | 11 | YES | 0 | 排序 (数值越小越靠前) | | visible | tinyint | 4 | YES | 1 | 0-隐藏 1-显示 | | status | tinyint | 4 | YES | 1 | 0-禁用 1-启用 | | created_at | datetime | | YES | CURRENT_TIMESTAMP | 创建时间 | | updated_at | datetime | | YES | CURRENT_TIMESTAMP | 更新时间 | ### 3.4 用户角色关联表 (sys_user_role) 用户与角色的多对多关系表。 | 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 | | :--- | :--- | :--- | :--- | :--- | :--- | | **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID | | user_id | bigint | 20 | NO | | 用户 ID | | role_id | bigint | 20 | NO | | 角色 ID | ### 3.5 角色菜单关联表 (sys_role_menu) 角色与菜单(权限)的多对多关系表。 | 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 | | :--- | :--- | :--- | :--- | :--- | :--- | | **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID | | role_id | bigint | 20 | NO | | 角色 ID | | menu_id | bigint | 20 | NO | | 菜单 ID | ## 4. 初始数据说明 系统初始化脚本 (`schema.sql`) 会预置以下数据: 1. **初始角色**: - `ADMIN`: 超级管理员,拥有所有权限。 2. **初始菜单结构**: - 仪表盘 - 系统管理 - 用户管理 - 角色管理 - 菜单管理 3. **初始用户**: - `hertz`: 管理员账号,已绑定 ADMIN 角色。 - `demo`: 演示账号。 ## 5. 数据字典与枚举 - **用户/角色/菜单状态 (status)**: - `1`: 启用 (Normal) - `0`: 禁用 (Disabled) - **菜单类型 (type)**: - `D`: 目录 (Directory) - 不对应具体页面,仅用于分组 - `M`: 菜单 (Menu) - 对应具体的前端页面 - `B`: 按钮 (Button) - 页面内的功能按钮,用于权限控制 - **性别 (gender)**: - `0`: 未知 - `1`: 男 - `2`: 女