Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Panduan Merancang Database Untuk Task Manager Di MySQL

Tutorial ini memberikan langkah-langkah lengkap untuk merancang skema database Task Manager untuk mengelola tugas, aktivitas, dan komentar pengguna aplikasi. Aplikasi Task Manager yang dibangun menggunakan desain database ini dapat digunakan untuk menyimpan tugas-tugas yang terkait dengan pengguna. Aplikasi yang sama dapat digunakan untuk mengelola aktivitas tugas dan komentar atau catatan.

Diagram Hubungan Entitas atau desain basis data visual ditunjukkan di bawah ini.

Desain Database Manajemen Tugas

Anda juga dapat mengunjungi tutorial populer termasuk Cara Menginstal MySQL 8 di Ubuntu 20.04 LTS, Cara Menginstal MySQL 8 di Windows, Cara Menginstal MySQL Workbench Di Ubuntu, Cara Menginstal MySQL 8 Dengan Workbench Di Windows 10, Database RBAC di MySql, Basis Data Notifikasi Di MySQL, Basis Data Kalender Acara Dan Pengingat di MySQL, Basis Data Blog di MySql, Basis Data Kuis di MySQL, Basis Data Poll &Survey di MySQL, Basis Data Keranjang Belanja Online di MySQL, Basis Data Inventaris di MySQL, dan Pelajari Kueri SQL Dasar Di MySQL.

Database Pengelola Tugas

Langkah pertama adalah membuat Database Task Manager. Itu dapat dibuat menggunakan kueri seperti yang ditunjukkan di bawah ini.

CREATE SCHEMA `task_manager` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Saya telah menggunakan set karakter utf8mb4 untuk mendukung berbagai karakter.

Tabel Pengguna

Di bagian ini, kita akan mendesain Tabel Pengguna untuk menyimpan informasi pengguna. Pengguna dapat mengelola profil mereka sendiri. Selain itu, pengguna dapat menggunakan aplikasi untuk mengelola tugas dan aktivitas mereka sendiri. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Pengguna.

Id Id unik untuk mengidentifikasi pengguna.
Id Peran Peran pengguna. Bisa Admin atau Pengguna.
Nama Depan Nama depan pengguna.
Nama Tengah Nama tengah pengguna.
Nama Belakang Nama belakang pengguna.
Seluler Nomor ponsel pengguna. Ini dapat digunakan untuk tujuan login dan registrasi.
Email Email pengguna. Ini dapat digunakan untuk tujuan login dan registrasi.
Hash Kata Sandi Hash kata sandi yang dihasilkan oleh algoritme yang sesuai. Kita harus menghindari penyimpanan kata sandi biasa atau terenkripsi.
Terdaftar Di Kolom ini dapat digunakan untuk menghitung umur pengguna dengan aplikasi tersebut.
Login Terakhir Ini dapat digunakan untuk mengidentifikasi login terakhir pengguna.
Pengantar Pengenalan singkat tentang Pengguna.
Profil Detail pengguna.

Tabel Pengguna dengan batasan yang sesuai ditunjukkan di bawah ini.

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) );

Tabel Tugas

Di bagian ini, kami akan mendesain Tabel Tugas untuk menyimpan tugas. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Tugas.

Id Id unik untuk mengidentifikasi tugas.
Id Pengguna ID pengguna untuk mengidentifikasi pengguna yang sesuai.
Dibuat Oleh ID pengguna untuk mengidentifikasi pengguna yang menambahkan tugas.
Diperbarui Oleh ID pengguna untuk mengidentifikasi pengguna yang memperbarui tugas.
Judul Judul Tugas.
Deskripsi Deskripsi Tugas.
Status Status tugas bisa Baru, Sedang Berproses, atau Selesai.
Jam Total jam yang digunakan oleh Tugas. Itu dapat diisi secara manual atau diperbarui pada penyelesaian aktivitas.
Dibuat Pada Ini menyimpan tanggal dan waktu saat tugas dibuat.
Diperbarui Pada Ini menyimpan tanggal dan waktu saat tugas diperbarui.
Tanggal Mulai yang Direncanakan Ini menyimpan tanggal dan waktu di mana tugas direncanakan untuk dimulai.
Tanggal Akhir yang Direncanakan Ini menyimpan tanggal dan waktu di mana tugas direncanakan untuk berakhir.
Tanggal Mulai Sebenarnya Ini menyimpan tanggal dan waktu sebenarnya saat tugas dimulai.
Tanggal Akhir Sebenarnya Ini menyimpan tanggal dan waktu aktual saat tugas selesai.
Konten Kolom yang digunakan untuk menyimpan detail tugas.

Ini menggunakan status kolom untuk melacak status tugas. Status dapat berupa Baru, Dalam Proses, atau Selesai. Selain itu, pengguna dapat mengisi jam secara manual jika tidak ada aktivitas yang direncanakan untuk tugas tersebut. Tugas juga dapat memperoleh jam aktualnya dari aktivitas yang terkait dengannya. Tabel Tugas dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

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 Tugas

Tabel Meta Tugas dapat digunakan untuk menyimpan informasi tambahan tentang tugas. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Meta Tugas.

Id Id unik untuk mengidentifikasi meta tugas.
Id Tugas ID tugas untuk mengidentifikasi tugas induk.
Kunci Kunci yang mengidentifikasi meta.
Konten Kolom yang digunakan untuk menyimpan metadata tugas.

Tabel Meta Tugas dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

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;

Tabel Tag dan Tabel Tag Tugas

Di bagian ini, kita akan mendesain Tabel Tag dan Tabel Tag Tugas untuk menyimpan tag tugas dan pemetaannya. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Tag.

Id Id unik untuk mengidentifikasi tag.
Judul Judul tag.
Siput Tag slug untuk membentuk URL.

Tabel Tag dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

CREATE TABLE `task_manager`.`tag` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(75) NOT NULL,
`slug` VARCHAR(100) NOT NULL,
PRIMARY KEY (`id`));

Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Tag Tugas.

Id Tugas ID tugas untuk mengidentifikasi tugas.
Id Tag Id tag untuk mengidentifikasi tag.

Tabel Tag Tugas dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

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);

Tabel Aktivitas

Di bagian ini, kita akan mendesain Tabel Aktivitas untuk menyimpan aktivitas tugas yang diperlukan untuk menyelesaikan tugas. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Aktivitas.

Id Id unik untuk mengidentifikasi aktivitas.
Id Pengguna ID pengguna untuk mengidentifikasi pengguna yang sesuai.
Id Tugas ID tugas untuk mengidentifikasi tugas yang sesuai.
Dibuat Oleh ID pengguna untuk mengidentifikasi pengguna yang menambahkan tugas.
Diperbarui Oleh ID pengguna untuk mengidentifikasi pengguna yang memperbarui tugas.
Judul Judul Tugas.
Deskripsi Deskripsi Tugas.
Status Status aktivitas bisa Baru, Sedang Berproses, atau Selesai.
Jam Total jam yang digunakan oleh Aktivitas. Jam tugas terkait dapat diperbarui setelah aktivitas selesai.
Dibuat Pada Ini menyimpan tanggal dan waktu saat aktivitas dibuat.
Diperbarui Pada Ini menyimpan tanggal dan waktu saat aktivitas diperbarui.
Tanggal Mulai yang Direncanakan Ini menyimpan tanggal dan waktu di mana aktivitas direncanakan untuk dimulai.
Tanggal Akhir yang Direncanakan Menyimpan tanggal dan waktu berakhirnya aktivitas.
Tanggal Mulai Sebenarnya Ini menyimpan tanggal dan waktu sebenarnya saat aktivitas dimulai.
Tanggal Akhir Sebenarnya Ini menyimpan tanggal dan waktu aktual saat aktivitas selesai.
Konten Kolom yang digunakan untuk menyimpan detail aktivitas.

Ini menggunakan status kolom untuk melacak status aktivitas. Status dapat berupa Baru, Dalam Proses, atau Selesai. Selain itu, pengguna dapat mengisi jam aktivitas secara manual. Tugas dapat memperoleh jam aktualnya dari aktivitas yang terkait dengannya. Tabel Aktivitas dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

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;

Tabel Komentar

Di bagian ini, kita akan mendesain Tabel Komentar untuk menyimpan komentar tugas dan aktivitas. Disebutkan di bawah ini adalah deskripsi dari semua kolom dari Tabel Komentar.

Id Id unik untuk mengidentifikasi ulasan produk.
Id Tugas ID tugas untuk mengidentifikasi tugas induk.
Id Aktivitas Id aktivitas untuk mengidentifikasi aktivitas induk.
Judul Judul ulasan.
Dibuat Pada Ini menyimpan tanggal dan waktu saat komentar dibuat.
Diperbarui Pada Ini menyimpan tanggal dan waktu saat komentar diperbarui.
Konten Kolom yang digunakan untuk menyimpan detail komentar.

Tabel Komentar dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

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;

Ringkasan

Dalam tutorial ini, kita telah membahas desain database aplikasi Manajemen Tugas untuk mengelola tugas dan aktivitas pengguna aplikasi. Ini juga menyediakan desain database untuk mengelola komentar tugas dan aktivitas.

Anda dapat mengirimkan komentar Anda untuk bergabung dalam diskusi. Anda mungkin juga tertarik untuk merancang database Pemberitahuan, dan Acara Kalender, dan Pengingat. Skema database lengkap juga tersedia di GitHub.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengembalikan Posisi Argumen dalam Daftar Argumen di MySQL

  2. Jenis di MySQL:BigInt(20) vs Int(20)

  3. Cara Menghapus Spasi Leading dan Trailing di MySQL

  4. Bagaimana saya bisa menggunakan executemany untuk memasukkan ke MySQL daftar kamus dengan Python

  5. Apakah saya Menggunakan Penggabungan Koneksi JDBC?