sql >> Database teknologi >  >> RDS >> Mysql

Guide til design af database til meddelelser i MySQL

Denne vejledning indeholder de komplette trin til at designe et databaseskema for meddelelsessystemet til at administrere brugermeddelelserne. Det kan forbedres yderligere og bruges til at administrere meddelelser fra andre enheder bortset fra systembrugeren.

Entity Relationship Diagram eller visuelle databasedesign er vist nedenfor.

Notification Management Database

Du kan også besøge de populære tutorials, herunder Sådan installeres MySQL 8 på Ubuntu 20.04 LTS, Sådan installeres MySQL 8 på Windows, Sådan installeres MySQL Workbench på Ubuntu, Sådan installeres MySQL 8 med Workbench på Windows 10, RBAC-database i MySql, Blogdatabase i MySQL, Quiz-database i MySQL, Afstemnings- og undersøgelsesdatabase i MySQL, Online Shopping Cart Database i MySQL, og lær grundlæggende SQL-forespørgsler i MySQL.

Meddelelsesdatabase

Det allerførste trin er at oprette meddelelsesdatabasen. Den kan oprettes ved hjælp af forespørgslen som vist nedenfor.

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

Jeg har brugt tegnsættet utf8mb4 for at understøtte en bred vifte af tegn.

Brugertabel

I dette afsnit vil vi designe Brugertabellen at gemme brugeroplysninger. Brugere kan administrere deres egne notifikationer. Nedenfor nævnt er beskrivelsen af ​​alle kolonnerne i brugertabellen.

Id Det unikke id til at identificere brugeren.
Fornavn Brugerens fornavn.
Mellemnavn Brugerens mellemnavn.
Efternavn Brugerens efternavn.
Mobil Brugerens mobilnummer. Det kan bruges til login og registreringsformål.
E-mail Brugerens e-mail. Det kan bruges til login og registreringsformål.
Password Hash Adgangskodehashen genereret af den passende algoritme. Vi skal undgå at gemme almindelige eller krypterede adgangskoder.
Registreret på Denne kolonne kan bruges til at beregne levetiden for brugeren med applikationen.
Sidste login Det kan bruges til at identificere brugerens sidste login.
Introduktion Den korte introduktion af brugeren.
Profil Brugeroplysninger.

Brugertabellen med de relevante begrænsninger er vist nedenfor.

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 med meddelelsesskabelon

I dette afsnit vil vi designe meddelelsesskabelontabellen bruges til at generere meddelelsesindholdet. Applikationen kan yderligere bruge det relevante skabelonsystem til at parse skabelonen for at generere meddelelsesindholdet. Nedenfor nævnt er beskrivelsen af ​​alle kolonnerne i meddelelsesskabelontabellen.

Id Det unikke id til at identificere meddelelsesskabelonen.
Titel Skabelonens titel.
Beskrivelse Skabelonbeskrivelsen.
Type Typen til at klassificere skabelonerne.
Kildetype Kildetypen til at klassificere skabelonerne i henhold til kildetypen.
Oprettet på Den gemmer datoen og tidspunktet, hvor skabelonen blev oprettet.
Opdateret kl. Den gemmer datoen og klokkeslættet, hvor skabelonen blev opdateret.
Indhold Kolonnen, der bruges til at gemme skabelonindholdet.

Meddelelsesskabelontabellen med de relevante begrænsninger er vist nedenfor.

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

Meddelelsestabel

I dette afsnit vil vi designe meddelelsestabellen for at gemme de meddelelser, der udløses af applikationen. Meddelelsen kan udløses ved hjælp af skabelonen for en bestemt type og kildetype. Underretningens type og kildetype vil være den samme som den skabelon, der bruges til at generere meddelelsesindholdet. Nedenfor nævnt er beskrivelsen af ​​alle kolonnerne i notifikationstabellen.

Id Det unikke id til at identificere meddelelsen.
Bruger-id Bruger-id'et til at identificere den bruger, der er knyttet til meddelelsen.
Kilde-id Kilde-id'et til at identificere den enhed, der er knyttet til meddelelsen.
Kildetype Kildetypen til at identificere den enhed, der er knyttet til meddelelsen. Det vil være det samme som skabelonkildetypen.
Type Typen til at klassificere meddelelserne. Det vil være det samme som skabelontypen.
Læs Flaget til at markere meddelelsen som læst/ulæst.
Papirkurv Flaget til at markere underretningen som papirkurv.
Oprettet på Den gemmer datoen og klokkeslættet, hvor meddelelsen oprettes.
Opdateret kl. Den gemmer datoen og klokkeslættet, hvor meddelelsen opdateres.
Indhold Meddelelsesindholdet, der er genereret ved hjælp af den tilsvarende skabelon.

Meddelelsestabellen med de relevante begrænsninger er som vist nedenfor.

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

Oversigt

I denne tutorial har vi diskuteret databasedesignet af et meddelelsessystem til at gemme brugerne og administrere deres meddelelser. Den inkluderer også den meddelelsesskabelontabell, der kræves for at generere meddelelserne.

Du kan indsende dine kommentarer for at deltage i diskussionen. Du kan også være interesseret i at designe databasen med Blog- og Poll &Survey-applikationerne. Det komplette databaseskema er også tilgængeligt på GitHub.


  1. NextForm v3:Fem muligheder for data- og databasemigrering

  2. Hvordan laver jeg en rækkegenerator i MySQL?

  3. EXP() Eksempler i SQL Server

  4. Retter et ødelagt TOAST-bord