sql >> Database >  >> RDS >> Mysql

Gids voor het ontwerpen van een database voor meldingen in MySQL

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


  1. Booleaanse parameter doorgeven aan Oracle-procedure C#

  2. Oracle Text werkt niet met NVARCHAR2. Wat is er nog meer niet beschikbaar?

  3. MySQL VARCHAR-lengtes en UTF-8

  4. Voorbeeld Oracle-functie (retournummer)