数据库设计.md 6.8 KB

任务模块数据库设计

1. 数据库表概览

  1. 任务定义相关表

    • task_tasks - 任务基础表
    • task_conditions - 任务条件表
  2. 任务完成相关表

    • task_user_tasks - 用户任务关联表
    • task_rewards - 任务奖励表
  3. 日志记录相关表

    • task_completion_logs - 任务完成日志表
    • task_reward_logs - 奖励发放日志表
    • task_reset_logs - 进度重置日志表

2. 任务定义

2.1 任务基础表 (task_tasks)

字段名 类型 允许空 默认值 说明
id int 自增 主键
name varchar(100) - 任务名称
description text NULL 任务描述
task_type varchar(50) - 任务类型
status tinyint 1 状态(0禁用,1启用)
start_time timestamp NULL 开始时间
end_time timestamp NULL 结束时间
repeat_type varchar(20) 'none' 重复类型(none/daily/weekly/monthly)
max_completions int 1 最大完成次数
sort_order int 0 排序权重
created_at timestamp CURRENT_TIMESTAMP 创建时间
updated_at timestamp CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间

索引:

  • PRIMARY KEY (id)
  • KEY idx_type (task_type)
  • KEY idx_status (status)
  • KEY idx_time (start_time, end_time)

2.2 任务条件表 (task_conditions)

字段名 类型 允许空 默认值 说明
id int 自增 主键
task_id int - 关联任务ID
condition_type varchar(50) - 条件类型
target_value varchar(255) - 目标值
operator varchar(20) '>=' 比较运算符
description varchar(255) NULL 条件描述
sort_order int 0 排序权重
created_at timestamp CURRENT_TIMESTAMP 创建时间

索引:

  • PRIMARY KEY (id)
  • KEY idx_task (task_id)
  • KEY idx_type (condition_type)

3. 任务完成

3.1 用户任务关联表 (task_user_tasks)

字段名 类型 允许空 默认值 说明
id int 自增 主键
user_id int - 用户ID
task_id int - 任务ID
progress json - 当前进度
completions int 0 已完成次数
last_completed_at timestamp NULL 最后完成时间
next_reset_at timestamp NULL 下次重置时间
status tinyint 0 状态(0进行中,1已完成)
created_at timestamp CURRENT_TIMESTAMP 创建时间
updated_at timestamp CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 更新时间

索引:

  • PRIMARY KEY (id)
  • UNIQUE KEY uniq_user_task (user_id, task_id)
  • KEY idx_status (status)
  • KEY idx_reset (next_reset_at)

3.2 任务奖励表 (task_rewards)

设计目的:定义任务完成后可以获得的奖励内容,支持多种奖励类型和数量配置

字段名 类型 允许空 默认值 说明
id int 自增 主键
task_id int - 关联任务ID
reward_type varchar(50) - 奖励类型(item:道具, currency:货币, exp:经验等)
reward_value varchar(255) - 奖励值(道具ID/货币类型/经验类型等)
reward_amount int 1 奖励数量
description varchar(255) NULL 奖励描述
sort_order int 0 排序权重
created_at timestamp CURRENT_TIMESTAMP 创建时间

索引:

  • PRIMARY KEY (id)
  • KEY idx_task (task_id)
  • KEY idx_type (reward_type)

使用示例

  1. 道具奖励:reward_type='item', reward_value='1001'(道具ID), reward_amount=5
  2. 货币奖励:reward_type='currency', reward_value='gold'(金币类型), reward_amount=100
  3. 经验奖励:reward_type='exp', reward_value='farming'(种植经验), reward_amount=50

4. 日志记录

4.1 任务完成日志表 (task_completion_logs)

字段名 类型 允许空 默认值 说明
id int 自增 主键
user_id int - 用户ID
task_id int - 任务ID
user_task_id int - 用户任务ID
completed_at timestamp - 完成时间
conditions json - 完成时的条件状态
ip_address varchar(45) NULL IP地址
device_info varchar(255) NULL 设备信息
created_at timestamp NULL 创建时间

索引:

  • PRIMARY KEY (id)
  • KEY idx_user (user_id)
  • KEY idx_task (task_id)
  • KEY idx_completed (completed_at)

4.2 奖励发放日志表 (task_reward_logs)

字段名 类型 允许空 默认值 说明
id int 自增 主键
user_id int - 用户ID
task_id int - 任务ID
user_task_id int - 用户任务ID
rewards json - 发放的奖励
rewarded_at timestamp - 发放时间
operator_id int NULL 操作者ID(系统为0)
ip_address varchar(45) NULL IP地址
created_at timestamp NULL 创建时间

索引:

  • PRIMARY KEY (id)
  • KEY idx_user (user_id)
  • KEY idx_task (task_id)
  • KEY idx_rewarded (rewarded_at)

4.3 进度重置日志表 (task_reset_logs)

字段名 类型 允许空 默认值 说明
id int 自增 主键
user_id int - 用户ID
task_id int - 任务ID
user_task_id int - 用户任务ID
reset_type varchar(20) - 重置类型
reset_time timestamp - 重置时间
old_progress json NULL 重置前进度
operator_id int NULL 操作者ID
created_at timestamp NULL 创建时间

索引:

  • PRIMARY KEY (id)
  • KEY idx_user_task (user_id, task_id)
  • KEY idx_reset_time (reset_time)

5. 数据关系

task_tasks 1 --< task_conditions
task_tasks 1 --< task_rewards
task_tasks 1 --< task_user_tasks
task_user_tasks 1 --< task_completion_logs
task_user_tasks 1 --< task_reward_logs
task_user_tasks 1 --< task_reset_logs

6. 设计说明

  1. 模块化设计:任务定义、完成和日志分离,结构清晰
  2. 完整审计:通过日志表记录所有关键操作
  3. 性能优化:合理设计索引,确保查询效率
  4. 扩展性:支持多种任务类型和条件组合
  5. 数据安全:所有修改操作都有日志可追溯
  6. 进度跟踪:用户任务表记录详细进度状态
  7. 灵活奖励:支持多种奖励类型和数量配置