Projet MVC-CD. Des modèles intelligents pour accroître la productivité du développement des logiciels de gestion



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

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

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

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

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

Bases de données relationnelles

Les bases de données

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

CREATION WEB DYNAMIQUE

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

Le Langage SQL version Oracle

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

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

Bases de données avancées

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

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

OpenPaaS Le réseau social d'entreprise

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

Historisation des données

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

APIs de table pour SQL Server

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

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Le langage SQL (première partie) c Olivier Caron

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

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

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

PROJET 1 : BASE DE DONNÉES REPARTIES

Langage SQL : créer et interroger une base

Bases de données et sites WEB

Les bases de données Page 1 / 8

TP Contraintes - Triggers

INTRODUCTION : Données structurées et accès simplifié

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

Information utiles. webpage : Google+ : digiusto/

APIs de table pour SQL Server

I4 : Bases de Données

SQL Historique

A QUOI SERVENT LES BASES DE DONNÉES?

16H Cours / 18H TD / 20H TP

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

Devoir Data WareHouse

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

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Vincent Augusto

Application web de gestion de comptes en banques

Le langage SQL Rappels

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

PHP 4 PARTIE : BASE DE DONNEES

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

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Dossier I Découverte de Base d Open Office

Bases de Données Avancées

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

Intégrité des données

Bases de données avancées Introduction

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données élémentaires Maude Manouvrier

Création et Gestion des tables

Projet de synthèse PostgreSQL. LOGEON Vincent TSGERI 2011/2012

Introduction à JDBC. Accès aux bases de données en Java

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

AGRÉGATION «ÉCONOMIE ET GESTION»

UE 8 Systèmes d information de gestion Le programme

Du 10 Fév. au 14 Mars 2014

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

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

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

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

PHP 5. La base de données MySql. A. Belaïd 1

Conception des bases de données : Modèle Entité-Association

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1 Introduction et installation

Rappel sur les bases de données

Bases de Données Réparties

Bases de Données Relationnelles. Le Modèle Relationnel

Modélisation de bases de données : Le modèle relationnel

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

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

Cours Bases de données

Introduction aux SGBDR

Bases de données cours 1

Table des matières. Avant-propos

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Master I Génie Logiciel

CATALOGUE FORMATIONS DOMAINE Bases de données

Bases de données Outils de gestion

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

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

Présentation du module Base de données spatio-temporelles

Conception d une base de données

Mysql avec EasyPhp. 1 er mars 2006

Présentation du PL/SQL

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

Olivier Mondet

Principes de la conception des bases de données

Transcription:

Projet MVC-CD Des modèles intelligents pour accroître la productivité du développement des logiciels de gestion Les APIs de tables (TAPIs) du modèle physique relationnel Sommaire. Préambule... 2 2. Que sont les APIs de tables?... 3 3. Transformation de modèles... 4 4. Services offerts... 5 4.. Type de données... 5 4.2. Clé primaire... 5 4.2.. Table indépendante... 5 4.2.2. Table dépendante... 6 4.3. Ordonnancement... 6 4.3.. Entité indépendante et dépendante... 7 4.3.2. Extrémité d association de degré n... 7 4.4. Contrainte de non modification {frozen}... 8 4.5. Attributs de pseudo entité associative... 9 4.6. Associations réflexives du MCD... 9 4.7. Généralisation/spécialisation du MCD... 9 4.8. Colonnes d'audit... 9 4.9. Table de journalisation... 0 5. APIs de table pour Oracle... 5.. Principes... 5.2. Types de données... 5.3. Clé primaire... 2 5.3.. Table indépendante... 2 5.3.2. Table dépendante... 3 5.4. Ordonnancement... 4 5.4.. Entité indépendante... 4 5.4.2. Entité dépendante et extrémité d association... 4 /9

5.5. Contrainte de non modification de colonne... 5 5.6. Colonnes d audit... 6 5.7. Table de journalisation... 7 6. Bibliographie... 9 6.. Documents relatifs au projet MVC-CD... 9 6.2. Documents relatifs à nos cours... 9. Préambule Notre article Des modèles intelligents pour accroître la productivité du développement des logiciels de gestion [MVC-CD-0] présente le projet de recherche MVC-CD. Cet article-ci s'attache à un élément particulier du projet MVC-CD, à savoir la génération automatique d'apis de tables, abrégées TAPIs, lors de la transformation d'un modèle conceptuel de données en un modèle physique de données relationnel. Nous commencerons cet article en explicitant notre vision des APIs de tables et ensuite, nous présenterons nos APIs de table qui, à ce stade du projet, ne sont pas encore complètes mais, illustrent parfaitement l'intention. Nous avons un travail en cours tendant à réaliser des APIs de table pour SQL Server sachant que la phase exploratoire actuelle est menée avec le SGBDR Oracle. TApis.docx 2/9

2. Que sont les APIs de tables? Nous nous sommes inspirés du concept de TAPis-Tables APIs de l'outil CASE Designer d'oracle [MD-02] pour définir nos propres APIs de tables. Les APIS de tables sont propres au modèle physique relationnel et ont pour but d'étendre le langage SQL de spécification des données (SQL-DDL 2 ). Programme Les APIs de tables offrent une simulation d'encapsulation des données du modèle relationnel; toute commande de manipulation de données peut être interceptée pour être enrichie. Op. SQL -INSERT -UPDATE -DELETE SGBD relationnel Procédures stockées - L'interception des commandes se fait par l'intermédiaire des déclencheurs (les triggers des systèmes de gestion de bases de données relationnelles). - L'enrichissement se fait en recourant à du code spécifique (les procédures stockées des bases de données relationnelles). Triggers Table Figure - Représentation symbolique des APIs de tables Les APIs de tables peuvent prendre en charge de nombreuses contraintes que le langage SQL ne supporte pas; il peut s'agir de contraintes de: - non modification de valeur; - traçabilité des opérations effectuées (colonnes d'audit et journalisation); - vérification de conformité (au-delà de ce que permettent les contraintes de CHECK usuelles); - calculs; - Naturellement, toutes ces contraintes découlent des spécifications formelles contenus dans le modèle conceptuel de données; ces spécifications formelles, de leur côté, découlent de règles métier ou de contraintes de gestion 3. 2 SQL-DDL: Data Definition Language as part of Structured Query Language 3 La journalisation des tables peut provenir d'une contrainte de gestion spécifiant que la traçabilité de certaines données doit être garantie. TApis.docx 3/9

3. Transformation de modèles i MCD Automate MVC-CD Le modèle physique de données (MPD) et les APIs de tables sont recréés par l automate à chaque itération à partir des spécifications contenues dans le modèle conceptuel (MCD). La transformation 2 entre modèle logique (MLD) et modèle physique (MPD) est réalisée par VP ; il s agit par exemple de la création de tables avec les spécificités d un constructeur particulier. i i- MLD 2 (APIs de tables) MPD SGBD Oracle Figure 2 - Représentation symbolique de l'automate de transformation Dans la version actuelle du plugin,.x, nous créons les TAPIs directement depuis le MCD (lien de la Figure 2) ; dans une version future, probablement 2.x, nous passerons par l intermédiaire d un MLD relationnel indépendant de tout constructeur. Nous avons rédigé cet article dans cette perspective. Nous commençons par expliciter les spécifications formelles sur la base du MCD ; ensuite, nous présentons le MLD en exposant la nécessité de recourir aux TAPIs et pour finir, nous documentons les TAPIs dans la perspectives de plusieurs constructeurs ou produits (Oracle, SQL Server). TApis.docx 4/9

4. Services offerts 4.. Type de données Figure 3 - Type de donnée des attributs (MCD) 2 Au niveau conceptuel, nous avons des types de données relativement riches comme par exemple les types word 4 et token 5 qui limitent les caractères autorisés dans un attribut textuel [Plus de détails en MD-0]. Le langage SQL-DDL ne prend pas en compte ces contraintes ; nous les réaliseront au travers des APIs de tables. Les types de données enrichis ne sont pas reportés au niveau logique ; les attributs de type word ou token deviennent des colonnes de type VARCHAR 2; les contraintes de limitation de caractères sont générées par les APIs de tables. Figure 4 - Type de données des colonnes (MLD/MPD) 4.2. Clé primaire Si le SGBD ne prend pas en compte la génération automatique de valeurs de clé primaire, les TAPIs réaliseront cette tâche. Le concept de clé primaire étant une nécessité du modèle relationnel, nous ne l aborderons pas sous l aspect du modèle conceptuel. [Plus de détails en MD-0] 4.2.. Table indépendante La valeur de clé primaire doit être unique pour l ensemble des tuples de la table. Figure 5 - Colonne de clé primaire indépendante 4 word : chaîne de caractères sans caractère de contrôle et sans espace 5 token : chaîne de caractères sans caractère de contrôle et sans espaces contigus TApis.docx 5/9

4.2.2. Table dépendante La valeur de clé primaire doit être unique pour les tuples enfants du tuple de la table parent (ou des tuples des tables parentes de manière plus générale). Figure 6 - Colonne de clé primaire dépendante 4.3. Ordonnancement L ordonnancement d occurrences d entité (niveau conceptuel) respectivement de tuples (niveau logique relationnel) peut s appliquer à : - Une entité indépendante ; - Une entité dépendante ; - Une extrémité d association. [Plus de détails en MD-0 et MD-03] Le langage SQL-DDL ne prend pas en compte les mécanismes d ordonnancement; nous les réaliserons au travers des APIs de tables. De plus les TAPIs offriront les services de modification d ordonnancement, soit :. {contrainte_ordered}_first ({pk}) Mettre l enregistrement en ère position 2. {contrainte_ordered}_previous ({pk}) Avancer l enregistrement d une position 3. {contrainte_ordered}_next ({pk}) Reculer l enregistrement d une position 4. {contrainte_ordered}_last ({pk}) Mettre l enregistrement en dernière position {contrainte_ordered} {pk} Nom de la contrainte d ordonnancement Colonne(s) constitutive(s) de la clé primaire comme paramètres de référence au tuple à traiter TApis.docx 6/9

4.3.. Entité indépendante Figure 7 - Contrainte d'ordonnancement sur une entité La contrainte {ordered} est transformée en une colonne numérique AUTOORDERED. Une contrainte d unicité sur la colonne AUTOORDERED est créée lors de la tranformation. Figure 8 - Colonne d'ordonnancement indépendante 4.3.2. Entité dépendante ou extrémité d association de degré n Figure 9 - Contrainte d'ordonnancement sur une extrémité d'association de degré n TApis.docx 7/9

La contrainte {ordered} est transformée en une colonne numérique {contrainte_ordered}_autoordered. Une contrainte d unicité est créée lors de la tranformation ; elle est basée sur les colonnes : - cat_distribue_num - cat_distribue_autoordered Figure 0 - Colonne d'ordonnancement dépendante 4.4. Contrainte de non modification {frozen} Une contrainte de non modification s applique à une association ou à un attribut 2. Figure - Contraintes {frozen} au niveau conceptuel 2 TApis.docx 8/9

Au niveau logique la contrainte va s appliquer : - aux colonnes de clé étrangères créées par la transformation de l association ; - à la colonne créée par la transformation de l attribut 6. Figure 2 - Contraintes {frozen} au niveau logique Le langage SQL-DDL ne prend pas en compte les contraintes de non modification de colonnes ; nous les réaliserons par les APIs de tables. 4.5. Attributs de pseudo entité associative 4.6. Associations réflexives du MCD 4.7. Généralisation/ spécialisation du MCD 4.8. Colonnes d'audit Les colonnes d audit sont propres au modèle logique relationnel mais, nous les spécifions déjà au niveau du modèle conceptuel conformément à notre volonté d éviter l étape d enrichissement logique. Pour rappel, nous utilisons la valeur marquée <audit=true> pour spécifier la création et l alimentation de colonnes d audit. Figure 3 - Spécification de colonnes d'audit au niveau conceptuel Les colonnes d audit 2 sont créées lors de la transformation. 4 colonnes sont créées pour savoir par qui et quand un tuple a été créé ou modifié la dernière fois. [Plus de détails en MD-0]. Le langage SQL-DDL ne prend pas en compte l alimentation des colonnes d audit; nous la réaliserons au travers des APIs de tables. 2 Figure 4 - Colonnes d'audit 6 Nous avons déjà décidé de reporter la contrainte {frozen} de l attribut à la colonne, par contre, nous n avons encore pas pris de décision pour la contrainte {frozen} sur l association. TApis.docx 9/9

4.9. Table de journalisation La journalisation est propre au modèle logique relationnel mais, nous la spécifions déjà au niveau du modèle conceptuel conformément à notre volonté d éviter l étape d enrichissement logique. Pour rappel, nous utilisons la valeur marquée <journal=true> pour spécifier la création et l alimentation de la table de journalisation. Figure 5 - Spécification de journalisation au niveau conceptuel La table de journalisation 2 est créée lors de la transformation. [Plus de détails en MD-0]. Le langage SQL-DDL ne prend pas en compte l alimentation de la table de journalisation; nous la réaliserons au travers des APIs de tables. 2 Figure 6 Table de journalisation TApis.docx 0/9

5. APIs de table pour Oracle 5.. Principes A chaque table est associé un conteneur de déclencheurs et un paquetage de procédures stockées 2. 2 Figure 7 (Oracle) Déclencheurs et procédures stockées pour Oracle 5.2. Types de données Une procédure checktype_column est créée 7 ; elle va lever une erreur si le type de donnée n est pas correct. La procédure est appelée par les déclencheurs avant insertion et modification. Figure 8 Contrôle des types de données PROCEDURE checktype_column(pio_crtrec IN OUT Produits%ROWTYPE) IS BEGIN IF INSTR(pio_crtrec.code, ' ' ) > 0 THEN raise_application_error(-2000, 'Table: Produits, Colonne: code, mpd.constraint.mess.err.datatype.word, Les espaces ne sont pas autorisés pour une données de type: word'); END IF; END IF; Tableau (Oracle) Vérification d'une donnée qui doit être de type conceptuel word 7 Spécifiquement au sein du paquetage de TAPis propre à la table [Figure 7] TApis.docx /9

5.3. Clé primaire 5.3.. Table indépendante Une séquence est créée ainsi qu une procédure autogen_column_ins qui va se charger d'interroger la séquence et d'affecter la colonne de clé primaire. La procédure est appelée par le déclencheur avant insertion. Figure 9 (Oracle) Séquence d'alimentation de clé primaire de table indépendante PROCEDURE autogen_column_ins(pio_crtrec IN OUT Commandes%ROWTYPE) IS BEGIN IF pio_crtrec.num IS NULL THEN SELECT Cde_SEQPK.NEXTVAL INTO pio_crtrec.num FROM DUAL; END IF; Tableau 2 (Oracle) Alimentation de la valeur de clé primaire d une table indépendante TApis.docx 2/9

5.3.2. Table dépendante La procédure autogen_column_ins va rechercher la plus grande valeur existante parmi les enregistrements frères, incrémenter cette valeur de et l'affecter à la colonne de clé primaire. Figure 20 - Colonne de clé primaire de table dépendante PROCEDURE autogen_column_ins(pio_crtrec IN OUT LignesCdes%ROWTYPE) IS BEGIN IF pio_crtrec.numdep IS NULL THEN SELECT NVL(MAX(numDep), 0) + INTO pio_crtrec.numdep FROM LignesCdes WHERE (=) AND LignesCdes.Cde_comporte_num = pio_crtrec.cde_comporte_num; END IF; Tableau 3 (Oracle) Alimentation de la valeur de clé primaire de table dépendante TApis.docx 3/9

5.4. Ordonnancement 5.4.. Entité indépendante 8 2 Une séquence est créée ; comme pour la clé primaire [Chapitre 5.3.], la procédure autogen_column_ins va se charger d'interroger la séquence et affecter la colonne d ordonnancement 2. Les procédures d ordonnancement sont aussi créées [4.3]. Figure 2 - (Oracle) Séquence d'alimentation de colonne d'ordonnancement de table issue d'entité indépendante 5.4.2. Entité dépendante et extrémité d association 9 La procédure autogen_column_ins va alimenter les colonnes d ordonnancement dépendantes comme les clés primaires de tables dépendantes [Chapitre 5.3.2]. Dans le cas de l exemple ci-contre, la colonne Cat_distribue_AUTOORDERED sera dépendante de la colonne du lien d identification Cat_distribue_num. Les procédures d ordonnancement sont aussi créées [4.3]. Figure 22 - Colonne d'ordonnancement dépendante 8 MCD-MLD de référence en Chapitre 4.3. 9 MCD-MLD de référence en Chapitre 4.3.2 TApis.docx 4/9

5.5. Contrainte de non modification de colonne 0 Une procédure frozen_column est créée ; elle va lever une erreur si une colonne non modifiable est modifiée. La procédure est appelée par les déclencheurs avant insertion et modification. Figure 23 Contrôle de non modification de colonne PROCEDURE frozen_column( pio_newrec IN OUT Commandes%ROWTYPE, pio_oldrec IN OUT Commandes%ROWTYPE) IS BEGIN IF pio_newrec.cli_passe_num <> pio_oldrec.cli_passe_num THEN raise_application_error(-2000, 'Table: Commandes, Colonne: Cli_passe_num, mpd.constraint.mess.err.fk.frozen, La valeur de la colonne n''est pas modifiable car elle est partie de la contrainte de clé étrangère FK_Cde_Cli_passe qui est non modifiable'); END IF; Tableau 4 (Oracle) Vérification de non modification d une colonne 0 MCD-MLD de référence en Chapitre 4.4 TApis.docx 5/9

5.6. Colonnes d audit Deux procédures autogen_column_ins et autogen_column_upd sont créées ; elles vont alimenter les colonnes d audit d ajout respectivement de modification. Les procédures sont appelées par les déclencheurs avant insertion et modification. Figure 24 Colonnes d audit PROCEDURE autogen_column_ins(pio_crtrec IN OUT Clients%ROWTYPE) IS BEGIN pio_crtrec.ctrlajuser := USER; pio_crtrec.ctrlajdate := SYSDATE; END; Tableau 5 (Oracle) Alimentation des colonnes d audit pour l ajout d un tuple MCD-MLD de référence en Chapitre 4.8 TApis.docx 6/9

5.7. Table de journalisation 2 Une procédure ins_jn est créée ; elle va alimenter la table de journalisation. La procédures est appelée par les déclencheurs avant insertion, modification et suppression. Figure 25 - Table de journalisation PROCEDURE ins_jn( pi_crtrec IN Clients%ROWTYPE,pi_mode IN VARCHAR2 ) IS BEGIN END; IF pi_mode = 'DEL' THEN INSERT INTO Clients_JN (JN_OPERATION,num ) VALUES (pi_mode,pi_crtrec.num ); ELSE INSERT INTO Clients_JN (JN_OPERATION,num,eMail ) VALUES (pi_mode,pi_crtrec.num,pi_crtrec.email ); END IF; 2 MCD-MLD de référence en Chapitre 4.9 TApis.docx 7/9

Tableau 6 (Oracle) Alimentation des colonnes d audit pour l ajout d un tuple TApis.docx 8/9

6. Bibliographie 6.. Documents relatifs au projet MVC-CD MVC-CD-00 Site de documentation du projet MVC-CD http://lgl.isnetne.ch/sagex35793/index.htm MVC-CD-0 Des modèles intelligents pour accroître la productivité de logiciels de gestion Présentation du projet MVC-CD http://lgl.isnetne.ch/publications/mvc_cd/smartmodels.pdf 6.2. Documents relatifs à nos cours MD-0 MD-02 Modélisation des données 204, P.-A. Sunier http://lgl.isnetne.ch/bachelorii/modelisation/donnees/modelisationdonnees.pdf Designer et l'ingénierie du logiciel Les APIs de tables pour garantir l'intégrité des données 2005, P-A Sunier, C. Kohler et P. Ferrara http://lgl.isnetne.ch/publications/soug/designer/article004.pdf MD-03 Modélisation des données Les contraintes déclaratives 203, P.-A. Sunier http://lgl.isnetne.ch/modelisation-2005/chapitre_50/contraintes.pdf Neuchâtel, les 8 mars 205 et 6 avril 205 P.-A. Sunier Professeur HES Haute école de gestion Arc Espace de l'europe 2 2000 Neuchâtel pierre-andre.sunier@he-arc.ch http://lgl.isnetne.ch TApis.docx 9/9