Skip to content

数据库概览

数据库信息

  • 数据库类型: 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 个分类:

  1. 开源项目
  2. 公司项目
  3. 个人项目
  4. 学习笔记
  5. 小工具

默认技能分类

系统预置了 5 个技能分类:

  1. 前端开发
  2. 后端开发
  3. 数据库
  4. 开发工具 & 部署
  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, email
  • categories: slug, sort_order
  • articles: status, is_featured, created_at, author_id, category_id
  • projects: category, sort_order
  • galleries: 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;

注意事项

  1. 外键约束: 部分表有外键约束,删除数据时注意依赖关系
  2. 字符集: 使用 utf8mb4 支持完整的 Unicode 字符
  3. 时间戳: 使用 TIMESTAMP 类型自动记录创建和更新时间
  4. 软删除: 大部分表使用 status 字段实现软删除
  5. 索引: 关键字段已建立索引,提高查询性能

详细说明