Mysql
 sql >> Database >  >> RDS >> Mysql

Guida alla progettazione di database per le notifiche in MySQL

Questo tutorial fornisce i passaggi completi per progettare uno schema di database del sistema di notifica per gestire le notifiche degli utenti. Può essere ulteriormente migliorato e utilizzato per gestire le notifiche di altre entità oltre all'utente del sistema.

Il diagramma della relazione tra entità o il design del database visivo è mostrato di seguito.

Database di gestione delle notifiche

Puoi anche visitare i tutorial popolari tra cui Come installare MySQL 8 su Ubuntu 20.04 LTS, Come installare MySQL 8 su Windows, Come installare MySQL Workbench su Ubuntu, Come installare MySQL 8 con Workbench su Windows 10, Database RBAC in MySql, Database del blog in MySql, database dei quiz in MySQL, database di sondaggi e sondaggi in MySQL, database del carrello degli acquisti online in MySQL e informazioni sulle query SQL di base in MySQL.

Database delle notifiche

Il primo passo è creare il database delle notifiche. Può essere creato utilizzando la query come mostrato di seguito.

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

Ho usato il set di caratteri utf8mb4 per supportare un'ampia gamma di caratteri.

Tabella utenti

In questa sezione, progetteremo la Tabella utente per memorizzare le informazioni sull'utente. Gli utenti possono gestire le proprie notifiche. Di seguito è riportata la descrizione di tutte le colonne della Tabella Utente.

ID L'ID univoco per identificare l'utente.
Nome Il nome dell'utente.
Secondo nome Il secondo nome dell'utente.
Cognome Il cognome dell'utente.
Cellulare Il numero di cellulare dell'utente. Può essere utilizzato per scopi di accesso e registrazione.
E-mail L'e-mail dell'utente. Può essere utilizzato per scopi di accesso e registrazione.
Hash password L'hash della password generato dall'algoritmo appropriato. Dobbiamo evitare di memorizzare password semplici o crittografate.
Registrato presso Questa colonna può essere utilizzata per calcolare la vita dell'utente con l'applicazione.
Ultimo accesso Può essere utilizzato per identificare l'ultimo accesso dell'utente.
Introduzione La breve introduzione dell'Utente.
Profilo Dettagli utente.

Di seguito è mostrata la tabella utente con i vincoli appropriati.

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

Tabella dei modelli di notifica

In questa sezione, progetteremo la Tabella dei modelli di notifica utilizzato per generare il contenuto della notifica. L'applicazione può inoltre utilizzare il sistema di modelli appropriato per analizzare il modello per generare il contenuto della notifica. Di seguito è riportata la descrizione di tutte le colonne della Tabella dei modelli di notifica.

ID L'ID univoco per identificare il modello di notifica.
Titolo Il titolo del modello.
Descrizione La descrizione del modello.
Tipo Il tipo per classificare i modelli.
Tipo di origine Il tipo di origine per classificare i modelli in base al tipo di origine.
Creato a Memorizza la data e l'ora in cui è stato creato il modello.
Aggiornato a Memorizza la data e l'ora in cui il modello è stato aggiornato.
Contenuto La colonna utilizzata per memorizzare il contenuto del modello.

Di seguito è mostrata la tabella del modello di notifica con i vincoli appropriati.

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

Tabella delle notifiche

In questa sezione, progetteremo la Tabella di notifica per memorizzare le notifiche attivate dall'applicazione. La notifica può essere attivata utilizzando il modello di un tipo e di un tipo di origine specifici. Il tipo e il tipo di origine della notifica saranno gli stessi del modello utilizzato per generare il contenuto della notifica. Di seguito è riportata la descrizione di tutte le colonne della Tabella delle Notifiche.

ID L'ID univoco per identificare la notifica.
ID utente L'ID utente per identificare l'utente associato alla notifica.
ID sorgente L'ID di origine per identificare l'entità associata alla notifica.
Tipo di origine Il tipo di origine per identificare l'entità associata alla notifica. Sarà lo stesso del tipo di origine del modello.
Tipo Il tipo per classificare le notifiche. Sarà lo stesso del tipo di modello.
Leggi Il flag per contrassegnare la notifica come letta/non letta.
Cestino Il flag per contrassegnare la notifica come cestino.
Creato a Memorizza la data e l'ora in cui viene creata la notifica.
Aggiornato a Memorizza la data e l'ora in cui viene aggiornata la notifica.
Contenuto Il contenuto della notifica generato utilizzando il modello corrispondente.

La tabella delle notifiche con i vincoli appropriati è quella mostrata di seguito.

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

Riepilogo

In questo tutorial, abbiamo discusso la progettazione del database di un sistema di notifiche per archiviare gli utenti e gestire le loro notifiche. Include anche la tabella dei modelli di notifica richiesta per generare le notifiche.

Puoi inviare i tuoi commenti per partecipare alla discussione. Potresti anche essere interessato a progettare il database delle applicazioni Blog e Poll &Survey. Lo schema completo del database è disponibile anche su GitHub.