-- 创建用户活跃记录表 CREATE TABLE IF NOT EXISTS `t_user_activities` ( `id` int NOT NULL AUTO_INCREMENT, `userId` varchar(255) NOT NULL COMMENT '用户ID', `activityType` tinyint NOT NULL COMMENT '活跃类型:1-登录,2-训练,3-饮食记录,4-体重记录,5-资料更新,6-打卡', `activityDate` date NOT NULL COMMENT '活跃日期 YYYY-MM-DD', `level` tinyint NOT NULL DEFAULT 1 COMMENT '活跃等级:0-无活跃,1-低活跃,2-中活跃,3-高活跃', `remark` text COMMENT '备注信息', `createdAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `updatedAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `unique_user_activity_date_type` (`userId`, `activityDate`, `activityType`), KEY `idx_user_activity_date` (`userId`, `activityDate`), KEY `idx_activity_date` (`activityDate`), -- 添加枚举约束 CONSTRAINT `chk_activity_type` CHECK (`activityType` IN (1, 2, 3, 4, 5, 6)), CONSTRAINT `chk_activity_level` CHECK (`level` IN (0, 1, 2, 3)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户活跃记录表'; -- 创建索引以优化查询性能 CREATE INDEX IF NOT EXISTS `idx_user_activity_level` ON `user_activities` (`userId`, `activityDate`, `level`); -- 枚举值说明 -- activityType 枚举值: -- 1: 登录 (LOGIN) -- 2: 训练 (WORKOUT) -- 3: 饮食记录 (DIET_RECORD) -- 4: 体重记录 (WEIGHT_RECORD) -- 5: 资料更新 (PROFILE_UPDATE) -- 6: 打卡 (CHECKIN) -- level 枚举值: -- 0: 无活跃 (NONE) -- 1: 低活跃 (LOW) -- 2: 中活跃 (MEDIUM) -- 3: 高活跃 (HIGH)