Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przewodnik po projektowaniu bazy danych dla powiadomień w MySQL

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać MySQLdb z Pythonem i Django w OSX 10.6?

  2. Zrozumienie zestawów znaków i sortowania w MySQL

  3. Kiedy *nie* używać przygotowanych oświadczeń?

  4. Funkcja agregująca w MySQL - lista (jak LITAGG w Oracle)

  5. 4 sposoby na znalezienie zduplikowanych wierszy w MySQL