T-Rex: Datencontainer für einen Join

Beitrag lesen

Es ist übrigens nicht immer sinnvoll, eine 1:1-Abbildung zwischen Tabellenstrukturen in einem relationalen DBMS und Klassen im Programm zu erstellen. Ein RDBMS hat gewisse Zwänge, eigentlich zusammenhängende Daten auf mehrere Tabellen verteilen zu müssen. Man kann nicht direkt wie bei der OOP modellieren, dass eine Eigenschaft auf ein anderes Objekt verweist (Parent beispielsweise) oder eine Liste anderer Objekte ist (Children). Dazu verwendet man bei einem RDBMS Verweise mit Schlüsselwerten.

Die Problematik bezüglich Objekten und RDBMS waren mir von vornherein klar. Meine Sicht auf die Dinge ist auch anders als du beschreibst. Bei deiner Beschreibung stehen die Objekte im vordergrund, welche man versucht auf in eine Datenbank zu pressen. Ich hingegen möchte die Tabellen der Datenbank in Objecte pressen :D.
Für deinen Ansatz gibt es ja diverse Frameworks. Die erkaufen sich aber die Effektivität, welche man beim programmieren hat durch eine schlechtere Datenbank-Anbindung (;)). Ich hab sogar ein Framework gesehen, welches das Objekt serialisiert und einfach in eine text Spalte stopft.

Du siehst, dass dein Modell nicht geeignet ist, wenn du wie bei den Tabellen in deinen Klassen nur Eigenschaften für die Schlüsselwerte stehen hast und nicht mit ihnen auf direkte Weise andere Objekte referenziert werden. Denn das Suchen konkreter Objekte über ihre Schlüsselwerte ist zwar möglich aber aufwendig.

Genrell bin ich sehr zufrieden mit meinem Modell. Es gibt halt jetzt ein kleines Problem. Ich möchte die generelle Idee nicht wegen eines Problems über Bord werfen. Sollte sich das Problem als unüberwindbar heraussstellen werde ich dir recht geben. Aber genau deshalb suche ich ja Rat.

Eine einfache Möglichkeit wäre, die starre Verbindung zwischen Tabelle, Abfrage und Klassen zu lösen. Dann kannst du Abfragen nach Bedarf erstellen, beliebig viele Tabellen dafür verwenden und füllst deine Objekte nach Bedarf und vor allem passend zu den Anforderungen.

Dass kann ich mir im Moment nicht vorstellen...

Und wenn du mal schauen willst, wie andere Frameworks das lösen, such nach Eager Loading und Lazy Loading. Sowas lässt sich prinzipiell auch mit PHP und etwas Magie bewerkstelligen.

...aber hier steckt eventuell die Lösung.
Werde aber erst am Montag dazu kommen mir das mal konzentriert durch zu lesen. Heute wird erstmal Geburtstag gefeiert. Da ich die letzten 3 Monate jeden Tag vor dem Rechner saß und Programmiert hab wie ein Irrer muss mana uch mal abschalten!

Danke für deine Ideen.

Gruß
T-Rex