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 Name | Description | Key Fields |
|---|---|---|
| users | User table | id, username, email, password, role, status |
| categories | Category table | id, name, slug, color, icon, sort_order |
| skill_categories | Skill category table | id, name, icon, color, sort_order |
| files | File management table | id, file_name, file_path, file_size, storage_type |
| settings | System settings table | id, group_name, key_name, key_value |
| resource_categories | Resource category table | id, name, slug, icon, color |
Intermediate Layer Tables (Depend on Basic Tables)
| Table Name | Description | Related Tables |
|---|---|---|
| skills | Skill items table | skill_categories |
| articles | Article table | users, categories |
| projects | Project table | files |
| carousels | Carousel table | - |
| galleries | Gallery table | - |
| wall_messages | Message table | - |
Advanced Layer Tables (Depend on Intermediate Layer Tables)
| Table Name | Description | Related Tables |
|---|---|---|
| visit_hourly_statistics | Hourly visit statistics table | - |
| gallery_images | Gallery image table | galleries, files |
| resources | Resource table | resource_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.sqlMethod 2: Using Node Script
bash
pnpm run db:initDefault Data
Default Administrator Account
| Field | Value |
|---|---|
| Username | admin |
| Password | 123456 (bcrypt encrypted) |
| admin@demo.com | |
| Nickname | Demo Administrator |
| Role | admin |
| Status | active |
Default Category Data
System pre-configures 5 categories:
- Open Source Projects
- Company Projects
- Personal Projects
- Study Notes
- Small Tools
Default Skill Categories
System pre-configures 5 skill categories:
- Frontend Development
- Backend Development
- Database
- Development Tools & Deployment
- 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).sqlRestore Database
bash
mysql -u root -p nuxt_blog < backup_20250124.sqlOptimize 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, emailcategories: slug, sort_orderarticles: status, is_featured, created_at, author_id, category_idprojects: category, sort_ordergalleries: status, is_featured, sort_order
2. Query Optimization
- Use
EXPLAINto analyze query performance - Avoid
SELECT * - Reasonably use
LIMITfor 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
- Foreign Key Constraints: Some tables have foreign key constraints, pay attention to dependencies when deleting data
- Character Set: Use utf8mb4 to support full Unicode characters
- Timestamps: Use
TIMESTAMPtype to automatically record creation and update times - Soft Deletes: Most tables use
statusfield to implement soft deletes - Indexes: Key fields already have indexes to improve query performance