Deze zelfstudie biedt de volledige stappen voor het ontwerpen van een databaseschema van het meldingssysteem om de gebruikersmeldingen te beheren. Het kan verder worden verbeterd en gebruikt om de meldingen van andere entiteiten dan de systeemgebruiker te beheren.
Het entiteitsrelatiediagram of visueel databaseontwerp wordt hieronder weergegeven.
Meldingsbeheerdatabase
U kunt ook de populaire tutorials bezoeken, waaronder MySQL 8 installeren op Ubuntu 20.04 LTS, MySQL 8 installeren op Windows, MySQL Workbench installeren op Ubuntu, MySQL 8 installeren met Workbench op Windows 10, RBAC Database in MySql, Blogdatabase in MySql, quizdatabase in MySQL, enquête- en enquêtedatabase in MySQL, online winkelwagendatabase in MySQL en leer elementaire SQL-query's in MySQL.
Meldingsdatabase
De allereerste stap is het maken van de meldingsdatabase. Het kan worden gemaakt met behulp van de onderstaande query.
CREATE SCHEMA `notification` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Ik heb de tekenset utf8mb4 . gebruikt om een breed scala aan karakters te ondersteunen.
Gebruikerstabel
In deze sectie zullen we de Gebruikerstabel . ontwerpen om gebruikersinformatie op te slaan. Gebruikers kunnen hun eigen meldingen beheren. Hieronder staat de beschrijving van alle kolommen van de gebruikerstabel.
Id | Het unieke ID om de gebruiker te identificeren. |
Voornaam | De voornaam van de gebruiker. |
Middelste naam | De middelste naam van de gebruiker. |
Achternaam | De achternaam van de gebruiker. |
Mobiel | Het mobiele nummer van de gebruiker. Het kan worden gebruikt voor aanmeldings- en registratiedoeleinden. |
Het e-mailadres van de gebruiker. Het kan worden gebruikt voor aanmeldings- en registratiedoeleinden. | |
Wachtwoordhash | De wachtwoord-hash gegenereerd door het juiste algoritme. We moeten vermijden om gewone of versleutelde wachtwoorden op te slaan. |
Geregistreerd bij | Deze kolom kan worden gebruikt om de levensduur van de gebruiker met de applicatie te berekenen. |
Laatste aanmelding | Het kan worden gebruikt om de laatste login van de gebruiker te identificeren. |
Inleiding | De korte introductie van de gebruiker. |
Profiel | Gebruikersgegevens. |
De gebruikerstabel met de juiste beperkingen wordt hieronder weergegeven.
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) );
Tabel met meldingssjabloon
In deze sectie zullen we de Meldingssjabloontabel . ontwerpen gebruikt om de inhoud van de melding te genereren. De toepassing kan verder het juiste sjabloonsysteem gebruiken om de sjabloon te ontleden om de inhoud van de melding te genereren. Hieronder vindt u de beschrijving van alle kolommen van de meldingssjabloontabel.
Id | De unieke id om de meldingssjabloon te identificeren. |
Titel | De sjabloontitel. |
Beschrijving | De sjabloonbeschrijving. |
Type | Het type om de sjablonen te classificeren. |
Brontype | Het brontype om de sjablonen te classificeren volgens het brontype. |
Gemaakt op | Het slaat de datum en tijd op waarop de sjabloon is gemaakt. |
Bijgewerkt om | Het slaat de datum en tijd op waarop de sjabloon is bijgewerkt. |
Inhoud | De kolom die wordt gebruikt om de sjablooninhoud op te slaan. |
De meldingssjabloontabel met de juiste beperkingen wordt hieronder weergegeven.
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`) );
Meldingstabel
In deze sectie zullen we de Meldingstabel . ontwerpen om de meldingen op te slaan die door de toepassing worden geactiveerd. De melding kan worden geactiveerd met behulp van de sjabloon van een specifiek type en brontype. Het type en het brontype van de melding zijn hetzelfde als die van de sjabloon die wordt gebruikt om de inhoud van de melding te genereren. Hieronder vindt u de beschrijving van alle kolommen van de meldingstabel.
Id | Het unieke ID om de melding te identificeren. |
Gebruikers-ID | Het gebruikers-ID om de gebruiker te identificeren die aan de melding is gekoppeld. |
Bron-ID | De bron-ID om de entiteit te identificeren die aan de melding is gekoppeld. |
Brontype | Het brontype om de entiteit te identificeren die aan de melding is gekoppeld. Het zal hetzelfde zijn als het brontype van de sjabloon. |
Type | Het type om de meldingen te classificeren. Het zal hetzelfde zijn als het sjabloontype. |
Lees | De vlag om de melding te markeren als gelezen/ongelezen. |
Prullenbak | De vlag om de melding als prullenbak te markeren. |
Gemaakt op | Het slaat de datum en tijd op waarop de melding is gemaakt. |
Bijgewerkt om | Het slaat de datum en tijd op waarop de melding wordt bijgewerkt. |
Inhoud | De inhoud van de melding gegenereerd met behulp van de bijbehorende sjabloon. |
De meldingstabel met de juiste beperkingen is zoals hieronder weergegeven.
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);
Samenvatting
In deze zelfstudie hebben we het databaseontwerp van een meldingssysteem besproken om de gebruikers op te slaan en hun meldingen te beheren. Het bevat ook de meldingssjabloontabel die nodig is om de meldingen te genereren.
U kunt uw opmerkingen indienen om deel te nemen aan de discussie. Mogelijk bent u ook geïnteresseerd in het ontwerpen van de database van de Blog- en Poll &Survey-applicaties. Het volledige databaseschema is ook beschikbaar op GitHub.