Einzelnen Beitrag anzeigen

Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: [SQL] - Stored Procedure bzw. Funktion vs. Direktabfrage

  Alt 29. Sep 2016, 15:13
Komplexere SPs sind meist auch schwerer zu testen als Code, der die Geschäftslogik clientseitig (in Delphi) realisiert: wenn man viele verschiedene Testfälle abarbeiten will, muss man die Daten in der Datenbank erst 'passend' bereitstellen, d.h. Tabellen leeren und mit Testdaten füllen.

Wenn komplexe Geschäftslogik auf der Clientseite in Delphi implementiert ist, wird im Idealfall der Test komplett ohne Datenbankverbindung durchgeführt. Er ist wesentlich schneller, so dass man bei Änderungen an der Logik auch viel schneller erkennt, ob es zu Fehlern gekommen ist.
Interessanter Ansatz. Für solche Fälle haben wir aktuell allerdings immer eine zweite Datenbank angelegt auf der programmiert und getestet wird und dann eine Datenbank in der Realdaten stehen. Je nach Einstellungsdatei oder Compilerschalter wird dann entweder auf die Testdatenbank oder auf die echte Datenbank zugegriffen. Eine doppelte Pflege der Datenbank ist das dann auch nicht unbedingt. Bei Tests kann immer eine aktuelle Sicherung der echten Datenbank auf die Testdatenbank zurückgesichert werden. Bei Änderungen der DB werden diese erst getestet und dann in die Hauptdatenbank übernommen.

Fand ich bisher immer die einfachste Möglichkeit. Ich wollte zwar auch schon den Zugriff auf die Datenbank speziell kapseln, aber weiß noch nicht genau wie das funktionieren soll. Interfaces wären da ja sicherlich das Mittel zum Zweck.


wie groß wird denn die Anwendung? sind da 2 Tabellen dabei oder wird das einen entsprechenden Umfang annehmen? Wie ist die BUsinesslogik? Einfachste CRUD (wie bei einer ToDo-APp) oder müssen auch konkrete Anforderungen erfüllt werden (Berechnungen, Abhängigkeiten,...)

Nimm dir die Zeit und schau dir mal ein, zwei OPF an, auch wenn es schwer ist, schau dir tiopf an, ggf. auch kommerzielle Systeme (TMS, Devart). Ja, das ist ein verdammt schwerer Einstieg, wenn Du aber in ein paar Jahren die Software immer noch pflegen musst, lohnt sich das meiner Meinung nach...
Also es wird eine auf unsere Firma zugeschnittene Dokumentenverwaltung [DMS]. Aktuell habe ich 17 Tabellen in denen diverse Infos stehen. Die Wahrscheinlichkeit das da noch welche dazu kommen ist sehr hoch. Aktuell bin ich immer noch so halb in der Planphase, habe aber bereits schon angefangen die ein oder andere DLL zu schreiben, weshalb ich auf diese Frage gekommen bin.

Tabellen die auf jeden Fall noch dazu kommen sind welche zum Protokollieren der Änderungen von Berechtigungen, Dokumenten, Schlagwörtern, ... (da habe ich aktuell auch noch nicht die ultimative Lösung wie ich das ohne extrem viel Aufwand protokollieren könnte).

Die Software wird bestimmt noch in den nächsten Jahren (wenn sie denn mal funktioniert) erweitert. Es wird kein Produkt das verkauft werden soll (zumindest aktuell nicht und ich denke, dass sich das auch nicht ändern wird). Die Software wird ausschließlich in unserer Firma verwendet.

CRUD (musste erstmal nachschauen was das bedeutet ): Ja, also es stehen Daten in der Datenbank die abgerufen und entsprechend angezeigt werden. Ein Berechtigungssystem ähnlich wie bei NTFS soll auch enthalten sein. Hierzu hatte ich auch mal einen Thread eröffnet wie man das am Besten umsetzt. Habe aber mittlerweile denke ich die Lösung welche ich in dem Thread auch schon vorgestellt hatte.

Was genau meinst du mit Berechnungen und Abhängigkeiten? Sowas wird ja dann normalerweise auf Programmebene und nicht in der Datenbank gemacht. Oder verstehe ich da jetzt etwas grundlegend falsch?


Gruß Aviator
  Mit Zitat antworten Zitat