Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 02.03.2007, 02:40
braindead braindead ist offline
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 24.09.2003
Beiträge: 243
braindead befindet sich auf einem aufstrebenden Ast
Standard Mysql: User sollen Lieder Bewerten, wie sieht effektive Speicherung und Anzeige aus?

Hi,
mein Problem ist folgendes, ich will für eine Webseite über Musik eine Möglichkeit schaffen das die User Alben oder Songs Bewerten können. Diese Bewertung wird dann neben den entsprechenden Objekten angezeit (auf der Detailseite zum Album und, und das ist sicherlich wichtig, in Ablum und Songlisten direkt neben dem Ablum oder Lied). Bisher gibt es schon eine Bewertung diese wurde aber beim einfügen des Objektes eingegeben und ist statisch. Nun soll es so laufen das die Bewertung des Ablums durch die User gemacht werden, es soll also immer die Durchschnitsbewertung gebilded werden und diese wird dann angezeigt. Technisch ist das kein Problem, meine Frage zielt darauf ab, wie das möglichst effektiv gelöst wird es könnten ja Tausende Nutzer das Objekt bewerben und speziell in Listen stelle ich es mir ziemlich rechenintesiev vor.

Zur Struktur: Es gibt eine My-Sql Datenbank und dort eine Tabelle für die Objekte (z.b. Alben oder Lieder) bisher gibt es eine Spalte für die Adminbewertung. Meine Ideen sind folgende:

1. Einfach nur eine Zusatzliche Tabelle erstellen in welcher dann die User-ID des Bewertenden Users abgelegt ist (jeder User darf pro Objekt nur einmal Voten) dann die Objekt-ID und die Bewertung.
- bei der Anzeige der Bewertung würden dann jedesmal alle Einträge mit der entsprechenden Objekt-ID in einen Array geladen (ohne auf die mögliche Größe Rücksicht zu nehmen) dann wird daraus mit einer For-Schleife der Durchschnitt gebildet und dann angezeigt.
-Nachteil jedesmal müsste ein möglicherweise großer My-Sql Query abgesetzt werden und dann müsste auch jedesmal der Durchschnit berechnet werden.

2. Wie oben nur das ich zusatzlich nach jeder Bewertung zwei Spalten der Objekt-Tabelle Update nämlich zum einen eine Spalte welche die Summe der Bewertungen (zahlen von 1-10 z.b.) speichere und in einer zweiten Spalten die Anzahl der Bewertungen.
- es müsste dann nicht jedesmal eine umständliche und langwierige Tabellenabfrage stattfinden sondern nur eine Division zweier Zahlen durchgeführt werden.
Die Extra - Bewertungstabelle ist aber trotzdem nötig weil die Information welcher Benutzer wie gevotet hat wichtig ist. Um zu verhindert das jemand mehrmals voted und um ihm seine eigene Bewertung anzeigen und revidieren zu lassen.
- Nachteil ist das ich darauf angewiesen bin das die Beiden Tabellen auch immer Synchron sind, dürfte eigentlich der Fall sein, aber man weiß ja nie was dazwischen kommen kann.

Welche Methode haltet ihr für die beste? Oder gibt es noch eine bessere Möglichkeit?
Mit Zitat antworten
Sponsored Links