Christian Seiler: SQL-Statements, verschiedene Module

Beitrag lesen

Hallo,

Ich schreibe gerade an einer modularen Software. Diese soll unter anderem ein Gästebuch und eine Bildergalerie enthalten. Ich habe also prinzipiell 2 Module: Gästebuch, Bildergalerie. Diese Module habe ich weiter aufgeteilt, dass ich pro Modul folgende Dinge habe: Datenbankzugriffsklasse, Programmlogik und Template.

Mein Problem ist nun folgendes:

Ich habe vor, die Kommentare selbst über die gleiche Klasse, wie das Gästebuch, abzuhandeln. Soweit noch kein Thema. Ich möchte nun jedoch bei der Auflistung von den Bildern (inkl. Thumbnails) noch dazuschreiben, wie viele Kommentare dabei sind. Wie ich sehe habe ich da drei Möglichkeiten:

1. Ich pfeiffe auf die saubere Trennung und baue mir in den SELECT auf die Bildertabelle noch zusätzlich (ganz pragmatisch) die Abfrage über die Anzahl der Kommentare ein. Hätte den Vorteil, dass es schnell geht; hätte den Nachteil, dass da nix mehr von wegen sauberer Trennung wäre. (unelegant, doof)

2. Mir ist Geschwindigkeit egal und ich hole mir dann einfach in der Programmlogik [1] einzeln für jedes Bild die Anzahl der Kommentare. (langsam, unelegant, doof)

3. Ich schaffe eine Art "Interface" zwischen den beiden Klassen, bei dem die eine Klasse die andere Klasse zu Hilfe nehmen kann, wenn der SELECT zusammengebaut wird. Will heißen: Die Funktion 'getList' der Klasse (nennen wir sie mal hier) 'GalerieBild' bekommt ein Objekt der Klasse 'Kommentar' mitgeliefert. Dieses Objekt wird dann verwendet, um den SELECT vollends zusammenzubasteln. Und genau da bleibe ich stecken. Hat da jemand eine Idee, wie das realisiert werden kann?

Achja, Galerie und Kommentarfunktion sind mein aktuelles Problem, ich suche natürlich nach einer generischen Lösung. Will heißen: Ich möchte das ganze auch noch ausdehnen, dass ich im Prinzip auch noch die Benutzerklasse mit einbauen kann: Dass ich also beim SELECT gleich auch noch die Daten über den Benutzer, der das Bild eingestellt hat, mit hole. Die Möglichkeiten eines derartigen Interfaces wären grenzenlos. (daher suche ich auch nach einer Idee für so etwas)

Noch etwas: Es muss mit MySQL 3 laufen.

Viele Grüße,
Christian

[1] Die durchaus etwas von den unterschiedlichen Zugriffsklassen wissen darf - ich möchte *ausschließlich* innerhalb einer Ebene trennen!