Mysql
 sql >> Base de données >  >> RDS >> Mysql

Guide pour concevoir une base de données pour les notifications dans MySQL

Ce tutoriel fournit les étapes complètes pour concevoir un schéma de base de données du système de notification pour gérer les notifications utilisateur. Il peut être encore amélioré et utilisé pour gérer les notifications d'autres entités en dehors de l'utilisateur du système.

Le diagramme de relation d'entité ou la conception visuelle de la base de données est illustré ci-dessous.

Base de données de gestion des notifications

Vous pouvez également consulter les didacticiels populaires, notamment Comment installer MySQL 8 sur Ubuntu 20.04 LTS, Comment installer MySQL 8 sur Windows, Comment installer MySQL Workbench sur Ubuntu, Comment installer MySQL 8 avec Workbench sur Windows 10, Base de données RBAC dans MySql, Base de données de blogs dans MySql, base de données de quiz dans MySQL, base de données de sondages et d'enquêtes dans MySQL, base de données de paniers d'achat en ligne dans MySQL et apprentissage des requêtes SQL de base dans MySQL.

Base de données des notifications

La toute première étape consiste à créer la base de données de notification. Il peut être créé à l'aide de la requête comme indiqué ci-dessous.

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

J'ai utilisé le jeu de caractères utf8mb4 pour prendre en charge un large éventail de caractères.

Tableau des utilisateurs

Dans cette section, nous allons concevoir la table des utilisateurs pour stocker les informations de l'utilisateur. Les utilisateurs peuvent gérer leurs propres notifications. Vous trouverez ci-dessous la description de toutes les colonnes de la table des utilisateurs.

Identifiant L'identifiant unique pour identifier l'utilisateur.
Prénom Le prénom de l'utilisateur.
Deuxième prénom Le deuxième prénom de l'utilisateur.
Nom de famille Le nom de famille de l'utilisateur.
Mobile Le numéro de portable de l'utilisateur. Il peut être utilisé à des fins de connexion et d'enregistrement.
E-mail L'adresse e-mail de l'utilisateur. Il peut être utilisé à des fins de connexion et d'enregistrement.
Hachage du mot de passe Le hachage du mot de passe généré par l'algorithme approprié. Nous devons éviter de stocker des mots de passe simples ou cryptés.
Enregistré à Cette colonne peut être utilisée pour calculer la durée de vie de l'utilisateur avec l'application.
Dernière connexion Il peut être utilisé pour identifier la dernière connexion de l'utilisateur.
Introduction La brève présentation de l'utilisateur.
Profil Détails de l'utilisateur.

La table utilisateur avec les contraintes appropriées est illustrée ci-dessous.

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

Tableau des modèles de notification

Dans cette section, nous allons concevoir le tableau des modèles de notification utilisé pour générer le contenu de la notification. L'application peut en outre utiliser le système de modèle approprié pour analyser le modèle afin de générer le contenu de notification. Vous trouverez ci-dessous la description de toutes les colonnes du tableau des modèles de notification.

Identifiant L'identifiant unique pour identifier le modèle de notification.
Titre Le titre du modèle.
Description La description du modèle.
Type Le type pour classer les modèles.
Type de source Le type de source pour classer les modèles selon le type de source.
Créé à Il stocke la date et l'heure auxquelles le modèle a été créé.
Mis à jour à Il stocke la date et l'heure auxquelles le modèle a été mis à jour.
Contenu La colonne utilisée pour stocker le contenu du modèle.

Le tableau des modèles de notification avec les contraintes appropriées est illustré ci-dessous.

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

Tableau des notifications

Dans cette section, nous allons concevoir le tableau de notification pour stocker les notifications déclenchées par l'application. La notification peut être déclenchée à l'aide du modèle d'un type et d'un type de source spécifiques. Le type et le type de source de la notification seront les mêmes que ceux du modèle utilisé pour générer le contenu de la notification. Vous trouverez ci-dessous la description de toutes les colonnes du tableau de notification.

Identifiant L'identifiant unique pour identifier la notification.
Identifiant utilisateur L'identifiant de l'utilisateur pour identifier l'utilisateur associé à la notification.
Identifiant source L'identifiant source pour identifier l'entité associée à la notification.
Type de source Le type de source pour identifier l'entité associée à la notification. Ce sera le même que le type de source du modèle.
Type Le type pour classer les notifications. Ce sera le même que le type de modèle.
Lire L'indicateur pour marquer la notification comme lue/non lue.
Corbeille L'indicateur pour marquer la notification comme corbeille.
Créé à Il stocke la date et l'heure auxquelles la notification est créée.
Mis à jour à Il stocke la date et l'heure auxquelles la notification est mise à jour.
Contenu Le contenu de la notification généré à l'aide du modèle correspondant.

La table de notification avec les contraintes appropriées est illustrée ci-dessous.

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

Résumé

Dans ce didacticiel, nous avons discuté de la conception de la base de données d'un système de notifications pour stocker les utilisateurs et gérer leurs notifications. Il comprend également le tableau de modèle de notification requis pour générer les notifications.

Vous pouvez soumettre vos commentaires pour participer à la discussion. Vous pouvez également être intéressé par la conception de la base de données des applications Blog et Poll &Survey. Le schéma complet de la base de données est également disponible sur GitHub.