数据库概览
数据库信息
- 数据库类型: MySQL 8.0+
- 字符集: utf8mb4
- 排序规则: utf8mb4_unicode_ci
- 表数量: 14 个核心表
- 初始化脚本:
server/database/schema.sql
表结构概览
基础表(无外键依赖)
| 表名 | 说明 | 关键字段 |
|---|---|---|
| users | 用户表 | id, username, email, password, role, status |
| categories | 分类表 | id, name, slug, color, icon, sort_order |
| skill_categories | 技能分类表 | id, name, icon, color, sort_order |
| files | 文件管理表 | id, file_name, file_path, file_size, storage_type |
| settings | 系统设置表 | id, group_name, key_name, key_value |
| resource_categories | 资源分类表 | id, name, slug, icon, color |
中间层表(依赖于基础表)
| 表名 | 说明 | 关联表 |
|---|---|---|
| skills | 技能项表 | skill_categories |
| articles | 文章表 | users, categories |
| projects | 项目表 | files |
| carousels | 轮播图表 | - |
| galleries | 图库表 | - |
| wall_messages | 留言表 | - |
高级层表(依赖于中间层表)
| 表名 | 说明 | 关联表 |
|---|---|---|
| visit_hourly_statistics | 小时级访问统计表 | - |
| gallery_images | 图库图片表 | galleries, files |
| resources | 资源表 | resource_categories, files |
数据库关系图
users (1) ----< (n) articles
categories (1) ----< (n) articles
skill_categories (1) ----< (n) skills
galleries (1) ----< (n) gallery_images
files (1) ----< (n) gallery_images
projects (1) ----< (1) files (cover_image)
resource_categories (1) ----< (n) resources
files (1) ----< (n) resources
files (1) ----< (1) resources (cover_image)初始化数据库
方式一:使用 SQL 脚本
bash
mysql -u root -p < server/database/schema.sql方式二:使用 Node 脚本
bash
pnpm run db:init默认数据
默认管理员账号
| 字段 | 值 |
|---|---|
| 用户名 | admin |
| 密码 | 123456(bcrypt 加密) |
| 邮箱 | admin@demo.com |
| 昵称 | 演示管理员 |
| 角色 | admin |
| 状态 | active |
默认分类数据
系统预置了 5 个分类:
- 开源项目
- 公司项目
- 个人项目
- 学习笔记
- 小工具
默认技能分类
系统预置了 5 个技能分类:
- 前端开发
- 后端开发
- 数据库
- 开发工具 & 部署
- 移动开发
默认技能数据
系统预置了 50+ 个技能项,涵盖前端、后端、数据库、开发工具等领域。
默认系统设置
- 总访问量: 0
- 今日访问量: 0
- 上次重置日期: 当前日期
- 存储类型: local
- 分析代码: 空
数据库维护
备份数据库
bash
mysqldump -u root -p nuxt_blog > backup_$(date +%Y%m%d).sql恢复数据库
bash
mysql -u root -p nuxt_blog < backup_20250124.sql优化数据库
bash
mysql -u root -p nuxt_blog -e "OPTIMIZE TABLE *"常用查询
查看所有表
sql
SHOW TABLES;查看表结构
sql
DESCRIBE users;
-- 或
SHOW COLUMNS FROM users;查看表索引
sql
SHOW INDEX FROM users;查看外键约束
sql
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
TABLE_SCHEMA = 'nuxt_blog'
AND REFERENCED_TABLE_NAME IS NOT NULL;性能优化建议
1. 索引优化
主要表的索引:
users: username, emailcategories: slug, sort_orderarticles: status, is_featured, created_at, author_id, category_idprojects: category, sort_ordergalleries: status, is_featured, sort_order
2. 查询优化
- 使用
EXPLAIN分析查询性能 - 避免使用
SELECT * - 合理使用
LIMIT分页 - 使用索引字段进行筛选
3. 定期维护
sql
-- 分析表
ANALYZE TABLE users, articles, projects;
-- 优化表
OPTIMIZE TABLE users, articles, projects;
-- 检查表
CHECK TABLE users, articles, projects;注意事项
- 外键约束: 部分表有外键约束,删除数据时注意依赖关系
- 字符集: 使用 utf8mb4 支持完整的 Unicode 字符
- 时间戳: 使用
TIMESTAMP类型自动记录创建和更新时间 - 软删除: 大部分表使用
status字段实现软删除 - 索引: 关键字段已建立索引,提高查询性能