Rolf B: Kann man mit PDO Klassen-Arrays aus der Database fetchen

Beitrag lesen

Hallo MB,

wenn dein Datenmodell so aussieht, dass Du irgendein Dingsbums 0-n mal hast, dann gehört es in der DB "untereinander", nicht "nebeneinander". Also auf Rows verteilt, nicht auf Columns. Das nennt man das Einhalten von Normalformen im relationalen Modell.

Wenn Du nun eine Objektklasse hast, die nur ein Attribut als Array hat, dann ist das in der DB natürlich lästig. Um das zu normalisieren, brauchst Du eine weitere Tabelle. Und wenn Du es als JOIN liest, liest Du eine Menge redundanter Daten; deshalb fällt dafür eine weitere Query an. Das KANNST Du ggf. optimieren, indem Du über eine Stored Procedure liest die mehrere Rowsets liefert; keine Ahnung ob MySQL das kann.

Solche Extratabellen nur wegen eines n-fach Attributs sind ärgerlich. Aber man sollte sich nicht verleiten lassen, sie "weg zu optimieren". Man könnte ja das PHP Array vor dem Speichern in der DB in eine kommaseparierte Liste umwandeln und die in einem langen String speichern. Klar. Geht. Das ist dann eine vorsätzliche Denormalisierung und es ist deine Entscheidung, alle Nachteile davon in Kauf zu nehmen. Eine Lieferung des Attributs als PHP-Array bekommst Du aber auch damit nicht.

Rolf

--
sumpsi - posui - clusi