Ten samouczek zawiera wszystkie kroki projektowania schematu bazy danych systemu powiadomień w celu zarządzania powiadomieniami użytkownika. Można go dodatkowo ulepszyć i wykorzystać do zarządzania powiadomieniami innych podmiotów oprócz użytkownika systemu.
Diagram relacji encji lub wizualny projekt bazy danych pokazano poniżej.
Baza danych zarządzania powiadomieniami
Możesz również odwiedzić popularne samouczki, w tym Jak zainstalować MySQL 8 na Ubuntu 20.04 LTS, Jak zainstalować MySQL 8 w systemie Windows, Jak zainstalować MySQL Workbench na Ubuntu, Jak zainstalować MySQL 8 z Workbench na Windows 10, Baza danych RBAC w MySql, Baza danych blogów w MySql, Baza danych quizów w MySQL, Baza ankiet i ankiet w MySQL, Baza danych koszyka zakupów online w MySQL oraz Nauka podstawowych zapytań SQL w MySQL.
Baza danych powiadomień
Pierwszym krokiem jest utworzenie Bazy Danych Powiadomień. Można go utworzyć za pomocą zapytania, jak pokazano poniżej.
CREATE SCHEMA `notification` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Użyłem zestawu znaków utf8mb4 do obsługi szerokiej gamy znaków.
Tabela użytkowników
W tej sekcji zaprojektujemy Tabelę użytkowników do przechowywania informacji o użytkowniku. Użytkownicy mogą zarządzać własnymi powiadomieniami. Poniżej znajduje się opis wszystkich kolumn tabeli użytkowników.
Identyfikator | Unikalny identyfikator do identyfikacji użytkownika. |
Imię | Imię użytkownika. |
Drugie imię | Drugie imię użytkownika. |
Nazwisko | Nazwisko użytkownika. |
Komórka | Numer telefonu komórkowego użytkownika. Może być używany do celów logowania i rejestracji. |
Poczta e-mail | E-mail użytkownika. Może być używany do celów logowania i rejestracji. |
Hash hasła | Skrót hasła wygenerowany przez odpowiedni algorytm. Musimy unikać przechowywania zwykłych lub zaszyfrowanych haseł. |
Zarejestrowano w | Ta kolumna może być użyta do obliczenia życia użytkownika z aplikacją. |
Ostatnie logowanie | Może być używany do identyfikacji ostatniego logowania użytkownika. |
Wprowadzenie | Krótkie wprowadzenie Użytkownika. |
Profil | Szczegóły użytkownika. |
Tabela użytkownika z odpowiednimi ograniczeniami jest pokazana poniżej.
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) );
Tabela szablonów powiadomień
W tej sekcji zaprojektujemy Tabelę szablonów powiadomień wykorzystywane do generowania treści powiadomienia. Aplikacja może dodatkowo użyć odpowiedniego systemu szablonów do przeanalizowania szablonu w celu wygenerowania treści powiadomienia. Poniżej znajduje się opis wszystkich kolumn tabeli szablonów powiadomień.
Identyfikator | Unikalny identyfikator identyfikujący szablon powiadomienia. |
Tytuł | Tytuł szablonu. |
Opis | Opis szablonu. |
Wpisz | Typ do klasyfikacji szablonów. |
Typ źródła | Typ źródła do klasyfikacji szablonów zgodnie z typem źródła. |
Utworzono w | Przechowuje datę i godzinę utworzenia szablonu. |
Aktualizacja o | Przechowuje datę i godzinę aktualizacji szablonu. |
Treść | Kolumna używana do przechowywania treści szablonu. |
Tabela szablonów powiadomień z odpowiednimi ograniczeniami jest pokazana poniżej.
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`) );
Tabela powiadomień
W tej sekcji zaprojektujemy Tabelę powiadomień do przechowywania powiadomień wyzwalanych przez aplikację. Powiadomienie można wyzwolić za pomocą szablonu określonego typu i typu źródła. Typ i typ źródła powiadomienia będzie taki sam jak szablon użyty do wygenerowania treści powiadomienia. Poniżej znajduje się opis wszystkich kolumn tabeli powiadomień.
Identyfikator | Unikalny identyfikator do identyfikacji powiadomienia. |
Identyfikator użytkownika | Identyfikator użytkownika do identyfikacji użytkownika powiązanego z powiadomieniem. |
Identyfikator źródła | Identyfikator źródła do identyfikacji podmiotu powiązanego z powiadomieniem. |
Typ źródła | Typ źródła do identyfikacji jednostki powiązanej z powiadomieniem. Będzie taki sam jak typ źródła szablonu. |
Wpisz | Typ do klasyfikacji powiadomień. Będzie taki sam jak typ szablonu. |
Czytaj | Flaga oznaczająca powiadomienie jako przeczytane/nieprzeczytane. |
Kosz | Flaga oznaczająca powiadomienie jako kosz. |
Utworzono w | Przechowuje datę i godzinę utworzenia powiadomienia. |
Aktualizacja o | Przechowuje datę i godzinę aktualizacji powiadomienia. |
Treść | Treść powiadomienia wygenerowana przy użyciu odpowiedniego szablonu. |
Tabela powiadomień z odpowiednimi ograniczeniami jest pokazana poniżej.
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);
Podsumowanie
W tym samouczku omówiliśmy projekt bazy danych systemu powiadomień do przechowywania użytkowników i zarządzania ich powiadomieniami. Zawiera również tabelę szablonów powiadomień wymaganą do generowania powiadomień.
Możesz przesłać swoje uwagi, aby dołączyć do dyskusji. Możesz być również zainteresowany zaprojektowaniem bazy danych aplikacji Blog oraz Poll &Survey. Pełny schemat bazy danych jest również dostępny na GitHub.