Skip to content

Database Overview

Database Information

  • Database Type: MySQL 8.0+
  • Character Set: utf8mb4
  • Collation: utf8mb4_unicode_ci
  • Table Count: 14 core tables
  • Initialization Script: server/database/schema.sql

Table Structure Overview

Basic Tables (No Foreign Key Dependencies)

Table NameDescriptionKey Fields
usersUser tableid, username, email, password, role, status
categoriesCategory tableid, name, slug, color, icon, sort_order
skill_categoriesSkill category tableid, name, icon, color, sort_order
filesFile management tableid, file_name, file_path, file_size, storage_type
settingsSystem settings tableid, group_name, key_name, key_value
resource_categoriesResource category tableid, name, slug, icon, color

Intermediate Layer Tables (Depend on Basic Tables)

Table NameDescriptionRelated Tables
skillsSkill items tableskill_categories
articlesArticle tableusers, categories
projectsProject tablefiles
carouselsCarousel table-
galleriesGallery table-
wall_messagesMessage table-

Advanced Layer Tables (Depend on Intermediate Layer Tables)

Table NameDescriptionRelated Tables
visit_hourly_statisticsHourly visit statistics table-
gallery_imagesGallery image tablegalleries, files
resourcesResource tableresource_categories, files

Database Relationship Diagram

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)

Initialize Database

Method 1: Using SQL Script

bash
mysql -u root -p < server/database/schema.sql

Method 2: Using Node Script

bash
pnpm run db:init

Default Data

Default Administrator Account

FieldValue
Usernameadmin
Password123456 (bcrypt encrypted)
Emailadmin@demo.com
NicknameDemo Administrator
Roleadmin
Statusactive

Default Category Data

System pre-configures 5 categories:

  1. Open Source Projects
  2. Company Projects
  3. Personal Projects
  4. Study Notes
  5. Small Tools

Default Skill Categories

System pre-configures 5 skill categories:

  1. Frontend Development
  2. Backend Development
  3. Database
  4. Development Tools & Deployment
  5. Mobile Development

Default Skill Data

System pre-configures 50+ skill items, covering frontend, backend, database, development tools, and other areas.

Default System Settings

  • Total Visits: 0
  • Today's Visits: 0
  • Last Reset Date: Current date
  • Storage Type: local
  • Analytics Code: Empty

Database Maintenance

Backup Database

bash
mysqldump -u root -p nuxt_blog > backup_$(date +%Y%m%d).sql

Restore Database

bash
mysql -u root -p nuxt_blog < backup_20250124.sql

Optimize Database

bash
mysql -u root -p nuxt_blog -e "OPTIMIZE TABLE *"

Common Queries

View All Tables

sql
SHOW TABLES;

View Table Structure

sql
DESCRIBE users;
-- or
SHOW COLUMNS FROM users;

View Table Indexes

sql
SHOW INDEX FROM users;

View Foreign Key Constraints

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;

Performance Optimization Recommendations

1. Index Optimization

Indexes for main tables:

  • 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. Query Optimization

  • Use EXPLAIN to analyze query performance
  • Avoid SELECT *
  • Reasonably use LIMIT for pagination
  • Use indexed fields for filtering

3. Regular Maintenance

sql
-- Analyze tables
ANALYZE TABLE users, articles, projects;

-- Optimize tables
OPTIMIZE TABLE users, articles, projects;

-- Check tables
CHECK TABLE users, articles, projects;

Important Notes

  1. Foreign Key Constraints: Some tables have foreign key constraints, pay attention to dependencies when deleting data
  2. Character Set: Use utf8mb4 to support full Unicode characters
  3. Timestamps: Use TIMESTAMP type to automatically record creation and update times
  4. Soft Deletes: Most tables use status field to implement soft deletes
  5. Indexes: Key fields already have indexes to improve query performance

Detailed Documentation