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

Leitfaden zum Entwerfen einer Datenbank für Kalenderereignisse und Erinnerungen in MySQL

Dieses Tutorial enthält die vollständigen Schritte zum Entwerfen eines Datenbankschemas des Kalenderereignis- und Erinnerungssystems zum Verwalten der Kalenderereignisse der Benutzer und zum Speichern der Erinnerungen. Es kann weiter verbessert und verwendet werden, um die Ereignisse und Erinnerungen anderer Entitäten außer dem Systembenutzer zu verwalten.

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

Design der Kalenderereignis- und Erinnerungsdatenbank

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, Blog-Datenbank in MySQL, Quiz-Datenbank in MySQL, Datenbank für Umfragen und Umfragen in MySQL, Online-Warenkorb-Datenbank in MySQL und Lernen Sie grundlegende SQL-Abfragen in MySQL.

Kalenderdatenbank

Der allererste Schritt besteht darin, die Kalenderdatenbank zu erstellen. Es kann mit der unten gezeigten Abfrage erstellt werden.

CREATE SCHEMA `calendar` 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 Ereignisse und Erinnerungen verwalten. Nachfolgend finden Sie die Beschreibung aller Spalten der Benutzertabelle.

ID Die eindeutige ID zur Identifizierung des Benutzers.
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 Die kurze Einführung des Benutzers.
Profil Benutzerdetails.

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

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

Ereignistabelle

In diesem Abschnitt entwerfen wir die Ereignistabelle um die Benutzerereignisse und die von der Anwendung ausgelösten Ereignisse zu speichern. Unten erwähnt ist die Beschreibung aller Spalten der Ereignistabelle.

ID Die eindeutige ID zur Identifizierung des Ereignisses.
Benutzer-ID Die Benutzer-ID zur Identifizierung des entsprechenden Benutzers.
Quellen-ID Die Quell-ID zur Identifizierung der entsprechenden Entität.
Quelltyp Der Quelltyp, um die entsprechende Entität von anderen Entitäten zu unterscheiden.
Titel Der Veranstaltungstitel.
Beschreibung Die Ereignisbeschreibung, um die wichtigsten Höhepunkte des Ereignisses zu speichern.
Typ Der Typ zur Unterscheidung zwischen den verschiedenen Ereignistypen.
URL Die URL, um den Benutzer zu einem bestimmten Link umzuleiten, der mit dem Ereignis verknüpft ist.
Aktiv Flag, um zu identifizieren, ob das Ereignis aktiv ist und im Kalender angezeigt werden kann.
System Flag, um zu identifizieren, ob das Ereignis von der Anwendung generiert wird. Die Bewerbungsereignisse können immer im Kalender angezeigt werden.
Erinnerungsanzahl Die maximale Anzahl an Erinnerungen, die für das Ereignis ausgelöst werden können.
Erinnerungsintervall Das Erinnerungsintervall.
Erinnerungseinheit Die Erinnerungseinheit zur Angabe des Erinnerungsintervalls in Minuten, Stunden oder Tagen.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der das Ereignis erstellt wurde.
Aktualisiert um Datum und Uhrzeit der Aktualisierung des Ereignisses werden gespeichert.
Geplant um Datum und Uhrzeit werden im Kalender gespeichert.
Ausgelöst bei Es speichert das Datum und die Uhrzeit, zu der das Ereignis ausgelöst wurde.
Inhalt Die Spalte, die zum Speichern des Ereignisinhalts verwendet wird.

Es verwendet die Spalte Aktiv um festzustellen, ob das nutzergenerierte Ereignis im Kalender angezeigt werden kann. Das System Flag kann verwendet werden, um die von der Anwendung generierten Ereignisse zu markieren. Die von der Anwendung generierten Ereignisse können immer im Kalender angezeigt werden. Die Spalten Quell-ID und Quellentyp kann verwendet werden, um die anderen Tabellen oder Entitäten zu identifizieren, die dem Ereignis zugeordnet sind. Die Spalte Ausgelöst bei speichert das Datum und die Uhrzeit, zu der das Ereignis zuletzt ausgelöst wurde. Die Ereignistabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

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

Ereignisvorlagentabelle

In diesem Abschnitt entwerfen wir die Ereignisvorlagentabelle verwendet, um den Ereignisinhalt zu generieren. Die Anwendung kann ferner das geeignete Vorlagensystem verwenden, um die Vorlage zu parsen, um den Ereignisinhalt zu erzeugen. Nachfolgend finden Sie die Beschreibung aller Spalten der Ereignisvorlagentabelle.

ID Die eindeutige ID zur Identifizierung der Ereignisvorlage.
Titel Der Vorlagentitel.
Beschreibung Die Vorlagenbeschreibung.
Typ Der Typ zur Klassifizierung der Vorlagen.
Quelltyp Der Quelltyp, um die Vorlagen nach dem Quelltyp zu klassifizieren.
Erstellt am Er speichert Datum und Uhrzeit der Erstellung der Vorlage.
Aktualisiert um Datum und Uhrzeit der Aktualisierung der Vorlage werden gespeichert.
Inhalt Die Spalte zum Speichern des Vorlageninhalts.

Die Ereignisvorlagentabelle mit den entsprechenden Einschränkungen ist unten dargestellt.

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

Erinnerungstabelle

Wir brauchen auch eine Tabelle, um die Erinnerungen zu speichern, die durch aktive oder Systemereignisse ausgelöst werden. Dieser Abschnitt enthält die Tabelle und Spalten, die zum Verwalten der Erinnerungen erforderlich sind. Unten erwähnt ist die Beschreibung aller Spalten der Erinnerungstabelle.

ID Die eindeutige ID zur Identifizierung der Erinnerung.
Ereignis-ID Die Ereignis-ID zur Identifizierung des mit der Erinnerung verknüpften Ereignisses.
Benutzer-ID Die Benutzer-ID zur Identifizierung des mit der Erinnerung verknüpften Benutzers.
Lesen Das Flag, um die Erinnerung als gelesen/ungelesen zu markieren.
Papierkorb Das Flag, um die Erinnerung als Papierkorb zu markieren.
Erstellt am Datum und Uhrzeit der Erstellung der Erinnerung werden gespeichert.
Aktualisiert um Datum und Uhrzeit der Aktualisierung der Erinnerung werden gespeichert.
Inhalt Die Erinnerungsnachricht.

Die Erinnerungstabelle mit den entsprechenden Einschränkungen ist wie unten gezeigt.

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;

Verbesserungen

Wir können auch Gruppenereignisse mit demselben Datenbankschema verwalten. Dies kann durch Hinzufügen des Gruppen-Flags zur Ereignistabelle erfolgen, und es ist eine neue Tabelle erforderlich, um die Teilnehmer des Gruppenereignisses zu verwalten.

Zusammenfassung

In diesem Tutorial haben wir das Datenbankdesign eines Kalendersystems zum Speichern von Benutzerereignissen und Erinnerungen besprochen. Es stellte auch das Datenbankdesign bereit, um die Benutzerereignisse zu verwalten, die von den Systemen oder Anwendungen ausgelöst wurden.

Sie können Ihre Kommentare einreichen, um an der Diskussion teilzunehmen. Sie könnten auch daran interessiert sein, die Datenbank der Anwendungen Blog und Umfrage &Umfrage zu entwerfen. Das vollständige Datenbankschema ist auch auf GitHub verfügbar.