Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Guia para projetar banco de dados para notificações no MySQL


Este tutorial fornece as etapas completas para projetar um esquema de banco de dados do Sistema de Notificação para gerenciar as notificações do usuário. Ele pode ser aprimorado e usado para gerenciar as notificações de outras entidades além do usuário do sistema.



O diagrama de relacionamento de entidade ou design de banco de dados visual é mostrado abaixo.



Banco de dados de gerenciamento de notificações



Você também pode visitar os tutoriais populares, incluindo como instalar o MySQL 8 no Ubuntu 20.04 LTS, como instalar o MySQL 8 no Windows, como instalar o MySQL Workbench no Ubuntu, como instalar o MySQL 8 com o Workbench no Windows 10, banco de dados RBAC no MySql, Banco de dados de blog em MySQL, banco de dados de questionário em MySQL, banco de dados de pesquisa e pesquisa em MySQL, banco de dados de carrinho de compras on-line em MySQL e aprenda consultas básicas de SQL em MySQL.


Banco de dados de notificação




O primeiro passo é criar o banco de dados de notificação. Ele pode ser criado usando a consulta conforme mostrado abaixo.


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



Eu usei o conjunto de caracteres utf8mb4 para suportar uma ampla gama de caracteres.


Tabela de usuário




Nesta seção, projetaremos a Tabela do usuário para armazenar informações do usuário. Os usuários podem gerenciar suas próprias notificações. Abaixo está a descrição de todas as colunas da Tabela de Usuários.


ID O ID exclusivo para identificar o usuário.
Nome O primeiro nome do usuário.
Nome do meio O nome do meio do usuário.
Sobrenome O sobrenome do usuário.
Celular O número de celular do usuário. Ele pode ser usado para fins de login e registro.
E-mail O e-mail do usuário. Ele pode ser usado para fins de login e registro.
Hash de senha O hash de senha gerado pelo algoritmo apropriado. Devemos evitar armazenar senhas simples ou criptografadas.
Registrado em Esta coluna pode ser usada para calcular a vida útil do usuário com o aplicativo.
Último login Pode ser usado para identificar o último login do usuário.
Introdução A breve introdução do usuário.
Perfil Detalhes do usuário.



A Tabela de Usuários com as restrições apropriadas é mostrada abaixo.


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


Tabela de modelo de notificação




Nesta seção, projetaremos a Tabela de modelo de notificação usado para gerar o conteúdo da notificação. O aplicativo pode usar ainda o sistema de modelo apropriado para analisar o modelo para gerar o conteúdo da notificação. Abaixo está a descrição de todas as colunas da Tabela de Modelos de Notificação.


ID O ID exclusivo para identificar o modelo de notificação.
Título O título do modelo.
Descrição A descrição do modelo.
Tipo O tipo para classificar os modelos.
Tipo de fonte O tipo de origem para classificar os modelos de acordo com o tipo de origem.
Criado em Ele armazena a data e hora em que o modelo foi criado.
Atualizado em Ele armazena a data e hora em que o modelo foi atualizado.
Conteúdo A coluna usada para armazenar o conteúdo do modelo.



A tabela do modelo de notificação com as restrições apropriadas é mostrada abaixo.


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


Tabela de Notificação




Nesta seção, projetaremos a Tabela de notificação para armazenar as notificações acionadas pelo aplicativo. A notificação pode ser acionada usando o modelo de um tipo específico e tipo de origem. O tipo e o tipo de origem da notificação serão os mesmos do modelo usado para gerar o conteúdo da notificação. Abaixo está a descrição de todas as colunas da Tabela de Notificações.


ID O ID exclusivo para identificar a notificação.
ID de usuário O ID do usuário para identificar o usuário associado à notificação.
ID de origem O código de origem para identificar a entidade associada à notificação.
Tipo de fonte O tipo de origem para identificar a entidade associada à notificação. Será o mesmo que o tipo de origem do modelo.
Tipo O tipo para classificar as notificações. Será o mesmo que o tipo de modelo.
Ler O sinalizador para marcar a notificação como lida/não lida.
Lixeira O sinalizador para marcar a notificação como lixo.
Criado em Ele armazena a data e hora em que a notificação é criada.
Atualizado em Ele armazena a data e hora em que a notificação é atualizada.
Conteúdo O conteúdo de notificação gerado usando o modelo correspondente.



A Tabela de Notificação com as restrições apropriadas é mostrada abaixo.


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


Resumo




Neste tutorial, discutimos o design do banco de dados de um Sistema de Notificações para armazenar os usuários e gerenciar suas notificações. Também inclui a Tabela de Modelos de Notificação necessária para gerar as notificações.



Você pode enviar seus comentários para participar da discussão. Você também pode estar interessado em projetar o banco de dados dos aplicativos Blog e Poll &Survey. O esquema completo do banco de dados também está disponível no GitHub.