Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Leitfaden zum Entwerfen einer Datenbank für ein soziales Netzwerksystem in MySQL

Dieses Tutorial enthält die vollständigen Schritte zum Entwerfen eines Datenbankschemas des sozialen Netzwerksystems zum Verwalten der Benutzer, Freunde, Follower, Gruppen und Nachrichten.

Das Entity-Relationship-Diagramm oder visuelle Datenbankdesign ist unten dargestellt.

Systemdatenbank sozialer Netzwerke

Sie können auch die beliebten Tutorials besuchen, darunter So installieren Sie MySQL 8 unter Ubuntu 20.04 LTS, So installieren Sie MySQL 8 unter Windows, So installieren Sie MySQL Workbench unter Ubuntu, So installieren Sie MySQL 8 mit Workbench unter Windows 10, RBAC-Datenbank in MySql, Blog-Datenbank in MySQL, Quiz-Datenbank in MySQL, Datenbank für Umfragen und Umfragen in MySQL, Online-Einkaufswagen-Datenbank in MySQL, Bestandsdatenbank in MySQL und Lernen Sie grundlegende SQL-Abfragen in MySQL.

Systemdatenbank sozialer Netzwerke

Der allererste Schritt besteht darin, die Social Network System Database zu erstellen. Es kann mit der unten gezeigten Abfrage erstellt werden.

CREATE SCHEMA `sns` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Ich habe den Zeichensatz utf8mb4 verwendet um eine Vielzahl von Zeichen zu unterstützen.

Benutzertabelle

In diesem Abschnitt entwerfen wir die Benutzertabelle Benutzerinformationen zu speichern. Nachfolgend finden Sie die Beschreibung aller Spalten der Benutzertabelle.

ID Die eindeutige ID zur Identifizierung des Benutzers.
Vorname Der Vorname des Benutzers.
Zweiter Vorname Der zweite Vorname des Benutzers.
Nachname Der Nachname des Benutzers.
Mobil Die Mobiltelefonnummer des Benutzers. Es kann für Anmelde- und Registrierungszwecke verwendet werden.
E-Mail Die E-Mail des Benutzers. Es kann für Anmelde- und Registrierungszwecke verwendet werden.
Passwort-Hash Der vom entsprechenden Algorithmus generierte Passwort-Hash. Wir müssen vermeiden, einfache oder verschlüsselte Passwörter zu speichern.
Registriert unter Diese Spalte kann verwendet werden, um die Lebensdauer des Benutzers mit der Anwendung zu berechnen.
Letzte Anmeldung Es kann verwendet werden, um die letzte Anmeldung des Benutzers zu identifizieren.
Einführung Die kurze Einführung des Benutzers.
Profil Benutzerdetails.

Die Benutzertabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

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) );

Benutzerfreundtabelle

In diesem Abschnitt entwerfen wir die User Friend Table um die Benutzerfreunde zu speichern. Der Freundschaftsstatus kann verwendet werden, um den Freundschaftsstatus zu verfolgen, und Typ kann verwendet werden, um die Art der Freundschaft anzugeben. Unten erwähnt ist die Beschreibung aller Spalten der User Friend Table.

ID Die eindeutige ID zur Identifizierung der Freundschaft.
Quellen-ID Die Benutzer-ID zur Identifizierung des Benutzers, der die Freundschaft initiiert hat.
Ziel-ID Die Benutzer-ID des Freundes.
Typ Der Typ, um Freunde zu klassifizieren. Dies kann Schule, Hochschule oder Bekannter sein.
Status Der Status kann Neu, Abgelehnt oder Aktiv sein.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der die Freundschaftsanfrage initiiert wurde.
Aktualisiert um Es speichert das Datum und die Uhrzeit, zu der die Freundschaftsanfrage aktualisiert wurde.
Notizen Es speichert die für die Freundschaft spezifischen Notizen.

Die User-Friend-Tabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

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`);

Benutzer-Follower-Tabelle

In diesem Abschnitt entwerfen wir die Benutzer-Follower-Tabelle um die Benutzer-Follower zu speichern. Der Follower-Typ kann verwendet werden, um den Typ des Followers unter Like, Dislike oder Follow anzugeben. Nachfolgend finden Sie die Beschreibung aller Spalten der Benutzer-Follower-Tabelle.

ID Die eindeutige ID zur Identifizierung des Followers.
Quellen-ID Die Benutzer-ID zur Identifizierung des Follower-Benutzers.
Ziel-ID Die Benutzer-ID zur Identifizierung des folgenden Benutzers.
Typ Der Typ zur Klassifizierung von Followern. Es kann "Gefällt mir", "Gefällt mir nicht" oder "Folgen" lauten.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der der Follower erstellt wurde.
Aktualisiert um Es speichert das Datum und die Uhrzeit, zu der der Follower aktualisiert wurde.

Die Benutzer-Follower-Tabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

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`);

Benutzernachrichtentabelle

In diesem Abschnitt entwerfen wir die Benutzernachrichtentabelle zum Speichern der Benutzer-Chat-Nachrichten. Nachfolgend finden Sie die Beschreibung aller Spalten der Benutzernachrichtentabelle.

ID Die eindeutige ID zur Identifizierung der Nachricht.
Quellen-ID Die Benutzer-ID zur Identifizierung des Absenders.
Ziel-ID Die Benutzer-ID zur Identifizierung des Empfängers.
Nachricht Der Nachrichtentext.
Erstellt am Er speichert Datum und Uhrzeit der Erstellung der Nachricht.
Aktualisiert um Datum und Uhrzeit der Aktualisierung der Nachricht werden gespeichert.

Die Benutzernachrichtentabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

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;

Benutzerbeitragstabelle

In diesem Abschnitt entwerfen wir die User Post Table um die Benutzerbeiträge zu speichern. Der Absender muss möglicherweise anderen Benutzern mit den entsprechenden Berechtigungen das Posten auf der Benutzerwand gestatten. Unten erwähnt ist die Beschreibung aller Spalten der User Post Table.

ID Die eindeutige ID zur Identifizierung des Beitrags.
Benutzer-ID Die Benutzer-ID zur Identifizierung des entsprechenden Benutzers.
Absender-ID Die Absender-ID zur Identifizierung des entsprechenden Absenders.
Nachricht Der Nachrichtentext.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der der Beitrag erstellt wurde.
Aktualisiert um Datum und Uhrzeit der Aktualisierung des Beitrags werden gespeichert.

Die Benutzerbeitragstabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

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;

Gruppentabelle

In diesem Abschnitt entwerfen wir die Gruppentabelle um die Gruppendaten zu speichern. Unten erwähnt ist die Beschreibung aller Spalten der Gruppentabelle.

ID Die eindeutige ID zur Identifizierung der Gruppe.
Erstellt von Die Benutzer-ID zur Identifizierung des Benutzers, der die Gruppe registriert hat.
Aktualisiert von Die Benutzer-ID zur Identifizierung des Benutzers, der die Gruppe aktualisiert hat.
Titel Der Gruppentitel.
Metatitel Der Metatitel, der für Browsertitel und SEO-Zwecke verwendet werden soll.
Schnecke Der Slug zur Bildung der eindeutigen URL.
Zusammenfassung Die Zusammenfassung, um die wichtigsten Highlights zu erwähnen.
Status Der Status der Gruppe kann Neu, Genehmigt, Aktiv oder Blockiert sein.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der die Gruppe erstellt wurde.
Aktualisiert um Datum und Uhrzeit der Aktualisierung der Gruppe werden gespeichert.
Profil Die Spalte, in der die Profildetails der Gruppe gespeichert werden.
Inhalt Die Spalte, in der die zusätzlichen Details der Gruppe gespeichert werden.

Es verwendet den Spaltenstatus, um den Status der Gruppe zu verfolgen. Der Status kann entweder Neu, Genehmigt, Aktiv oder Gesperrt sein. Die Gruppentabelle mit den entsprechenden Beschränkungen ist wie unten gezeigt.

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;

Gruppen-Meta

Die Gruppen-Meta-Tabelle kann verwendet werden, um zusätzliche Informationen über Gruppen zu speichern, einschließlich der Gruppen-Banner-URL usw. Nachfolgend finden Sie die Beschreibung aller Spalten der Gruppen-Meta-Tabelle.

ID Die eindeutige ID zur Identifizierung des Gruppenmeta.
Gruppen-ID Die Gruppen-ID zur Identifizierung der übergeordneten Gruppe.
Schlüssel Der Schlüssel, der das Meta identifiziert.
Inhalt Die Spalte, in der die Metadaten der Gruppe gespeichert werden.

Die Gruppen-Meta-Tabelle mit den entsprechenden Einschränkungen ist unten dargestellt.

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;

Gruppenmitgliedstabelle

In diesem Abschnitt entwerfen wir die Gruppenmitgliedertabelle um die Gruppenmitglieder zu speichern. Der Mitgliedsstatus kann verwendet werden, um den Mitgliedsstatus zu verfolgen, und die Mitgliedsrolle kann verwendet werden, um die Mitgliedsrechte zu identifizieren. Unten erwähnt ist die Beschreibung aller Spalten der Gruppenmitgliedstabelle.

ID Die eindeutige ID zur Identifizierung der Mitgliedschaft.
Gruppen-ID Die Gruppen-ID zur Identifizierung der entsprechenden Gruppe.
Benutzer-ID Die Benutzer-ID zur Identifizierung des entsprechenden Benutzers.
Rollen-ID Die Rolle zum Überprüfen der Benutzerrechte.
Status Der Status kann Neu, Abgelehnt, Aktiv oder Gesperrt sein.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der die Mitgliedsanfrage initiiert wurde.
Aktualisiert um Datum und Uhrzeit der Aktualisierung des Mitglieds werden gespeichert.
Notizen Es speichert die für die Mitgliedschaft spezifischen Notizen.

Die Gruppenmitgliedstabelle mit den entsprechenden Beschränkungen wird unten gezeigt.

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`);

Gruppen-Follower-Tabelle

In diesem Abschnitt entwerfen wir die Gruppen-Follower-Tabelle um die Gruppenfolger zu speichern. Der Follower-Typ kann Like, Dislike oder Follow sein. Unten erwähnt ist die Beschreibung aller Spalten der Gruppenbegleitertabelle.

ID Die eindeutige ID zur Identifizierung des Followers.
Gruppen-ID Die Gruppen-ID zur Identifizierung der entsprechenden Gruppe.
Benutzer-ID Die Benutzer-ID zur Identifizierung des entsprechenden Benutzers.
Typ Der Follower-Typ kann Like, Dislike oder Follow sein.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der der Follower erstellt wurde.
Aktualisiert um Es speichert das Datum und die Uhrzeit, zu der der Follower aktualisiert wurde.

Die Gruppen-Follower-Tabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

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`);

Gruppennachrichtentabelle

In diesem Abschnitt entwerfen wir die Gruppennachrichtentabelle um die Gruppen-Chat-Nachrichten zu speichern. Unten erwähnt ist die Beschreibung aller Spalten der Gruppenmeldungstabelle.

ID Die eindeutige ID zur Identifizierung der Nachricht.
Gruppen-ID Die Gruppen-ID zur Identifizierung der entsprechenden Gruppe.
Benutzer-ID Die Benutzer-ID zur Identifizierung des entsprechenden Benutzers.
Nachricht Der Nachrichtentext.
Erstellt am Er speichert Datum und Uhrzeit der Erstellung der Nachricht.
Aktualisiert um Datum und Uhrzeit der Aktualisierung der Nachricht werden gespeichert.

Die Gruppennachrichtentabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

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;

Gruppenbeitragstabelle

In diesem Abschnitt entwerfen wir die Gruppenbeitragstabelle um die Gruppenbeiträge zu speichern. Die Mitglieder mit der entsprechenden Rolle können in der Gruppe posten. Nachfolgend finden Sie die Beschreibung aller Spalten der Gruppenposttabelle.

ID Die eindeutige ID zur Identifizierung des Beitrags.
Gruppen-ID Die Gruppen-ID zur Identifizierung der entsprechenden Gruppe.
Benutzer-ID Die Benutzer-ID zur Identifizierung des entsprechenden Benutzers.
Nachricht Der Nachrichtentext.
Erstellt am Es speichert das Datum und die Uhrzeit, zu der der Beitrag erstellt wurde.
Aktualisiert um Datum und Uhrzeit der Aktualisierung des Beitrags werden gespeichert.

Die Gruppen-Post-Tabelle mit den entsprechenden Einschränkungen wird unten angezeigt.

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;

Zusammenfassung

In diesem Tutorial haben wir das Datenbankdesign eines sozialen Netzwerksystems besprochen, um die Benutzer, Freunde, Follower, Nachrichten und Gruppen zu verwalten.

Sie können Ihre Kommentare einreichen, um an der Diskussion teilzunehmen. Sie könnten auch daran interessiert sein, die Datenbank der Anwendungen Blog, Warenkorb und Umfrage &Umfrage zu entwerfen. Das vollständige Datenbankschema ist auch auf GitHub verfügbar.