首先设计用户表、任务表和标签相关表,实现任务的增删改查、分类、优先级和状态管理,通过外键约束和索引优化保证数据一致性与查询效率。
构建一个简易任务管理系统,使用 MySQL 作为后端数据库是常见且实用的选择。关键在于合理的数据库设计和清晰的业务逻辑。下面从数据库设计入手,说明如何用 MySQL 实现一个基础但功能完整的小型任务管理系统。
一个简易任务管理系统通常需要支持以下功能:
建议创建以下三张核心表:
(1)用户表(users)
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password_hash VARCHAR(255) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP );如果系统仅限个人使用,可省略此表,直接在任务表中固定用户ID。
(2)任务表(tasks)
CREATE TABLE tasks (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100) NOT NULL,
description TEXT,
status ENUM('pending', 'in_progress', 'completed') DEFAULT 'pending',
priority ENUM('low', 'medium', 'high') DEFAULT 'medium',
due_date DATE,
user_id INT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
这是系统的核心表,记录每个任务的基本信息。(3)任务标签表(task_tags)与关联表
支持为任务打标签,提高分类灵活性。
-- 标签定义表 CREATE TABLE tags ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL UNIQUE );-- 任务与标签的多对多关联表 CREATE TABLE task_tag_relations ( task_id INT, tag_id INT, PRIMARY KEY (task_id, tag_id), FOREIGN KEY (task_id) REFERENCES tasks(id) ON DELETE CASCADE, FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE );
配合应用程序,可通过 SQL 实现各类操作:
SELECT * FROM tasks WHERE user_id = 1 AND status = 'pending';
SELECT * FROM tasks WHERE user_id = 1 ORDER BY priority DESC, due_date;
SELECT * FROM tasks WHERE due_date BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 DAY);
SELEC
T t.title, tg.name FROM tasks t JOIN task_tag_relations r ON t.id = r.task_id JOIN tags tg ON r.tag_id = tg.id WHERE tg.name = 'work';
基本上就这些。通过合理设计表结构并配合简单的增删改查操作,就能快速搭建一个可用的任务管理系统。随着需求增长,还可加入子任务、提醒、项目分组等功能,逐步扩展。