Tento výukový program poskytuje úplné kroky k návrhu databázového schématu Notification System pro správu uživatelských upozornění. Lze jej dále vylepšit a použít ke správě upozornění jiných subjektů kromě uživatele systému.
Diagram vztahů entit nebo návrh vizuální databáze je uveden níže.
Databáze správy oznámení
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 blogů v MySql, kvízová databáze v MySQL, databáze anket a průzkumů v MySQL, databáze nákupních košíků online v MySQL a naučte se základní SQL dotazy v MySQL.
Databáze oznámení
Úplně prvním krokem je vytvoření databáze oznámení. Lze jej vytvořit pomocí dotazu, jak je uvedeno níže.
CREATE SCHEMA `notification` 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í oznámení. Níže je uveden popis všech sloupců tabulky uživatelů.
ID | Jedinečné ID k identifikaci uživatele. |
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-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 | Krátké 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 `notification`.`user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`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 šablon oznámení
V této části navrhneme Tabulku šablon oznámení slouží ke generování obsahu oznámení. Aplikace může dále použít vhodný systém šablon k analýze šablony za účelem generování obsahu oznámení. Níže je uveden popis všech sloupců tabulky Notification Template Table.
ID | Jedinečné ID k identifikaci šablony oznámení. |
Název | Název šablony. |
Popis | Popis šablony. |
Typ | Typ pro klasifikaci šablon. |
Typ zdroje | Typ zdroje pro klasifikaci šablon podle typu zdroje. |
Vytvořeno v | Ukládá datum a čas, kdy byla šablona vytvořena. |
Aktualizováno dne | Ukládá datum a čas, kdy byla šablona aktualizována. |
Obsah | Sloupec používaný k uložení obsahu šablony. |
Tabulka šablon oznámení s příslušnými omezeními je uvedena níže.
CREATE TABLE `notification`.`notification_template` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
`description` VARCHAR(2048) NULL DEFAULT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`sourceType` VARCHAR(50) NOT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`) );
Tabulka oznámení
V této části navrhneme Tabulku oznámení k ukládání oznámení spouštěných aplikací. Upozornění lze spustit pomocí šablony určitého typu a typu zdroje. Typ a typ zdroje oznámení budou stejné jako u šablony použité k vygenerování obsahu oznámení. Níže je uveden popis všech sloupců tabulky oznámení.
ID | Jedinečné ID k identifikaci oznámení. |
ID uživatele | ID uživatele k identifikaci uživatele spojeného s oznámením. |
ID zdroje | ID zdroje k identifikaci entity spojené s oznámením. |
Typ zdroje | Typ zdroje k identifikaci entity přidružené k oznámení. Bude stejný jako typ zdroje šablony. |
Typ | Typ pro klasifikaci oznámení. Bude stejný jako typ šablony. |
Přečíst | Příznak pro označení oznámení jako přečteného/nepřečteného. |
Koš | Příznak pro označení oznámení jako koše. |
Vytvořeno v | Ukládá datum a čas, kdy je oznámení vytvořeno. |
Aktualizováno dne | Ukládá datum a čas, kdy je oznámení aktualizováno. |
Obsah | Obsah oznámení generovaný pomocí odpovídající šablony. |
Tabulka oznámení s příslušnými omezeními je uvedena níže.
CREATE TABLE `notification`.`notification` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`sourceId` BIGINT NOT NULL,
`sourceType` VARCHAR(50) NOT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`read` TINYINT(1) NOT NULL DEFAULT 1,
`trash` TINYINT(1) NOT NULL DEFAULT 1,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_notification_user` (`userId` ASC),
CONSTRAINT `fk_notification_user`
FOREIGN KEY (`userId`)
REFERENCES `notification`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
Shrnutí
V tomto tutoriálu jsme diskutovali o návrhu databáze systému oznámení pro ukládání uživatelů a správu jejich oznámení. Obsahuje také tabulku šablon oznámení potřebnou pro generování oznámení.
Do diskuse můžete zasílat své komentáře. Možná vás bude zajímat i návrh databáze aplikací Blog a Poll &Survey. Kompletní schéma databáze je k dispozici také na GitHubu.