Ich entwerfe eine Datenbank für soziale Medien, die der Struktur von Facebook ähnlich ist. Ich benutze MySQL. Das Hauptziel unserer Datenbank ist die Leistung, sie muss eine große Anzahl von Anfragen bearbeiten.Datenbankentwurf für soziales Netzwerk
Ich habe eine Liste von Benutzern, Freunden, Beiträge an der Wand, Kommentare und Likes.
Q1- für Benutzer, ich habe mehrere Arten von Benutzern, ich habe normale Benutzer, Supervisor und Admin. Für diese Tabelle denke ich daran, eine übergeordnete Benutzertabelle zu definieren und dann die Information zu übernehmen, aber gleichzeitig sind die Felder gleich. Beispiel:
user
=============
id
username
password
email
isAtcive
country
noraml_user
===============
name
..
..
user_id
supervisor
==============
name
..
..
user_id
admin
=======
name
..
..
user_id
als ich diese Methode wegen der Leistung, so statt für einzelne Benutzer suchen Benutzertyp in Verwendung (eine Million Nutzer als Beispiel), Ich suche (300K Benutzer in Tabelle Supervisor). Habe ich recht?
Q2- Ich habe gerne für die Beiträge und Kommentare. hier ist mein Design
posts
==========
id
content
comments
==========
id
content
post_id
posts_likes
==========
id
post_id
user_id
comment_likes
==========
id
comment_id
user_id
Denken Sie, dies richtig ist, oder ich einen Tisch nur für Gleichen machen wie die folgenden
likes
=========
id
post_id(nullable)
comment_id(nullable)
user_id
was ist beste Ansatz?
Q3- Können Sie mir einige Tipps geben, die Sie beim Entwerfen der Datenbank für soziale Netzwerke berücksichtigen sollten?
Ich würde die Unterschiede der Benutzer (admin etc.) in die Tabelle users setzen und nur eine zusätzliche Spalte machen. 0 = normal, 1 = super usw. – Alexander
Wenn Sie mit Berechtigungen gehen, würde ich vorschlagen, eine weitere Tabelle user_groups hinzufügen und jedem Benutzer eine group_id geben. Lesen Sie auch, wie Sie mit Bitmasken arbeiten, um die Effizienz zu erhöhen, da es wirklich keine Notwendigkeit gibt, eine Supervisor-Spalte über eine Bitmaske zu haben, die diesen Wert plus 31 andere enthalten kann. – Xorifelse