Hướng dẫn này cung cấp các bước hoàn chỉnh để thiết kế lược đồ cơ sở dữ liệu của Hệ thống thông báo để quản lý các thông báo của người dùng. Nó có thể được nâng cao hơn nữa và được sử dụng để quản lý thông báo của các thực thể khác ngoài người dùng hệ thống.
Sơ đồ mối quan hệ thực thể hoặc thiết kế cơ sở dữ liệu trực quan được hiển thị bên dưới.
Cơ sở dữ liệu quản lý thông báo
Bạn cũng có thể xem các hướng dẫn phổ biến bao gồm Cách cài đặt MySQL 8 trên Ubuntu 20.04 LTS, Cách cài đặt MySQL 8 trên Windows, Cách cài đặt MySQL Workbench trên Ubuntu, Cách cài đặt MySQL 8 với Workbench trên Windows 10, Cơ sở dữ liệu RBAC trong MySql, Cơ sở dữ liệu blog trong MySql, Cơ sở dữ liệu câu hỏi trong MySQL, Cơ sở dữ liệu thăm dò và khảo sát trong MySQL, Cơ sở dữ liệu giỏ hàng trực tuyến trong MySQL và Tìm hiểu các truy vấn SQL cơ bản trong MySQL.
Cơ sở dữ liệu thông báo
Bước đầu tiên là tạo Cơ sở dữ liệu thông báo. Nó có thể được tạo bằng cách sử dụng truy vấn như hình dưới đây.
CREATE SCHEMA `notification` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Tôi đã sử dụng bộ ký tự utf8mb4 để hỗ trợ nhiều loại ký tự.
Bảng Người dùng
Trong phần này, chúng tôi sẽ thiết kế Bảng người dùng để lưu trữ thông tin người dùng. Người dùng có thể quản lý thông báo của riêng họ. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Người dùng.
Id | Id duy nhất để xác định người dùng. |
Tên | Tên của người dùng. |
Tên đệm | Tên đệm của người dùng. |
Họ | Họ của người dùng. |
Di động | Số điện thoại di động của người dùng. Nó có thể được sử dụng cho mục đích đăng nhập và đăng ký. |
Email của người dùng. Nó có thể được sử dụng cho mục đích đăng nhập và đăng ký. | |
Băm mật khẩu | Mật khẩu băm được tạo bởi thuật toán thích hợp. Chúng tôi phải tránh lưu trữ mật khẩu đơn giản hoặc mật khẩu được mã hóa. |
Đã đăng ký tại | Cột này có thể được sử dụng để tính toán tuổi thọ của người dùng với ứng dụng. |
Lần Đăng nhập Cuối cùng | Nó có thể được sử dụng để xác định thông tin đăng nhập cuối cùng của người dùng. |
Giới thiệu | Phần giới thiệu ngắn gọn về Người dùng. |
Hồ sơ | Chi tiết người dùng. |
Bảng Người dùng với các ràng buộc thích hợp được hiển thị bên dưới.
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) );
Bảng mẫu thông báo
Trong phần này, chúng tôi sẽ thiết kế Bảng mẫu thông báo được sử dụng để tạo nội dung thông báo. Ứng dụng có thể sử dụng thêm hệ thống mẫu thích hợp để phân tích mẫu để tạo nội dung thông báo. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Mẫu Thông báo.
Id | Id duy nhất để xác định mẫu thông báo. |
Tiêu đề | Tiêu đề mẫu. |
Mô tả | Mô tả mẫu. |
Loại | Loại để phân loại các mẫu. |
Loại nguồn | Loại nguồn để phân loại các mẫu theo loại nguồn. |
Được tạo lúc | Nó lưu trữ ngày và giờ tạo mẫu. |
Cập nhật lúc | Nó lưu trữ ngày và giờ tại đó mẫu được cập nhật. |
Nội dung | Cột được sử dụng để lưu trữ nội dung mẫu. |
Bảng Mẫu Thông báo với các ràng buộc thích hợp được hiển thị bên dưới.
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`) );
Bảng thông báo
Trong phần này, chúng tôi sẽ thiết kế Bảng thông báo để lưu trữ các thông báo do ứng dụng kích hoạt. Thông báo có thể được kích hoạt bằng cách sử dụng mẫu của một loại nguồn và loại cụ thể. Loại và loại nguồn của thông báo sẽ giống với loại của mẫu được sử dụng để tạo nội dung thông báo. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng thông báo.
Id | Id duy nhất để xác định thông báo. |
Id Người dùng | Id người dùng để xác định người dùng được liên kết với thông báo. |
Id nguồn | Id nguồn để xác định thực thể được liên kết với thông báo. |
Loại nguồn | Loại nguồn để xác định thực thể được liên kết với thông báo. Nó sẽ giống với loại nguồn mẫu. |
Loại | Loại để phân loại thông báo. Nó sẽ giống với kiểu mẫu. |
Đọc | Cờ để đánh dấu thông báo là đã đọc / chưa đọc. |
Thùng rác | Cờ để đánh dấu thông báo là thùng rác. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà thông báo được tạo. |
Cập nhật lúc | Nó lưu trữ ngày và giờ tại đó thông báo được cập nhật. |
Nội dung | Nội dung thông báo được tạo bằng cách sử dụng mẫu tương ứng. |
Bảng Thông báo với các ràng buộc thích hợp được hiển thị bên dưới.
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);
Tóm tắt
Trong hướng dẫn này, chúng tôi đã thảo luận về thiết kế cơ sở dữ liệu của Hệ thống thông báo để lưu trữ người dùng và quản lý thông báo của họ. Nó cũng bao gồm Bảng mẫu thông báo cần thiết để tạo thông báo.
Bạn có thể gửi bình luận của mình để tham gia thảo luận. Bạn cũng có thể quan tâm đến việc thiết kế cơ sở dữ liệu của các ứng dụng Blog và Poll &Survey. Lược đồ cơ sở dữ liệu hoàn chỉnh cũng có sẵn trên GitHub.