Den här handledningen innehåller de fullständiga stegen för att utforma ett databasschema för meddelandesystemet för att hantera användarmeddelanden. Den kan förbättras ytterligare och användas för att hantera meddelanden från andra enheter förutom systemanvändaren.
Entity Relationship Diagram eller visuell databasdesign visas nedan.
Notification Management Database
Du kan också besöka de populära handledningarna inklusive Hur man installerar MySQL 8 på Ubuntu 20.04 LTS, Hur man installerar MySQL 8 på Windows, Hur man installerar MySQL Workbench på Ubuntu, Hur man installerar MySQL 8 med Workbench på Windows 10, RBAC Database i MySql, Bloggdatabas i MySQL, Frågesportsdatabas i MySQL, Enkät- och undersökningsdatabas i MySQL, Online Shopping Cart Database i MySQL och Lär dig grundläggande SQL-frågor i MySQL.
Meddelandedatabas
Det allra första steget är att skapa aviseringsdatabasen. Den kan skapas med hjälp av frågan som visas nedan.
CREATE SCHEMA `notification` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Jag har använt teckenuppsättningen utf8mb4 för att stödja ett stort antal tecken.
Användartabell
I det här avsnittet kommer vi att utforma användartabellen för att lagra användarinformation. Användare kan hantera sina egna aviseringar. Nedan nämns beskrivningen av alla kolumner i användartabellen.
Id | Det unika ID:t för att identifiera användaren. |
Förnamn | Användarens förnamn. |
Mellannamn | Användarens mellannamn. |
Efternamn | Användarens efternamn. |
Mobil | Användarens mobilnummer. Den kan användas för inloggning och registreringsändamål. |
E-post | Användarens e-postadress. Den kan användas för inloggning och registreringsändamål. |
Lösenordshash | Lösenords-hash som genereras av lämplig algoritm. Vi måste undvika att lagra vanliga eller krypterade lösenord. |
Registrerad på | Denna kolumn kan användas för att beräkna användarens livslängd med programmet. |
Senaste inloggning | Den kan användas för att identifiera användarens senaste inloggning. |
Intro | Den korta introduktionen av användaren. |
Profil | Användarinformation. |
Användartabellen med lämpliga begränsningar visas nedan.
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) );
Tabell för meddelandemall
I det här avsnittet kommer vi att utforma tabellen för meddelandemall används för att generera meddelandeinnehållet. Applikationen kan vidare använda lämpligt mallsystem för att analysera mallen för att generera meddelandeinnehållet. Nedan nämns beskrivningen av alla kolumner i tabellen för meddelandemall.
Id | Det unika ID:t för att identifiera meddelandemallen. |
Titel | Malltiteln. |
Beskrivning | Mallbeskrivningen. |
Typ | Typen för att klassificera mallarna. |
Källtyp | Källtypen för att klassificera mallarna enligt källtypen. |
Skapat vid | Den lagrar datum och tid då mallen skapades. |
Uppdaterad kl. | Den lagrar datum och tid då mallen uppdaterades. |
Innehåll | Kolumnen som används för att lagra mallens innehåll. |
Tabellen för meddelandemall med lämpliga begränsningar visas nedan.
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`) );
Meddelandetabell
I det här avsnittet kommer vi att utforma aviseringstabellen för att lagra meddelanden som utlösts av applikationen. Meddelandet kan utlösas med hjälp av mallen för en specifik typ och källtyp. Typen och källtypen för meddelandet kommer att vara samma som mallen som används för att generera meddelandeinnehållet. Nedan nämns beskrivningen av alla kolumner i meddelandetabellen.
Id | Det unika ID:t för att identifiera meddelandet. |
Användar-ID | Användar-ID för att identifiera användaren som är kopplad till meddelandet. |
Käll-ID | Käll-id för att identifiera den enhet som är kopplad till meddelandet. |
Källtyp | Källtypen för att identifiera den enhet som är kopplad till meddelandet. Det kommer att vara samma som mallens källtyp. |
Typ | Typen för att klassificera aviseringarna. Det kommer att vara samma som malltypen. |
Läs | Flaggan för att markera meddelandet som läst/oläst. |
papperskorgen | Flaggan för att markera meddelandet som papperskorgen. |
Skapat vid | Den lagrar datum och tid då meddelandet skapas. |
Uppdaterad kl. | Den lagrar datum och tid då meddelandet uppdateras. |
Innehåll | Meddelandeinnehållet som genereras med hjälp av motsvarande mall. |
Meddelandetabellen med lämpliga begränsningar visas nedan.
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);
Sammanfattning
I den här handledningen har vi diskuterat databasdesignen för ett meddelandesystem för att lagra användarna och hantera deras meddelanden. Den innehåller också den meddelandemalltabell som krävs för att generera aviseringarna.
Du kan skicka in dina kommentarer för att delta i diskussionen. Du kanske också är intresserad av att designa databasen med applikationerna Blog och Poll &Survey. Det fullständiga databasschemat finns också tillgängligt på GitHub.