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

Průvodce návrhem databáze pro události kalendáře a připomenutí v MySQL

Tento výukový program poskytuje úplné kroky k návrhu schématu databáze systému událostí kalendáře a připomenutí pro správu událostí kalendáře uživatelů a také ukládání připomenutí. Může být dále rozšířen a použit ke správě událostí a připomenutí jiných subjektů kromě uživatele systému.

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

Návrh databáze událostí a připomenutí kalendáře

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 kalendáře

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

CREATE SCHEMA `calendar` 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í události a připomenutí. 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-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 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 `calendar`.`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 událostí

V této části navrhneme Tabulku událostí k ukládání uživatelských událostí a událostí spuštěných aplikací. Níže je uveden popis všech sloupců tabulky událostí.

ID Jedinečné ID k identifikaci události.
ID uživatele ID uživatele k identifikaci odpovídajícího uživatele.
ID zdroje ID zdroje k identifikaci odpovídající entity.
Typ zdroje Typ zdroje pro rozlišení odpovídající entity mezi ostatními entitami.
Název Název události.
Popis Popis události pro uložení klíčových momentů události.
Typ Typ pro rozlišení mezi různými typy událostí.
URL Adresa URL pro přesměrování uživatele na konkrétní odkaz spojený s událostí.
Aktivní Příznakem zjistíte, zda je událost aktivní a zda je vhodná pro zobrazení v kalendáři.
Systém Příznak k identifikaci, zda je událost generována aplikací. Události aplikace budou vždy způsobilé k zobrazení v kalendáři.
Počet připomenutí Maximální počet připomenutí, které lze pro událost spustit.
Interval připomenutí Interval připomenutí.
Jednotka připomenutí Jednotka připomenutí pro identifikaci intervalu připomenutí v minutách, hodinách nebo dnech.
Vytvořeno v Ukládá datum a čas, kdy je událost vytvořena.
Aktualizováno dne Ukládá datum a čas, kdy je událost aktualizována.
Naplánováno na Ukládá datum a čas do kalendáře.
Spuštěno v Ukládá datum a čas, kdy byla událost spuštěna.
Obsah Sloupec používaný k uložení obsahu události.

Používá sloupec Aktivní zjistit, zda lze událost vygenerovanou uživatelem zobrazit v kalendáři. Systém příznak lze použít k označení událostí generovaných aplikací. Události generované aplikací lze vždy zobrazit v kalendáři. Sloupce ID zdroje a Typ zdroje lze použít k identifikaci dalších tabulek nebo entit spojených s událostí. Sloupec Spuštěno v ukládá datum a čas, kdy byla událost naposledy spuštěna. Tabulka událostí s příslušnými omezeními je uvedena níže.

CREATE TABLE `calendar`.`event` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`sourceId` BIGINT,
`sourceType` VARCHAR(50) NULL DEFAULT NULL,
`title` VARCHAR(1024) NOT NULL,
`descritpion` VARCHAR(2048) NULL DEFAULT NULL,
`type` SMALLINT(6) NOT NULL DEFAULT 0,
`url` VARCHAR(1024) NULL DEFAULT NULL,
`active` TINYINT(1) NOT NULL DEFAULT 0,
`system` TINYINT(1) NOT NULL DEFAULT 0,
`reminderCount` SMALLINT(6) NOT NULL DEFAULT 0,
`reminderInterval` SMALLINT(6) NOT NULL DEFAULT 0,
`reminderUnit` SMALLINT(6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`scheduledAt` DATETIME NULL DEFAULT NULL,
`triggeredAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_event_user` (`userId` ASC),
CONSTRAINT `fk_event_user`
FOREIGN KEY (`userId`)
REFERENCES `calendar`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

Tabulka šablon událostí

V této části navrhneme Tabulku šablon událostí slouží ke generování obsahu události. Aplikace může dále použít vhodný systém šablon k analýze šablony za účelem generování obsahu události. Níže je uveden popis všech sloupců tabulky šablon událostí.

ID Jedinečné ID k identifikaci šablony události.
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 událostí s příslušnými omezeními je uvedena níže.

CREATE TABLE `calendar`.`event_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) NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`) );

Tabulka připomenutí

Potřebujeme také tabulku pro ukládání připomenutí spouštěných aktivními nebo systémovými událostmi. Tato část obsahuje tabulku a sloupce potřebné ke správě připomenutí. Níže je uveden popis všech sloupců tabulky připomenutí.

ID Jedinečné ID k identifikaci připomenutí.
ID události ID události k identifikaci události spojené s připomenutím.
ID uživatele ID uživatele k identifikaci uživatele spojeného s připomenutím.
Přečíst Příznak pro označení připomenutí jako přečteného/nepřečteného.
Koš Příznak pro označení připomenutí jako koše.
Vytvořeno v Ukládá datum a čas vytvoření připomenutí.
Aktualizováno dne Ukládá datum a čas, kdy je připomenutí aktualizováno.
Obsah Připomenutí.

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

CREATE TABLE `calendar`.`reminder` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`eventId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`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_reminder_event` (`eventId` ASC),
CONSTRAINT `fk_reminder_event`
FOREIGN KEY (`eventId`)
REFERENCES `calendar`.`event` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `calendar`.`reminder`
ADD INDEX `idx_reminder_user` (`userId` ASC);
ALTER TABLE `calendar`.`reminder`
ADD CONSTRAINT `fk_reminder_user`
FOREIGN KEY (`userId`)
REFERENCES `calendar`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Vylepšení

Můžeme také spravovat skupinové události pomocí stejného databázového schématu. To lze provést přidáním příznaku skupiny do tabulky událostí a pro správu účastníků skupinové události je vyžadována nová tabulka.

Shrnutí

V tomto tutoriálu jsme diskutovali o návrhu databáze kalendářového systému pro ukládání uživatelských událostí a připomenutí. Poskytuje také návrh databáze pro správu uživatelských událostí spouštěných systémy nebo aplikací.

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.


  1. Škálování PostgreSQL pro velké množství dat

  2. Jak přeložit funkci PostgreSQL array_agg do SQLite?

  3. Odstraňování problémů Nelegální kombinace chyb porovnávání v mysql

  4. Výukový program MySQL:Klauzule MySQL IN (základní)