Hướng dẫn này cung cấp các bước hoàn chỉnh để thiết kế lược đồ cơ sở dữ liệu của Trình quản lý tác vụ để quản lý các tác vụ, hoạt động và nhận xét của người dùng ứng dụng. Ứng dụng Trình quản lý tác vụ được xây dựng bằng cách sử dụng thiết kế cơ sở dữ liệu này có thể được sử dụng để lưu trữ các tác vụ liên quan đến người dùng. Ứng dụng tương tự có thể được sử dụng để quản lý các hoạt động nhiệm vụ và nhận xét hoặc ghi chú.
Sơ đồ mối quan hệ thực thể hoặc thiết kế cơ sở dữ liệu trực quan được hiển thị bên dưới.
Thiết kế cơ sở dữ liệu quản lý tác vụ
Bạn cũng có thể xem các hướng dẫn phổ biến bao gồm Cách cài đặt MySQL 8 trên Ubuntu 20.04 LTS, Cách cài đặt MySQL 8 trên Windows, Cách cài đặt MySQL Workbench trên Ubuntu, Cách cài đặt MySQL 8 với Workbench trên Windows 10, Cơ sở dữ liệu RBAC trong MySql, Cơ sở dữ liệu thông báo trong MySQL, Cơ sở dữ liệu lịch sự kiện và lời nhắc trong MySQL, Cơ sở dữ liệu blog trong MySql, Cơ sở dữ liệu câu hỏi trong MySQL, Cơ sở dữ liệu thăm dò &khảo sát trong MySQL, Cơ sở dữ liệu giỏ hàng trực tuyến trong MySQL, Cơ sở dữ liệu hàng tồn kho trong MySQL và Tìm hiểu các truy vấn SQL cơ bản trong MySQL.
Cơ sở dữ liệu Trình quản lý Tác vụ
Bước đầu tiên là tạo Cơ sở dữ liệu Trình quản lý Tác vụ. Nó có thể được tạo bằng cách sử dụng truy vấn như hình dưới đây.
CREATE SCHEMA `task_manager` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Tôi đã sử dụng bộ ký tự utf8mb4 để hỗ trợ nhiều loại ký tự.
Bảng Người dùng
Trong phần này, chúng tôi sẽ thiết kế Bảng người dùng để lưu trữ thông tin người dùng. Người dùng có thể quản lý hồ sơ của riêng họ. Ngoài ra, người dùng có thể sử dụng ứng dụng để quản lý các tác vụ và hoạt động của riêng họ. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Người dùng.
Id | Id duy nhất để xác định người dùng. |
Id vai trò | Vai trò của người dùng. Đó có thể là Quản trị viên hoặc Người dùng. |
Tên | Tên của người dùng. |
Tên đệm | Tên đệm của người dùng. |
Họ | Họ của người dùng. |
Di động | Số điện thoại di động của người dùng. Nó có thể được sử dụng cho mục đích đăng nhập và đăng ký. |
Email của người dùng. Nó có thể được sử dụng cho mục đích đăng nhập và đăng ký. | |
Băm mật khẩu | Mật khẩu băm được tạo bởi thuật toán thích hợp. Chúng tôi phải tránh lưu trữ mật khẩu đơn giản hoặc mật khẩu được mã hóa. |
Đã đăng ký tại | Cột này có thể được sử dụng để tính toán tuổi thọ của người dùng với ứng dụng. |
Lần Đăng nhập Cuối cùng | Nó có thể được sử dụng để xác định thông tin đăng nhập cuối cùng của người dùng. |
Giới thiệu | Giới thiệu ngắn gọn về Người dùng. |
Hồ sơ | Chi tiết người dùng. |
Bảng Người dùng với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `task_manager`.`user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`roleId` SMALLINT NOT NULL,
`firstName` VARCHAR(50) NULL DEFAULT NULL,
`middleName` VARCHAR(50) NULL DEFAULT NULL,
`lastName` VARCHAR(50) NULL DEFAULT NULL,
`username` VARCHAR(50) NULL DEFAULT NULL,
`mobile` VARCHAR(15) NULL,
`email` VARCHAR(50) NULL,
`passwordHash` VARCHAR(32) NOT NULL,
`registeredAt` DATETIME NOT NULL,
`lastLogin` DATETIME NULL DEFAULT NULL,
`intro` TINYTEXT NULL DEFAULT NULL,
`profile` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_username` (`username` ASC),
UNIQUE INDEX `uq_mobile` (`mobile` ASC),
UNIQUE INDEX `uq_email` (`email` ASC) );
Bảng Nhiệm vụ
Trong phần này, chúng tôi sẽ thiết kế Bảng nhiệm vụ để lưu trữ các tác vụ. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Nhiệm vụ.
Id | Id duy nhất để xác định nhiệm vụ. |
Id Người dùng | Id người dùng để xác định người dùng tương ứng. |
Tạo bởi | Id người dùng để xác định người dùng đã thêm nhiệm vụ. |
Được cập nhật bởi | Id người dùng để xác định người dùng đã cập nhật tác vụ. |
Tiêu đề | Tên của Nhiệm vụ. |
Mô tả | Mô tả Nhiệm vụ. |
Trạng thái | Trạng thái của nhiệm vụ có thể là Mới, Đang tiến hành hoặc Đã hoàn thành. |
Giờ | Tổng số giờ mà Nhiệm vụ tiêu tốn. Nó có thể được điền thủ công hoặc cập nhật khi hoàn thành hoạt động. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà tác vụ được tạo. |
Cập nhật lúc | Nó lưu trữ ngày và giờ mà tác vụ được cập nhật. |
Ngày bắt đầu theo kế hoạch | Nó lưu trữ ngày và giờ mà nhiệm vụ được lên kế hoạch bắt đầu. |
Ngày Kết thúc Dự kiến | Nó lưu trữ ngày và giờ mà nhiệm vụ được lên kế hoạch kết thúc. |
Ngày bắt đầu thực tế | Nó lưu trữ ngày và giờ thực tế mà tác vụ bắt đầu. |
Ngày kết thúc thực tế | Nó lưu trữ ngày và giờ thực tế mà tác vụ đã hoàn thành. |
Nội dung | Cột được sử dụng để lưu trữ chi tiết nhiệm vụ. |
Nó sử dụng trạng thái cột để theo dõi trạng thái của nhiệm vụ. Trạng thái có thể là Mới, Đang xử lý hoặc Đã hoàn thành. Ngoài ra, người dùng có thể điền giờ theo cách thủ công trong trường hợp không có hoạt động nào được lên kế hoạch cho nhiệm vụ. Nhiệm vụ cũng có thể lấy số giờ thực tế của nó từ các hoạt động liên quan đến nó. Bảng Nhiệm vụ với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `task_manager`.`task` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`createdBy` BIGINT NOT NULL,
`updatedBy` BIGINT NOT NULL,
`title` VARCHAR(512) NOT NULL,
`description` VARCHAR(2048) DEFAULT NULL,
`status` SMALLINT NOT NULL DEFAULT 0,
`hours` FLOAT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`plannedStartDate` DATETIME NULL DEFAULT NULL,
`plannedEndDate` DATETIME NULL DEFAULT NULL,
`actualStartDate` DATETIME NULL DEFAULT NULL,
`actualEndDate` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_task_user` (`userId` ASC),
CONSTRAINT `fk_task_user`
FOREIGN KEY (`userId`)
REFERENCES `task_manager`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
ALTER TABLE `task_manager`.`task`
ADD INDEX `idx_task_creator` (`createdBy` ASC);
ALTER TABLE `task_manager`.`task`
ADD CONSTRAINT `fk_task_creator`
FOREIGN KEY (`createdBy`)
REFERENCES `task_manager`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
ALTER TABLE `task_manager`.`task`
ADD INDEX `idx_task_modifier` (`updatedBy` ASC);
ALTER TABLE `task_manager`.`task`
ADD CONSTRAINT `fk_task_modifier`
FOREIGN KEY (`updatedBy`)
REFERENCES `task_manager`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Meta nhiệm vụ
Bảng Meta Nhiệm vụ có thể được sử dụng để lưu trữ thông tin bổ sung về các nhiệm vụ. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Meta Nhiệm vụ.
Id | Id duy nhất để xác định meta nhiệm vụ. |
Id Công việc | Id nhiệm vụ để xác định nhiệm vụ chính. |
Phím | Chìa khóa xác định meta. |
Nội dung | Cột được sử dụng để lưu trữ siêu dữ liệu nhiệm vụ. |
Bảng Meta Nhiệm vụ với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `task_manager`.`task_meta` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`taskId` BIGINT NOT NULL,
`key` VARCHAR(50) NOT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_meta_task` (`taskId` ASC),
UNIQUE INDEX `uq_task_meta` (`taskId` ASC, `key` ASC),
CONSTRAINT `fk_meta_task`
FOREIGN KEY (`taskId`)
REFERENCES `task_manager`.`task` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Bảng thẻ và Bảng thẻ nhiệm vụ
Trong phần này, chúng tôi sẽ thiết kế Bảng thẻ và Bảng thẻ tác vụ để lưu trữ các thẻ nhiệm vụ và ánh xạ của chúng. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng thẻ.
Id | Id duy nhất để xác định thẻ. |
Tiêu đề | Tiêu đề thẻ. |
Slug | Slug thẻ để tạo thành URL. |
Bảng Thẻ với các ràng buộc thích hợp như được hiển thị bên dưới.
CREATE TABLE `task_manager`.`tag` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(75) NOT NULL,
`slug` VARCHAR(100) NOT NULL,
PRIMARY KEY (`id`));
Dưới đây được đề cập là mô tả của tất cả các cột của Bảng thẻ nhiệm vụ.
Id nhiệm vụ | Id nhiệm vụ để xác định nhiệm vụ. |
Id thẻ | Id thẻ để xác định thẻ. |
Bảng thẻ tác vụ với các ràng buộc thích hợp như được hiển thị bên dưới.
CREATE TABLE `task_manager`.`task_tag` (
`taskId` BIGINT NOT NULL,
`tagId` BIGINT NOT NULL,
PRIMARY KEY (`taskId`, `tagId`),
INDEX `idx_tt_task` (`taskId` ASC),
INDEX `idx_tt_tag` (`tagId` ASC),
CONSTRAINT `fk_tt_task`
FOREIGN KEY (`taskId`)
REFERENCES `task_manager`.`task` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_tt_tag`
FOREIGN KEY (`tagId`)
REFERENCES `task_manager`.`tag` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
Bảng hoạt động
Trong phần này, chúng tôi sẽ thiết kế Bảng hoạt động để lưu trữ các hoạt động nhiệm vụ cần thiết để hoàn thành nhiệm vụ. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng hoạt động.
Id | Id duy nhất để xác định hoạt động. |
Id Người dùng | Id người dùng để xác định người dùng tương ứng. |
Id Công việc | Id nhiệm vụ để xác định nhiệm vụ tương ứng. |
Tạo bởi | Id người dùng để xác định người dùng đã thêm nhiệm vụ. |
Được cập nhật bởi | Id người dùng để xác định người dùng đã cập nhật tác vụ. |
Tiêu đề | Tên của Nhiệm vụ. |
Mô tả | Mô tả Nhiệm vụ. |
Trạng thái | Trạng thái của hoạt động có thể là Mới, Đang tiến hành hoặc Đã hoàn thành. |
Giờ | Tổng số giờ mà Hoạt động sử dụng. Giờ nhiệm vụ tương ứng có thể được cập nhật khi hoàn thành hoạt động. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà hoạt động được tạo. |
Cập nhật lúc | Nó lưu trữ ngày và giờ tại đó hoạt động được cập nhật. |
Ngày bắt đầu theo kế hoạch | Nó lưu trữ ngày và giờ mà hoạt động được lên kế hoạch bắt đầu. |
Ngày Kết thúc Dự kiến | Nó lưu trữ ngày và giờ mà hoạt động được lên kế hoạch kết thúc. |
Ngày bắt đầu thực tế | Nó lưu trữ ngày và giờ thực tế mà hoạt động bắt đầu. |
Ngày kết thúc thực tế | Nó lưu trữ ngày và giờ thực tế mà hoạt động đã kết thúc. |
Nội dung | Cột được sử dụng để lưu trữ chi tiết hoạt động. |
Nó sử dụng trạng thái cột để theo dõi trạng thái của hoạt động. Trạng thái có thể là Mới, Đang xử lý hoặc Đã hoàn thành. Ngoài ra, người dùng có thể điền thủ công vào giờ hoạt động. Nhiệm vụ có thể lấy số giờ thực tế của nó từ các hoạt động liên quan đến nó. Bảng Hoạt động với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `task_manager`.`activity` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`taskId` BIGINT NOT NULL,
`createdBy` BIGINT NOT NULL,
`updatedBy` BIGINT NOT NULL,
`title` VARCHAR(512) NOT NULL,
`description` VARCHAR(2048) DEFAULT NULL,
`status` SMALLINT NOT NULL DEFAULT 0,
`hours` FLOAT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`plannedStartDate` DATETIME NULL DEFAULT NULL,
`plannedEndDate` DATETIME NULL DEFAULT NULL,
`actualStartDate` DATETIME NULL DEFAULT NULL,
`actualEndDate` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_activity_user` (`userId` ASC),
CONSTRAINT `fk_activity_user`
FOREIGN KEY (`userId`)
REFERENCES `task_manager`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
ALTER TABLE `task_manager`.`activity`
ADD INDEX `idx_activity_task` (`taskId` ASC);
ALTER TABLE `task_manager`.`activity`
ADD CONSTRAINT `fk_activity_task`
FOREIGN KEY (`taskId`)
REFERENCES `task_manager`.`task` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
ALTER TABLE `task_manager`.`activity`
ADD INDEX `idx_activity_creator` (`createdBy` ASC);
ALTER TABLE `task_manager`.`activity`
ADD CONSTRAINT `fk_activity_creator`
FOREIGN KEY (`createdBy`)
REFERENCES `task_manager`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
ALTER TABLE `task_manager`.`activity`
ADD INDEX `idx_activity_modifier` (`updatedBy` ASC);
ALTER TABLE `task_manager`.`activity`
ADD CONSTRAINT `fk_activity_modifier`
FOREIGN KEY (`updatedBy`)
REFERENCES `task_manager`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Bảng chú thích
Trong phần này, chúng tôi sẽ thiết kế Bảng nhận xét để lưu trữ các nhận xét về nhiệm vụ và hoạt động. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Nhận xét.
Id | Id duy nhất để xác định bài đánh giá sản phẩm. |
Id Công việc | Id nhiệm vụ để xác định nhiệm vụ chính. |
Id hoạt động | Id hoạt động để xác định hoạt động chính. |
Tiêu đề | Tiêu đề bài đánh giá. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà nhận xét được tạo. |
Cập nhật lúc | Nó lưu trữ ngày và giờ tại đó nhận xét được cập nhật. |
Nội dung | Cột được sử dụng để lưu trữ chi tiết nhận xét. |
Bảng Nhận xét với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `task_manager`.`comment` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`taskId` BIGINT NOT NULL,
`activityId` BIGINT NULL DEFAULT NULL,
`title` VARCHAR(100) NOT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_comment_task` (`taskId` ASC),
CONSTRAINT `fk_comment_task`
FOREIGN KEY (`taskId`)
REFERENCES `task_manager`.`task` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
ALTER TABLE `task_manager`.`comment`
ADD INDEX `idx_comment_activity` (`activityId` ASC);
ALTER TABLE `task_manager`.`comment`
ADD CONSTRAINT `fk_comment_activity`
FOREIGN KEY (`activityId`)
REFERENCES `task_manager`.`activity` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Tóm tắt
Trong hướng dẫn này, chúng ta đã thảo luận về thiết kế cơ sở dữ liệu của ứng dụng Quản lý tác vụ để quản lý các tác vụ và hoạt động của người dùng ứng dụng. Nó cũng cung cấp thiết kế cơ sở dữ liệu để quản lý các nhận xét về các nhiệm vụ và hoạt động.
Bạn có thể gửi bình luận của mình để tham gia thảo luận. Bạn cũng có thể quan tâm đến việc thiết kế cơ sở dữ liệu của Thông báo, Sự kiện Lịch và Lời nhắc. Lược đồ cơ sở dữ liệu hoàn chỉnh cũng có sẵn trên GitHub.