Michael Schröpl: Verwalten des "Datenzugriff mit SQL"

Beitrag lesen

Hi Lude,

das Basteln von SQL-Statements hat u.a. den Nachteil, dass ausfuehrbarer Code vom Nutzer eingegeben werden koennte ('-- drop db...').

Keineswegs. Ich kann ja innerhalb des Moduls eine Abbildung zwischen legalen (!) symbolischen Eingabewerten und tatsächlich in den Code einbindbaren Elementen vornehmen, wenn die Semantik das hergibt (Aufzählungstypen etc.). Sind meine Eingaben Strings bzw. Integers, dann ist ein ordentliches Quoting (Element der DBI-Schnittstelle) bzw. ein Wertemengentest (ein regular expression) nicht zuviel an Investition.

Ausserdem ist die Performance suboptimal.

Siehe GMX-Diskussion: Die 2ct zusätzlich bezahle ich gerne.

Ansonsten kommt ein objektorientiertes Herangehen (Klassenmodule) in Frage

Genau das wollte ich andeuten - insbesondere auch für die Namenswahl.

Aber ist es nicht wesentlich komplexer als ein Rudel SPs?

Ganz im Gegenteil. "Teile und herrsche" lautet das Motto des Informatikers.

Aber kann man dann auch mit vertretbarem Aufwand sicherstellen, dass eine Aenderung am Datenmodell den bisher implementierten Datenzugriff nicht zerstoert.

Genau das ist es, was _Dein_ Modell nicht mit vertretbarem Aufwand sicherstellen kann, weil alle Deine "Rudel-Funktionen" gleichberechtigt sind und einander in die Suppe spucken dürfen.

Kapselst Du aber die Zugriffe auf datentragende Objekte in kleinstmögliche Funktionsmodule, dann mußt Du nur innerhalb des Funktionsmoduls ändern, weil andere Instanzen die geänderten Daten ja noch nicht mal syntaktisch ansprechen können.
Ich hatte Anfang dieses Jahres so einen Fall, wo ich am vor Tag der Produktionsaufnahme einen Verständnisfehler (der Bedeutung der Daten der entsprechenden Tabelle, die ich nur benutzen darf, nicht aber erfunden habe) in einem meiner Module fand - und die Behebung bestand dann in der Änderung genau zweier Zeilen, nämlich zweiere WHERE-Klauseln innerhalb des Moduls, der diese Tabelle kapselte. Niemand außerhalb dieses Moduls erfuhr jemals von dieser Änderung.

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
(sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
 => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.