2012-08-04 12 views
5

Ich frage mich,
auf vielen Websites gibt es die Möglichkeit, einen Beitrag zu mögen/nicht mögen.
auch hier natürlich bei stackoverflow.Datenbank-Design: Tabelle der Likes?

also, technisch ist es eine große Likes-Tabelle?

user_id post_id 

user_id - die
post_id gestimmt -, die es Post

ist das alles?
eine große Gefällt mir-Tabelle?
ist nicht etwas effizienter/anspruchsvoll?

+0

Auf welcher Grundlage gehen Sie davon aus, dass es sich um einen großen Tisch handelt? –

+0

Wenn Sie die Informationen darüber aufbewahren müssen, wer einen Beitrag gemocht oder nicht gemocht hat, ist dies die Mindestmenge an Daten, die Sie speichern müssen. – JJJ

Antwort

5

Auf der grundlegendsten Ebene, ja, das ist alles.

Aber dann beginnt es zu erweitern, versuchen, Fragen zu beantworten wie:

  • Wie viel hat der Benutzer wie diesem Beitrag?
  • Wann hat ihnen die Post gefallen?
  • Wie haben sie den Beitrag gefunden?
  • Haben sie den Beitrag kommentiert?
  • Wie funktioniert die gesamte Gruppe/Gemeinschaft wie die Post

Sie dann mehr in die Tiefe Fragen zu Freunden und der Community zu wollen, beginnen zu beantworten.

1

Ich denke, ich kann Ihre Bedenken verstehen. Jedes Mal, wenn die Seite angezeigt werden soll, muss COUNT() ausgegeben werden.

Sie haben sicherlich diese Grundtabelle haben, die die Grundlage für eine COUNT wird(), aber Sie nicht wirklich brauchen, COUNT() ist es für jeden Zugriff.

erstellen in Höhe von insgesamt Tabelle und aktualisieren Sie es entweder, wenn die Seite einen mögen oder nicht mögen empfängt, einen Trigger, oder eine gespeicherte Prozedur aufrufen es von Zeit zu Zeit zu aktualisieren.

Ich würde sagen, jede Methode ist mehr für verschiedene Website-Persönlichkeiten, dh mehr Lesungen oder mehr Schriften angezeigt, aber Sie wissen bereits, dass, wenn es um Vorlieben oder Abneigungen kommt, nichts ist vorstellbar.

+0

so praktisch, Angenommen, ich habe eine Post-Tabelle, die gemocht werden kann. sollte es ein Feld "likes_counter" haben, die die Anzahl der Likes zählen, so dass ich nicht COUNT() verwenden muss. Recht? – socksocket

+0

Korrigieren. Wenn Sie Ihre Zieltabelle verwenden, können Sie durch Hinzufügen einer Spalte eine zusätzliche Tabelle auf dem Server speichern. Wenn Sie die Struktur der Zieltabelle ändern können, großartig. Wenn nicht, erstellen Sie eine separate Tabelle, die zwei Spalten enthält: targetTableName, totalLikes. Ich nehme an, Sie haben vollen Zugriff auf die db. Meine Überlegungen waren lediglich, auf die verschiedenen Designalternativen aufmerksam zu machen. –