Länglich. siehe Zusammenfassung unten.
RDBMS
Ein RDBMS steht für relationales Datenbankmanagementsystem. Es ist ein System zur Verwaltung einer relationalen Datenbank. Dort werden die Daten gespeichert. Die Daten. Es heißt nicht Geschäftslogik.
Geschäftsprozess
Was bedeutet eigentlich Geschäftslogik? Für mich ist es die logische Beschreibung von Geschäftsprozessen.
Prozesse sind jene Geschäftsaktivitäten, die regelmäßig stattfinden, so dass sie nicht mehr ad hoc sind. Diese sind für jedes Unternehmen unterschiedlich.
Lassen Sie mich meine Geschäftsbeschränkung aufsetzen und erklären, was Geschäft hier bedeutet. Für manche mag dies eine Überraschung sein.
Geschäft
Geschäft ist die Summe der Aktivitäten, die zur Wertschöpfung durchgeführt werden, insbesondere der Wert, der gehandelt werden kann. Dies kann bedeuten, dass Mähdrescher, Thunfischsandwiches oder Bankdienstleistungen erbracht werden. In den meisten Ländern der Welt, auch in nichtkapitalistischen Systemen, möchten die Menschen den höchsten Gegenwert für ihr Geld erzielen, und daher gibt es einen Wettbewerb zwischen verschiedenen Anbietern dieser geschätzten Waren und Dienstleistungen. Der Wettbewerb hängt im Allgemeinen von Preis, Qualität und Verfügbarkeit ab.
Schneller Umweg: Sie benötigen 40 Millionen Nieten in 2 Tagen. Sie werden nicht bei einem Mann im Internet mit einem Paypal-Konto bestellen, egal wie viel billiger sein Preis ist als der Ihres normalen Verkäufers.
Prozesswissen
Wie Sie sich vorstellen können, leben die Prozesse, die zur Schaffung dieses "Wertes" erforderlich sind, hauptsächlich in den Führungskräften. Ein Teil davon wird auf Papier gebracht und als Unternehmensrichtlinien und -verfahren verwendet. Ein Teil davon lebt in den Leitern der Unternehmensberatung. Vieles davon lebt im Kopf der Leute, die die Abteilungen, Abteilungen, Teams und die Maschinen, die Registrierkassen, die Öfen und die Lastwagen leiten. Eine kleine Teilmenge davon reduziert die geschäftlichen Anforderungen an Software, und eine noch kleinere Teilmenge davon ist genau, wenn sie in Computersystemen implementiert wird.
Letztendlich ist die Geschäftslogik, die Sie im Code sehen, nicht diejenige, die ein Geschäft betreibt, sondern diejenige, die die Anwendung für das Geschäft betreibt. Die tatsächlichen Gehirne in den tatsächlichen Menschen enthalten die tatsächlichen Geschäftsprozesse, und sie haben kein Problem damit, zu verstehen, dass der Prozess in ihrem Gehirn genauer ist als der Prozess im Computer. Abgesehen davon könnten Sie das Geschäft wahrscheinlich nicht führen, wenn Sie nur die Richtlinien und Verfahren der meisten Unternehmen hätten. Sehr oft sind diese grob ungenau, trotz herkulischer Bemühungen.
Letztendlich ist es also die Anwendungslogik, die in der Software codiert ist. Und die Leute wollen das in die Datenbank aufnehmen, weil die Anbieter von Datenbankverwaltungssystemen grandiose Ansprüche erhoben haben.
Anwendungslogik
Ich sage nein. Ich sage Anwendungslogik bleibt in der Anwendung. Die Daten werden auf eine sehr normalisierte Weise in der Datenbank abgelegt und dann per ETL an das Data Warehouse weitergeleitet, um Berichte zu erstellen, zu bohren und zu rollen sowie zu drehen und zu würfeln.
Daten
Ich sage auch, dass die Daten die Anwendung überleben, sodass der Aufwand für die Datennormalisierung nicht anwendungsspezifisch und nicht einmal geschäftsspezifisch sein sollte, sondern allgemeiner Natur sein sollte. Speichern Sie staatliche Codes? Sie sollten INCITS 38: 2009 (http://www.census.gov/geo/www/ansi/statetables.html) verwenden, da dies unternehmensweit übertragbar ist. Dies erleichtert auch mehreren Anwendungen das Manipulieren der Daten.
NoSQL?
Wenn Sie die Datenbank als Teil des Codes der Anwendung behandeln, vom Tabellenlayout bis zu den Triggern, gespeicherten Prozeduren und Datenformaten, verwenden Sie die Unternehmensdatenbank im Wesentlichen als verherrlichte BerkleyDB, eine verherrlichte flache Dateistruktur. Das ist wirklich nur persistierte Listen. Dies ist im Wesentlichen das, was NoSQL tut: Zurück zu den Wurzeln, aber dies in einer Multiprozess-beständigen und fehlertoleranten Weise.
Tatsächlicher Code
Nein, Sie müssen die Datenbank als ein gemeinsames Datenrepository für mehrere aktuelle und zukünftige Anwendungen behandeln. Jetzt kommen wir zum Kern meiner Argumentation. Geschäftsprozesse ändern sich mit den Launen des Marktes, der Politik und der Mode. Sehr oft ändern sie sich schneller als das, was Programmierer mit Sprachen für Computerwissenschaften (Java, C #, C ++ usw.) können, und werden in der Buchhaltungs- oder Marketingabteilung in Excel-Tabellen in VBA geschrieben. (Und nur wenn es nicht in ausgefallenen Lookups ausgedrückt werden kann ...)
Verschlechterung der Datenbank
Die Daten ändern sich nicht viel, wenn sie gut organisiert sind. Die Geschäftslogik ändert sich sehr schnell. Durch das Einfügen von Geschäftslogik in die Datenbank wird die Datenbank weniger wertvoll, da sie früher veraltet und ungenau wird.
Zusammenfassung
Daten müssen die Anwendung überleben, da Geschäftsprozesse in der Anwendung ablaufen und sich Geschäftsprozesse viel häufiger ändern. Das Einbeziehen von Geschäftslogik in die Datenbank ist schlecht für die Langlebigkeit und den Gesamtwert.
Vorbehalt
Ich habe meinen Teil von dba-ing getan und die Antworten auf dba.se gelesen, aber ehrlich gesagt geht es um Datenintegritäts- und Leistungsprobleme. Ich stimme voll und ganz zu, dass Personen, die Unternehmensdaten berühren, wissen sollten, was sie tun, ob DBA oder Programmierer oder SAS-Senior-Analyst mit Lese- / Schreibzugriff.
Ich bemerkte auch, dass sie Codierer empfehlen, SQL zu kennen. Genau. Es ist eine Computerprogrammiersprache, daher verstehe ich nicht, warum Computerprogrammierer es nicht wissen wollen.
Später, nachdem ich darüber nachgedacht habe
Ich denke, der Mittelweg besteht darin, eine API zu erstellen und diese API den Datenfluss hin und her verwalten zu lassen. Wenn Sie nicht zulassen können, dass Apps eine direkte Verbindung zu Tabellen herstellen, können Sie den Zugriffsmechanismus zumindest in modernen Sprachen einrichten.