Hallo Felix,
Du verwendest zwar eine Datenbank, aber nur für Teilaufgaben der Datenhaltung?
nun, zunächst einmal hatte ich die Daten über eine JSON-Datei eingepflegt, dann erst hatte ich die Funktion des Ankreuzens einfügen wollen. War für mich dann logisch, das so zu machen, zumal ich gar nicht wusste, dass man in einer Datenbank die Tabellen verknüpfen kann. In meinem Kopf ist das ein statisches Gebilde gewesen (wie eine simple Excel-Tabelle). Ich dachte, PHP müsse da den Rest erledigen. So kam ich zum Mergen.
Ein Mischmasch von Datenbank und JSON-Dateien. Warum nur willst Du das genau so haben? Der Vorteil beim Einsatz einer Datenbank ist ja gerade, dass man Bezüge herstellen kann. Deswegen sind die Daten aus den JSON-Dateien besser in der DB aufgehoben, natürlich in einer anderen Tabelle.
Siehe oben.
Das ist der Beweis dafür, dass Deine Vorgehensweise völliger Quatsch ist. Die ID-Werte soll die Datenbank schön selbst verwalten. Dann klappt das auch mit der Konsistenz der Daten.
Ein Vorteil für mich bei den JSON-Dateien war, dass ich die Reihenfolge der Einträge selbst festlegen konnte. Wenn es nicht alphabetisch (oder anders) automatisch sortiert werden soll, sondern manuell, müsste ich in der entsprechenden Datenbank wohl auch noch eine Spalte haben, in der dann die Stelle steht, an der der Eintrag stehen soll.
Wie ist das außerdem mit der Datensicherheit? Wenn die Tabelle defekt ist und gelöscht wird, sind doch alle Daten weg, nicht wahr? Da helfen nur Backups, oder?
Genau dafür ist ja das Forum da. Mein Vorschlag:
Tabelle
releases
mit den Spalten
id
(Primärschlüssel, integer, auto_increment)game
(varchar 250)date
(date)Tabelle
user
login
(Primärschlüssel, varchar 250)pw
(varchar 200)Tabelle
attitudes
id
(Primärschlüssel, integer, auto_increment)attitude
(varchar 250)Tabelle
gaming
(da hast Du sicherlich einen besseren Namen)
id
(Primärschlüssel, integer, auto_increment)user
(varchar 250) <- bezieht sich aufuser
.login
release
(integer) <- bezieht sich aufreleases
.id
interest
(integer) <- bezieht sich aufattitudes
.id
Die Tabelle
releases
soll der Datenstruktur Deiner JSON-Dateien entsprechen. Die Tabellegaming
ist die eigentliche Zuordnung von User, Release und Interesse. Anstatt hiermagic numbers
für das jeweilige Interesse zu wählen, kann man das auch mit einer passenden Werte-Tabelle (hierattitudes
) verknüpfen.
Das klingt alles sinnvoll, aber die Rolle dieser attitudes-Tabelle habe ich leider nicht verstanden. Außerdem müsste ich noch herausfinden, wie das rein technisch in meiner Datenbank zu realisieren wäre.
Das Schreiben der passenden Klassen zum Verwalten der jeweiligen Tabellen und ihren Daten ist dann Stoff für eine abgeleitete Diskussion.
Ja, es ist eben immer ein Rabbit Hole. 🐇
Grüße
Boris