Brauche Hilfe bei der DB Struktur von nem Turnierscript!

2Pac

Erfahrenes Mitglied
Hallo!

Ich weiss es gibt unzählige solche Threads auch Scripts aber ich möchte gern ein eigenes machen , welches ich auch verstehe. Aber mir fehlt dazu die Idee für die Struktur.

Ich möchte das sich ein User anmelden kann, sollte die Teilnehmerzahl (aus DB ausgelesen) dabei überschritten werden, soll keine Anmeldung mehr möglich sein.

Wenn sich alle angemeldet haben, soll sich das Grid automatisch online stellen. Das Turniergrid soll so aussehen, das es mit 16,32,64,128 und 256 Usern funktionstüchtig sein soll.

1. Runde sollen dann zufällig Paarungen ausgelost werden. So das alle User vergeben sein sollen. Danach soll dann immer nur der jenige der gewinnt, in ein Kästchen gesetzt werden. Das Problem das Grid soll automatisch erkennen wieviele User teilnehmen und auch nur soviele drauf haben.

Hier mal ein Beispiel:
16 Teilnehmer:

Spieler 12
...................Sieger 1
Spieler 1
..................................Sieger1
Spieler 5
...................Sieger 2
Spieler 7
................................................Sieger1
Spieler 9
...................Sieger 3
Spieler 3
..................................Sieger2
Spieler 2
...................Sieger 4
Spieler 8
...............................................................Turniersieger
Spieler 14
...................Sieger 5
Spieler 16
..................................Sieger3
Spieler 13
...................Sieger 6
Spieler 4
................................................Sieger2
Spieler 11
...................Sieger 7
Spieler 6
..................................Sieger4
Spieler 10
...................Sieger 8
Spieler 15

Jetzt hab ich nur das Problem 1. ich weiss absolut nicht wie ich die Struktur der Datenbank aufbauen soll und wie ich es verwirkliche das man eine Niederlage eintragen kann solange man einen Gegner hat. (Es sind ja keine festen Termine vorhanden, und man könnte früher Spielen. Nur ohne Gegner kann man ja keine Niederlage eintragen!)

Hat jemand vielleicht eine Idee wie man das angehen könnte? Sry wenns das falsche Forum ist aber dachte DB Struktur also schreib ichs ins DB-Forum.

MfG 2Pac
 
Auweia!

Eine Baumstruktur in SQL abbilden - das ist sehr, sehr anspruchsvoll ;-)

Also Du machst 3 Tabellen:

Tabelle_Spieler
ID (Auto)
Name
Vorname
usw.

sollte jeder Spieler nur in EINER Klasse sein können - reicht das so, sonst noch eine Tabelle für die Realtion Spieler_Ist_In_KLasse

Tabelle_Klasse
ID (Auto)
Klassenname
usw.

Jetzt wirds interessant. Man Baut die Baumstrukur (was schwerer ist) von der BREITE in die HÖHE auf.

Tabelle_Match
ID (Auto)
Verweis_Zur_Klasse
Verweis_Vorgänger_A
Verweis_Vorgänger_B

Natürlich kann man das noch mehr Normaliseren. Ein anderer Weg besteht darin, es genau umgedreht zu machen. Also von oben (Sieger) zum Ausgangspunkt.

Aber letztendlich ist es immer wieder das selbe. Eine Tabelle die auf sich selbst verweist.

Chris
 
1. Ich versteh das nicht so ganz wie du das meinst mit dem Verweisen :(
2. Wie unterscheide ich im Grid zwischen einem 16er , 32er, 64er , 128er und 256er Turnier? (Steht in einer Tabelle wieviele)

Sowie ich das jetzt bei dir verstanden habe, soll ich eine Tabelle für jede Runde (Quasi eine Reihe von oben nach unten) erstellen. Dann mittels einer ID das Feld zuweisen. Aber wie checke ich wer dann wo rein kommt ? ( Weil kann es ja nicht fest zuweisen sonst klappt es nicht mit allen Teilnehmerzahlen)

Man das is so kompliziert, vor allem dadurch, dass man keinen festen Zeitpunkt festlegt. Sonst könnte man ja die mit rand () in ne Tabelle schreiben und dann ne ID geben.

Da fällt mir ein. Vielleicht wegen Teilnehmer immer die mysql_num_rows gucken der Runde und wenn da nur noch 1 ist dann ist Turnier zu ende? Irgendwie so ?
 
Hi,


1. Du solltes Dir unbedingt mal ein paar theortische Grundlagen für relationale Datenbanken reinziehen. Mein Tips:

Allgemeine Links zu RDBMS

2. Du hast also dann eine Tabelle, wo von mehreren Spielen, ganz viele Paarungen drinne stehen. Zähle die maximale Anzahl an Verweisen von Verweis_A und Verweis_B und ahcte drauf, dass Du nur von einem Spiel die Spiele zählst.

Wenn ich am WE Zeit habe, bau ich's IDr die DB Struktur und ein paar wichtige SQL Statements . Aber ich wills mal nicht versprechen und wenn Du das mit den Verweisen verstehst, kommst Du selbst drauf.

Zur Erinnerung:
(Ich hab übrigens eine SPalte vergessen!)

Tabelle_Match
ID (Auto) -> Allegmeine ID des Eintrages
Verweis_Zur_Klasse -> Verweis zur Tabelle Spielklasse
Verweis_Zum_Spiel -> Verweis zur Tabelle der Speile
Verweis_Vorgänger_A -> Verweis auf eine ID innerhalb dieser Tabelle
Verweis_Vorgänger_B -> Verweis auf eine ID innerhalb dieser Tabelle
 
Ich versuchs mir mal anzu schaun. Wenn du trotzdem mal ne Struktur usw. Posten würdest würde ich dir sehr dankbar sein :)
 
Hier ich hab mein Ansatz jetzt verändert!

Also ich möchte nun ganz einfach eine Tabelle User anlegen. Dort befinden sich die Nicknames und deren ID (ausgelesen aus der Registrierte UserDatenbank beim anmelden) sowie die Feldid die sie bekommen (beim erstellen des Turniers). Dann erstelle ich für jede Runde ne Tabelle (insgesamt 9 Runden im Höchstfall) Runde1,Runde2,Runde3 usw. Jetzt mach ich ein SELECT welches geordnet ist nach der feldid. Und dann geb ich jeden Datensatz in einer Tabelle aus. Aber wie schaff ichs das in Runde2-Finale immer solche Lücken sind damit ein Sieger genau zwischen den Feldern der 1. Runde steht:

Spieler1
...............Sieger davon
Spieler2

Wie kann ich das planmässig mit ner Schleife ausgeben ? Aber so das es für alle Runden funktioniert! ?

MfG 2Pac
 
Zurück