Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hướng dẫn thiết kế cơ sở dữ liệu cho hệ thống mạng xã hội trong MySQL

Hướng dẫn này cung cấp các bước hoàn chỉnh để thiết kế giản đồ cơ sở dữ liệu của Hệ thống mạng xã hội nhằm quản lý người dùng, bạn bè, người theo dõi, nhóm và tin nhắn.

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 hệ thống mạng xã hội

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, Cơ sở dữ liệu hàng tồn kho trong MySQL và Tìm hiểu các truy vấn SQL cơ bản trong MySQL.

Cơ sở dữ liệu hệ thống mạng xã hội

Bước đầu tiên là tạo Cơ sở dữ liệu hệ thống mạng xã hội. Nó có thể được tạo bằng cách sử dụng truy vấn như hình dưới đây.

CREATE SCHEMA `sns` 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. 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 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 `sns`.`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 kết bạn của người dùng

Trong phần này, chúng tôi sẽ thiết kế Bảng bạn bè của người dùng để lưu trữ bạn bè của người dùng. Trạng thái bạn bè có thể được sử dụng để theo dõi trạng thái tình bạn và loại có thể được sử dụng để chỉ định loại tình bạn. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Bạn bè của Người dùng.

Id Id duy nhất để xác định tình bạn.
Id nguồn Id người dùng để xác định người dùng đã bắt đầu tình bạn.
Id mục tiêu Id người dùng của bạn bè.
Loại Kiểu phân loại bạn bè. Nó có thể là Trường học, Cao đẳng hoặc Người quen.
Trạng thái Trạng thái có thể là Mới, Bị từ chối hoặc Đang hoạt động.
Được tạo lúc Nó lưu trữ ngày và giờ mà yêu cầu kết bạn được bắt đầu.
Cập nhật lúc Nó lưu trữ ngày và giờ mà yêu cầu kết bạn được cập nhật.
Ghi chú Nó lưu trữ các ghi chú cụ thể cho tình bạn.

Bảng Bạn bè 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 `sns`.`user_friend` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`sourceId` BIGINT NOT NULL,
`targetId` BIGINT NOT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`status` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`notes` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_friend_source` (`sourceId` ASC),
CONSTRAINT `fk_friend_source`
FOREIGN KEY (`sourceId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`user_friend`
ADD INDEX `idx_friend_target` (`targetId` ASC);
ALTER TABLE `sns`.`user_friend`
ADD CONSTRAINT `fk_friend_target`
FOREIGN KEY (`targetId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `sns`.`user_friend` ADD UNIQUE `uq_friend`(`sourceId`, `targetId`);

Bảng người theo dõi người dùng

Trong phần này, chúng tôi sẽ thiết kế Bảng người theo dõi người dùng để lưu trữ những người theo dõi người dùng. Loại người theo dõi có thể được sử dụng để chỉ định loại người theo dõi trong số Thích, Không thích hoặc Theo dõi. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng người theo dõi người dùng.

Id Id duy nhất để xác định người theo dõi.
Id nguồn Id người dùng để xác định người dùng theo dõi.
Id mục tiêu Id người dùng để xác định người dùng sau.
Loại Loại để phân loại người theo dõi. Nó có thể là Thích, Không thích hoặc Theo dõi.
Được tạo lúc Nó lưu trữ ngày và giờ mà người theo dõi được tạo.
Cập nhật lúc Nó lưu trữ ngày và giờ mà người theo dõi được cập nhật.

Bảng Người theo dõi 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 `sns`.`user_follower` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`sourceId` BIGINT NOT NULL,
`targetId` BIGINT NOT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_ufollower_source` (`sourceId` ASC),
CONSTRAINT `fk_ufollower_source`
FOREIGN KEY (`sourceId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`user_follower`
ADD INDEX `idx_ufollower_target` (`targetId` ASC);
ALTER TABLE `sns`.`user_follower`
ADD CONSTRAINT `fk_ufollower_target`
FOREIGN KEY (`targetId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;


ALTER TABLE `sns`.`user_follower` ADD UNIQUE `uq_ufollower`(`sourceId`, `targetId`, `type`);

Bảng Thông báo Người dùng

Trong phần này, chúng tôi sẽ thiết kế Bảng thông báo người dùng để lưu trữ các tin nhắn trò chuyện của người dùng. 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 Người dùng.

Id Id duy nhất để xác định thư.
Id nguồn Id người dùng để xác định người gửi.
Id mục tiêu Id người dùng để xác định người nhận.
Tin nhắn Nội dung thư.
Được tạo lúc Nó lưu trữ ngày và giờ mà tin nhắn được tạo.
Cập nhật lúc Nó lưu trữ ngày và giờ tại đó tin nhắn được cập nhật.

Bảng Thông báo 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 `sns`.`user_message` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`sourceId` BIGINT NOT NULL,
`targetId` BIGINT NOT NULL,
`message` TINYTEXT NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_umessage_source` (`sourceId` ASC),
CONSTRAINT `fk_umessage_source`
FOREIGN KEY (`sourceId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`user_message`
ADD INDEX `idx_umessage_target` (`targetId` ASC);
ALTER TABLE `sns`.`user_message`
ADD CONSTRAINT `fk_umessage_target`
FOREIGN KEY (`targetId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Bảng bài đăng của người dùng

Trong phần này, chúng tôi sẽ thiết kế Bảng bài đăng của người dùng để lưu trữ các bài viết của người dùng. Người gửi có thể được yêu cầu để cho phép những người dùng khác có quyền thích hợp đăng trên tường người dùng. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Bài đăng của Người dùng.

Id Id duy nhất để xác định bài đăng.
Id Người dùng Id người dùng để xác định người dùng tương ứng.
Id Người gửi Id người gửi để xác định người gửi tương ứng.
Tin nhắn Nội dung thư.
Được tạo lúc Nó lưu trữ ngày và giờ mà bài viết được tạo.
Cập nhật lúc Nó lưu trữ ngày và giờ tại đó bài đăng được cập nhật.

Bảng Bài đăng của 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 `sns`.`user_post` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`userId` BIGINT NOT NULL,
`senderId` BIGINT NOT NULL,
`message` TINYTEXT NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_upost_user` (`userId` ASC),
CONSTRAINT `fk_upost_user`
FOREIGN KEY (`userId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`user_post`
ADD INDEX `idx_upost_sender` (`senderId` ASC);
ALTER TABLE `sns`.`user_post`
ADD CONSTRAINT `fk_upost_sender`
FOREIGN KEY (`senderId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Bảng nhóm

Trong phần này, chúng tôi sẽ thiết kế Bảng nhóm để lưu trữ dữ liệu nhóm. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Nhóm.

Id Id duy nhất để xác định nhóm.
Tạo bởi Id người dùng để xác định người dùng đã đăng ký nhóm.
Được cập nhật bởi Id người dùng để xác định người dùng đã cập nhật nhóm.
Tiêu đề Tên nhóm.
Tiêu đề meta Tiêu đề meta được sử dụng cho tiêu đề trình duyệt và mục đích SEO.
Slug Nút để tạo URL duy nhất.
Tóm tắt Bản tóm tắt để đề cập đến những điểm nổi bật chính.
Trạng thái Trạng thái của nhóm có thể là Mới, Đã phê duyệt, Đang hoạt động hoặc Bị chặn.
Được tạo lúc Nó lưu trữ ngày và giờ mà nhóm được tạo.
Cập nhật lúc Nó lưu trữ ngày và giờ mà nhóm được cập nhật.
Hồ sơ Cột được sử dụng để lưu trữ chi tiết hồ sơ của nhóm.
Nội dung Cột được sử dụng để lưu trữ các chi tiết bổ sung của nhóm.

Nó sử dụng trạng thái cột để theo dõi trạng thái của nhóm. Trạng thái có thể là Mới, Đã phê duyệt, Đang hoạt động hoặc Bị chặn. Bảng Nhóm với các ràng buộc thích hợp được hiển thị bên dưới.

CREATE TABLE `sns`.`group` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`createdBy` BIGINT NOT NULL,
`updatedBy` BIGINT NOT NULL,
`title` VARCHAR(75) NOT NULL,
`metaTitle` VARCHAR(100) NULL,
`slug` VARCHAR(100) NOT NULL,
`summary` TINYTEXT NULL,
`status` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`profile` TEXT NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_slug` (`slug` ASC),
INDEX `idx_group_creator` (`createdBy` ASC),
CONSTRAINT `fk_group_creator`
FOREIGN KEY (`createdBy`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`group`
ADD INDEX `idx_group_modifier` (`updatedBy` ASC);
ALTER TABLE `sns`.`group`
ADD CONSTRAINT `fk_group_modifier`
FOREIGN KEY (`updatedBy`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Meta nhóm

Bảng Meta Nhóm có thể được sử dụng để lưu trữ thông tin bổ sung về các nhóm bao gồm URL biểu ngữ nhóm, 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 Nhóm.

Id Id duy nhất để xác định meta nhóm.
Id Nhóm Id nhóm để xác định nhóm chính.
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 của nhóm.

Bảng Meta Nhóm với các ràng buộc thích hợp được hiển thị bên dưới.

CREATE TABLE `sns`.`group_meta` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`groupId` BIGINT NOT NULL,
`key` VARCHAR(50) NOT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_meta_group` (`groupId` ASC),
UNIQUE INDEX `uq_meta_group` (`groupId` ASC, `key` ASC),
CONSTRAINT `fk_meta_group`
FOREIGN KEY (`groupId`)
REFERENCES `sns`.`group` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

Bảng thành viên nhóm

Trong phần này, chúng tôi sẽ thiết kế Bảng thành viên nhóm để lưu trữ các thành viên trong nhóm. Trạng thái thành viên có thể được sử dụng để theo dõi trạng thái thành viên và vai trò thành viên có thể được sử dụng để xác định các đặc quyền của thành viên. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Thành viên Nhóm.

Id Id duy nhất để xác định tư cách thành viên.
Id Nhóm Id nhóm để xác định nhóm tương ứng.
Id Người dùng Id người dùng để xác định người dùng tương ứng.
Id vai trò Vai trò kiểm tra các đặc quyền của người dùng.
Trạng thái Trạng thái có thể là Mới, Bị từ chối, Đang hoạt động hoặc Bị chặn.
Được tạo lúc Nó lưu trữ ngày và giờ mà yêu cầu thành viên được bắt đầu.
Cập nhật lúc Nó lưu trữ ngày và giờ thành viên được cập nhật.
Ghi chú Nó lưu trữ các ghi chú dành riêng cho tư cách thành viên.

Bảng Thành viên Nhóm với các ràng buộc thích hợp được hiển thị bên dưới.

CREATE TABLE `sns`.`group_member` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`groupId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`status` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`notes` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_member_group` (`groupId` ASC),
CONSTRAINT `fk_member_group`
FOREIGN KEY (`groupId`)
REFERENCES `sns`.`group` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`group_member`
ADD INDEX `idx_member_user` (`userId` ASC);
ALTER TABLE `sns`.`group_member`
ADD CONSTRAINT `fk_member_user`
FOREIGN KEY (`userId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `sns`.`group_member` ADD UNIQUE `uq_friend`(`groupId`, `userId`);

Bảng người theo dõi nhóm

Trong phần này, chúng tôi sẽ thiết kế Bảng theo dõi nhóm để lưu trữ những người theo dõi nhóm. Loại người theo dõi có thể là Thích, Không thích hoặc Theo dõi. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng theo dõi nhóm.

Id Id duy nhất để xác định người theo dõi.
Id Nhóm Id nhóm để xác định nhóm tương ứng.
Id Người dùng Id người dùng để xác định người dùng tương ứng.
Loại Loại người theo dõi có thể là Thích, Không thích hoặc Theo dõi.
Được tạo lúc Nó lưu trữ ngày và giờ mà người theo dõi được tạo.
Cập nhật lúc Nó lưu trữ ngày và giờ mà người theo dõi được cập nhật.

Bảng Người theo dõi Nhóm với các ràng buộc thích hợp được hiển thị bên dưới.

CREATE TABLE `sns`.`group_follower` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`groupId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_gfollower_group` (`groupId` ASC),
CONSTRAINT `fk_gfollower_group`
FOREIGN KEY (`groupId`)
REFERENCES `sns`.`group` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`group_follower`
ADD INDEX `idx_gfollower_user` (`userId` ASC);
ALTER TABLE `sns`.`group_follower`
ADD CONSTRAINT `fk_gfollower_user`
FOREIGN KEY (`userId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

ALTER TABLE `sns`.`group_follower` ADD UNIQUE `uq_friend`(`groupId`, `userId`, `type`);

Bảng tin nhóm

Trong phần này, chúng tôi sẽ thiết kế Bảng tin nhóm để lưu trữ các tin nhắn trò chuyện nhóm. 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 Nhóm.

Id Id duy nhất để xác định thư.
Id Nhóm Id nhóm để xác định nhóm tương ứng.
Id Người dùng Id người dùng để xác định người dùng tương ứng.
Tin nhắn Nội dung thư.
Được tạo lúc Nó lưu trữ ngày và giờ mà tin nhắn được tạo.
Cập nhật lúc Nó lưu trữ ngày và giờ tại đó tin nhắn được cập nhật.

Bảng Thông báo Nhóm với các ràng buộc thích hợp được hiển thị bên dưới.

CREATE TABLE `sns`.`group_message` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`groupId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`message` TINYTEXT NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_gmessage_group` (`groupId` ASC),
CONSTRAINT `fk_gmessage_group`
FOREIGN KEY (`groupId`)
REFERENCES `sns`.`group` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`group_message`
ADD INDEX `idx_gmessage_user` (`userId` ASC);
ALTER TABLE `sns`.`group_message`
ADD CONSTRAINT `fk_gmessage_user`
FOREIGN KEY (`userId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

Bảng Bài đăng của Nhóm

Trong phần này, chúng tôi sẽ thiết kế Bảng bài đăng của nhóm để lưu trữ các bài viết của nhóm. Các thành viên có vai trò thích hợp có thể đăng lên nhóm. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Bài đăng của Nhóm.

Id Id duy nhất để xác định bài đăng.
Id Nhóm Id nhóm để xác định nhóm tương ứng.
Id Người dùng Id người dùng để xác định người dùng tương ứng.
Tin nhắn Nội dung thư.
Được tạo lúc Nó lưu trữ ngày và giờ mà bài viết được tạo.
Cập nhật lúc Nó lưu trữ ngày và giờ tại đó bài đăng được cập nhật.

Bảng Bài đăng Nhóm với các ràng buộc thích hợp được hiển thị bên dưới.

CREATE TABLE `sns`.`group_post` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`groupId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`message` TINYTEXT NULL DEFAULT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_gpost_group` (`groupId` ASC),
CONSTRAINT `fk_gpost_group`
FOREIGN KEY (`groupId`)
REFERENCES `sns`.`group` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);

ALTER TABLE `sns`.`group_post`
ADD INDEX `idx_gpost_user` (`userId` ASC);
ALTER TABLE `sns`.`group_post`
ADD CONSTRAINT `fk_gpost_user`
FOREIGN KEY (`userId`)
REFERENCES `sns`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

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 mạng xã hội để quản lý người dùng, bạn bè, người theo dõi, tin nhắn và nhóm.

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, Giỏ hàng và Cuộc thăm dò ý kiến ​​&Khảo sát. Lược đồ cơ sở dữ liệu hoàn chỉnh cũng có sẵn trên 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. Các phương pháp hay nhất cho độ dài cột SQL varchar

  2. Tôi có nên sử dụng kiểu dữ liệu datetime hoặc timestamp trong MySQL không?

  3. Tương đương với boom () để làm việc với chuỗi trong MySQL

  4. Khi nào đóng con trỏ bằng MySQLdb

  5. Tuyên bố VALUES trong MySQL