Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Tabellen-Design: Primary Key "gruppieren"

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Tabellen-Design: Primary Key "gruppieren"

    Hallo Community,

    ich entwickle zur Zeit eine Möglichkeit, Benchmark-Ergebnisse von Grafikkarten in eine SQL-Datenbank zu speichern, um dann ein nettes Diagramm zu generieren. Jetzt habe ich (aus Unwissenheit) eine Frage beim Tabellen-Design.



    Kurze Erklärung:
    id = ID des durchgeführten Benchmarks, kommt mehrfach vor, je nachdem wie viele Grafikchips an dem Benchmark teilnehmen
    bid = ID des jeweiligen Benchmarks (es gibt hierfür eine weitere Tabelle)
    gpuid = ID des Grafikchips (es gibt hierfür eine weitere Tabelle)
    result = Ergebnis

    Ich stelle mir das jetzt so vor. Gehen wir davon aus, dass bid = 4 für den 3D Mark 2006 und bid = 6 für Aquamark 3 steht. Dann würde ich das so in der Datenbank speichern:

    Code:
    ID BID GPU RESULT
    1  4    98   3056
    1  4    75   4025
    1  4    63   3000
    2  6    98   9500
    2  6    75   3253
    2  6    63   1122
    Der Primary Key bestünde demzufolge aus ID und GPUID. Um dann ein Diagramm zu einem durchgeführten benchmark anzuzeigen, würde ich folgenden SQL-Query verwenden: SELECT * FROM t WHERE ID = 1; Somit wird ein Benchmark-Diagramm mit drei Grafikchips (98, 75, 63) generiert.

    Meine Frage:
    Ich kann für die ID-Spalte schlecht AUTO_INCREMENT verwenden, da er für jede Zeile einen Wert hochzählt. Ist es möglich, dass die ID's beim Eintrag eines neuen Benchmarks "gruppiert" und automatisch um eins erhöht werden. Oder muss ich vorher mit MAX(id) den höchsten Wert ermitteln, um dann den neuen Datensatz mit +1 zu speichern?

    Ziel ist es, dass der nächste Eintrag folgendes erbringt:

    Code:
    ID BID GPU RESULT
    1  4    98   3056
    1  4    75   4025
    1  4    63   3000
    2  6    98   9500
    2  6    75   3253
    2  6    63   1122
    3  6    11   1111
    3  6    22   2222
    3  6    33   3333
    Ich hoffe, ich konnte mein Problem genau schildern! Ich bin jetzt gespannt auf die Kritik zu meiner Denkweise Außerdem bedanke ich mich jetzt schonmal im Voraus!


  • #2
    einen auto-increment wie Du ihn suchst gibts IMHO nicht, du musst dir das Max raussuchen und die Felder selbst mit werten füllen

    Kommentar


    • #3
      Hallo,

      danke für die prompte Antwort!

      Ist das Design in Ordnung? Mich wundert es, dass es keine "Prügel" gibt

      Kommentar


      • #4
        Hmm die Bezeichnung ID ist hier wohl falsch, denn die ist ja nicht eindeutig, sollte das nicht auch ein Foreign Key sein? Anscheinend aber ein imaginärer... alles sehr verwirrend bei dir...

        Das nennt sich jetzt wohl "Ohrfeige", ob du das unter Prügel zählst?... xD

        Kommentar


        • #5
          Richtig, verwirrend ist das ganze schon. Es sollte folgendermaßen sein:

          Code:
          bid INT(5) UNSIGNED NOT NULL,
          nid INT(5) UNSIGNED NOT NULL,
          gpuid INT(5) UNSIGNED NOT NULL,
          result INT(15) UNSIGNED NOT NULL,
          PRIMARY KEY (bid, nid)


          bid
          = Benchmark
          nid = Name des Benchmarks (definiert in anderer Tabelle)
          gpuid = Grafikchip (definiert in anderer Tabelle)
          result = Ergebnis

          Wichtig ist, dass Ihr schon mal geholfen habt. Danke schööön!

          Kommentar

          Lädt...
          X