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. |
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.