Vorweg einen grossen Dank an dieses Forum! Auch wenn dies meine erste Frage hier ist, habe ich schon viel Hilfe beim Durchsuchen des Forums erhalten, dafür mein Dank!
Dieses Mal geht es allerdings um ein etwas spezielleres Problem, daher komme ich um eine Frage nicht herum:
Folgende Ausgangssituation: Wir stellen uns ein Schachbrett (30x30) vor, oben die x-Koordinate, an der Seite die y-Koordinate. Dieses "Schachbrett" habe ich in einer Mysql-Tabelle wie folgt aufgenommen: Spalte1: x-Koordinate, Spalte2: y-Koordinate, Spalte 3 & 4 zusätzliche Informationen zu den einzelnen Feldern. Das ganze ergibt in meinem Fall eine Tabelle mit 900 Einträgen. Nun möchte ich zu jedem Feld speichern, wer sich gerade auf dem Feld befindet, habe jedoch eine nicht begrenzte Anzahl von Spielern und auf einem Feld können sich mehrere Spieler (auch hier die Anzahl nicht begrenzt) befinden.
Ansatz 1: Ich erstelle für jeden weiteren Spieler der ein Feld betritt, eine neue Spalte und speichere die ID des Spielers dort. Vorweg stelle ich natürlich erst fest ob eine neue Spalte überhaupt nötig ist. Das Problem (aus meiner Sicht) ist hier die nicht begrenzte Spielerzahl pro Feld, da kann die Tabelle mal ganz schnell in der Breite ausufern. Frage hier: IST das überhaupt ein Problem?
Ansatz 2: Bei diesem Ansatz werde ich jetzt von vielen (zu Recht) "Ärger" bekommen, da er gegen die Regeln der Normalisierung verstösst und dazu führt, dass die Werte nicht mehr atomar sind:
Ich speichere alle Id´s der Spieler auf einem bestimmten Feld in einer einzigen Spalte, getrennt durch ein Trennzeichen. Das würde dazu führen, dass ich meine Werte immer in der entsprechenden Spalte finde und nicht laufend bevor ich Werte auslesen oder abspeichern will, feststellen muss wie breit die Tabelle aktuell ist, ob ich eine Spalte hinzufügen muss usw.
Ansatz 3: Den habe ich einfach trotz ewigem Grübeln und stundenlanger Recherche noch nicht gefunden.
Bei beiden Ansätzen fühle ich mich nicht besonders wohl und daher suche ich hier Rat. Wie schon im Titel angekündigt: Ich suche eine sinnvolle und richtige, aber auch performante Lösung.
Im Vorraus vielen Dank für alle die sich mit meiner Frage beschäftigen!