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 bản tin để quản lý người dùng, bản tin, người đăng ký và danh sách gửi thư. Nó có thể được nâng cao hơn nữa và được sử dụng để phát triển một nền tảng tiếp thị dựa trên email nhằm cung cấp các dịch vụ Bản tin. Cùng một cấu trúc cơ sở dữ liệu hoặc lược đồ có thể được sử dụng như một tham chiếu để quản lý các bản tin trực tuyến hoặc để phân phối các bản in ra giấy của các bản tin và tạp chí. Nó cũng có thể được các đại lý tiếp thị kỹ thuật số sử dụng để quản lý khách hàng tiềm năng và các chiến dịch tiếp thị của họ.
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.
Thiết kế cơ sở dữ liệu bản tin
Ghi chú :Cơ sở dữ liệu có thể được nâng cao hơn nữa bằng cách thêm các bảng Kiểm soát Truy cập Dựa trên Vai trò (RBAC). Bảo mật có thể được xử lý bằng cách làm theo Cơ sở dữ liệu RBAC trong MySql. Ngoài ra, nó không bao gồm các bảng cần thiết cho việc thanh toán của khách hàng. Bạn có thể tham khảo Cơ sở dữ liệu giỏ hàng trực tuyến trong MySQL để lấy các bảng cần thiết để quản lý đơn đặt hàng.
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 bản tin
Bước đầu tiên là tạo Cơ sở dữ liệu bản tin. Nó có thể được tạo bằng cách sử dụng truy vấn như hình dưới đây.
TẠO SCHEMA `bản tin` BỘ NHÂN VẬT ĐỊNH MỨC 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. Cùng một bảng có thể được sử dụng để quản lý các loại người dùng khác nhau bao gồm quản trị viên và khách hàng. Nó cũng có thể được sử dụng để liên quan đến những người quản lý bản tin. Người dùng có thể theo dõi các bản tin và danh sách gửi thư 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. |
Quản trị viên | Cờ để xác định xem người dùng có phải là quản trị viên hay không. Không bắt buộc nếu bảng RBAC được tạo bằng cách tuân theo thiết kế cơ sở dữ liệu RBAC. |
Khách hàng | Cờ để xác định liệu người dùng đã đăng ký có thể quản lý các bản tin và người đăng ký hay không. Không bắt buộc nếu bảng RBAC được tạo bằng cách tuân theo thiết kế cơ sở dữ liệu RBAC. |
Đã đă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 về khách hà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 `newsletter`.`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,
` mobile` VARCHAR (15) NULL,
`email` VARCHAR (50) NULL,
`passwordHash` VARCHAR (32) NOT NULL,
` admin` TINYINT (1) NOT NULL DEFAULT 0,
`customer` TINYINT (1) NOT NULL DEFAULT 0,
` registerAt` DATETIME NOT NULL,
`lastLogin` DATETIME NULL DEFAULT NULL,
` intro` TINYTEXT NULL DEFAULT NULL,
`profile` TEXT NULL DEFAULT NULL,
PRIMARY KEY (` id`) ,
CHỈ SỐ DUY NHẤT `uq_mobile` (` di động` ASC),
CHỈ SỐ DUY NHẤT `uq_email` (` email` ASC));
Bảng bản tin
Trong phần này, chúng tôi sẽ thiết kế Bảng bản tin để lưu trữ dữ liệu bản tin. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Bản tin.
Id | Id duy nhất để xác định bản tin. |
Id Người dùng | Id người dùng để xác định quản trị viên hoặc khách hàng. |
Tiêu đề | Tiêu đề bản tin để xác định bản tin. |
Mô tả | Mô tả bản tin. |
Loại | Loại để phân biệt giữa các loại bản tin khác nhau. |
Nhiều | Cờ để đánh dấu Bản tin sẽ được gửi một lần hay nhiều lần. |
Toàn cầu | Cờ để đánh dấu liệu Bản tin có được gửi đến tất cả người đăng ký hay không. |
Trạng thái | Nó có thể được sử dụng để xác định trạng thái. Trạng thái có thể có của bản tin bao gồm Mới, Sẵn sàng, Đã xuất bản. |
Được tạo lúc | Nó lưu trữ ngày và giờ tạo bản tin. |
Cập nhật lúc | Nó lưu trữ ngày và giờ mà bản tin được cập nhật. |
Được xuất bản tại | Nó lưu trữ ngày và giờ mà bản tin được xuất bản. |
Nội dung | Cột được sử dụng để lưu trữ nội dung bản tin nếu nhiều cờ được đặt thành false. |
Nó sử dụng bội số cột để xác định liệu Bản tin dự định chỉ gửi một lần hay nhiều lần. Nội dung Bản tin có thể được lưu trữ trong cột nội dung trong trường hợp chỉ gửi một lần. Trong trường hợp nhiều cờ được đặt thành true, bảng ấn bản phải được sử dụng để lưu trữ nội dung của mỗi ấn bản. Bảng Bản tin với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `newsletter`.`newsletter` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
` title` VARCHAR (75) NOT NULL,
`descritpion` VARCHAR (2048) NULL DEFAULT NULL,
` type` SMALLINT (6) NOT NULL DEFAULT 0,
`multiple` TINYINT (1) NOT NULL DEFAULT 0,
`global` TINYINT (1) NOT NULL DEFAULT 0,
` status` SMALLINT (6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
` updatedAt` DATETIME NULL DEFAULT NULL,
`publishAt` DATETIME NULL DEFAULT NULL,
` content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX` idx_newsletter_user` (`userId` ASC),
CONSTRAINT `fk_newsletter_user`
NGOẠI KHÓA (` userId`)
TÀI LIỆU THAM KHẢO `newsletter`.`user` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
BẬT CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG);
Meta bản tin
Bảng Meta Bản tin có thể được sử dụng để lưu trữ thông tin bổ sung về các bản tin bao gồm URL biểu ngữ bản tin, v.v. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Meta Bản tin.
Id | Id duy nhất để xác định meta bản tin. |
Id Bản tin | Id bản tin để xác định bản tin chính. |
Loại | Loại để phân loại siêu dữ liệu. |
Phím | Chìa khóa xác định meta. |
Nội dung | Cột được sử dụng để lưu trữ siêu dữ liệu bản tin. |
Bảng Meta Bản tin với các ràng buộc thích hợp như được hiển thị bên dưới.
CREATE TABLE `newsletter`.`newsletter_meta` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
` type` VARCHAR (50) NOT NULL,
`key` VARCHAR (160) NOT NULL,
` content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX` idx_meta_newsletter` (`newsletterId` ASC),
CHỈ SỐ DUY NHẤT `uq_pnewsletter_meta` (` newsletterId` ASC, `key` ASC),
CONSTRAINT` fk_meta_newsletter`
FOREIGN KEY (`newsletterId`)
THAM KHẢO` bản tin `.`newsletter` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG)
ENGINE =InnoDB;
Bảng Phiên bản
Trong phần này, chúng tôi sẽ thiết kế Bảng phiên bản để lưu trữ các phiên bản bản tin cần thiết cho các bản tin có nhiều cờ được đặt thành true. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Phiên bản.
Id | Id duy nhất để xác định phiên bản. |
Id Bản tin | Id bản tin để xác định bản tin chính. |
Tiêu đề | Tên ấn bản. |
Mô tả | Mô tả ấn bản. |
Trạng thái | Nó có thể được sử dụng để xác định trạng thái. Trạng thái có thể có của ấn bản bao gồm Mới, Sẵn sàng, Đã xuất bản. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà ấn bản được tạo ra. |
Cập nhật lúc | Nó lưu trữ ngày và giờ tại đó phiên bản được cập nhật. |
Được xuất bản tại | Nó lưu trữ ngày và giờ ấn bản được xuất bản. |
Nội dung | Cột được sử dụng để lưu trữ nội dung ấn bản. |
Bảng Phiên bản với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `newsletter`.`edition` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
` title` VARCHAR (100) NOT NULL,
`description` VARCHAR (2048) NULL DEFAULT NULL,
` status` SMALLINT (6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
` updatedAt` DATETIME NULL DEFAULT NULL,
`publishAt` DATETIME NULL DEFAULT NULL,
` content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX` idx_edition_newsletter` (` newsletterId` ASC),
CONSTRAINT `fk_edition_newsletter`
NGOẠI KHÓA (` newsletterId`)
TÀI LIỆU THAM KHẢO `newsletter`.`newsletter` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHÔNG CÓ HÀNH ĐỘNG CẬP NHẬT);
Bảng người đăng ký
Trong phần này, chúng tôi sẽ thiết kế Người đăng ký Bảng để lưu trữ các thông tin chi tiết về người đăng ký. Bảng người đăng ký có thể được sử dụng để kích hoạt trực tiếp các bản tin toàn cầu. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Người đăng ký.
Id | Id duy nhất để xác định người đăng ký. |
Id khách hàng | Id khách hàng để xác định khách hàng. Đây là trường tùy chọn và chỉ bắt buộc nếu ứng dụng được thiết kế để quản lý khách hàng và bản tin của họ. Khách hàng có thể quản lý người đăng ký của riêng mình. |
Tên | Tên của người đăng ký. |
Tên đệm | Tên đệm của người đăng ký. |
Họ | Họ của người đăng ký. |
Email của người đăng ký. | |
Di động | Số điện thoại di động của người đăng ký. |
Điện thoại | Số điện thoại của người đăng ký. |
Đang hoạt động | Cờ để xác định xem người đăng ký có đang hoạt động hay không. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà người đăng ký được đăng ký. |
Cập nhật lúc | Nó lưu trữ ngày và giờ mà người đăng ký được cập nhật. |
Bảng Người đăng ký với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `newsletter`. subscriber` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`customerId` BIGINT DEFAULT NULL,
` firstName` VARCHAR (100) NOT NULL,
`middleName` VARCHAR (100) NULL DEFAULT NULL,
` lastName` VARCHAR (100) NULL DEFAULT NULL,
`email` VARCHAR (100) NOT NULL,
` mobile `VARCHAR (50) NULL DEFAULT NULL,
` phone` VARCHAR (50) NULL DEFAULT NULL,
`active` TINYINT (1) NOT NULL DEFAULT 1,
` createdAt` DATETIME NOT NULL ,
`cập nhật /> TỪ KHÓA NGOẠI LỆ (`customerId`)
TÀI LIỆU THAM KHẢO` newsletter`. /> BẢNG ALTER `newsletter`.` Người đăng ký` THÊM DUY NHẤT `uq_sub_cust_email` (` customerId`, `email`);
Bảng địa chỉ
Trong phần này, chúng tôi sẽ thiết kế Bảng địa chỉ để lưu trữ khách hàng và địa chỉ thuê bao. Địa chỉ có thể được sử dụng để gửi Bản tin. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Địa chỉ.
Id | Id duy nhất để xác định địa chỉ. |
Id Người dùng | Id người dùng để xác định người dùng được liên kết với địa chỉ. |
Id Người đăng ký | Id người đăng ký để xác định người đăng ký được liên kết với địa chỉ. |
Tên | Tên đầu tiên được sử dụng cho địa chỉ. Nó có thể được lấy từ Người dùng hoặc Người đăng ký tương ứng. |
Tên đệm | Tên đệm được sử dụng cho địa chỉ. Nó có thể được lấy từ Người dùng hoặc Người đăng ký tương ứng. |
Họ | Họ được sử dụng cho địa chỉ. Nó có thể được lấy từ Người dùng hoặc Người đăng ký tương ứng. |
Di động | Điện thoại di động được sử dụng cho địa chỉ. Nó có thể được lấy từ Người dùng hoặc Người đăng ký tương ứng. |
Email được sử dụng cho địa chỉ. Nó có thể được lấy từ Người dùng hoặc Người đăng ký tương ứng. | |
Dòng 1 | Dòng đầu tiên cho địa chỉ cửa hàng. |
Dòng 2 | Dòng thứ hai cho địa chỉ cửa hàng. |
Thành phố | Thành phố của địa chỉ. |
Tỉnh | Tỉnh của địa chỉ. |
Quốc gia | Quốc gia của địa chỉ. |
Mã vùng | Mã vùng để xác định khu vực giao hàng. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà địa chỉ được tạo. |
Cập nhật lúc | Nó lưu trữ ngày và giờ địa chỉ được cập nhật. |
Bảng Địa chỉ với các ràng buộc thích hợp như được hiển thị bên dưới.
CREATE TABLE `newsletter`. br /> `firstName` VARCHAR (50) NULL DEFAULT NULL,
` middleName` VARCHAR (50) NULL DEFAULT NULL,
`lastName` VARCHAR (50) NULL DEFAULT NULL,
` mobile `VARCHAR (15) NULL,
` email` VARCHAR (50) NULL,
`line1` VARCHAR (50) NULL DEFAULT NULL,
` line2` VARCHAR (50) NULL DEFAULT NULL,
`city` VARCHAR (50) NULL DEFAULT NULL,
` tỉnh` VARCHAR (50) NULL DEFAULT NULL,
`country` VARCHAR (50) NULL DEFAULT NULL,
` areaCode` VARCHAR (50) NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
` updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_address_user` (` userId` ASC),
CONSTRAINT `fk_address_user`
FOREIGN KEY (` userId`)
TÀI LIỆU THAM KHẢO `newsletter`.`user` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG);
ALTER TABLE `newsletter`.`address`
ADD INDEX` idx_address_subscriber` (`subscriberId` ASC);
ALTER TABLE` newsletter`.`address`
THÊM CHỨNG CHỈ `fk_address_subscriber`
NGOẠI KHÓA (` subscriberId`)
TÀI LIỆU THAM KHẢO `newsletter`.` subscriber` (`id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
BẬT CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG;
Bảng danh sách gửi thư
Trong phần này, chúng tôi sẽ thiết kế Bảng danh sách gửi thư để lưu trữ danh sách gửi thư của các bản tin cụ thể. Danh sách gửi thư có thể được sử dụng để kích hoạt các bản tin không toàn cầu. Bảng người đăng ký có thể được sử dụng để kích hoạt các bản tin toàn cầu. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng danh sách gửi thư.
Id | Id duy nhất để xác định đăng ký bản tin. |
Id Bản tin | Id bản tin để xác định bản tin được liên kết với đăng ký bản tin. |
Id Người đăng ký | Id người đăng ký để xác định người đăng ký được liên kết với đăng ký bản tin. |
Đang hoạt động | Cờ để xác định xem đăng ký bản tin có đang hoạt động hay không. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà đăng ký được tạo. |
Cập nhật lúc | Nó lưu trữ ngày và giờ mà đăng ký được cập nhật. |
Bảng danh sách gửi thư với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `newsletter`.`mailing_list` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
` subscriberId` BIGINT NOT NULL,
`active` TINYINT (1) NOT NULL DEFAULT 1,
` createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (` id`),
INDEX `idx_mlist_newsletter` (` newsletterId` ASC),
CONSTRAINT `fk_mlist_newsletter`
FOREIGN KEY (` newsletterId`)
TÀI LIỆU THAM KHẢO `newsletter`.`newsletter` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG);
ALTER TABLE `newsletter`.`mailing_list`
ADD INDEX` idx_mlist_subscriber` (`subscriberId` ASC);
ALTER TABLE `newsletter`.
KHI XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG;
Bảng kích hoạt bản tin
Chúng tôi cũng cần một bảng để theo dõi việc cung cấp Bản tin. Phần này cung cấp bảng và các cột cần thiết để theo dõi việc gửi bản tin đến người đăng ký. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng kích hoạt bản tin.
Id | Id duy nhất để xác định trình kích hoạt bản tin. |
Id Bản tin | Id bản tin để xác định bản tin được liên kết với trình kích hoạt. |
Id Ấn bản | Id ấn bản để xác định ấn bản bản tin được liên kết với trình kích hoạt. |
Id Người đăng ký | Id người đăng ký để xác định người đăng ký được liên kết với trình kích hoạt. |
Đã gửi | Cờ để kiểm tra xem bản tin đã được gửi đến người đăng ký chưa. |
Đã gửi | Cờ để kiểm tra xem bản tin đã được gửi đến người đăng ký chưa. |
Chế độ | Phương thức gửi bản tin có thể là Trực tuyến hoặc Ngoại tuyến. |
Được tạo lúc | Nó lưu trữ ngày và giờ mà tại đó trình kích hoạt được tạo. |
Cập nhật lúc | Nó lưu trữ ngày và giờ mà tại đó trình kích hoạt được cập nhật. |
Đã gửi tại | Nó lưu trữ ngày và giờ mà tại đó trình kích hoạt được xử lý. |
Được giao hàng tại | Nó lưu trữ ngày và giờ mà bản tin đã được gửi. |
Bảng kích hoạt bản tin với các ràng buộc thích hợp được hiển thị bên dưới.
CREATE TABLE `newsletter`.`newsletter_trigger` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`newsletterId` BIGINT NOT NULL,
` editionId` BIGINT NULL DEFAULT NULL,
`subscribeId` BIGINT NOT NULL,
` sent` TINYINT (1) NOT NULL DEFAULT 1,
`delivery` TINYINT (1) NOT NULL DEFAULT 1,
` mode` SMALLINT ( 6) NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
` updatedAt` DATETIME NULL DEFAULT NULL,
`sentAt` DATETIME NULL DEFAULT NULL,
` deliveryAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX` idx_trigger_newsletter` (`newsletterId` ASC),
CONSTRAINT` fk_trigger_newsletter`
FOREIGN KEY (`newsletterId`)
TÀI LIỆU THAM KHẢO `newsletter`. newsletter_trigger`
ADD INDEX `idx_trigger_edition` (` editionId` ASC);
ALTER TABLE `newsletter`.`newsletter_trigger`
THÊM CONST RAINT `fk_trigger_edition`
NGOẠI KHÓA (` editionId`)
TÀI LIỆU THAM KHẢO `newsletter`.`edition` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG;
ALTER TABLE `newsletter`.`newsletter_trigger`
ADD INDEX` idx_trigger_subscriber` (`subscriberId` ASC);
ALTER TABLE` newsletter`.`newsletter_trigger`
ADD CONSTRAINT `fk_trigger_subscriber`
NGOẠI KHÓA (` subscriberId`)
TÀI LIỆU THAM KHẢO `newsletter`. / pre>
Tóm tắt
Trong hướng dẫn này, chúng ta đã thảo luận về thiết kế cơ sở dữ liệu của Hệ thống Bản tin để lưu trữ người dùng và quản lý các bản tin. Nó cũng cung cấp thiết kế cơ sở dữ liệu để quản lý người đăng ký và danh sách gửi thư.
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.