Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Leitfaden zum Entwerfen einer Datenbank für den Task-Manager in MySQL

Dieses Lernprogramm enthält die vollständigen Schritte zum Entwerfen eines Datenbankschemas des Task-Managers zum Verwalten der Aufgaben, Aktivitäten und Kommentare der Anwendungsbenutzer. Die mit diesem Datenbankdesign erstellte Task-Manager-Anwendung kann zum Speichern der den Benutzern zugeordneten Tasks verwendet werden. Die gleiche Anwendung kann verwendet werden, um die Aufgabenaktivitäten und Kommentare oder Notizen zu verwalten.

Das Entity-Relationship-Diagramm oder visuelle Datenbankdesign ist unten dargestellt.

Design der Aufgabenverwaltungsdatenbank

Sie können auch die beliebten Tutorials besuchen, darunter So installieren Sie MySQL 8 unter Ubuntu 20.04 LTS, So installieren Sie MySQL 8 unter Windows, So installieren Sie MySQL Workbench unter Ubuntu, So installieren Sie MySQL 8 mit Workbench unter Windows 10, RBAC-Datenbank in MySql, Benachrichtigungsdatenbank in MySQL, Kalenderereignis- und Erinnerungsdatenbank in MySQL, Blogdatenbank in MySQL, Quizdatenbank in MySQL, Umfrage- und Umfragedatenbank in MySQL, Online-Einkaufswagendatenbank in MySQL, Bestandsdatenbank in MySQL und Lernen Sie grundlegende SQL-Abfragen in MySQL.

Task Manager-Datenbank

Der allererste Schritt besteht darin, die Task-Manager-Datenbank zu erstellen. Es kann mit der unten gezeigten Abfrage erstellt werden.

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

Ich habe den Zeichensatz utf8mb4 verwendet um eine Vielzahl von Zeichen zu unterstützen.

Benutzertabelle

In diesem Abschnitt entwerfen wir die Benutzertabelle Benutzerinformationen zu speichern. Benutzer können ihre eigenen Profile verwalten. Außerdem können die Benutzer die Anwendung verwenden, um ihre eigenen Aufgaben und Aktivitäten zu verwalten. Nachfolgend finden Sie die Beschreibung aller Spalten der Benutzertabelle.

ID Die eindeutige ID zur Identifizierung des Benutzers.
Rollen-ID Die Rolle des Benutzers. Es kann Admin oder User sein.
Vorname Der Vorname des Benutzers.
Zweiter Vorname Der zweite Vorname des Benutzers.
Nachname Der Nachname des Benutzers.
Mobil Die Mobiltelefonnummer des Benutzers. Es kann für Anmelde- und Registrierungszwecke verwendet werden.
E-Mail Die E-Mail des Benutzers. Es kann für Anmelde- und Registrierungszwecke verwendet werden.
Passwort-Hash Der vom entsprechenden Algorithmus generierte Passwort-Hash. Wir müssen vermeiden, einfache oder verschlüsselte Passwörter zu speichern.
Registriert unter Diese Spalte kann verwendet werden, um die Lebensdauer des Benutzers mit der Anwendung zu berechnen.
Letzte Anmeldung Es kann verwendet werden, um die letzte Anmeldung des Benutzers zu identifizieren.
Einleitung Eine kurze Einführung des Benutzers.
Profil Benutzerdetails.

Die Benutzertabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

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

Aufgabentabelle

In diesem Abschnitt entwerfen wir die Aufgabentabelle um die Aufgaben zu speichern. Unten erwähnt ist die Beschreibung aller Spalten der Aufgabentabelle.

ID Die eindeutige ID zur Identifizierung der Aufgabe.
Benutzer-ID Die Benutzer-ID zur Identifizierung des entsprechenden Benutzers.
Erstellt von Die Benutzer-ID zur Identifizierung des Benutzers, der die Aufgabe hinzugefügt hat.
Aktualisiert von Die Benutzer-ID zur Identifizierung des Benutzers, der die Aufgabe aktualisiert hat.
Titel Der Titel der Aufgabe.
Beschreibung Die Beschreibung der Aufgabe.
Status Der Status der Aufgabe kann Neu, In Bearbeitung oder Abgeschlossen sein.
Stunden Die Gesamtstunden, die von der Aufgabe verbraucht werden. Es kann entweder manuell ausgefüllt oder nach Abschluss der Aktivität aktualisiert werden.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der die Aufgabe erstellt wurde.
Aktualisiert um Datum und Uhrzeit der Aktualisierung der Aufgabe werden gespeichert.
Geplantes Startdatum Datum und Uhrzeit des geplanten Starts der Aufgabe werden gespeichert.
Geplantes Enddatum Datum und Uhrzeit des geplanten Endes der Aufgabe werden gespeichert.
Tatsächliches Startdatum Es speichert das tatsächliche Datum und die Uhrzeit, zu der die Aufgabe gestartet wurde.
Tatsächliches Enddatum Es speichert das tatsächliche Datum und die Uhrzeit, zu der die Aufgabe beendet wurde.
Inhalt Die Spalte zum Speichern der Aufgabendetails.

Es verwendet den Spaltenstatus, um den Status der Aufgabe zu verfolgen. Der Status kann entweder Neu, In Bearbeitung oder Abgeschlossen sein. Außerdem kann der Benutzer die Stunden manuell eingeben, falls für die Aufgabe keine Aktivität geplant ist. Die Aufgabe kann ihre tatsächlichen Stunden auch aus den damit verbundenen Aktivitäten ableiten. Die Task-Tabelle mit den entsprechenden Einschränkungen sieht unten aus.

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;

Task-Meta

Die Aufgaben-Metatabelle kann verwendet werden, um zusätzliche Informationen zu Aufgaben zu speichern. Unten erwähnt ist die Beschreibung aller Spalten der Aufgaben-Meta-Tabelle.

ID Die eindeutige ID zur Identifizierung des Task-Metas.
Aufgaben-ID Die Aufgaben-ID zur Identifizierung der übergeordneten Aufgabe.
Schlüssel Der Schlüssel, der das Meta identifiziert.
Inhalt Die Spalte, die zum Speichern der Task-Metadaten verwendet wird.

Die Aufgaben-Meta-Tabelle mit den entsprechenden Einschränkungen sieht unten aus.

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;

Tag-Tabelle und Aufgaben-Tag-Tabelle

In diesem Abschnitt entwerfen wir die Tag-Tabelle und Task Tag Table um die Task-Tags und ihre Zuordnungen zu speichern. Unten erwähnt ist die Beschreibung aller Spalten der Tag-Tabelle.

ID Die eindeutige ID zur Identifizierung des Tags.
Titel Der Tag-Titel.
Schnecke Der Tag-Slug zur Bildung der URL.

Die Tag-Tabelle mit den entsprechenden Einschränkungen ist wie unten gezeigt.

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

Unten erwähnt ist die Beschreibung aller Spalten der Task-Tag-Tabelle.

Aufgaben-ID Die Aufgaben-ID zur Identifizierung der Aufgabe.
Tag-ID Die Tag-ID zur Identifizierung des Tags.

Die Task-Tag-Tabelle mit den entsprechenden Einschränkungen ist unten dargestellt.

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

Aktivitätstabelle

In diesem Abschnitt entwerfen wir die Aktivitätstabelle zum Speichern der Aufgabenaktivitäten, die zum Abschließen der Aufgabe erforderlich sind. Nachfolgend finden Sie die Beschreibung aller Spalten der Aktivitätstabelle.

ID Die eindeutige ID zur Identifizierung der Aktivität.
Benutzer-ID Die Benutzer-ID zur Identifizierung des entsprechenden Benutzers.
Aufgaben-ID Die Aufgaben-ID zur Identifizierung der entsprechenden Aufgabe.
Erstellt von Die Benutzer-ID zur Identifizierung des Benutzers, der die Aufgabe hinzugefügt hat.
Aktualisiert von Die Benutzer-ID zur Identifizierung des Benutzers, der die Aufgabe aktualisiert hat.
Titel Der Titel der Aufgabe.
Beschreibung Die Beschreibung der Aufgabe.
Status Der Status der Aktivität kann Neu, In Bearbeitung oder Abgeschlossen sein.
Stunden Die von der Aktivität verbrauchten Gesamtstunden. Die entsprechenden Aufgabenstunden können nach Abschluss der Aktivität aktualisiert werden.
Erstellt am Er speichert Datum und Uhrzeit der Erstellung der Aktivität.
Aktualisiert um Datum und Uhrzeit der Aktualisierung der Aktivität werden gespeichert.
Geplantes Startdatum Datum und Uhrzeit des geplanten Beginns der Aktivität werden gespeichert.
Geplantes Enddatum Datum und Uhrzeit des geplanten Endes der Aktivität werden gespeichert.
Tatsächliches Startdatum Es speichert das tatsächliche Datum und die Uhrzeit, zu der die Aktivität gestartet wurde.
Tatsächliches Enddatum Es speichert das tatsächliche Datum und die Uhrzeit, zu der die Aktivität beendet wurde.
Inhalt Die Spalte zum Speichern der Aktivitätsdetails.

Es verwendet die Statusspalte, um den Status der Aktivität zu verfolgen. Der Status kann entweder Neu, In Bearbeitung oder Abgeschlossen sein. Außerdem kann der Benutzer die Aktivitätsstunden manuell eingeben. Die Aufgabe kann ihre tatsächlichen Stunden aus den damit verbundenen Aktivitäten ableiten. Die Aktivitätstabelle mit den entsprechenden Einschränkungen sieht unten aus.

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;

Kommentartabelle

In diesem Abschnitt entwerfen wir die Kommentartabelle um die Aufgaben- und Aktivitätskommentare zu speichern. Unten erwähnt ist die Beschreibung aller Spalten der Kommentartabelle.

ID Die eindeutige ID zur Identifizierung der Produktbewertung.
Aufgaben-ID Die Aufgaben-ID zur Identifizierung der übergeordneten Aufgabe.
Aktivitäts-ID Die Aktivitäts-ID zur Identifizierung der übergeordneten Aktivität.
Titel Der Bewertungstitel.
Erstellt am Datum und Uhrzeit der Erstellung des Kommentars werden gespeichert.
Aktualisiert um Datum und Uhrzeit der Aktualisierung des Kommentars werden gespeichert.
Inhalt Die Spalte zum Speichern der Kommentardetails.

Die Kommentartabelle mit den entsprechenden Einschränkungen sieht unten aus.

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;

Zusammenfassung

In diesem Lernprogramm haben wir das Datenbankdesign einer Aufgabenverwaltungsanwendung besprochen, um die Aufgaben und Aktivitäten der Anwendungsbenutzer zu verwalten. Es lieferte auch das Datenbankdesign, um die Kommentare der Aufgaben und Aktivitäten zu verwalten.

Sie können Ihre Kommentare einreichen, um an der Diskussion teilzunehmen. Sie könnten auch daran interessiert sein, die Datenbank für Benachrichtigungen, Kalenderereignisse und Erinnerungen zu entwerfen. Das vollständige Datenbankschema ist auch auf GitHub verfügbar.