borisbaer: PDO: Dynamische Read- und Write-Funktion schreiben

Beitrag lesen

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)
  • email (varchar 250)

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 auf user.login
  • release (integer) <- bezieht sich auf releases.id
  • interest (integer) <- bezieht sich auf attitudes.id

Die Tabelle releases soll der Datenstruktur Deiner JSON-Dateien entsprechen. Die Tabelle gaming ist die eigentliche Zuordnung von User, Release und Interesse. Anstatt hier magic numbers für das jeweilige Interesse zu wählen, kann man das auch mit einer passenden Werte-Tabelle (hier attitudes) 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