sql >> Base de Datos >  >> RDS >> Mysql

Guía para diseñar una base de datos para notificaciones en MySQL

Este tutorial proporciona los pasos completos para diseñar un esquema de base de datos del Sistema de notificación para administrar las notificaciones de los usuarios. Se puede mejorar aún más y utilizar para administrar las notificaciones de otras entidades además del usuario del sistema.

El Diagrama de Relación de Entidades o el diseño de la base de datos visual se muestra a continuación.

Base de datos de gestión de notificaciones

También puede visitar los tutoriales populares que incluyen Cómo instalar MySQL 8 en Ubuntu 20.04 LTS, Cómo instalar MySQL 8 en Windows, Cómo instalar MySQL Workbench en Ubuntu, Cómo instalar MySQL 8 con Workbench en Windows 10, Base de datos RBAC en MySql, Blog Database en MySql, Quiz Database en MySQL, Poll &Survey Database en MySQL, Online Shopping Cart Database en MySQL y Learn Basic SQL Queries In MySQL.

Base de datos de notificaciones

El primer paso es crear la base de datos de notificación. Se puede crear usando la consulta como se muestra a continuación.

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

He usado el conjunto de caracteres utf8mb4 para admitir una amplia gama de caracteres.

Tabla de usuarios

En esta sección, diseñaremos la Tabla de usuarios para almacenar información del usuario. Los usuarios pueden gestionar sus propias notificaciones. A continuación se menciona la descripción de todas las columnas de la tabla de usuarios.

Id La identificación única para identificar al usuario.
Nombre El nombre del usuario.
Segundo Nombre El segundo nombre del usuario.
Apellido El apellido del usuario.
Móvil El número de móvil del usuario. Se puede utilizar con fines de inicio de sesión y registro.
Correo electrónico El correo electrónico del usuario. Se puede utilizar con fines de inicio de sesión y registro.
Hash de contraseña El hash de contraseña generado por el algoritmo apropiado. Debemos evitar almacenar contraseñas simples o encriptadas.
Registrado en Esta columna se puede utilizar para calcular la vida del usuario con la aplicación.
Último inicio de sesión Se puede utilizar para identificar el último inicio de sesión del usuario.
Introducción La breve introducción del Usuario.
Perfil Detalles del usuario.

La tabla de usuarios con las restricciones adecuadas se muestra a continuación.

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

Tabla de plantillas de notificación

En esta sección, diseñaremos la Tabla de plantillas de notificación utilizado para generar el contenido de la notificación. La aplicación puede utilizar además el sistema de plantilla apropiado para analizar la plantilla para generar el contenido de la notificación. A continuación se menciona la descripción de todas las columnas de la tabla de plantillas de notificación.

Id La identificación única para identificar la plantilla de notificación.
Título El título de la plantilla.
Descripción La descripción de la plantilla.
Tipo El tipo para clasificar las plantillas.
Tipo de fuente El tipo de fuente para clasificar las plantillas según el tipo de fuente.
Creado en Almacena la fecha y hora en que se creó la plantilla.
Actualizado en Almacena la fecha y hora en que se actualizó la plantilla.
Contenido La columna utilizada para almacenar el contenido de la plantilla.

A continuación se muestra la tabla de plantillas de notificación con las restricciones correspondientes.

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

Tabla de notificaciones

En esta sección, diseñaremos la Tabla de notificaciones para almacenar las notificaciones activadas por la aplicación. La notificación se puede activar utilizando la plantilla de un tipo específico y un tipo de fuente. El tipo y el tipo de fuente de la notificación serán los mismos que los de la plantilla utilizada para generar el contenido de la notificación. A continuación se menciona la descripción de todas las columnas de la tabla de notificaciones.

Id La identificación única para identificar la notificación.
ID de usuario El ID de usuario para identificar al usuario asociado con la notificación.
Id. de la fuente La identificación de la fuente para identificar la entidad asociada con la notificación.
Tipo de fuente El tipo de fuente para identificar la entidad asociada con la notificación. Será el mismo que el tipo de fuente de la plantilla.
Tipo El tipo para clasificar las notificaciones. Será el mismo que el tipo de plantilla.
Leer La bandera para marcar la notificación como leída/no leída.
Papelera La bandera para marcar la notificación como papelera.
Creado en Almacena la fecha y hora en que se crea la notificación.
Actualizado en Almacena la fecha y hora en que se actualiza la notificación.
Contenido El contenido de la notificación generado utilizando la plantilla correspondiente.

La tabla de notificación con las restricciones apropiadas se muestra a continuación.

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

Resumen

En este tutorial, hemos discutido el diseño de la base de datos de un Sistema de Notificaciones para almacenar a los usuarios y administrar sus notificaciones. También incluye la tabla de plantillas de notificación necesaria para generar las notificaciones.

Puede enviar sus comentarios para unirse a la discusión. También te puede interesar diseñar la base de datos de las aplicaciones Blog y Poll &Survey. El esquema completo de la base de datos también está disponible en GitHub.