Designer et l ingénierie du logiciel Les APIs de tables pour garantir l intégrité des données



Documents pareils
1.2 Genèse. 1.3 Version de Designer utilisée

APIs de table pour SQL Server

TP Contraintes - Triggers

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

APIs de table pour SQL Server

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

CATALOGUE FORMATIONS DOMAINE Bases de données

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Administration des bases de données. Jean-Yves Antoine

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

CHAPITRE 1 ARCHITECTURE

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Bases de données et sites WEB

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Auto-évaluation Oracle: cours de base

Département Génie Informatique

Notes de cours : bases de données distribuées et repliquées

Cours Bases de données 2ème année IUT

Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza

INDUSTRIALISATION ET RATIONALISATION

CREATION WEB DYNAMIQUE

Intégrité des données

Méthodologies de développement de logiciels de gestion

Technologie data distribution Cas d usage.

Mysql. Les requêtes préparées Prepared statements

Cours Bases de données 2ème année IUT

Bases de Données relationnelles et leurs systèmes de Gestion

Gestion des utilisateurs et de leurs droits

Les bases de données Page 1 / 8

Information utiles. webpage : Google+ : digiusto/

Bases de données avancées

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Développement de base de données Microsoft SQL Server Durée : 5 jours Référence : DPSQL12. Contenu

Chapitre 10. Architectures des systèmes de gestion de bases de données

Langage SQL : créer et interroger une base

Bases de données et sites WEB Licence d informatique LI345

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

LoReNa : pour dynamiser votre Relation Client (CRM)

Les déclencheurs. Version 1.0. Grégory CASANOVA

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Création et Gestion des tables

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Introduction aux Bases de Données

Méthodologie de conceptualisation BI

Partie II Cours 3 (suite) : Sécurité de bases de données

S y m M a i l i n g. S o l u t i o n d e - m a i l i n g. SymMailing est un outil professionnel de création et de gestion de campagnes d ing.

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

//////////////////////////////////////////////////////////////////// Administration bases de données

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Bases de données relationnelles

GITI, 20 mars 2009, CERN, Genève

Programme et contenus Licence d'informatique de Lille, parcours MIAGE, en alternance ou en formation continue (13:40)

PHP 4 PARTIE : BASE DE DONNEES

DÉPARTEMENT FORMATIONS 2015 FORMATION-RECRUTEMENT CATALOGUE. CONTACTS (+226)

Cours 6. Sécurisation d un SGBD. DBA - M1ASR - Université Evry 1

ISO/CEI Technologies de l information Gestion des actifs logiciels. Partie 1: Procédés et évaluation progressive de la conformité

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Cours Bases de données 2ème année IUT

Bases de Données. Plan

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Didacticiel PowerAMC 11.0 MPD

Pour les débutants. langage de définition des données

Gestion de base de données

Projet de Java Enterprise Edition

Conception, architecture et urbanisation des systèmes d information

Compte-rendu de projet de Système de gestion de base de données

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

PG208, Projet n 3 : Serveur HTTP évolué

Intégrité sémantique dans les bases de données relationnelles

Du 10 Fév. au 14 Mars 2014

Guide de bonnes pratiques de sécurisation du système d information des cliniques

Rappel sur les bases de données

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

DESCRIPTION DES PRODUITS ET MÉTRIQUES

SQL Server 2012 Administrez une base de données : Exercices et corrigés

Programme cours ProConcept ERP

Formation. Module WEB 4.1. Support de cours

Bases de données élémentaires Maude Manouvrier

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

Historisation des données

Documentation de conception

Les fraudes utilisent nécessairement le système. L informatisation de la recherche des. fraudes simples (1/2) >> fraudes. fraudes.

Introduction au Système de Gestion de Base de Données et aux Base de Données

L2T SMS RESELLER MANUEL D UTILISATION ESPACE CLIENT AVERTISSEMENT

Pack Prélèvements Confort et Confort Plus

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

CQP ADMINISTRATEUR DE BASES DE DONNÉES (ABD)

GUIDE DE DEMARRAGE V1.02

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

UE 4 Comptabilité et Audit. Le programme

Sage 100 pour SQLServer. Version Manuel de référence

Cours Bases de données

Transcription:

Designer et l ingénierie du logiciel Les APIs de tables pour garantir l intégrité des données P.-A. Sunier, ISNet Neuchâtel avec le concours de C. Kohler et P. Ferrara 1 Introduction... 1 2 Le concept... 2 2.1 Les applications Oracle... 2 2.2 Les applications tierces... 3 2.3 Bi-polarité d utilisation... 4 3 Structure de code... 5 3.1.1 Paquetages... 5 3.1.2 Triggers... 5 3.1.3 Appel de la requête SQL-DML depuis les procédures... 6 3.1.4 Appel des procédures d APIs depuis les triggers d APIs... 7 4 Exemples de services offerts... 8 4.1 Génération de valeurs de colonnes... 8 4.1.1 Auto-incrémentation de clé primaire... 8 4.1.2 Colonnes d audit... 8 4.2 Journalisation des manipulations... 9 5 Génération... 10 6 Installation... 11 7 Liens utiles... 12 7.1 Plus d informations... 12 7.2 Références... 12 1 Introduction Dans le premier article consacré à Designer, Newsletter 2/2003 d avril 2003, sous le titre Notions élémentaires, nous avons présenté les concepts de Designer sur la base d une approche d ingénierie du logiciel alliant méthodologie, normalisation et standardisation, qualité et réutilisation. Nous avons décrit succinctement les générateurs de scripts SQL-DDL et d APIs de tables. Dans le troisième article, Newsletter 4/2003 de novembre 2003, sous le titre Modélisation de l intégrité des données, nous avons présenté la modélisation de règles métier et de l intégrité de données en tant que contraintes d intégrité aux niveaux conceptuels et logiques. Dans cet article, nous expliquerons le concept des APIs de tables, nous présenterons quelques exemples de services qu ils offrent pour garantir l intégrité des données et donnerons quelques explications sommaires quant à leur génération. Dans nos prochains articles, nous détaillerons la structure et la dynamiques des APIs de tables et nous étudierons l incidence des spécifications du référentiel sur le code généré par les générateurs de scripts SQL-DDL et d APIs de tables. Remarque: La lecture des articles précédents n est pas impérative à qui veut simplement comprendre ce que sont les APIs de tables. Article 4-1/12- Août 2005

2 Le concept 2.1 Les applications Oracle Les APIs de tables sont des paquetages PL/SQL invoqués par les applications clientes Oracle (Form, Web PL/SQL) pour exécuter des manipulations de données sur les tables. Les applications clientes Oracle n envoient pas directement de requêtes SQL-DML (INSERT, UPDATE, DELETE) de manipulations de tables mais, elles passent par l appel de procédures offertes par les APIs de tables. A chaque table est associée un paquetage PL/SQL ; chaque paquetage contient des procédures et fonctions PL/SQL permettant de réaliser les opérations de base, à savoir : Insérer un nouvel enregistrement. Mettre à jour un enregistrement. Supprimer un enregistrement. Bloquer (Lock) un enregistrement avant une mise à jour ou une suppression. La finalité des APIs de tables n est pas de remplacer les requêtes SQL-DML (INSERT, UPDATE, DELETE) par l appel de procédures PL/SQL. En fait, les APIs enrichissent ou complètent les contraintes spécifiées par les scripts SQL-DDL de définition des données: ils valident les données qui seront utilisées par les requêtes SQL-DML. Si les données sont correctes et complètes, ils envoient les requêtes SQL-DML ; si les données sont incorrectes, ils envoient un message d erreur à l application cliente appelante et n exécutent pas les requêtes SQL-DML. ils prennent en charge de multiples contraintes usuelles de SII 1 de gestion qui ne sont pas supporté par la norme SQL ANSI-92. Figure 1 - APIs pour les applications Oracle Plus concrètement, les APIs de tables effectuent les opérations suivantes avant d envoyer les requêtes SQL- DML : Validation des colonnes obligatoires. Validation des contraintes de clé primaire, de clé étrangère, d unicité ou encore de check. Validation des arcs (implantation Oracle des contraintes d exclusion entre associations, comme par exemple, un ou-exclusif). Validation de valeurs par rapport à une table de code de référence (reference code tables) Validation de valeurs de domaines. 1 SII : Système d information informatisé Article 4-2/12- Août 2005

Auto-génération de valeurs de colonnes : o Valeurs uniques et séquentielles pour les colonnes alimentées par une séquence. o Valeurs pré-définies. o Valeurs dérivées. o Informations d audit de manipulation des enregistrements. Conversion de valeurs de colonnes en majuscule. Maintien d un journal de trace de toutes les manipulations effectuées sur une table. Maintien de valeurs actualisées de colonnes dénormalisées. La liste ci-dessus, n est pas exhaustive ; de plus, le concepteur peut ajouter son propre code dans les APIs de tables pour pouvoir réaliser des contraintes qui ne sont pas prévues par Oracle. 2.2 Les applications tierces Grâce aux APIs, nous disposons de bases de données qui gèrent elles-mêmes l intégrité de leurs données. La qualité des données n est plus liée aux multiples applications clientes qui réaliseront plus ou moins bien les contrôles d intégrité ; la qualité des données ne dépend que de l exactitude du seul code des APIs de tables. Figure 2 - APIs pour les applications tierces Toutefois, cette intégrité n est garantie que si toutes les applications clientes passent par l intermédiaire des APIS de tables pour effectuer les manipulations de données et manifestement ceci n est pas possible, ne serait-ce que le cas d une manipulation directe avec SQL*Plus. Afin que l intégrité soit aussi respectée pour les applications qui font des appels directs aux requêtes SQL-DML, les APIs de tables sont couplés à des triggers. Les triggers associés aux APIs se déclenchent lors de toute requête SQL-DML et redirigent la requête vers les APIs de tables en faisant un appel à la procédure adéquate d insertion, de mise à jour ou de suppression d enregistrement. Article 4-3/12- Août 2005

2.3 Bi-polarité d utilisation Les APIs de tables peuvent être appelées par les applications clientes et par l intermédiaire des triggers lors de requête SQL-DML directes selon les choix de réalisation des applications clientes. Figure 3 - APIS pour toutes applications Lors de l appel des APIs par une application cliente Oracle, les APIs effectuent une requête SQL-DML sur la table ; cette requête est aussi interceptée par les triggers! Mais, dans ce cas, les APIs de tables ne doivent pas être appelés. Lors de l envoi d une requête SQL-DML directe, les triggers feront appel aux APIs de tables ; mais, dans ce cas, les APIs de table ne devront pas effectuer de requête de manipulation! Un mécanisme de garde est mis en place pour éviter les appels circulaires que les deux situations décrites pourraient provoquer. Nous reviendrons plus en détail sur ce mécanisme de garde dans un prochain article. Article 4-4/12- Août 2005

3 Structure de code 3.1.1 Paquetages Pour chaque table, le générateur d APIs crée un paquetage préfixé CG$ ; par exemple, pour une table REPRESENTANTS, il crée un paquetage nommé CG$REPRESENTANTS. Chaque paquetage fournit les procédures de manipulation et de verrouillage d enregistrement. Figure 4 - Procédures fournies par les APIs Les procédures ins() et upd() reçoivent en paramètre la variable cg$rec qui contient l enregistrement à insérer ou modifier ; la structure de cette variable correspond à la structure de la table. La procédure del() reçoit en paramètre la variable cg$pk qui contient la clé primaire de l enregistrement à supprimer ; la structure de cette variable correspond à la structure de clé primaire. Les paramètres do_ins, do_upd et do_del sont les gardes que nous avons présentées au chapitre précédent et qui éviteront les appels circulaires, c est-à-dire, éviter que les APIs se rappellent eux-mêmes. 3.1.2 Triggers Pour chaque table, le générateur d APIs crée un jeu de trriggers préfixé CG$ ; La figure 5 montre les triggers créés pour la table REPRESENTANTS de notre exemple. Rappel Les 3 lettres précédents le nom de la table ont la signification suivante : 1 ère lettre o B Before ; avant l événement déclencheur o A After ; après l événement déclencheur 2 ème lettre o I - INSERT o U - UPDATE o D - DELETE 3ème lettre Figure 5 - Triggers d'apis o R - for each row, pour chaque enregistrement o S statement, une fois pour l instruction Article 4-5/12- Août 2005

3.1.3 Appel de la requête SQL-DML depuis les procédures La figure 6 symbolise l appel de la requête SQL-DML par les procédures des APIs ; la figure 7 illustre cet appel par un exemple. Figure 6 - Requêtes SQL-DML Figure 7 - Procédure d'insertion ins() des APIs La figure 7 montre le code de la procédure d insertion ins() de l API de la table REPRESENTANTS; nous voyons la requête INSERT d insertion de l enregistrement dans la table REPRESENTANTS; nous pouvons aussi observer que cet appel est gardé par la variable do_ins. Article 4-6/12- Août 2005

3.1.4 Appel des procédures d APIs depuis les triggers d APIs La figure 8 symbolise le déclenchement des triggers d APIs et l appel aux procédures d APIS ; la figure 9 illustre cet appel par un exemple. Figure 8 Appel des procédures d APIs Figure 9 - Triggers avant insertion des APIs La figure 8 montre le code du trigger CG$BIR_REPRESENTANTS déclenché avant l insertion d un enregistrement de la table REPRESENTANTS. Nous voyons l appel à la procédure ins() des APIs. Nous pouvons aussi observer que cet appel est gardé par la variable called_from_package. Article 4-7/12- Août 2005

4 Exemples de services offerts Nous décrivons ci-après quelques services pris en charge par les APIs de tables dans le but d en illustrer le mécanisme par quelques exemples concrets. 4.1 Génération de valeurs de colonnes La génération automatique de valeurs de colonnes se fait par la procédure up_autogen_columns(). Cette procédure est appelée par la procédure ins() que nous avons vu précédemment mais, aussi par la procédure upd(). 4.1.1 Auto-incrémentation de clé primaire La figure 10 montre le code de génération de valeur de la colonne de clé primaire ; nous voyons que la génération de valeur de clé primaire est déclenchée seulement si l appel est fait depuis la procédure d insertion ; le champ cg$rec.numero est alimenté par le résultat de l interrogation de la séquence REPR_SEQ. Figure 10 - Procédure de génération de valeurs de colonnes Remarque : la valeur du champ NUMERO de la variable cg$rec sera donné à la colonne NUMERO de la table lors de la requête INSERT. 4.1.2 Colonnes d audit Figure 11 - Génération de valeurs La figure 11 montre le code de génération des colonnes d audit. La colonne CTRLMODATE contiendra la date du serveur à laquelle l opération est réalisée et la colonne CTRLMOUSER contiendra le nom de l utilisateur connecté. Par ailleurs, nous observons que la procédure up_autogen_columns() prend aussi en charge la transformation en majuscule de colonnes. Article 4-8/12- Août 2005

4.2 Journalisation des manipulations La journalisation de toutes les manipulations est effectuée par la procédure insert_jn() des APIs qui reçoit en paramètre, l enregistrement à journaliser et l opération (INSERT, UPDATE, DELETE) effectuée. La procédure insert_jn () est appelée par les 3 procédures ins(), upd() et del() de manipulation des données. Figure 12 - Procédure de journalisation des manipulations Remarque : Nous avons reproduit la commande INSERT dans la table de journalisation en deux parties pour en avoir une vision de synthèse ; les deux parties sont tronquées par manque de place. Article 4-9/12- Août 2005

5 Génération Les APIs de tables sont créés par le générateur d APIs de Designer à partir des spécifications du référentiel. Le générateur d APIs de tables produit les scripts de création d APIs à partir des spécifications du modèle logique de données, Server Model, tout comme le générateur de scripts SQL-DDL. Figure 13 - Génération des scripts Le générateur de scripts SQL-DDL est capable de produire des scripts de consolidation de la base de données cible ; ces scripts permettent de mettre à jour la base de données cible à partir des spécifications du référentiel sans altérer les tables existantes. Ce mécanisme de consolidation ou de «round-trip engineering», dans les AGL orientés objets, n existe pas pour le générateur de scripts d APIs de tables ; les scripts d APIs de tables (paquetages et triggers) doivent être entièrement re-générés à chaque changement de spécification des tables du modèle logique de données. Article 4-10/12- Août 2005

6 Installation Les scripts SQL-DDL de création ou de modification de tables doivent impérativement être exécutés dans la base cible avant l exécution des scripts de création d APIs. Les procédures PL/SQL et les triggers qui forment les APIs de tables réfèrent aux tables qu ils enrichissent ; ils ne peuvent pas être compilés si les tables n existent pas. De même, ils ne peuvent pas être compilés si la structure des tables de la base cible diffère de celle du modèle logique de données, Server Model, à partir duquel le générateur d APIs a produit le code. La figure 14 montre le code de déclaration du paquetage CG$REPRESENTANTS. Nous voyons la déclaration de la variable cg$row qui fait référence à la table REPRESENTANTS. Ensuite, cette variable est utilisée pour créer le type cg$row_type. Chaque membre de cette variable (NOM, SEXE, PRENOM ) est définie par la colonne correspondante de la table REPRESENTANTS; si la table venait à ne pas correspondre à cette structure, la compilation du paquetage ne serait pas possible. Figure 14 - Dépendance entre tables et APIs A chaque modification de structure des tables, il est impératif de réinstaller les paquetages et triggers des APIS de tables modifiées pour garantir leur correspondance avec les nouvelles définitions de tables. Article 4-11/12- Août 2005

7 Liens utiles 7.1 Plus d informations Si vous souhaitez plus d informations, notre site consacré à Designer est à votre disposition. Le site Designer contient plusieurs entrées ; nous n avons pas encore publié de documents spécifiques à la version 9i, nos documents les plus récents sont consacrés à la version 6i. Pour plus de détails spécifiques au APIs de tables, nous vous recommandons la lecture du rapport [CK-2003] de C. Kohler daté de 2003 et intitulé : Oracle Designer 9i - Structure de code des APIs de tables. 7.2 Références L auteur Pierre-André Sunier pierre-andre.sunier@he-arc.ch HES-SO Haute Ecole Spécialisée de Suisse occidentale www.hes-so.ch HEG-NE Haute Ecole de Gestion de Neuchâtel http://www.he-arc.ch/ ISNet Génie logiciel Site Designer Projet ISNet-14 [CK-2003] Centre de compétences Systèmes d information et informatique de gestion Centres d intérêt du laboratoire de génie logiciel sous la rubrique «Génie logiciel» Notre site de formation consacré à Designer et ses sous-sites Projet de recherche appliquée ISNet-14 Atelier de génie logiciel et génération Web Oracle Designer 9i Structure des APIS de tables http://www.is-net.ch/ http://lgl.isnetne.ch/ http://lgl.isnetne.ch/designer6i/index.htm http://lgl.isnetne.ch/isnet14/index.htm http://lgl.isnetne.ch/d6ietudiants/2002_20 03/2IGHESEE/KohlerC/index.htm Les anciens articles sont accessibles en Intranet sur le site du SOUG, www.soug.ch, ou en Internet sur le site de la He-Arc : http://lgl.isnetne.ch Article 4-12/12- Août 2005