Heim Backend-Entwicklung PHP-Tutorial Grundlegendes Funktionsdatenbankdesign für private Nachrichtennachrichten

Grundlegendes Funktionsdatenbankdesign für private Nachrichtennachrichten

Dec 21, 2017 pm 01:33 PM
数据库 消息 private Nachricht

In diesem Artikel wird die Implementierung der Grundfunktionen privater Nachrichten auf Datenbankebene analysiert.

Projektanforderungen: Private Nachrichtenfunktion. Nach dem Senden einer privaten Nachricht an die andere Partei wird die Liste der Personen, die die Nachricht gesendet oder empfangen haben, auf meiner Seite mit der privaten Nachrichtenliste angezeigt Zeigt die neueste Nachricht der Konversation an. Klicken Sie auf ein beliebiges Element in der Liste, um die Detailseite der Nachrichtenkonversation aufzurufen, auf der die Details der Konversation in umgekehrter Reihenfolge angezeigt werden. Gleichzeitig können Sie Konversationen auf diesen beiden Seiten löschen. Die Seite mit der privaten Nachrichtenliste löscht alle Konversationen mit der anderen Partei und die Seite mit den privaten Nachrichtendetails löscht eine bestimmte Konversation. Die Konversationsaufzeichnungen werden einseitig gelöscht, ohne dass dies Auswirkungen auf die Anzeige der anderen Partei hat .

Softwareumgebung: MySQL

Nachdem ich so viel gesagt habe, gibt es in der Tat nur ein paar wichtige Punkte: Erstens zeigt jeder Datensatz in der privaten Nachrichtenliste nur den letzten Datensatz an Zweitens, einseitiges Löschen des Gesprächsprotokolls, ohne die Sichtbarkeit der anderen Partei zu beeinträchtigen. Gehen Sie zuerst zur Datentabelle und erklären Sie sie dann einzeln.

CREATE TABLE `private_message` (
  `id` bigint(20) NOT NULL auto_increment COMMENT '主键Id',
  `user_id` bigint(20) NOT NULL COMMENT '发送者Id',
  `friend_id` bigint(20) NOT NULL COMMENT '接受者Id',  
  `sender_id` bigint(20) NOT NULL COMMENT '发送者id',  
  `receiver_id` bigint(20) NOT NULL COMMENT '接受者Id',  
  `message_type` tinyint(4) NOT NULL COMMENT '消息类型,1:普通消息 2:系统消息',  
  `message_content` varchar(500) NOT NULL COMMENT '消息内容',  
  `send_time` datetime NOT NULL COMMENT '消息发送时间',  
  `status` tinyint(4) NOT NULL default '1' COMMENT '消息状态 1:未读 2:已读 3:删除',  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;123456789101112
Nach dem Login kopieren

Erstellen Sie eine private_Nachrichtentabelle, Feldbeschreibung:

id:主键,自增长 
user_id: 发送者id,非真实发送者id 
friend_id: 接受者id,非真实接受者id 
sender_id:发送者id,真实的发送者id 
receiver_id:接受者id,真实的接受者id 
message_type:消息类型,1:普通消息 2:系统消息,区分消息列表,可以发送不同类型的消息内容 
message_content:消息内容 
send_time:消息发送时间 
status:消息状态 1:未读 2:已读 3:删除,标记不同消息状态,可以实现统计未读消息数,逻辑删除用户恢复等
Nach dem Login kopieren

Jeder sollte deprimiert sein, nachdem er das gesehen hat. Wie bekomme ich zwei Absender-IDs und Empfänger-IDs?

Hier gehen wir davon aus, dass das einseitige Löschen von Datensätzen die Anzeigefunktion der anderen Partei nicht beeinträchtigt. Daher müssen wir hier beim Senden einer privaten Nachricht zwei Daten mit demselben Inhalt einfügen, müssen jedoch einige Tricks anwenden Bei Benutzer-ID und Freund-ID werden beim zweimaligen Einfügen von Daten die Benutzer-ID und die Freund-ID der zweiten eingefügten Daten mit den ersten eingefügten Daten vertauscht. Das heißt:

INSERT INTO `private_message` VALUES ('1', '121', '127', '121', '127', '1', 'hello word', '2015-09-09 10:25:43', '2');INSERT INTO `private_message` VALUES ('2', '127', '121', '121', '127', '1', 'hello word', '2015-09-09 10:26:41', '1');INSERT INTO `private_message` VALUES ('3', '127', '121', '127', '121', '1', '你是程序猿吗?', '2015-09-11 10:30:16', '2');INSERT INTO `private_message` VALUES ('4', '121', '127', '127', '121', '1', '你是程序猿吗?', '2015-09-11 10:30:59', '2');1234
Nach dem Login kopieren

Auf diese Weise können unsere Bedürfnisse befriedigt werden. Der erste und vierte Datensatz sind für 121-Benutzer sichtbar, und der zweite und dritte Datensatz sind für 127-Benutzer sichtbar. Wenn 121 den ersten oder vierten Datensatz löscht, hat dies sicherlich keine Auswirkungen auf die Anzeige des zweiten Datensatzes durch 127 ! ! !

Okay, jetzt können Sie sich um andere funktionale Anforderungen kümmern.
1. Meine private Nachrichtenliste

SELECT p.id, COUNT(p.id) AS message_count,p.user_id,p.friend_id,p.sender_id,p.receiver_id,p.send_time,p.message_content, u.`name` AS receiver_name,u.img_url AS receiver_image FROM (SELECT * FROM private_message ORDER BY id DESC) p INNER JOIN user u on u.id=friend_id WHERE p.user_id=121 and p.`status` !=3 GROUP BY p.friend_id ORDER BY p.id DESC limit 0,101
Nach dem Login kopieren

2. Meine privaten Nachrichtenlistenseite

SELECT p.id,p.message_content,p.sender_id,p.receiver_id,p.send_time,u.`name` AS sender_name,u.img_url AS sender_image,uu.`name` AS receiver_name FROM private_message p INNER JOIN user u on u.id=p.sender_id INNER JOIN user uu on uu.id=p.friend_id WHERE p.user_id=121 and p.friend_id=127 and p.`status` !=3 ORDER BY p.id DESC limit 0,101
Nach dem Login kopieren

3 🎜>

4. Löschen Sie eine einzelne Konversation aus den Details meiner privaten Nachrichtenliste
UPDATE private_message SETstatus=3 WHERE user_id=121 AND friend_id=1271
Nach dem Login kopieren

5. Erhalten Sie die Anzahl der ungelesenen Nachrichten des Benutzers
UPDATE private_message SET status=3 WHERE id=11
Nach dem Login kopieren

Natürlich Sie Sie können auch ungelesene Nachrichten als gelesen aktualisieren, gelöschte Benutzer aus dem Papierkorb wiederherstellen, Systemnachrichten senden usw. Dies liegt, wie einige Schüler definitiv sagen werden, an der Datenredundanz in diesem Tabellendesign. Jeder Datensatz wird zweimal eingefügt. Wenn viel Inhalt vorhanden ist oder Systemnachrichten gesendet werden, sind die Tabellendaten natürlich nur für Kleine private Nachrichtenfunktionen unterscheiden sich definitiv von großen Social-Networking-Websites, aber wir können den Inhalt auch aufteilen und eine neue Inhaltstabelle erstellen. Hier kann die ID zugeordnet werden, um die Datenredundanz zu reduzieren. Außerdem erfordert dieses Design keinen hohen gleichzeitigen Zugriff! Wenn es um hohe Parallelität geht, sind komplexere Designs und Methoden zur Lösung erforderlich!
SELECT COUNT(*) FROM private_message WHERE user_id=121 AND receiver_id=127 AND status=11
Nach dem Login kopieren


Verwandte Lektüre:

PHP-Chat-Eins-zu-Eins-Chat-Funktionsquellcode

Wie lässt sich der Einsatz von Datenbankindizes effizienter gestalten?

Allgemeine Schritte und Beispiele zum Entwerfen einer DatenbankDas Obige ist der gesamte Inhalt dieses Artikels Wenn Sie Fragen haben, können Sie uns gerne kontaktieren. Hinterlassen Sie eine Nachricht im Kommentarbereich!

Das obige ist der detaillierte Inhalt vonGrundlegendes Funktionsdatenbankdesign für private Nachrichtennachrichten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So löschen Sie den TikTok-Chatverlauf vollständig So löschen Sie den TikTok-Chatverlauf vollständig May 07, 2024 am 11:14 AM

1. Öffnen Sie die Douyin-App, klicken Sie unten in der Benutzeroberfläche auf [Nachricht] und dann auf den Chat-Konversationseintrag, der gelöscht werden muss. 2. Drücken Sie lange auf einen beliebigen Chat-Datensatz, klicken Sie auf [Mehrfachauswahl] und markieren Sie die Chat-Datensätze, die Sie löschen möchten. 3. Klicken Sie auf die Schaltfläche [Löschen] in der unteren rechten Ecke und wählen Sie im Popup-Fenster [Löschen bestätigen] aus, um diese Datensätze dauerhaft zu löschen.

So stellen Sie den gelöschten Chatverlauf privater Nachrichten auf Douyin wieder her So stellen Sie den gelöschten Chatverlauf privater Nachrichten auf Douyin wieder her May 06, 2024 pm 01:47 PM

1. Wenn Benutzer private Chat-Datensätze von Douyin löschen, können diese Datensätze normalerweise nicht wiederhergestellt werden, da es sich um eine dauerhafte Löschung handelt. 2. Benutzer können sich jedoch an den Douyin-Beamten wenden und versuchen, zu kommunizieren, um den Chat-Verlauf wiederherzustellen. 3. Öffnen Sie die Douyin-App, klicken Sie auf die drei horizontalen Balken in der oberen rechten Ecke der [Me]-Oberfläche, wählen Sie [Einstellungen], schieben Sie nach unten und klicken Sie auf [Über Douyin]. 4. Suchen Sie die [Kundendienst-Hotline] und rufen Sie sie an oder kontaktieren Sie die Mitarbeiter von Douyin über die offizielle E-Mail, um mehr über die Möglichkeit der Wiederherstellung von Chat-Aufzeichnungen zu erfahren.

Wie implementiert die Go-Sprache die Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge der Datenbank? Wie implementiert die Go-Sprache die Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge der Datenbank? Mar 27, 2024 pm 09:39 PM

Die Go-Sprache ist eine effiziente, prägnante und leicht zu erlernende Programmiersprache. Sie wird von Entwicklern aufgrund ihrer Vorteile bei der gleichzeitigen Programmierung und Netzwerkprogrammierung bevorzugt. In der tatsächlichen Entwicklung sind Datenbankoperationen ein unverzichtbarer Bestandteil. In diesem Artikel wird erläutert, wie die Go-Sprache zum Implementieren von Datenbank-Hinzufügungs-, Lösch-, Änderungs- und Abfrageoperationen verwendet wird. In der Go-Sprache verwenden wir normalerweise Bibliotheken von Drittanbietern, um Datenbanken zu betreiben, z. B. häufig verwendete SQL-Pakete, Gorm usw. Hier nehmen wir das SQL-Paket als Beispiel, um vorzustellen, wie die Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge der Datenbank implementiert werden. Angenommen, wir verwenden eine MySQL-Datenbank.

Wie implementiert Hibernate polymorphe Zuordnung? Wie implementiert Hibernate polymorphe Zuordnung? Apr 17, 2024 pm 12:09 PM

Die polymorphe Hibernate-Zuordnung kann geerbte Klassen der Datenbank zuordnen und bietet die folgenden Zuordnungstypen: Joined-Subclass: Erstellen Sie eine separate Tabelle für die Unterklasse, einschließlich aller Spalten der übergeordneten Klasse. Tabelle pro Klasse: Erstellen Sie eine separate Tabelle für Unterklassen, die nur unterklassenspezifische Spalten enthält. Union-Unterklasse: ähnelt der verbundenen Unterklasse, aber die Tabelle der übergeordneten Klasse vereint alle Spalten der Unterklasse.

iOS 18 fügt eine neue Albumfunktion „Wiederhergestellt' hinzu, um verlorene oder beschädigte Fotos wiederherzustellen iOS 18 fügt eine neue Albumfunktion „Wiederhergestellt' hinzu, um verlorene oder beschädigte Fotos wiederherzustellen Jul 18, 2024 am 05:48 AM

Apples neueste Versionen der iOS18-, iPadOS18- und macOS Sequoia-Systeme haben der Fotoanwendung eine wichtige Funktion hinzugefügt, die Benutzern dabei helfen soll, aus verschiedenen Gründen verlorene oder beschädigte Fotos und Videos einfach wiederherzustellen. Mit der neuen Funktion wird im Abschnitt „Extras“ der Fotos-App ein Album mit dem Namen „Wiederhergestellt“ eingeführt, das automatisch angezeigt wird, wenn ein Benutzer Bilder oder Videos auf seinem Gerät hat, die nicht Teil seiner Fotobibliothek sind. Das Aufkommen des Albums „Wiederhergestellt“ bietet eine Lösung für Fotos und Videos, die aufgrund einer Datenbankbeschädigung verloren gehen, die Kameraanwendung nicht korrekt in der Fotobibliothek speichert oder eine Drittanbieteranwendung die Fotobibliothek verwaltet. Benutzer benötigen nur wenige einfache Schritte

Wie kann ich Kuaishous Erinnerung an private Nachrichten deaktivieren? Wie schließe ich Popup-Nachrichten in privaten Nachrichten? Wie kann ich Kuaishous Erinnerung an private Nachrichten deaktivieren? Wie schließe ich Popup-Nachrichten in privaten Nachrichten? Mar 27, 2024 pm 09:21 PM

Als Kurzvideoplattform ermöglicht Kuaishou den Nutzern, ihr Leben jederzeit und überall zu teilen. Häufige Erinnerungen an private Nachrichten können unser tägliches Leben unterbrechen. Wie kann man also Kuaishous Erinnerung an private Nachrichten deaktivieren? 1. Wie kann ich Kuaishous Erinnerung an private Nachrichten deaktivieren? Um Kuaishous Erinnerung an private Nachrichten zu deaktivieren, müssen Sie das Einstellungsmenü von Kuaishou aufrufen. Klicken Sie auf der Kuaishou-Homepage auf die Schaltfläche „Mein“ in der unteren rechten Ecke, suchen Sie die Option „Einstellungen“ und klicken Sie zur Eingabe. Suchen Sie nach dem Aufrufen des Einstellungsmenüs nach der Option „Benachrichtigungseinstellungen“ oder „Nachrichteneinstellungen“. Nachdem Sie zur Eingabe geklickt haben, wird die Option „Erinnerung an private Nachrichten“ angezeigt. Klicken Sie, um Erinnerungen an private Nachrichten einzugeben, und schalten Sie dann den Schalter aus, um keine Erinnerungen mehr an private Nachrichten zu erhalten. 2. Wie schließe ich Popup-Nachrichten in privaten Kuaishou-Nachrichten? Wenn Sie nicht nur die Erinnerungen an private Nachrichten deaktivieren möchten, sondern auch die Erinnerungen an private Nachrichten deaktivieren möchten,

Wo kann ich den Klingelton für private TikTok-Nachrichten einstellen? Wie kann das Problem gelöst werden, wenn beim Senden privater Nachrichten keine akustische Erinnerung ertönt? Wo kann ich den Klingelton für private TikTok-Nachrichten einstellen? Wie kann das Problem gelöst werden, wenn beim Senden privater Nachrichten keine akustische Erinnerung ertönt? Apr 01, 2024 am 11:51 AM

Als eine der beliebtesten Kurzvideoplattformen der Welt verfügt Douyin über eine große Nutzerbasis und umfangreiche Funktionen. Die Funktion für private Nachrichten ist eine wichtige Möglichkeit für Benutzer, miteinander zu interagieren, und Klingeltöne für private Nachrichten sind eine wichtige Möglichkeit, Benutzer an neue private Nachrichten zu erinnern. Wo kann ich also den Klingelton für private TikTok-Nachrichten einstellen? In diesem Artikel erfahren Sie im Detail, wie Sie den Klingelton für private Douyin-Nachrichten einstellen und wie Sie das Problem lösen, dass bei eingehenden privaten Nachrichten keine Tonerinnerung erfolgt. 1. Wo kann ich den Klingelton für private Douyin-Nachrichten einstellen? 1. Öffnen Sie die TikTok-App: Öffnen Sie zunächst Ihre TikTok-App. 2. Rufen Sie die Schnittstelle für private Nachrichten auf: Klicken Sie unten auf der Douyin-Homepage auf das Symbol „Nachricht“, um die Schnittstelle für private Nachrichten aufzurufen. 3. Öffnen Sie die Einstellungen: Klicken Sie in der oberen rechten Ecke der Benutzeroberfläche für private Nachrichten auf das Einstellungssymbol (normalerweise eine Zahnradform). 4. Wählen Sie die Einstellungen für private Nachrichten: Suchen und wählen Sie im Einstellungsmenü

Eine ausführliche Analyse, wie HTML die Datenbank liest Eine ausführliche Analyse, wie HTML die Datenbank liest Apr 09, 2024 pm 12:36 PM

HTML kann die Datenbank nicht direkt lesen, dies kann jedoch über JavaScript und AJAX erreicht werden. Zu den Schritten gehören das Herstellen einer Datenbankverbindung, das Senden einer Abfrage, das Verarbeiten der Antwort und das Aktualisieren der Seite. Dieser Artikel bietet ein praktisches Beispiel für die Verwendung von JavaScript, AJAX und PHP zum Lesen von Daten aus einer MySQL-Datenbank und zeigt, wie Abfrageergebnisse dynamisch auf einer HTML-Seite angezeigt werden. In diesem Beispiel wird XMLHttpRequest verwendet, um eine Datenbankverbindung herzustellen, eine Abfrage zu senden und die Antwort zu verarbeiten. Dadurch werden Daten in Seitenelemente gefüllt und die Funktion des HTML-Lesens der Datenbank realisiert.

See all articles