sql >> Databáze >  >> RDS >> Mysql

Průvodce návrhem databáze pro Správce úloh v MySQL

Tento výukový program poskytuje úplné kroky k návrhu schématu databáze Správce úloh pro správu úloh, aktivit a komentářů uživatelů aplikace. Aplikaci Správce úloh vytvořenou pomocí tohoto návrhu databáze lze použít k ukládání úloh spojených s uživateli. Stejnou aplikaci lze použít ke správě aktivit úkolů a komentářů nebo poznámek.

Diagram vztahů entit nebo návrh vizuální databáze je uveden níže.

Návrh databáze správy úloh

Můžete také navštívit oblíbené výukové programy včetně Jak nainstalovat MySQL 8 na Ubuntu 20.04 LTS, Jak nainstalovat MySQL 8 na Windows, Jak nainstalovat MySQL Workbench na Ubuntu, Jak nainstalovat MySQL 8 s Workbenchem na Windows 10, Databáze RBAC v MySql, Databáze oznámení v MySQL, databáze událostí kalendáře a připomenutí v MySQL, databáze blogů v MySQL, databáze kvízů v MySQL, databáze anket a průzkumů v MySQL, databáze nákupních košíků online v MySQL, databáze inventáře v MySQL a naučte se základní SQL dotazy v MySQL.

Databáze Správce úloh

Úplně prvním krokem je vytvoření databáze Správce úloh. Lze jej vytvořit pomocí dotazu, jak je uvedeno níže.

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

Použil jsem znakovou sadu utf8mb4 pro podporu široké škály znaků.

Tabulka uživatelů

V této části navrhneme Tabulku uživatelů k ukládání uživatelských informací. Uživatelé mohou spravovat své vlastní profily. Uživatelé mohou také používat aplikaci ke správě vlastních úkolů a aktivit. Níže je uveden popis všech sloupců tabulky uživatelů.

ID Jedinečné ID k identifikaci uživatele.
ID role Role uživatele. Může to být správce nebo uživatel.
Křestní jméno Křestní jméno uživatele.
Prostřední jméno Prostřední jméno uživatele.
Příjmení Příjmení uživatele.
Mobil Číslo mobilního telefonu uživatele. Lze jej použít pro účely přihlášení a registrace.
E-mail E-mailová adresa uživatele. Lze jej použít pro účely přihlášení a registrace.
Hašování hesla Hash hash hesla vygenerovaný příslušným algoritmem. Musíme se vyhnout ukládání jednoduchých nebo šifrovaných hesel.
Registrováno na Tento sloupec lze použít k výpočtu životnosti uživatele s aplikací.
Poslední přihlášení Lze jej použít k identifikaci posledního přihlášení uživatele.
Úvod Stručné představení uživatele.
Profil Podrobnosti o uživateli.

Tabulka uživatelů s příslušnými omezeními je uvedena níže.

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

Tabulka úkolů

V této části navrhneme Tabulku úloh k uložení úkolů. Níže je uveden popis všech sloupců Task Table.

ID Jedinečné ID k identifikaci úkolu.
ID uživatele ID uživatele k identifikaci odpovídajícího uživatele.
Vytvořil ID uživatele k identifikaci uživatele, který přidal úkol.
Aktualizováno ID uživatele k identifikaci uživatele, který aktualizoval úlohu.
Název Název úkolu.
Popis Popis úkolu.
Stav Stav úkolu může být Nový, Probíhá nebo Dokončeno.
Otevírací doba Celkový počet hodin spotřebovaných úkolem. Může být vyplněn ručně nebo aktualizován po dokončení aktivity.
Vytvořeno v Ukládá datum a čas, kdy byla úloha vytvořena.
Aktualizováno dne Ukládá datum a čas, kdy je úloha aktualizována.
Plánované datum zahájení Ukládá datum a čas, kdy je plánováno spuštění úlohy.
Plánované datum ukončení Ukládá datum a čas, kdy je plánováno ukončení úlohy.
Aktuální datum zahájení Ukládá skutečné datum a čas, kdy úloha začala.
Aktuální datum ukončení Ukládá skutečné datum a čas, kdy byla úloha dokončena.
Obsah Sloupec používaný k uložení podrobností úkolu.

Ke sledování stavu úlohy používá stav sloupce. Stav může být buď Nový, Probíhá nebo Dokončeno. Uživatel také může ručně vyplnit hodiny v případě, že pro daný úkol není plánována žádná aktivita. Úkol může také odvodit své skutečné hodiny z činností s ním spojených. Tabulka úloh s příslušnými omezeními je uvedena níže.

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

Task Meta Table lze použít k uložení dalších informací o úkolech. Níže je uveden popis všech sloupců Task Meta Table.

ID Jedinečné ID k identifikaci meta úkolu.
ID úlohy ID úkolu k identifikaci nadřazeného úkolu.
Klíč Klíč identifikující meta.
Obsah Sloupec používaný k uložení metadat úlohy.

Metatabulka úloh s příslušnými omezeními je uvedena níže.

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;

Tabulka značek a tabulka značek úkolů

V této části navrhneme Tabulku značek a Tabulka značek úkolů pro uložení značek úkolů a jejich mapování. Níže je uveden popis všech sloupců tabulky značek.

ID Jedinečné ID k identifikaci značky.
Název Název značky.
Slimák Slug značky tvořící adresu URL.

Tabulka značek s příslušnými omezeními je uvedena níže.

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

Níže je uveden popis všech sloupců Task Tag Table.

ID úlohy ID úkolu k identifikaci úkolu.
ID značky ID značky k identifikaci značky.

Tabulka značek úkolů s příslušnými omezeními je uvedena níže.

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

Tabulka aktivit

V této části navrhneme Tabulku aktivit k uložení činností úkolu potřebných k dokončení úkolu. Níže je uveden popis všech sloupců tabulky aktivit.

ID Jedinečné ID k identifikaci aktivity.
ID uživatele ID uživatele k identifikaci odpovídajícího uživatele.
ID úlohy ID úkolu k identifikaci odpovídajícího úkolu.
Vytvořil ID uživatele k identifikaci uživatele, který přidal úkol.
Aktualizováno ID uživatele k identifikaci uživatele, který aktualizoval úlohu.
Název Název úkolu.
Popis Popis úkolu.
Stav Stav aktivity může být Nová, Probíhá nebo Dokončeno.
Otevírací doba Celkový počet hodin strávených aktivitou. Odpovídající hodiny úkolu lze aktualizovat po dokončení aktivity.
Vytvořeno v Ukládá datum a čas, kdy byla aktivita vytvořena.
Aktualizováno dne Ukládá datum a čas, kdy je aktivita aktualizována.
Plánované datum zahájení Ukládá datum a čas, kdy je plánováno zahájení aktivity.
Plánované datum ukončení Ukládá datum a čas, kdy je plánováno ukončení aktivity.
Aktuální datum zahájení Ukládá skutečné datum a čas, kdy aktivita začala.
Aktuální datum ukončení Ukládá skutečné datum a čas, kdy aktivita skončila.
Obsah Sloupec používaný k uložení podrobností o aktivitě.

Ke sledování stavu aktivity používá stav sloupce. Stav může být buď Nový, Probíhá nebo Dokončeno. Uživatel může také ručně vyplnit hodiny aktivity. Úkol může odvodit své skutečné hodiny z činností s ním spojených. Tabulka aktivit s příslušnými omezeními je uvedena níže.

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;

Tabulka komentářů

V této sekci navrhneme Tabulku komentářů pro uložení poznámek k úkolům a aktivitám. Níže je uveden popis všech sloupců tabulky komentářů.

ID Jedinečné ID k identifikaci recenze produktu.
ID úlohy ID úkolu k identifikaci nadřazeného úkolu.
ID aktivity ID aktivity k identifikaci nadřazené aktivity.
Název Název recenze.
Vytvořeno v Ukládá datum a čas, kdy byl komentář vytvořen.
Aktualizováno dne Ukládá datum a čas, kdy je komentář aktualizován.
Obsah Sloupec používaný k uložení podrobností komentáře.

Tabulka komentářů s příslušnými omezeními je uvedena níže.

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;

Shrnutí

V tomto tutoriálu jsme diskutovali o návrhu databáze aplikace Task Management pro správu úkolů a aktivit uživatelů aplikace. Poskytlo také návrh databáze pro správu komentářů k úkolům a činnostem.

Do diskuse můžete zasílat své komentáře. Může vás také zajímat návrh databáze oznámení, události kalendáře a připomenutí. Kompletní schéma databáze je k dispozici také na GitHubu.


  1. Oracle:PŘI AKTUALIZACI DUPLIKÁTNÍHO KLÍČE

  2. 3 způsoby, jak získat seřazení sloupce v MariaDB

  3. Přidejte cizí klíč do existující tabulky

  4. Různé plány pro identické servery