5.2 KiB
5.2 KiB
AI 展示平台資料庫設計
📊 資料庫概述
本專案使用 MySQL 作為主要資料庫,設計了完整的資料表結構來支持 AI 展示平台的所有功能。
🔗 資料庫連接資訊
- 主機:
mysql.theaken.com
- 端口:
33306
- 資料庫名:
db_AI_Platform
- 用戶名:
AI_Platform
- 密碼:
Aa123456
🏗️ 資料表結構
核心業務表
1. 用戶管理
- users - 用戶基本資訊
- user_favorites - 用戶收藏應用
- user_likes - 用戶按讚記錄
- user_views - 用戶瀏覽記錄
- user_ratings - 用戶評分記錄
2. 競賽系統
- competitions - 競賽基本資訊
- competition_rules - 競賽規則
- competition_award_types - 競賽獎項類型
- competition_judges - 競賽評審關聯
- competition_apps - 競賽參與應用
- competition_teams - 競賽參與團隊
- competition_proposals - 競賽參與提案
3. 評審系統
- judges - 評審基本資訊
- app_judge_scores - 應用評分記錄
- proposal_judge_scores - 提案評分記錄
4. 團隊管理
- teams - 團隊基本資訊
- team_members - 團隊成員關聯
5. 應用管理
- apps - AI 應用基本資訊
6. 提案管理
- proposals - 提案基本資訊
7. 獎項系統
- awards - 獎項記錄
8. AI 助手
- chat_sessions - 聊天會話
- chat_messages - 聊天訊息
- ai_assistant_configs - AI 助手配置
9. 系統管理
- system_settings - 系統設定
- activity_logs - 活動日誌
📈 統計視圖
1. user_statistics
用戶統計視圖,包含:
- 基本資訊
- 收藏數量
- 按讚數量
- 瀏覽數量
- 平均評分
- 團隊參與情況
2. app_statistics
應用統計視圖,包含:
- 基本資訊
- 創作者資訊
- 團隊資訊
- 用戶互動統計
- 評審評分統計
3. competition_statistics
競賽統計視圖,包含:
- 基本資訊
- 評審數量
- 參與應用數量
- 參與團隊數量
- 參與提案數量
- 獎項數量
⚙️ 觸發器
1. 自動計算總分
- calculate_app_total_score - 應用評分總分計算
- calculate_proposal_total_score - 提案評分總分計算
🚀 快速開始
1. 安裝依賴
npm install
2. 設置環境變數
複製 env.example
到 .env.local
並填入正確的資料庫資訊:
cp env.example .env.local
3. 執行資料庫遷移
# 創建資料庫結構
npm run migrate
# 重置資料庫(慎用)
npm run migrate:reset
4. 驗證安裝
遷移完成後,您應該看到:
- 25 個資料表
- 3 個統計視圖
- 4 個觸發器
- 初始系統設定數據
🔧 資料庫服務
使用方式
import { UserService, CompetitionService, AppService } from '@/lib/services/database-service';
// 創建用戶
const user = await UserService.createUser({
name: '張三',
email: 'zhang@example.com',
password_hash: 'hashed_password',
department: 'IT部門',
role: 'developer',
join_date: '2024-01-01',
total_likes: 0,
total_views: 0,
is_active: true
});
// 獲取用戶統計
const stats = await UserService.getUserStatistics(user.id);
// 創建競賽
const competition = await CompetitionService.createCompetition({
name: '2024年AI創新競賽',
year: 2024,
month: 3,
start_date: '2024-03-01',
end_date: '2024-03-31',
status: 'upcoming',
type: 'individual',
is_active: true
});
📋 資料表關係圖
users (1) ←→ (N) team_members (N) ←→ (1) teams
users (1) ←→ (N) apps
users (1) ←→ (N) user_favorites
users (1) ←→ (N) user_likes
users (1) ←→ (N) user_views
users (1) ←→ (N) user_ratings
competitions (1) ←→ (N) competition_judges (N) ←→ (1) judges
competitions (1) ←→ (N) competition_apps (N) ←→ (1) apps
competitions (1) ←→ (N) competition_teams (N) ←→ (1) teams
competitions (1) ←→ (N) competition_proposals (N) ←→ (1) proposals
competitions (1) ←→ (N) awards
judges (1) ←→ (N) app_judge_scores (N) ←→ (1) apps
judges (1) ←→ (N) proposal_judge_scores (N) ←→ (1) proposals
teams (1) ←→ (N) proposals
teams (1) ←→ (N) apps
🛠️ 維護命令
備份資料庫
mysqldump -h mysql.theaken.com -P 33306 -u AI_Platform -p db_AI_Platform > backup.sql
恢復資料庫
mysql -h mysql.theaken.com -P 33306 -u AI_Platform -p db_AI_Platform < backup.sql
檢查資料庫狀態
mysql -h mysql.theaken.com -P 33306 -u AI_Platform -p -e "SHOW TABLES;" db_AI_Platform
🔍 常見問題
Q: 如何重置資料庫?
A: 執行 npm run migrate:reset
命令,這會刪除所有表並重新創建。
Q: 如何添加新的資料表?
A: 在 database-schema.sql
中添加新的 CREATE TABLE 語句,然後執行 npm run migrate
。
Q: 如何修改現有表結構?
A: 使用 ALTER TABLE 語句,或者創建新的遷移腳本。
Q: 資料庫連接失敗怎麼辦?
A: 檢查環境變數設置,確保資料庫服務正在運行,並且網路連接正常。
📞 技術支援
如有任何資料庫相關問題,請聯繫技術團隊或查看專案文檔。