n x m Kombination
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
n x m Kombination
Ich habe eine Datenbank (MariaDB) mit einem Spieler pro Zeile. In den Spalten stehen Name, Passwort, Rating usw. Das Rating rechne ich pro Spiel in Relation zum Rating der Mitspieler und aktualisiere die einzelne Zelle. Jetzt hätte ich gern eine Kombination, wie oft Spieler 1 gegen 42 gespielt hat, wie oft gewonnen und wie oft verloren. Ich habe keine rechte Idee, wie ich das aufbauen könnte, außer alles hintereinander schreiben. Aber da gibt es sicher eine best-practice Lösung...
-
- Beiträge: 340
- Registriert: Di 12. Sep 2006, 08:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Re: n x m Kombination
Hallo Scotty,
verzeih die plumpe Antwort, aber du musst dich dazu mit Relationalität bei Datenbanken beschäftigen. Hoffe, dass diesmal in Kikipedia keine Fehler enthalten sind: http://de.wikipedia.org/wiki/Relationale_Datenbank
verzeih die plumpe Antwort, aber du musst dich dazu mit Relationalität bei Datenbanken beschäftigen. Hoffe, dass diesmal in Kikipedia keine Fehler enthalten sind: http://de.wikipedia.org/wiki/Relationale_Datenbank
Grüße, Antrepolit
care only if your os is really burning
care only if your os is really burning
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: n x m Kombination
Hast du noch eine Idee, was in der zweiten Tabelle drin stehen sollte? Dem Wikipedia-Beispiel folgend, wären das alle gemachten Spiele - da würde ich dann doch lieber n x m Spieler (Zeile/Spalte) mit Gewinn/Verlust pro Zelle nehmen. Das könnte allerdings recht umfangreich werden.
-
- Beiträge: 340
- Registriert: Di 12. Sep 2006, 08:57
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Kontaktdaten:
Re: n x m Kombination
Ok, ein wenig Hilfe. Aber du solltest dir das bei Kikipedia wirklich durchlesen und verstehen.
Du hast eine Tabelle für die Spiele und eine für die Spieler. Die erste Tabelle enthält eine ID, einen Primärschlüssel für jedes Spiel und dessen Daten (wozu nicht die Spieler gehören). Genauso enthält die zweite eine ID für jeden Spieler und dessen Daten. Außerdem benötigst du eine dritte Tabelle, eine sog. "Relationstabelle". Diese enthält zwei Spalten. EIne enthält die Spiel-ID. Die zweite die Spieler-ID. So werden jedem Spiel die Spiele zugeordnet. Diese Spalten sind sowohl Primär- als auch Fremschlüssel der Relationstabelle.
Um die Aufteilung der Daten jedoch korrekt hinzubekommen, musst du dich mit "Normalisierung" bei relationalen Datenbanken beschäftigen - ODER du probierst es ats. Es ist halt nicht ganz so einfach. Aber du wirst schon merken, wenn du zu viele Daten erfasst. Die Abfragen werden dann auch etwas komplexer. Stichwort: JOIN.
Du hast eine Tabelle für die Spiele und eine für die Spieler. Die erste Tabelle enthält eine ID, einen Primärschlüssel für jedes Spiel und dessen Daten (wozu nicht die Spieler gehören). Genauso enthält die zweite eine ID für jeden Spieler und dessen Daten. Außerdem benötigst du eine dritte Tabelle, eine sog. "Relationstabelle". Diese enthält zwei Spalten. EIne enthält die Spiel-ID. Die zweite die Spieler-ID. So werden jedem Spiel die Spiele zugeordnet. Diese Spalten sind sowohl Primär- als auch Fremschlüssel der Relationstabelle.
Um die Aufteilung der Daten jedoch korrekt hinzubekommen, musst du dich mit "Normalisierung" bei relationalen Datenbanken beschäftigen - ODER du probierst es ats. Es ist halt nicht ganz so einfach. Aber du wirst schon merken, wenn du zu viele Daten erfasst. Die Abfragen werden dann auch etwas komplexer. Stichwort: JOIN.
Grüße, Antrepolit
care only if your os is really burning
care only if your os is really burning
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: n x m Kombination
Verstehe. Im Moment werden die Spiele als Dateien gespeichert (pro Jahr sind es rund 20000 Spiele) und nach einer Weile gelöscht. Diese Sachen könnte ich natürlich in eine extra Tabelle schreiben, was gar keine schlechte Idee ist.
Meine ursprüngliche Überlegung war, in der Spielertabelle eine Zelle o.ä. mit den Kombinationen einzufügen. Da stünde dann ID=1, Name, ..., (2=1,5,2,42=0,1,0) jeweils mit win/loss/draw.
Meine ursprüngliche Überlegung war, in der Spielertabelle eine Zelle o.ä. mit den Kombinationen einzufügen. Da stünde dann ID=1, Name, ..., (2=1,5,2,42=0,1,0) jeweils mit win/loss/draw.