MySQL/Performance: Viele Datenfelder oder viele Datensätze??

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL/Performance: Viele Datenfelder oder viele Datensätze??

    Hallo zusammen.

    Ich würde gerne wissen, ob sich zu folgender Konstellation eine Aussage bezüglich Performance treffen läßt, bzw. ob ihr effizientere Möglichkeiten seht folgendes umzusetzen:

    Konkretes Beispiel Fußball-Tippspiel:
    Es werden für jeden User zu jedem Spiel Tipps in der Tabelle 'tipps' gespeichert. Diese umfasst dieses Jahr zur WM2010 in Südafrika 64 Spiele. Diese Tipps könnte ich jetzt entweder:
    1. in EINEM Datensatz für jeden User speichern; in einer Tabelle die die Datenfelder für die Spiele 1-64 enthält:
      Tabelle tipps:
      userid | timestamp | game1 | game2 | game3 | ... | game-n

      ...oder
    2. für jeden Tipp je Spiel einen EIGENEN Datensatz anlegen und diesen mittels einer ID je Spiel (Spiel 32 = gameid:32) identifizieren.
      Tabelle tipps:
      userid | timestamp | gameid | tipp

    Angenommen ich habe (fast realistische ) 100 Mitspieler, ergäbe das bei Variante:
    1. 100 Datensätze mit 66 Datenfeldern (64 Spiele plus userid & timestamp)
    2. 6400 Datensätze (64 Spiele x 100 Spieler) á 4 Datenfelder

    Vorteile bezüglich der Verarbeitung und Auswertung sehe ich eindeutig bei Variante 2.: Hier kann ich z.B. je abgegebenem Tipp auswerten, WANN dieser erfolgt ist; bei Variante 1 nur, wann die letzte Änderung an den Tipps erfolgte (nicht aber welcher Tipp geändert wurde!).

    Da ich mir genau diese Frage bei meinen (Hobby-)Projekten immer wieder stelle, würde ich gerne wissen:
    Lieber viele Datenfelder und wenige Datensätze oder wenig Datenfelder und viele Datensätze??

    Mit freundlichen Grüßen,
    Markus.

  • #2
    Hallo und willkommen im Forum,

    wenn die Spalten aus gleichartigen Eigenschaften bestehen, gehören sie in eine andere Tabelle. In deinem Fall könnte die Standardlösung z. B. so aussehen:

    Tabelle user
    Tabelle mannschaft
    Tabelle spiel mit mannschaft1_id, mannschaft2_id
    Tabelle tipp mit id, user_id, spiel_id, datum etc.

    Tipp zum Weiterlesen: http://de.wikipedia.org/wiki/Normali...28Datenbank%29

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hallo Amica,

      danke für Deine Antwort!
      ...also Variante 2. Genauso habe ich es in diesem Beispiel auch gelöst.

      D.h. es besteht aus Deiner Sicht kein Problem darin, daß um den Faktor 64 mehr Datensätze in der Tabelle stehen als in Varinte 1!? In anderen Beispielen wäre dieser Faktor sogar deutlich höher...
      Denn eine Datenredundanz liegt ja nicht vor (stimmts!?).

      Oder anders gesagt: eine Normalisierung (und damt eine Reduzierung der Datenfelder je Tabelle) ist immer vielen Datenfeldern vorzuziehen?

      Markus.

      Kommentar


      • #4
        Genau, MySQL (und auch andere DBMSe) haben generell kein Problem mit vielen Datensätzen, dafür wurden sie ja gemacht.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Das' doch mal ne Ansage!
          Ich danke Dir.

          Markus.

          Kommentar

          Lädt...
          X