Assez long. voir le résumé en bas.
SGBDR
Un SGBDR est synonyme de système de gestion de base de données relationnelle. C'est un système pour gérer une base de données relationnelle. Les données sont stockées là. Les données. Cela ne dit pas la logique commerciale.
Processus d'affaires
Qu'est-ce que la logique commerciale signifie vraiment? Pour moi, c'est une description des processus métier en termes logiques.
Les processus sont les activités commerciales qui se produisent régulièrement, suffisamment pour qu’elles ne soient plus ad hoc. Celles-ci sont différentes pour chaque entreprise.
Permettez-moi de mettre le cap sur mes affaires et d'expliquer ce que signifie entreprise ici. Pour certains, cela peut être une surprise.
Affaires
Les affaires sont la somme des activités réalisées pour créer de la valeur, et plus spécifiquement de la valeur pouvant être échangée. Cela pourrait signifier faire des moissonneuses-batteuses, des sandwichs au thon ou des services bancaires. Dans la plupart des pays du monde, même dans les systèmes non capitalistes, les gens aiment obtenir le meilleur rapport qualité-prix, et il existe donc une concurrence entre différents fournisseurs de ces biens et services de valeur. La concurrence repose généralement sur le prix, la qualité et la disponibilité.
Petit détour: vous avez besoin de 40 millions de rivets en 2 jours, vous n’allez pas commander à un type sur Internet avec un compte paypal, peu importe combien son prix est inférieur à celui de votre fournisseur habituel.
Connaissance du processus
Comme vous pouvez l'imaginer, les processus impliqués dans la création de cette "valeur" résident principalement dans les chefs de secrétariat. Une partie de cette somme est mise sur papier et utilisée comme politique et procédures de l'entreprise. Une partie de celle-ci réside dans la tête des avocats d'entreprise. Une grande partie de cela réside dans la tête des responsables des divisions, des départements, des équipes et des opérateurs, des caisses enregistreuses, des fours et des camions. Un petit sous-ensemble de ces équipements réduit les exigences commerciales en matière de logiciels, et un sous-ensemble encore plus petit de ceux-ci est précis au moment de sa mise en œuvre dans les systèmes informatiques.
En fin de compte, la logique métier que vous voyez dans le code n'est pas celle qui exécute une entreprise, c'est celle qui exécute l'application pour l'entreprise. Les processus internes de l'entreprise sont gérés par des cerveaux et ils n'ont aucune difficulté à comprendre que le processus dans leur cerveau est plus précis que le processus de l'ordinateur. En passant, vous ne pourriez probablement pas diriger l’entreprise si vous ne respectiez que les politiques et procédures de la plupart des sociétés. Celles-ci sont très souvent inexactes, malgré les efforts herculéens.
En fin de compte, c'est la logique de l'application qui est codée dans le logiciel. Et les gens veulent inclure cela dans la base de données, car les fournisseurs de systèmes de gestion de base de données ont fait des déclarations grandioses.
Logique d'application
Je dis NON. Je dis que la logique de l'application reste à l'intérieur de l'application. Les données vont dans la base de données, de manière très normalisée, puis sont envoyées ETL'd au datawarehouse pour la génération de rapports, le forage, la synthèse, le pivotement et le cubage.
Les données
Je dis aussi que les données survivent à l'application, de sorte que l'effort de normalisation des données ne devrait pas être spécifique à une application, ni même à une entreprise, mais plutôt à une entreprise générale. Stockez-vous les codes d'état? Vous devez utiliser INCITS 38: 2009 (http://www.census.gov/geo/www/ansi/statetables.html) car ce logiciel est portable pour toutes les entreprises. Cela facilite également la manipulation des données par plusieurs applications.
NoSQL?
Si vous traitez la base de données comme faisant partie du code de l'application, de la disposition des tables aux déclencheurs, procédures stockées et formats de données, vous utilisez essentiellement la base de données d'entreprise comme une BerkleyDB glorifiée, qui est une structure de fichiers plats glorifiée, ce qui est vraiment juste des listes persistantes. C'est essentiellement ce que NoSQL est en train de faire: revenir aux racines, mais le faire de manière multi-processus, persistante et tolérante aux pannes.
Code actuel
Non, vous devez traiter la base de données comme un référentiel commun de données pour plusieurs applications, actuelles et futures. Nous arrivons maintenant au coeur de mon argumentation. Les processus commerciaux changent avec les aléas du marché, de la politique et de la mode. Très souvent, ils changent plus rapidement que ce que les codeurs peuvent gérer avec des langages informatiques (Java, C #, C ++, etc.) et finissent par être écrits en VBA dans des feuilles de calcul Excel du département comptabilité ou marketing. (Et seulement si cela ne peut pas être exprimé en vlookups de fantaisie ...)
Dégradation de la base de données
Les données ne changent pas beaucoup si elles sont bien organisées. La logique métier change très vite. En plaçant la logique métier dans la base de données, vous la rendez moins précieuse, car elle deviendra rapidement obsolète et inexacte.
Sommaire
Les données doivent survivre à l'application, car les processus métier y sont actifs et changent beaucoup plus souvent. Inclure la logique métier dans la base de données nuit à sa longévité et à sa valeur globale.
Caveat
J'ai fait ma part de travail et j'ai lu les réponses sur dba.se, mais en toute honnêteté, il est question de problèmes d'intégrité des données et de performances. Je suis tout à fait d’accord pour dire que les personnes qui manipulent des données d’entreprise doivent savoir ce qu’elles font, qu’il s’agisse de dba ou programmeur ou d’un analyste senior SAS disposant d’un accès en lecture / écriture.
J'ai également noté qu'ils recommandent aux codeurs de connaître SQL. Je suis d'accord. C'est un langage de programmation informatique, donc je ne vois pas pourquoi les programmeurs ne voudraient pas le savoir.
Plus tard, après y avoir pensé
Je pense que le moyen terme est de créer une API et de la laisser gérer le flux de données. Si vous ne pouvez pas autoriser les applications à se connecter directement aux tables, vous pouvez au moins configurer le mécanisme d'accès dans les langues modernes.