You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设计MySQL每日任务清单数据库结构?

数据库结构设计方案

针对你把纸质任务表单转化为数据库应用的需求,这里提供符合范式的数据库表结构设计:

1. 任务主表 (tasks)

存储任务的基础信息,定义任务的执行规则(解决“并非所有任务都需要每日执行”的需求):

  • task_id:主键(自增整数或UUID),唯一标识每个任务
  • task_name:字符串,任务名称(必填,如"整理文件柜")
  • description:文本,任务细节描述(可选)
  • execution_type:枚举类型,可选值:daily(每日执行)、weekly(每周指定天数)、monthly(每月指定日期)、custom(自定义规则)
  • execution_config:JSON类型,存储对应execution_type的具体规则(比如execution_type为weekly时,存{"days": [1,3,5]}代表周一、周三、周五执行;custom时可存更复杂的日期规则)
  • is_active:布尔值,标记任务是否处于生效状态(避免删除历史任务)

2. 任务执行记录表 (task_executions)

记录每日任务的完成与签名情况,关联任务和执行日期:

  • execution_id:主键(自增整数或UUID)
  • task_id:外键,关联tasks.task_id(必填)
  • execution_date:日期类型(如DATE),记录任务执行的具体日期(必填)
  • is_completed:布尔值,标记任务是否完成(默认false)
  • signature:字符串,存储签名信息(可根据实际需求存姓名文本、签名图片路径或加密数据)
  • submit_time:时间戳,记录签名提交的具体时间

3. 可选:用户表 (users)

如果存在多个用户需要签名,需存储用户基础信息:

  • user_id:主键(自增整数或UUID)
  • full_name:字符串,用户真实姓名(对应签名的实际名称,必填)
  • username:字符串,登录用户名(唯一,必填)
  • 其他字段(如联系方式)按需添加

此时需在task_executions表中新增user_id外键,关联users.user_id,用于记录是哪个用户完成的任务。


设计优势说明

  • 符合数据库第三范式,避免数据冗余,新增任务/日期无需修改表结构
  • 执行规则通过execution_type+execution_config灵活定义,适配不同任务的执行频率需求
  • 任务执行记录与任务主表分离,便于统计历史完成情况、导出报表

示例查询(获取指定日期的任务完成情况)

-- 查询2024-06-10所有生效任务的完成状态
SELECT 
    t.task_name,
    COALESCE(te.is_completed, false) AS is_completed,
    te.signature
FROM tasks t
LEFT JOIN task_executions te 
    ON t.task_id = te.task_id 
    AND te.execution_date = '2024-06-10'
WHERE t.is_active = true
-- 根据执行规则过滤当天需要执行的任务
AND (
    t.execution_type = 'daily'
    OR (
        t.execution_type = 'weekly' 
        AND EXTRACT(DOW FROM '2024-06-10'::DATE) = ANY((t.execution_config->>'days')::int[])
    )
    -- 其他执行类型的过滤逻辑可按需补充
);

内容的提问来源于stack exchange,提问作者farmerm3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:25:33