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-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.