MySQL wie Listen oder arras in Tabelle(n) schreiben

mugsawaay

Aktives Mitglied
Hallo,

es geht darum z.B. Dartswürfe (einzeln-> Training, oder paarweise zwei Spieler abzuspeichern)
z. zt. löse ich das proprietär und schreibe das mehr oder weniger formatiert in einen File)

Beispiel: Spiel 101, Datum 17.12.2014, Spieler 1, Spieler 2, Best of 5 Sets Best of 3 Legs

Spieler 1....Spieler 2.....Spieler 2.....Spieler 1....Spieler 1....Spieler 2
Wurf..Rest..Wurf Rest...Wurf Rest...Wurf Rest..Wurf Rest..Wurf Rest
10, 91........40,...51.....10, 91........13, 88......81,...20.....12,...89
40, 51........30,...21.....20, 71........38, 50......20,...0
51, 0...........................40, 31........50, 0
1:0................................................0:2......3:0 in legs, 1:0 in Sätzen usw.


prinzipiell wäre das Schema auch ganz gut in ein PGN Format übertragbar

Ich würde das aber jetzt lieber in eine Datenbank übertragen. Da haperts aber..
weil ich da zuwenig Erfahrung habe.
Idee: Tabelle 1 enthält die Spieler: Id, Name, Verein, Adresse....
Tabelle 2 enthält die Spiele: Id, Spiel(z.B. 101, 301, 501..), Best of Sets, Best of legs.....
Tabelle 3 Ergebnisse:: ???????
da weiß ich eben nicht, wie ich obige Listen abspeichere
ein weiterer Punkt ist im obigen Beispiel der Rest. Theoretisch bräuchte der doch gar nicht abgespeichert werden hatte es nur deswegen gemacht weil es dann einfacher war es auszugeben.
Wie könnte man das jetzt in einer DB organisieren? Wenn jemand eine Idee hat wäre das super
 
Also wenn du nur ein Spiel abspeichern muss ginge die 3. Tabelle wiefolgt:
Du nennst die Tabelle Spiel und in dieser speicherst du jeden Wurf ab:
Spieler_id (wer geworfen hat), Punkte des 1. Wurfts, Punkte des 2. Wurfts,Punkte des 3. Wurfts, Die Anzahl der Züge und die id des Spiels
Code:
BSP:
spieler_id             1.wurf              2.wurf        3. wurf    Anzahl des Zuges            spiel id
1                      20                        60                  60                       1                    1
2                      20                        20                  20                       1                    1
2                      20                        40                  50                       2                    1
(usw...)
Das wäre mein Forschlag. Dann muss dein Programm diese Daten auswerten: Spieler 1 und 2 haben an dem Spiel (spiel id) 1 teilgenommen und die folgenden Würfe geworfen.

Falls da ein Denkfehler ist, entschuldige ich mich, da ich mich mit Dart nicht auskenne.
 
Danke für die Antwort, das liegt auf der Hand, die Spielerid ist ok, es spielt dann z.B. Spieler 1 gegen pieler 2
aber wenn ich dich richtig verstehe sind 1.wurf, 2.wurf .... Spaltennamen, das kommt meiner Meinung nach ncht in Frage weil die Anzahl der Würfe in Abhängigkeit des Startwertes (101, 3001) sehr stark variieren kann, dass ist ja gerade mein Problem! Was bedeutet Anzahl des Zuguges?
 
Wie gesagt ich kenne mich mit Dart leider nicht aus 😀. Anzahl des Zuges ist erstens verrutscht und zweitens soll es einfach angeben der wievielte Wurf das in dem Spiel von der Person war, falls du diese Information brauchst. Als Lösung für die variierende Anzahl an Würfen kannst du ja für die Spalten 2.wurf und 3.wurf ein null erlauben. Dann kann man sofort erkennen, das z.B. nur 2 mal geworfen wurde.
 
Danke, aber im Prinzip hat das erstmal mit Darts nichts zu tun.
stell dir einfach vor die "würfe" sind eintäge in Listen bzw. arrays und können von 0 ... 200
variieren. Ich kann ja jetzt kaum eine Tabelle mit 200 Spalten erstellen
und wenn man dann die 201te bräuchte stände man da
irgendwie muss das einfacher gehen.
z.B. ein Textfeld, dann zB. 18, 21, 23, 17, 19, 23 usw. hier als Beispiel 6 Würfe
Gruß Gü
 
Die Würfe kommen ja nicht in die Spalten sondern in die Zeilen.
Die Frage ist, ob bei allen Dart Varianten die Spieler pro Zug drei Würfe haben oder das variiert.
Was ist das Ziel? Soll jedes Spiel nachvollziehbar ausgegeben werden können? Soll das Spiel währenddessen protokolliert und unterstützt (z.B. mit dem Rest) werden?

Wegen dem Rest: Diesen würde ich nicht speichern sondern berechnen.
 
Hallo nochmal,

also ich möchte nochmal versuchen das Problem zu verallgemeinern.
Es gibt mehrere Tabellen, z. B. Namen, Turniere, Spiele etc.
mir geht es jetzt lediglich um die Darstellung einer Zeile in der Tabelle
Spalte 1 = Nummer (Integer)
Spalte 2 = Statistikinfo1 (Integer)
.
.
Spalte n = Statistikinfo n (Integer)

und in Spalte n+1 hätte ich jetzt gerne das Integer array z.B. in der Form
12, 1, 17, 29, 39, 44, 112, 78, ........usw.

z.B. als Textfeld? umwandlung als String? oder als Objekt? oder...?
Diese Tabelle besteht möglicherweise aus 30 oder 40 oder mehr Zeilen.

Würde ich jetzt die Spalte n+1 in eine eigene Tabelle auslagern (so hatte ich dich verstanden) ergäbe das ensprechend 30, 40 oder mehr neue Tabellen. Wie sollten diese denn heißen? Es stünde ja vorher gar nicht fest wieviele es letztlich werden würden.
 
Ich würde die Tabelle der Ergebnisse so aufbauen:

Spiel | Spieler | Wert
1 | 1 | 12
1 | 1 | 8
1 | 1 | 3
1 | 2 | 20
1 | 2 | 6
1 | 2 | 17
1 | 1 | 16
1 | 1 | 3
2 | 1 | 12
2 | 1 | 8
2 | 1 | 3
2 | 2 | 20
2 | 2 | 6
2 | 2 | 17
2 | 1 | 16
2 | 1 | 3

Alternativ, wenn es nur Spiele mit 3 Würfen gibt:

Spiel | Spieler | Wurf1 | Wurf 2 | Wurf 3
1 | 1 | 12 | 6 | 7
1 | 2 | 8 | 5 | 4
1 | 1 | 3 | 8 | 5
1 | 2 | 20 | 9 | 12
1 | 1 | 6 | 10 | 16
1 | 2 | 17 | 7 | 19
1 | 1 | 16 | 3 | 15
1 | 2 | 3 | 21 | 12
2 | 1 | 12 | 5 | 7
2 | 2 | 8 | 19 | 8
2 | 1 | 3 | 24 | 9
2 | 2 | 20 | 17 | 4
2 | 1 | 6 | 1 | 12
2 | 2 | 17 | 12 | 13
2 | 1 | 16 | 8 | 1
2 | 2 | 3 | 9 | 9

EDIT:
D.h. Die Anzahl der Tabellen und der Spalten ändert sich nicht. Und eine richtige DB sollte mit vielen Zeilen (Millionen) zurechtkommen.
 
das habe ich jetzt gar nicht verstanden.
vielleicht noch ein anderes Beispiel mit Würfeln vielleicht ist das verständlicher ist datenbanktechnisch aber das gleiche Problem
Folgende Regeln sollen gelten:

1. es spielen immer2 Spieler gegeneinander
2. jeder Spieler hat einen Würfel es wird abwechselnd geworfen
3. es wird eine Startpunktzahl festgelegt (z.B. 100, 150, beliebig), das ist auch gleichzeitig der Rest
4. Jeder Spieler hat seine eigene Wurfliste
4. die geworfene Punktzahl wird solange vom Rest abgezogen bis genau 0 erreicht wird, hat man z.B. 3 Rest und würfelt eine 4 ist der Wurf ungültig und der andere ist an der Reihe

Jetzt soll es mehrere Varianten geben
z.B wer zuerst 5 mal gewonnen hat, hat gewonnen.
oder wer zuerst 4 mal gewonnen hat hat einen Satz gewonnen, wer von diesen Sätzen 3 gewonnen hat hat das Spiel gewonnen beliebe andere Kombinationen wären denkbar
Anforderung:
egal was für eine Variante gewählt wurde alles soll rekonstruierbar in einer DB abgespeichert werden
Statistiken sollen erstellt werden. wieviele einsen, zweien... wurden im gesamten spiel geworfen
wieviele vieren wurden im 3. Spiel von Spieler x geworfen usw.

danke
 
Achtung! Evtl. vermischt du die Datenhaltung und die Logik.
Für die Datenhaltung schreibst du einfach jeden geworfenen Würfel oder Dart in eine DB Zeile.
Für die Logik greifst du auf diese Daten zu (entweder in der Applikation oder in der DB mit Stored Procedures / Trigger / ... ) und wertest dann aus.
 

Zurück
Oben