Hello,
mMn muss eine Datenbankklasse im Webumfeld vor allem diese Dinge bewerkstelligen:
Das soll wohl eine eierlegende Wollmilchsau werden? Wer soll die denn pflegen?
Das sind ganz typische Anforderungen an die Beschaffung und Manipulation von Daten im Webumfeld und überhaupt nicht so umfangreich, wie Du es glauben machen willst.
- Bereitstellung diverser Informationen aus dem Scheme der Datenbank für die Applikation
dazu gehören die Tabellen und ihre Relationen, die Datensatzbeschreibungen der TabellenWer's braucht. Normalerweise kennt man ja sein Datenbank-Layout. Es erst erforschen zu müssen geht auf die Performance. Ich sehe das eher als eine zusätzlich Aufgabe für eine andere Klasse.
Diese Informationen benötigt man, um die Datenkopplung vornehmen zu können und um die vertikale Kontrolle ausüben zu können.
In dem Umfang erfordert das Wissen um das Tabellenlayout beziehungsweise setzt dort bestimmte Felder voraus.
Genau dies muss die Klasse erzwingen oder erzeugen. Es darf gar nicht möglich sein, Tabellen ohne diese Spalten für die Verwendung im Webumfeld anzulegen.
Ist aber unter allen Umständen dieser Anwendungsfall gegeben?
Ja, er sit immer gegeben, wenn mehr als ein Client gleichzeitig auf die API zugreifen darf.
- Aufbereitung von Daten für die Übernahmen aus und die Anzeige in HTML (Escaping, Radios,
Checkboxen, Selects, Feldlängenbeschränkungen, Defaults, ...)Das ist Forumlarhandling und überhaupt nicht Aufgabe einer DB-Klasse. Formularhandling ist schon umfangreich genug, wenn man es universell gestalten will.
Nein, das Erstellen des Anzeigeformates ist Sache einer anderen Schicht oder Klasse.
Das Bereitstellen angeforderter Daten und das Anreichern mit weiteren notwendigen Informationen (Defaults, Enum oder Set) ist Sache der Datenbankklasse.
Wieviele Klassen willst Du denn sonst für eine typische Webanwendung erstellen, nur um später in der "Anzeigeklasse" damit z.B. ein <Select>-Element erzeugen zu können, bei Du ja die ausgewählten und die auswählbaren Optionen benötigst. Diese Daten müssen von der Datenbankklasse sofort bei Abfrage bereitgestellt werden und nicht erst später angefordert...
Dies führt dann auch zu der Forderung, dass die Datenbanklasse auf Änderungen im Tabellendesign reagieren können muss, denn sie muss dieses ja nur abfragen und neu aufbereiten, wenn es sich geändert hat, bzw. die Arbeit verweigern, wenn Du gegen Automatismus bist.
Liebe Grüße aus dem Cyberspace
Tom vom Berg