Този урок предоставя пълните стъпки за проектиране на схема на база данни на системата за уведомяване за управление на потребителските известия. Може да бъде допълнително подобрен и използван за управление на известията на други субекти, освен потребителя на системата.
Диаграмата на взаимоотношенията на обектите или визуалният дизайн на базата данни е показан по-долу.
База данни за управление на уведомления
Можете също да посетите популярните уроци, включително Как да инсталирате MySQL 8 на Ubuntu 20.04 LTS, Как да инсталирате MySQL 8 на Windows, Как да инсталирате MySQL Workbench на Ubuntu, Как да инсталирате MySQL 8 с Workbench на Windows 10, RBAC база данни в MySql, База данни за блогове в MySql, База данни за тестове в MySQL, База данни за анкети и анкети в MySQL, База данни за онлайн пазарска кошница в MySQL и Научете основни SQL заявки в MySQL.
База данни за уведомления
Първата стъпка е да създадете базата данни за уведомления. Може да се създаде с помощта на заявката, както е показано по-долу.
CREATE SCHEMA `notification` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Използвал съм набора от знаци utf8mb4 за поддръжка на широк спектър от знаци.
Таблица с потребители
В този раздел ще проектираме Таблица на потребителите за съхраняване на потребителска информация. Потребителите могат да управляват свои собствени известия. По-долу е посочено описанието на всички колони на потребителската таблица.
Id | Уникалният идентификатор за идентифициране на потребителя. |
Име | Първото име на потребителя. |
Биринно име | Биринното име на потребителя. |
Фамилия | Фамилията на потребителя. |
Мобилни | Мобилният номер на потребителя. Може да се използва за влизане и регистрация. |
Имейл | Имейлът на потребителя. Може да се използва за влизане и регистрация. |
Хеш на парола | Хешът на паролата, генериран от подходящия алгоритъм. Трябва да избягваме съхраняването на обикновени или криптирани пароли. |
Регистриран в | Тази колона може да се използва за изчисляване на живота на потребителя с приложението. |
Последно влизане | Може да се използва за идентифициране на последното влизане на потребителя. |
Въведение | Краткото представяне на потребителя. |
Профил | Подробности за потребителя. |
Потребителската таблица със съответните ограничения е показана по-долу.
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) );
Таблица с шаблони за известия
В този раздел ще проектираме Таблица с шаблони за известия използвани за генериране на съдържанието на известията. Приложението може допълнително да използва подходящата шаблонна система, за да анализира шаблона, за да генерира съдържанието на известието. По-долу е посочено описанието на всички колони на таблицата с шаблони за уведомяване.
Id | Уникалният идентификатор за идентифициране на шаблона за уведомяване. |
Заглавие | Заглавието на шаблона. |
Описание | Описанието на шаблона. |
Тип | Типът за класифициране на шаблоните. |
Тип източник | Типът на източника за класифициране на шаблоните според типа източник. |
Създаден в | Той съхранява датата и часа, в които е създаден шаблонът. |
Актуализирано в | Той съхранява датата и часа, в които шаблонът е бил актуализиран. |
Съдържание | Колоната, използвана за съхраняване на съдържанието на шаблона. |
Таблицата с шаблони за уведомяване със съответните ограничения е показана по-долу.
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`) );
Таблица за известия
В този раздел ще проектираме Таблица за известия за съхраняване на известията, задействани от приложението. Уведомлението може да се задейства с помощта на шаблон от конкретен тип и тип източник. Типът и типът източник на известието ще бъдат същите като тези на шаблона, използван за генериране на съдържанието на известието. По-долу е посочено описанието на всички колони на Таблицата за уведомяване.
Id | Уникалният идентификатор за идентифициране на известието. |
Потребителски идентификатор | Потребителският идентификатор за идентифициране на потребителя, свързан с известието. |
Идентификатор на източника | Идентификаторът на източника за идентифициране на обекта, свързан с известието. |
Тип източник | Типът източник за идентифициране на обекта, свързан с известието. Той ще бъде същият като типа източник на шаблона. |
Тип | Типът за класифициране на известията. Той ще бъде същият като типа на шаблона. |
Прочетете | Флагът за маркиране на известието като прочетено/непрочетено. |
Кошче | Флагът за маркиране на известието като кошче. |
Създаден в | Той съхранява датата и часа, в които е създадено известието. |
Актуализирано в | Той съхранява датата и часа, в които известието се актуализира. |
Съдържание | Съдържанието за уведомяване, генерирано с помощта на съответния шаблон. |
Таблицата за уведомяване със съответните ограничения е както е показано по-долу.
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);
Резюме
В този урок обсъдихме дизайна на база данни на система за известия за съхраняване на потребителите и управление на техните известия. Той също така включва таблицата с шаблони за известия, необходима за генериране на известията.
Можете да изпратите вашите коментари, за да се присъедините към дискусията. Може да се интересувате и от проектирането на базата данни на приложенията за блогове и анкети и анкети. Пълната схема на базата данни е достъпна и на GitHub.