Eine effiziente Datenbank-design für ein einfaches forum mit php und mysql

Ich bin in den Prozess der Gestaltung einer Datenbank für forum-Funktionen für meine website.Nach einer Suche, SO google, habe ich folgende Konstruktion:
User-Tabelle

Username : varchar(256)
Password : varchar(256)

Threads Tabelle

ThreadId  :  int
UserId    :  int, related to Users table
Title     :  varchar(255)
Date      :  timestamp, when a thread was created

Beiträge Tabelle

PostId   :   int
ThreadId :   int, related to Threads table
UserId   :   int, related to Users table
Date     :   timestamp, when post was made
Title    :   varchar(255) - post title (optional)
Body     :   text - the actual body of a post

Obwohl dies dient meinem Zweck, ich kann nicht helfen, aber denke, das ist nicht sehr effizient, vor allem für die Auswahl der Beiträge zu einem bestimmten thread, für die es notwendig sein würde, durchqueren Sie die gesamte Tabelle.

Aus der Spitze von meinem Kopf, ich kann denken von einem design, wo die Benutzer-Tabelle und Threads Tabelle bleiben, wie Sie sind, aber statt eine einzige Tabelle für die Beiträge Tabelle,erstelle ich ein Beiträge Tabelle für jeden Benutzer mit dem gleichen Namen wie der Benutzer.Auf diese Weise abrufen, alle Beiträge zugehörig zu einem thread ist viel effizienter,da alles was ich brauche ist die userid der person, die begonnen haben, den thread.Mit diesem info-ich Suche die Tabelle mit dem gleichen Namen, um alle Beiträge für den spezifischen thread.Aber es ist eine gute Idee, um die Anzahl der Tabellen, die ich erstelle direkt abhängig von der Anzahl der registrierten Benutzer?Was ich auch wissen möchte ist, welche der beiden designs besser skaliert,wird einfacher zu verwalten? Gibt es eine bessere Datenbank-design für meine Anforderung?

InformationsquelleAutor just_a_coder | 2013-11-16
Schreibe einen Kommentar