dedlfix: Was muss eine Datenbankklasse können?

Beitrag lesen

echo $begrüßung;

mMn muss eine Datenbankklasse im Webumfeld vor allem diese Dinge bewerkstelligen:

Das soll wohl eine eierlegende Wollmilchsau werden? Wer soll die denn pflegen?

  • Allgemeine Bereitstellung der Connectivity zum Datenbankserver und der Datenbank

Keine Frage.

  • Bereitstellung diverser Informationen aus dem Scheme der Datenbank für die Applikation
      dazu gehören die Tabellen und ihre Relationen, die Datensatzbeschreibungen der Tabellen

Wer'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.

  • Gewährleistung konkurrierender Zugriffe, insbesonders derjenigen mit Zeitlücke, also das
      logische pessimistische Locking oder die Überwachung durch Conflictcounter, Timestamp oder
      sonstige gleichwertige Maßnahmen, wenn man es nicht durch Trigger und Stored Procedures
      lösen kann (was ich persönlich für sauberer halte)

In dem Umfang erfordert das Wissen um das Tabellenlayout beziehungsweise setzt dort bestimmte Felder voraus. Ist aber unter allen Umständen dieser Anwendungsfall gegeben? Nein, sicher nicht. Deshalb sehe ich das als eine Aufgabe einer zweiten Schicht, einer auf eine Datenbank als Speichermedium verwendenden spezialisierten Datenklasse.

  • Verwaltung von vertikalen Zugriffsrechten, , wenn man es nicht durch Trigger und Stored
      Procedures lösen kann (was ich persönlich für sauberer halte)

Was verstehst du unter Verwalten? Wenn feinere Zugriffsbeschränkungen gelten sollen, als sich mit dem Rechtesystem des DBMS realisieren lassen, wäre das ebenfalls eine Aufgabe der Datenklasse. Oder vielleicht einer dritten Schicht, die sich um Zugriffsbeschränkungen im Allgemeinen kümmert.

  • Logging der tatsächlichen Fehlerursachen für die Adminsitration und Bereitstellung von
      netten Textchen und Strategien für die Endbenutzerseite

Vom Endbenutzerzeug hat eine Datenbankklasse keine Ahnung. Dafür ist sie in der Struktur zu weit unten angesiedelt. Sie sollte nicht bis nach oben hin durchgreifen können. Und sie muss auch gar nicht wissen müssen, was gerade eben konkret mit diesem Fehler passieren soll. Sie muss nur die Meldung an den Aufrufer weitergeben, ohne sie großartig aufzubereiten. Mitunter ist ein Fehler sogar etwas Erwartetes und eine Meldung anzuzeigen unsinnig.

  • 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.

echo "$verabschiedung $name";