MEGA Database Builder. Guide d utilisation



Documents pareils
MEGA ITSM Accelerator. Guide de Démarrage

MEGA ITSM Accelerator. Guide de démarrage

MEGA Application Portfolio Management. Guide d utilisation

Didacticiel PowerAMC 11.0 MPD

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Manuel d utilisation NETexcom

MEGA Merise. Guide d utilisation

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

MEDIAplus elearning. version 6.6

Alfresco Guide Utilisateur

I Pourquoi une messagerie?

UML (Diagramme de classes) Unified Modeling Language

Diagramme de classes

Créer une base de données

Tutoriaux : Faites vos premiers pas avec Microsoft Visio 2010

Guide pour la réalisation d'un document avec Open Office Writer 2.2

Université de Bangui. Modélisons en UML

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Le générateur d'activités

Sommaire. G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Qlik Sense Cloud. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Business Intelligence avec SQL Server 2012

OSIRIS/ Valorisation des données PORTAIL BO MANUEL UTILISATEUR

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

Ref : Résolution problème d'accès aux supports de cours

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Visual Paradigm Contraintes inter-associations

@telier d'initiation

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Dossier I Découverte de Base d Open Office

TeamViewer 7 Manuel Manager

et Groupe Eyrolles, 2006, ISBN :

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

Sybase PowerAMC 16. Guide des nouvelles fonctionnalités générales. DOCUMENTATION

Edutab. gestion centralisée de tablettes Android

Créer le schéma relationnel d une base de données ACCESS

Dessiner dans Galaad FRANÇOIS PALLUT

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

MEGA Architecture. Guide d utilisation

l'ordinateur les bases

MEGA Architecture. Guide d utilisation

GUIDE D UTILISATION DE L ISU SEPTEMBRE 2013 GUIDE D UTILISATION DU NAVIGATEUR UIS.STAT (VERSION BÊTA)

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

SAP BusinessObjects Web Intelligence (WebI) BI 4

Premiers pas sur e-lyco

TABLEAU CROISE DYNAMIQUE

Modélisation et Gestion des bases de données avec mysql workbench

Utilisation de l'outil «Open Office TEXTE»

McAfee Security-as-a-Service

Interface PC Vivago Ultra. Pro. Guide d'utilisation

1. Introduction Création d'une requête...2

Guide de démarrage Janvier 2012

2 Grad Info Soir Langage C++ Juin Projet BANQUE

SOMMAIRE 1 INTRODUCTION 4 2 GUIDE D UTILISATION ET TUTORIAUX VIDEOS EN LIGNE 4 3 CONTACTER VOTRE SUPPORT 4 4 RACCOURCIS CLAVIER 5

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Introduction : présentation de la Business Intelligence

Manuel d'utilisation de Mémo vocal

7.0 Guide de la solution Portable sans fil

1 Introduction et installation

L espace de travail de Photoshop

LibreOffice Calc : introduction aux tableaux croisés dynamiques

Utiliser Internet Explorer 7

Google Drive, le cloud de Google

Manuel utilisateur Netviewer one2one

v7.1 SP2 Guide des Nouveautés

SafeGuard Enterprise Aide administrateur. Version du produit : 5.60

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Prise en main du logiciel Smart BOARD

Les diagrammes de modélisation

L ORDINATEUR FACILE D ACCÈS!

SAP Lumira Version du document : Guide de l'utilisateur de SAP Lumira

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Correction des Travaux Pratiques Organiser son espace de travail

Sage CRM. 7.2 Guide de Portail Client

À propos du Guide de l'utilisateur final de VMware Workspace Portal

Open Office - Présentation

1 Introduction. Business Intelligence avec SharePoint Server 2010

Créer et partager des fichiers

SOMMAIRE. Travailler avec les requêtes... 3

EXCEL TUTORIEL 2012/2013

Affichage de la date d'exigibilité sur les documents FAQ INV 011

Climat Scolaire - Manuel utilisateur - Chapitre 2 : «Créer, Editer et suivi d un texte»

Débuter avec OOo Base

Freeway 7. Nouvelles fonctionnalités

Conception d'applications de base de données ios plus rapides Guide Pratique FileMaker

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

EXTRANET STUDENT. Qu'est ce que Claroline?

Utiliser Access ou Excel pour gérer vos données

SUPPORT DE COURS ACCESS 2010

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide

Prise en main du logiciel. Smart BOARD Notebook 10

Projet tablettes numériques Document de référence

«Cimetières de France en ligne»

Répertorier vos mots de passe avec Passbox : 1) Télécharger le fichier d'installation :

Bien travailler sur plusieurs écrans

CP Upgrade Guide HOPEX V1R1 FR. Révisé le : 25 octobre Créé le : 16 juillet Auteur : Jérôme Horber

1 Gestionnaire de Données WORD A4 F - USB / / 6020 Alco-Connect

Transcription:

MEGA Database Builder Guide d utilisation

MEGA 2009 SP4 1ère édition (juin 2010) Les informations contenues dans ce document pourront faire l objet de modifications sans préavis et ne sauraient en aucune manière constituer un engagement de MEGA International. Aucune partie de la présente publication ne peut être reproduite, enregistrée, traduite ou transmise, sous quelque forme et par quelque moyen que ce soit, sans un accord préalable écrit de MEGA International. MEGA International, Paris, 1996-2010 Tous droits réservés. MEGA Database Builder et MEGA sont des marques réservées de MEGA International. Windows est une marque réservée de Microsoft. Les autres marques citées appartiennent à leurs propriétaires respectifs.

SOMMAIRE Introduction.................................................. 15 Conventions utilisées dans ce guide........................................ 17 Présentation de ce guide................................................ 18 Modélisation conceptuelle........................................ 19 Lancer MEGA Database Builder............................................ 20 Le modèle de données.................................................. 22 Présentation........................................................22 Créer un modèle de données.............................................23 Le diagramme de données............................................... 24 Créer un nouveau diagramme de données...................................24 Afficher les éléments d un diagramme......................................24 Commenter le diagramme...............................................25 Fermer le diagramme..................................................26 Construire un diagramme de données...................................... 27 Les entités.........................................................27 Créer une entité...................................................28 Les attributs........................................................29 Définir les attributs.................................................30 Attributs hérités...................................................31 Les associations......................................................31 Créer une association................................................32 Définir le rôle des associations.........................................33 Multiplicités.......................................................33 Agrégation.......................................................36 Composition......................................................37 Utiliser les associations réflexives.......................................37 Définir une association "plus que binaire"..................................38 Généralisations......................................................39 Les contraintes......................................................43 3

Sommaire Règles de normalisation.................................................45 Première forme normale............................................... 45 Deuxième forme normale............................................... 45 Troisième forme normale............................................... 46 Identifiants et options SQL...............................................47 Définir l identifiant d une entité........................................... 47 Identification par un attribut.......................................... 47 Identification relative............................................... 48 Identifiant composé................................................ 49 Options SQL des entités................................................ 49 Options SQL des attributs.............................................. 50 Règles de modélisation de données........................................51 Contrôler un modèle de données......................................... 51 Les classes et le diagramme de classes.............................. 53 Créer un paquetage.....................................................54 Le diagramme de classes................................................56 Créer un diagramme de classes.......................................... 56 Les Classes...........................................................57 Propriétés des classes................................................. 57 Onglet Caractéristiques.............................................. 57 Onglet Textes.................................................... 59 Les attributs..........................................................60 Attributs d une classe................................................. 60 Types.......................................................... 60 Rôles des associations..................................................62 Ordre............................................................ 62 Utiliser les classes d'association.......................................... 62 Base de données et modélisation logique............................ 63 La base de données.....................................................64 Créer une base de données............................................. 64 Propriétés d une base de données......................................... 64 Relier un modèle de données à une base de données........................... 65 Importer une version de SGBD........................................... 65 Le diagramme relationnel................................................67 Construire le diagramme relationnel....................................... 67 La modélisation logique.................................................70 Les tables d une base de données......................................... 70 Créer une table................................................... 71 Supprimer une table................................................ 72 Les colonnes d'une table............................................... 72 Visualiser les colonnes.............................................. 72 4 MEGA Database Builder

Sommaire Créer une colonne..................................................73 Supprimer une colonne...............................................73 Modifier les clés et les index.............................................74 Créer une clé........................................................75 Clé primaire......................................................76 Clé étrangère.....................................................76 Créer un index.......................................................77 Ajouter une colonne à une clé ou un index...................................78 Spécifier les clés primaires et étrangères................................... 79 Spécifier les clés primaires..............................................80 Spécifier les clés étrangères.............................................81 Colonne clé primaire de deux tables........................................81 Colonne clé primaire de trois tables........................................82 Règles de modélisation d une base de données............................... 83 Synchronisation................................................ 85 Règles de synchronisation "Conceptuel vers Logique"......................... 86 Entités............................................................86 Règle générale....................................................86 Sous-entité.......................................................86 Entité abstraite....................................................86 Entité réalisée.....................................................87 Associations........................................................87 Association contrainte (multiplicités : 0,1 ou 1,1)............................87 Association contrainte (multiplicités : 0,1 et 0,1).............................89 Verrous croisés (dead locks)...........................................89 Association non-contrainte............................................91 Classe associative (notation UML).......................................91 Du modèle conceptuel au modèle logique................................... 92 Lancer la synchronisation...............................................92 Etape 1 : sélectionner les objets à synchroniser.............................93 Etape 2 : options de synchronisation.....................................94 Etape 3 : protéger des objets..........................................94 Etape 4 : valider les résultats..........................................94 Cas d emploi des options................................................95 Prendre en compte les optimisations.....................................95 Prendre en compte les suppressions.....................................95 Combinaisons des options possibles......................................96 Protéger des objets...................................................97 Mode Figé........................................................97 Mode Réalisé......................................................97 Résultats de la synchronisation : les correspondances...........................98 Caractéristiques de la correspondance....................................99 Synchronisation réduite (mode Conceptuel->Logique).......................... 100 Périmètre de la synchronisation réduite.................................. 100 Périmètre étendu.................................................. 101 Lancer la synchronisation réduite....................................... 102 5

Sommaire Relancer la synchronisation après modifications.............................104 Après modification du diagramme de données............................... 104 Création d entités, d'associations et d'attributs dans le diagramme de données...... 104 Suppression d entités, d'associations, d'attributs dans le diagramme de données..... 104 Modification des caractéristiques d'un attribut............................. 105 Modification du nom d'un attribut, d'une entité, ou d'une association............. 105 Modification de la multiplicité maximum d'une association..................... 105 Modification des liens d'une association.................................. 105 Après des modifications du diagramme relationnel............................ 106 Suppression d'une table ou d'une colonne................................ 106 Créations d'objets................................................. 106 Modifications de caractéristiques d'objets créés par la synchronisation............ 106 Modifications d'ordre............................................... 106 Du modèle logique au modèle conceptuel..................................107 Règles de synchronisation "Logique vers Conceptuel".......................... 107 Lancer la synchronisation.............................................. 109 Etape 1 : sélectionner les objets à synchroniser............................ 110 Etape 2 : options de synchronisation................................... 110 Etape 3 : protéger des objets......................................... 111 Etape 4 : valider les résultats......................................... 111 Synchronisation réduite............................................. 111 Résultat de la synchronisation "Logique vers Conceptuel"....................... 112 Modèle de données détenteur........................................ 112 Diagrammes de données............................................ 112 Les correspondances............................................... 112 Paramétrer la synchronisation...........................................113 Préparer la synchronisation............................................ 113 Options de création.................................................. 114 Sur une base de données........................................... 114 Sur le SGBD..................................................... 115 Paramétrer la génération des noms....................................... 115 Règles de construction des noms...................................... 115 Modifier une règle de construction..................................... 117 Saisie du masque SQL.............................................. 118 Correspondance des modèles.................................... 121 L éditeur de base de données............................................122 Créer une correspondance............................................. 122 Supprimer une correspondance......................................... 123 Détails des correspondances............................................124 Propriétés d une correspondance........................................ 124 Rapport des correspondances........................................... 125 Etat des objets..................................................... 125 Source de la correspondance........................................... 126 Dessin de la correspondance........................................... 127 6 MEGA Database Builder

Sommaire Dénormalisation............................................... 129 Principes de la dénormalisation.......................................... 130 Cohérence des modèles............................................... 130 Report des correspondances.......................................... 130 Supprimer les objets sources......................................... 130 Synchronisation et dénormalisation....................................... 130 Combinaison des options de dénormalisation et synchronisation................. 131 Dénormalisation : cas d emploi.......................................... 131 Dénormalisation conceptuelle........................................... 134 Lancer une dénormalisation conceptuelle................................... 134 Exemple de dénormalisation conceptuelle................................. 134 Liste des assistants de dénormalisation conceptuelle........................... 137 Dénormalisation logique................................................ 142 Lancer une dénormalisation logique....................................... 142 Exemple de dénormalisation logique.................................... 142 Liste des assistants de dénormalisation logique............................... 145 Types des attributs et des colonnes................................ 149 Types de données des attributs.......................................... 150 Paquetages de types de données......................................... 150 Créer un nouveau paquetage de types de données............................. 151 Créer un type de données............................................ 151 Référencer un paquetage de types de données............................... 152 Affecter des types aux attributs.......................................... 152 Déduire les datatypes des colonnes à partir des types des attributs.............. 154 Types pivots....................................................... 154 Liste des types pivots............................................... 154 Relier un type de données à un type pivot................................... 155 Relier un type de données à un type pivot dans la notation UML................... 156 Correspondances entre types pivots et datatypes............................ 161 Créer de nouveaux datatypes............................................ 164 Exemple pour Oracle 10............................................... 164 Objectif........................................................ 164 Etapes......................................................... 164 Conditions préalables............................................... 164 Créer un nouveau datatype........................................... 165 Relier le datatype au type pivot........................................ 166 Paramétrer les conditions sur les liens................................... 167 Vérifier les datatypes............................................... 169 Exemple pour SQL Server 7............................................. 169 Objectif........................................................ 169 Créer un nouveau datatype........................................... 169 Relier le datatype au type pivot........................................ 170 Paramétrer les conditions sur les liens................................... 170 7

Sommaire Génération SQL............................................... 171 Lancer la génération SQL...............................................172 Objets de la génération SQL............................................ 172 Lancer l assistant de génération......................................... 172 Génération incrémentale................................................176 Objets de la génération incrémentale..................................... 176 Lancer la génération incrémentale....................................... 176 Options de la génération............................................ 176 Lancer l assistant de génération....................................... 176 Générer plusieurs bases sous un composant................................179 Paramétrer la génération...............................................181 Paramétrer la version de SGBD......................................... 181 SGBD et versions supportées......................................... 181 Modifier les propriétés de la version de SGBD............................. 181 Créer une nouvelle version de SGBD.................................... 183 Dupliquer une version de SGBD....................................... 183 Paramétrer la génération d'une base de données............................. 184 Syntaxe supportée....................................................187 Instruction CREATE TABLE............................................. 187 Gestion de NOT NULL.............................................. 187 Clause PRIMARY KEY............................................... 188 Clause FOREIGN KEY.............................................. 188 Clause UNIQUE.................................................. 190 Instruction CREATE INDEX (Oracle, Sybase, SQL Server)....................... 190 Définition d'un index............................................... 190 Traitement et génération des ordres SQL................................ 191 Clause CREATE VIEW.............................................. 191 Options SQL avancées.......................................... 193 Définir les vues d'une base de données....................................194 Créer les vues d une base de données..................................... 194 Définition SQL..................................................... 195 Jointures de vue.................................................. 195 Mode utilisateur.................................................. 195 Champs........................................................ 196 Exemple de vue.................................................... 196 Définir un groupement de données....................................... 198 Compléter les objets................................................. 199 Définir les triggers pour une base de données...............................201 Créer un trigger.................................................... 201 Intégrité référentielle................................................ 203 Utiliser des procédures stockées.........................................204 Ajouter des propriétés physiques aux objets d une base de données.............206 SGBD cibles....................................................... 206 Afficher le mode physique............................................. 206 8 MEGA Database Builder

Sommaire Objets contenant des paramètres physiques............................... 207 Créer une nouvelle clause............................................ 207 Relier une clause.................................................. 208 Nommage des clauses.............................................. 209 Générer le fichier SQL................................................. 210 Exemple de personnalisation d un modèle logique............................. 210 Rétro-génération.............................................. 215 Lancer la rétro-génération.............................................. 216 Utiliser un profil de connexion........................................... 219 Reconnaissance des datatypes par ODBC................................... 221 Problèmes de reconnaissance des datatypes................................. 222 Rétro-génération de scripts DB2 OS/390 V5................................ 224 Concepts reconnus................................................... 224 Mise en oeuvre..................................................... 224 Analyseur syntaxique................................................. 225 Rétro-génération des propriétés physiques................................. 226 Valeurs par défaut................................................... 226 Elimination des valeurs redondantes et transverses............................ 226 Cas spécifiques..................................................... 227 Propriétés physiques des tablespaces.................................... 227 Rétro-génération des clusters......................................... 227 Utilitaire d extraction ODBC...................................... 229 Extraire la description d une base de données............................... 230 Fichier de compte-rendu de l'extraction.................................... 232 Fichier résultat de l'extraction........................................... 233 Personnaliser l extraction ODBC.......................................... 234 Restrictions sur certains pilotes.......................................... 235 Format des clauses SELECT............................................. 236 Clés primaires...................................................... 236 Clés étrangères..................................................... 237 Index............................................................ 238 Import ERwin................................................. 239 Présentation de l import ERwin.......................................... 240 Lancer l import Erwin................................................. 240 Correspondance des objets ERwin/MEGA.................................. 242 Notations......................................................... 242 9

Sommaire Modèle de données.................................................. 242 Subject areas.................................................... 242 Diagramme de données............................................... 243 Types de données................................................... 243 Nom des types de données.......................................... 244 Tableau de correspondance des concepts ERwin/MEGA......................... 244 Traçabilité...........................................................247 Import PowerAMC............................................. 249 Présentation de l import PowerAMC.......................................250 Lancer l assistant d import............................................. 250 Correspondance des objets PowerAMC/MEGA...............................251 Modèle de données.................................................. 251 Notation....................................................... 251 Objets du modèle................................................. 251 Relation et association............................................. 252 Attributs....................................................... 252 Diagramme de données............................................... 252 Package.......................................................... 253 Type de données................................................... 253 Tableau de correspondance des concepts PowerAMC/MEGA...................... 254 Reprise des types de données............................................259 Nom des types de données............................................ 259 Exemples de reprise de types de données................................ 259 Liste des types standard de PowerAMC.................................. 260 Notes de traçabilité.................................................. 261 Traçabilité...........................................................262 Import Oracle Designer......................................... 263 Présentation de l import Oracle Designer...................................264 Périmètre d'application............................................... 264 Lancer l'import Oracle Designer......................................... 264 Correspondance des objets Oracle Designer/MEGA...........................265 Modèles importés................................................... 265 Tableau de correspondance............................................ 265 Correspondance des objets.......................................... 265 Correspondance des liens........................................... 266 Glossaire.................................................... 267............................................................... 267 10 MEGA Database Builder

Sommaire agrégation......................................................... 267 association........................................................ 267 attribut........................................................... 267 base de données.................................................... 267 classe d association.................................................. 267 classe............................................................ 267 clé..............................................................268 cluster........................................................... 268 colonne........................................................... 268 composition........................................................ 268 contrainte......................................................... 268 dénormalisation..................................................... 268 diagramme relationnel................................................ 268 diagramme de classes................................................ 268 entité............................................................ 269 généralisation...................................................... 269 groupement de données............................................... 269 identifiant......................................................... 269 index............................................................ 269 métamodèle....................................................... 269 modèle de données.................................................. 269 mot-clé........................................................... 269 multiplicité........................................................ 270 objet............................................................ 270 paquetage de types de données.......................................... 270 persistance........................................................ 270 procédure stockée................................................... 270 projet............................................................ 270 rôle............................................................. 270 séquence......................................................... 270 stéréotype......................................................... 270 synchronisation..................................................... 271 synonyme......................................................... 271 table............................................................. 271 trigger........................................................... 271 type de données.................................................... 271 vue.............................................................. 271 Tableaux de correspondances entre types pivots et datatypes........... 273 DB2 OS/390 Version 5................................................. 274 Pivot --> Datatype (DB2 OS/390 Version 5)............................... 274 Datatype --> Pivot (DB2 OS/390 Version 5)............................... 275 DB2 OS/390 Version 7................................................. 277 Pivot --> Datatype (DB2 OS/390 Version 7)............................... 277 Datatype --> Pivot (DB2 OS/390 Version 7)............................... 278 DB2 for z/os Version 8................................................ 281 Pivot --> Datatype (DB2 for z/os Version 8)............................... 281 Datatype --> Pivot (DB2 for z/os Version 8)............................... 282 11

Sommaire DB2 for z/os Version 9.................................................285 Datatype -> Pivot (DB2 for z/os Version 9)............................... 285 DB2 Universal Database Version 5........................................289 Pivot --> Datatype (DB2 Universal Database Version 5)...................... 289 Datatype --> Pivot (DB2 Universal Database Version 5)...................... 290 DB2 Universal Database Version 7........................................292 Pivot --> Datatype (DB2 Universal Database Version 7)...................... 292 Datatype --> Pivot (DB2 Universal Database Version 7)...................... 293 DB2 Universal Database Version 8........................................295 Pivot --> Datatype (DB2 Universal Database Version 8)...................... 295 Datatype --> Pivot (DB2 Universal Database Version 8)...................... 296 DB2 Universal Database Version 9........................................298 Pivot --> Datatype (DB2 Universal Database Version 9)...................... 298 Datatype --> Pivot (DB2 Universal Database Version 9)...................... 299 Pivot --> Datatype (DB2 Version 9 For OS)............................... 301 Datatype --> Pivot (DB2 Version 9 For OS)............................... 302 Informix Dynamic Server 7.3............................................305 Pivot --> Datatype (Informix Dynamic Server 7.3).......................... 305 Datatype --> Pivot (Informix Dynamic Server 7.3).......................... 306 Ingres II 2.0.........................................................307 Pivot --> Datatype (Ingres II 2.0)..................................... 307 Datatype --> Pivot (Ingres II 2.0)..................................... 308 MySQL 4.1...........................................................309 Pivot --> Datatype (MySQL 4.1)....................................... 309 Datatype --> Pivot (MySQL 4.1)....................................... 313 MySQL 5.0...........................................................319 Pivot --> Datatype (MySQL 5.0)....................................... 319 Datatype --> Pivot (MySQL 5.0)....................................... 323 Oracle 10............................................................329 Pivot --> Datatype (Oracle 10)....................................... 329 Datatype --> Pivot (Oracle 10)....................................... 330 Oracle 11............................................................332 Pivot --> Datatype (Oracle 11)....................................... 332 Datatype --> Pivot (Oracle 11)....................................... 333 Oracle 8.............................................................335 Pivot --> Datatype (Oracle 8)........................................ 335 Datatype --> Pivot (Oracle 8)........................................ 336 Oracle 9i............................................................337 Pivot --> Datatype (Oracle 9i)........................................ 337 Datatype --> Pivot (Oracle 9i)........................................ 338 SQL ANSI/ISO 9075:1992...............................................340 Pivot --> Datatype (SQL ANSI/ISO 9075:1992)............................ 340 Datatype --> Pivot (SQL ANSI/ISO 9075:1992)............................ 341 SQL Server 2000......................................................342 Pivot --> Datatype (SQL Server 2000).................................. 342 Datatype --> Pivot (SQL Server 2000).................................. 343 SQL Server 2005......................................................345 Pivot --> Datatype (SQL Server 2005).................................. 345 Datatype --> Pivot (SQL Server 2005).................................. 346 12 MEGA Database Builder

Sommaire SQL Server 7......................................................... 348 Pivot --> Datatype (SQL Server 7)...................................... 348 Datatype --> Pivot (SQL Server 7)...................................... 349 Sybase Adaptive Server 11.............................................. 350 Pivot --> Datatype (Sybase Adaptive Server 11)............................ 350 Datatype --> Pivot (Sybase Adaptive Server 11)............................ 351 Sybase Adaptive Server 12.5............................................ 353 Pivot --> Datatype (Sybase Adaptive Server 12.5).......................... 353 Datatype --> Pivot (Sybase Adaptive Server 12.5).......................... 354 Index....................................................... 357 13

Sommaire 14 MEGA Database Builder

INTRODUCTION Une base de données décrit l organisation d un système sous forme d un ensemble de données stockées de façon structurée. La conception d une base de données s inscrit dans un processus d analyse qui couvre différents niveaux : Niveau conceptuel : s adresse à la maîtrise d ouvrage qui souhaite élaborer des modèles généraux orientés métier. Il s'agit ici de modéliser les données d'un domaine, d'une application ou encore d'un processus. Il représente ce que l on veut faire, à quoi l on veut arriver, indépendamment des questions techniques liées à la mise en oeuvre. La représentation des données se fait dans un modèle de données. Niveau logique (ou relationnel) : consiste à définir les modèles destinés à persister dans un SGBD. Il s'agit de spécifications détaillées en vue de la réalisation du schéma physique de la base. Il est représenté par le diagramme relationnel. Niveau physique : définit la façon selon laquelle sont stockées les données et les méthodes pour y accéder. Il permet l exploitation des données par les SGBD. La gestion des propriétés physiques se fait dans l éditeur de la base de données. MEGA Database Builder gère ces trois niveaux de modélisation et permet le passage d un modèle à un autre. Vous pouvez ainsi : Construire un diagramme de données. Créer, à partir de ce diagramme de données, les tables d une base de données, avec ses colonnes, index et clés ainsi que les dessins du diagramme relationnel correspondant. Optimiser le diagramme relationnel obtenu et générer les ordres SQL de définition des tables. MEGA Database Builder permet en particulier de 15

Introduction prendre en compte des évolutions du modèle conceptuel sans perdre les optimisations effectuées sur le diagramme relationnel. Rétro-générer la définition d une base de données à l aide du protocole ODBC, pour créer les tables et colonnes correspondantes dans MEGA Database Builder, et obtenir le diagramme de données correspondant. Pour utiliser les fonctionnalités de MEGA Database Builder, vous devez être en mode "Avancé" : Cliquez sur le menu Outils > Options de MEGA, puis sous le dossier Référentiel, vérifiez que l accès au référentiel est en mode "Avancé". 16 MEGA Database Builder

Introduction Conventions utilisées dans ce guide CONVENTIONS UTILISÉES DANS CE GUIDE Remarque sur les points qui précèdent. Définition des termes employés. Astuce qui peut faciliter la vie de l utilisateur. Compatibilité avec les versions précédentes. Ce qu il faut éviter de faire. Remarque très importante à prendre en compte pour ne pas commettre d erreurs durant une manipulation. Les commandes sont présentées ainsi : Fichier > Ouvrir. Les noms de produits et de modules techniques sont présentés ainsi : MEGA. 17

Introduction PRÉSENTATION DE CE GUIDE Le guide MEGA Database Builder traite les points suivants : "Modélisation conceptuelle", page 19, présente les diagrammes de données utilisés par MEGA Database Builder. "Les classes et le diagramme de classes", page 53, décrit les caractéristiques disponibles sur les classes. "Base de données et modélisation logique", page 63 indique comment créer une base de données et son diagramme relationnel. "Synchronisation", page 85, décrit comment synchroniser automatiquement un modèle conceptuel de données avec une base de données décrite en formalisme relationnel, et vice versa. "Correspondance des modèles", page 121, présente l application qui permet de mettre en correspondance les différentes vues d une base de données. "Dénormalisation", page 129, explique comment modifier des modèles en fonction de besoins spécifiques. "Types des attributs et des colonnes", page 149, présente les types de données des attributs et leur correspondance avec les datatypes des colonnes. "Génération SQL", page 171, présente la génération des ordres SQL de définition des tables à partir des spécifications effectuées avec MEGA Database Builder. "Options SQL avancées", page 193, décrit l utilisation des vues, triggers, procédures stockées, ainsi que l ajout de propriétés physiques sur les objets d une base de données. "Rétro-génération", page 215, présente comment créer les tables et les colonnes dans MEGA Database Builder à partir des bases de données accessibles par le protocole ODBC, et proposer le diagramme de classes correspondant en formalisme UML. "Utilitaire d extraction ODBC", page 229, décrit l utilitaire utilisé pour l accès aux bases de données. "Import ERwin", page 239, explique comment importer dans MEGA un modèle créé dans ERwin. "Import PowerAMC", page 249, explique comment importer dans MEGA un modèle créé dans Power AMC. "Import Oracle Designer", page 263, explique comment importer dans MEGA un modèle créé dans Oracle Designer. "Glossaire", page 267, présente les définitions des objets manipulés dans MEGA Database Builder. "Tableaux de correspondances entre types pivots et datatypes", page 273, liste les tableaux de correspondances entre les types pivots et les datatypes de tous les SGBD concernés. Ce guide est complété par le guide MEGA Common Features qui présente les fonctionnalités communes à tous les produits de la gamme MEGA, ainsi que par l'aide en ligne, accessible par la touche <F1>, qui permet d'accéder à une aide contextuelle sur chaque fenêtre de MEGA Database Builder. 18 MEGA Database Builder

1 MODÉLISATION CONCEPTUELLE La première étape de modélisation des données s effectue au niveau conceptuel. Pour vous aider à décrire les données métiers, MEGA Database Builder propose une notation simple permettant de représenter tous les cas courants et basée sur le modèle de données. Un modèle de données permet de représenter la structure statique d un système, en particulier les types d'objets manipulés dans le système, leur structure interne et les relations qui existent entre eux. D autres notations (IDEF1X, IE, Merise) sont également disponibles. Pour plus d informations, voir le chapitre "Autres notations" du guide MEGA Business Data. Pour la modélisation avec la notation UML, voir "Les classes et le diagramme de classes", page 53. Les points suivants sont abordés ici : "Lancer MEGA Database Builder", page 20 "Le modèle de données", page 22 "Le diagramme de données", page 24 "Construire un diagramme de données", page 27 "Règles de normalisation", page 45 "Identifiants et options SQL", page 47 "Règles de modélisation de données", page 51 19

1 LANCER MEGA DATABASE BUILDER Pour lancer MEGA Database Builder : 1. Double-cliquez sur l icône MEGA : La fenêtre d'identification apparaît. 2. Sélectionnez l'utilisateur "Mister Guide". La flèche verticale permet de faire apparaître la liste des utilisateurs. Elle est disponible tant que le nombre d utilisateurs est inférieur à un nombre défini par l administrateur. Si elle est absente, tapez votre nom d utilisateur MEGA. Le mot de passe de l utilisateur vous est demandé dans cette fenêtre si l utilisateur en a un. L'utilisateur "Mister Guide" n'a pas de mot de passe : il a été installé pour vous guider pendant votre découverte de MEGA. 3. Sélectionnez la base "MEGA (Tutorial)". Comme pour les utilisateurs, la flèche verticale vous permet de faire apparaître la liste des bases. Lorsque vous commencez à modéliser les données de votre entreprise, il est conseillé de créer une nouvelle base dans un nouvel environnement. La base MEGA (Tutorial) est disponible dans l environnement de démonstration. Pour en savoir plus sur les bases et les environnements, reportez-vous au guide MEGA Administration. 20 MEGA Database Builder

Modélisation conceptuelle Lancer MEGA Database Builder L'espace de travail de "Mister Guide" dans la base "MEGA (Tutorial)" apparaît. Espace de travail de l utilisateur Mister Guide dans la base "MEGA (Tutorial)" Selon les produits MEGA dont vous disposez, vous visualisez certains types d objets seulement. L espace de travail contient les objets utilisés comme exemples dans ce guide. Par défaut, l espace de travail MEGA se compose de deux zones principales : La zone des navigateurs et outils, qui permet de naviguer dans le référentiel et d accéder aux objets principaux. La zone d édition, qui sert principalement à ouvrir et à éditer les diagrammes. Vous disposez également d une barre de recherche en haut de l espace de travail pour effectuer des recherches dans l ensemble du référentiel. Vous pouvez quitter MEGA Database Builder en sélectionnant, dans le menu Fichier, la commande Quitter. Une fenêtre présentant plusieurs options s'affiche. Cliquez sur Oui (publier les modifications). 21

1 LE MODÈLE DE DONNÉES Le modèle de données est le point de départ du processus de description des données. Il permet d élaborer des modèles généraux orientés métier, indépendamment des questions de mise en oeuvre physique. Une base de données peut être reliée dès sa création à un modèle de données. C est sur cette base de données que pourront se lancer par la suite les différents outils de traitements des données (génération, synchronisation etc.). Présentation Le modèle de données permet de représenter la structure statique d'un système, en particulier les types d objets manipulés dans le système, leur structure interne et les relations qui existent entre eux. Un objet est une entité avec une identité et des frontières clairement définies dont l'état et le comportement sont encapsulés. Son état est défini par les valeurs de ses attributs et de ses liens avec d'autres objets. Un objet est une instance de classe. Exemples d'objets : Objets de gestion : Jacques Dupond, Pierre Durand, Paul Smith sont des instances de la classe "personne". Les commandes no 10533 et 7322 sont des instances de la classe "commande". Ecran SPD-1730 est une instance de la classe "article". 22 MEGA Database Builder

Modélisation conceptuelle Le modèle de données Modéliser les données consiste à identifier les entités considérées d'intérêt pour représenter l'activité de l'entreprise, et définir les associations qui existent entre elles. Il faut que les entités et les associations qui constituent le diagramme de données associé à un secteur de l'entreprise suffisent à le décrire complètement sur le plan sémantique. En d'autres termes, on doit pouvoir décrire l'activité de l'entreprise en utilisant seulement ces entités et associations. Ceci n'implique pas que, pour chaque mot ou verbe utilisé pour cette explication, il y ait un correspondant direct dans le diagramme de données. Il s'agit de pouvoir traduire ce que l'on veut exprimer, au travers des entités et des associations. La spécification des diagrammes de données est souvent considérée comme la partie la plus importante dans la modélisation d'un système d'information. Créer un modèle de données Le modèle de données est destiné à contenir les éléments modélisés. Il est décrit par un ou plusieurs diagrammes de données. Il est également détenteur des entités et des associations issues d'une synchronisation (logique vers conceptuel). Pour plus de détails sur la synchronisation, voir "Synchronisation", page 85. Pour créer un modèle de données : 1. Dans MEGA, cliquez sur la fenêtre de navigation Objets principaux. 2. Cliquez avec le bouton droit sur le dossier "Modèle de données" et sélectionnez Nouveau > Modèle de données. 3. Dans la fenêtre qui s affiche, saisissez son nom. Le modèle de données créé apparaît dans le navigateur. Vous pouvez également créer un modèle de données depuis une base de données. Voir "Relier un modèle de données à une base de données", page 65. 23

1 LE DIAGRAMME DE DONNÉES Un diagramme de données est la représentation graphique du modèle ou d une partie du modèle. Lorsque vous créez un modèle de données depuis une base de données, le diagramme de données correspondant est également créé. Par la suite, vous pouvez relier au modèle de données de nouveaux diagrammes de données. Créer un nouveau diagramme de données Pour créer un nouveau diagramme de données : 1. Cliquez avec le bouton droit sur le modèle de données. 2. Sélectionnez Nouveau > Diagramme. Afficher les éléments d un diagramme Il est possible de préciser les éléments qui doivent apparaître dans le diagramme à l aide du menu Affichage > Vues et détails. La fenêtre qui s affiche permet de définir : les types d objets présentés ou non dans le diagramme. les caractéristiques de ces objets qui doivent être présentées. Pour paramétrer l'affichage d'un ou plusieurs objets sélectionnés : Activez la commande Formes et détails de leur menu contextuel. La fenêtre de sélection des éléments à afficher est présentée. 24 MEGA Database Builder

Modélisation conceptuelle Le diagramme de données La sélection d'un élément dans l'arborescence permet d'indiquer, dans l'onglet de droite, quelles caractéristiques doivent être présentées. Le contenu de l'onglet varie en fonction de l'élément sélectionné dans l'arborescence. Lorsque l'affichage concerne un objet, la fenêtre Affichage présente d'abord les formes qu'il est possible d'utiliser pour la présentation de l'objet. La sélection d'un élément dans l'arborescence provoque l'affichage de l'onglet correspondant. Par exemple, il est possible d'indiquer, pour une entité, quels seront les attributs présentés Avec les caractéristiques qui apparaîtront ou non dans le diagramme. Dans la liste Affichage de, sélectionnez une des options : Toutes, Aucune, ou Certaines ; l option Certaines permet de définir, dans la liste, les attributs qui apparaîtront dans le diagramme. Vous pouvez cacher ou rendre visible le compartiment présentant les attributs dans le dessin de l entité, en activant ou désactivant la case à cocher devant Affichage de. Commenter le diagramme Vous pouvez saisir un commentaire pour chacun des éléments présents dans le diagramme. 25

1 Pour éviter d'ouvrir et fermer la fenêtre de commentaire pour chaque élément, sélectionnez le menu Affichage > Fenêtre d édition > Commentaire. La fenêtre générale de saisie de commentaire s'ouvre en bas de l'écran. Elle présente le commentaire de l entité sélectionnée. A chaque fois que vous cliquez sur un élément du dessin, cette fenêtre présente le commentaire de cet élément et vous pouvez le modifier. Fermer le diagramme Vous pouvez refermer le diagramme : par la commande Fichier > Quitter si le diagramme est ouvert dans une fenêtre indépendante par la commande Fermer du menu contextuel de l onglet s il est ancré dans l espace de travail Une fenêtre vous demande d'enregistrer les modifications du diagramme si vous ne l'avez pas fait auparavant. Cliquez sur le bouton Oui, le diagramme se referme. Vous êtes maintenant de nouveau dans l espace de travail. 26 MEGA Database Builder

Modélisation conceptuelle Construire un diagramme de données CONSTRUIRE UN DIAGRAMME DE DONNÉES Dans MEGA Database Builder, un diagramme de données est représenté par : des entités, qui représentent les concepts de base (client, compte, produit, etc.). des associations, qui définissent les relations entre les différentes entités. des attributs, qui décrivent les caractéristiques des entités et, dans certains cas, des associations. Le diagramme de données est complété avec la définition des multiplicités. Pour la génération SQL des entités et des attributs, référez-vous au chapitre "Identifiants et options SQL", page 47. Les entités Une entité est un regroupement d'objets possédant des caractéristiques communes et un comportement semblable. Les entités persistantes sont des éléments de gestion considérés d'intérêt pour représenter l'activité de l'entreprise et donc conservés à cet effet. Elles donneront lieu à des tables dans la base de données relationnelle. Une entité est décrite par une liste d'attributs. Une entité est reliée à d'autres entités via des associations. L'ensemble des entités et des associations constitue le noyau d'un diagramme de données. Nous pouvons illustrer la notion d entité en comparant les entités à des fiches dans des tiroirs. 27

1 Les entités peuvent représenter des objets de gestion. Exemples : Client, Commande, Produit, Personne, Société, etc. Les entités peuvent représenter des objets techniques utilisés dans l'industrie. Exemples : Alarme, Capteur, Zone Créer une entité Pour créer une entité : 1. Cliquez sur le bouton Entité (MD) dans la barre d objets. 2. Cliquez sur le plan de travail du diagramme. La fenêtre Ajout d'une entité s'ouvre. 3. Saisissez le Nom de l entité, "Entité 1" : le bouton Créer n est plus grisé. Quand le bouton OK ou Créer est grisé, c'est que la fenêtre où il apparaît n'a pas été complètement renseignée. 4. Cliquez sur Créer. L entité est alors posée dans le diagramme. 5. Cliquez sur l entité "Entité 1" puis déplacez-la en maintenant le bouton gauche de la souris enfoncé. Vous pouvez par exemple la positionner en haut à gauche du dessin. 6. Cliquez ensuite sur une des poignées noires qui délimitent l entité pour la retailler et l ajuster au texte. 7. Créez de la même façon les entités "Entité 2", "Entité 3", "Entité 4" et "Entité 5". Vous pouvez créer plusieurs entités à la suite sans revenir à la barre d objets en double-cliquant sur le bouton Entité. Pour revenir ensuite au mode normal, utilisez la touche <Echap>, ou cliquez sur la flèche de la barre d'outils. 28 MEGA Database Builder

Modélisation conceptuelle Construire un diagramme de données Vous obtenez le dessin suivant : Vous pouvez affecter la même taille à plusieurs éléments en leur appliquant la commande Retailler à l'identique du menu Dessin après les avoir sélectionnés. Vous pouvez de même les aligner à l'aide de la commande Aligner de ce menu. Le dernier élément sélectionné est pris comme référence. Pour sélectionner plusieurs éléments, cliquez successivement sur chaque élément en maintenant la touche <Majuscules> enfoncée. Les objets que vous créez, ainsi que leurs caractéristiques et leurs liens sont enregistrés automatiquement à chaque fois que le pointeur prend la forme Pour enregistrer tous les changements graphiques effectués dans le diagramme, cliquez sur le bouton Enregistrer Les attributs Les entités et les associations peuvent être caractérisées par des attributs. 29

1 Ces attributs ont pu, par exemple, être révélés par l'étude du contenu des messages qui circulent à l'intérieur de l'entreprise. Un attribut est une propriété nommée d'une entité. C'est la donnée élémentaire mémorisée dans le système d'information de l'entreprise. Exemples : "Nom du client" (attribut de l entité client). "N client" (identifiant de l entité client). "Solde du compte" (attribut de l entité compte). Un attribut caractérise une association quand l'attribut dépend de l'ensemble des entités participant à l'association. Dans le diagramme présenté ci-après, le rôle qu'un "Consultant" a joué sur un "Contrat" dépend du consultant et du contrat, donc de l'association "Intervenir". Définir les attributs Nous allons compléter le diagramme en saisissant les attributs disponibles sur les entités ainsi que le commentaire des éléments qui y sont représentés. Nous allons par exemple décrire de manière détaillée l entité "Entité 1". Pour cela : 1. Dans le menu contextuel de l entité "Entité 1", sélectionnez la commande Attributs. La fenêtre des propriétés d'une entité s'ouvre. Propriétés de l entité "Entité 1", onglet Attributs 2. Pour ajouter un nouvel attribut à l entité, cliquez sur le bouton Un nom vous est automatiquement proposé pour ce nouvel attribut. Vous pouvez le modifier. 30 MEGA Database Builder

Modélisation conceptuelle Construire un diagramme de données Attributs hérités Vous pouvez préciser son Type,. Exemple : Numérique. Un type de données permet de mettre en commun des caractéristiques communes à plusieurs attributs. Voir "Types des attributs et des colonnes", page 149 pour plus de détails sur les types qui peuvent être affectés à un attribut. Voir aussi "Attributs d une classe", page 60. Lorsqu'une généralisation existe entre une entité générale et une entité particulière, l entité particulière hérite des attributs de l entité générale. Voir "Généralisations", page 39. Les associations Une association est une relation entre deux ou plusieurs entités. Elle peut comporter des attributs qui caractérisent l'association entre ces entités. Les associations peuvent être comparées à des liens entre des fiches. Le dessin suivant permet de visualiser "en trois dimensions" les situations qu'un diagramme de données permet de mémoriser. Pierre et Marie sont des clients. Pierre a effectué les réservations numéros 312 et 329. Un diagramme de données doit permettre de mémoriser toutes les situations du contexte de l'entreprise, mais rien que celles-là. Le diagramme ne doit pas permettre de représenter des situations irréalistes ou aberrantes. 31

1 Exemples d'association : Un client passe une commande. Une commande comprend plusieurs produits. Une personne travaille pour une société. Une alarme est déclenchée par un capteur. Un capteur couvre une zone. Une fenêtre affiche une chaîne de caractères. Créer une association Pour créer une association : 1. Dans la barre d objets du diagramme, cliquez sur le bouton Association 2. Cliquez sur une des entités concernées, par exemple "Entité 1" et, en gardant le bouton de la souris enfoncé, déplacez le pointeur jusqu à la deuxième entité, par exemple "Entité 2", avant de relâcher votre pression. L'association apparaît sous forme d'un trait. 3. Pour préciser le nom de l association, ouvrez sa fenêtre de propriétés à partir de son menu contextuel. Vous pouvez saisir son nom dans l onglet Caractéristiques, dans le champ Nom Local En cas d'erreur, vous pouvez supprimer un élément ou un lien en sélectionnant la commande Supprimer du menu contextuel de l'élément ou du lien. 4. Créez de même l "Association 2" entre les entités 1 et 3 et l "Association 3" entre les entités 3 et 4. 32 MEGA Database Builder

Modélisation conceptuelle Construire un diagramme de données Vous obtenez le dessin suivant : Définir le rôle des associations Un rôle permet d indiquer une des entités concernées par l association. L indication des rôles est particulièrement importante dans le cas d'une association entre une entité et elle-même. Chaque extrémité d'une association permet de préciser le rôle joué par chaque entité dans l'association. Visuellement, le nom du rôle se distingue du nom d'une association, car il est placé près de son extrémité. De plus, il apparaît en caractères droits, alors que le nom de l'association est en italique. La barre d état (située au bas de la fenêtre) permet aussi de distinguer les différentes zones : lorsque vous déplacez la souris le long de l'association, elle indique si vous vous trouvez sur l'association ou sur un rôle. Lorsque deux entités sont reliées par une seule association, le nom des entités suffit souvent à caractériser le rôle ; nommer les rôles prend tout son intérêt lorsque plusieurs associations relient deux entités. Multiplicités Chaque rôle d'une association porte une indication de multiplicité qui montre combien d'objets de l entité considérée peuvent être liés à un objet de l'autre entité. La multiplicité est une information portée par le rôle, sous la forme d'une expression entière bornée. On l'indique en particulier pour chacun des rôles que jouent les entités dans une association. 33

1 La multiplicité exprime le nombre de participations minimum et maximum d'un objet donné d'une entité à une association. Les multiplicités usuelles sont "1", "0..1", "*" ou "0..*", "1..*", et "M..N" où "M" et "N" sont des entiers : La multiplicité "1" indique que chaque objet de l entité est relié par cette association une fois et une seule. La multiplicité "0..1" indique qu un objet de l entité ne peut être relié par cette association qu une fois au plus. La multiplicité "*" ou "0..*" indique qu un objet de l entité peut être relié par l association une ou plusieurs fois ou pas du tout. La multiplicité "1..*" indique que chaque objet de l entité est obligatoirement relié par l association et qu il peut l être plusieurs fois. La multiplicité "M..N" indique que chaque objet de l entité est obligatoirement relié par l association au moins "M" fois et qu il peut l être au maximum "N" fois. 1 Un et un seul 0..1 Zéro ou un M..N De M à N (entiers naturels) * De zéro à plusieurs 0..* De zéro à plusieurs 1..* De un à plusieurs Exemple : 0..1 A une commande correspond une facture au maximum ou aucune. * Aucune restriction n'est imposée sur le nombre de factures correspondant à une commande. 1 A chaque commande correspond une facture et une seule. 1..* A chaque commande correspond une ou plusieurs factures. 34 MEGA Database Builder

Modélisation conceptuelle Construire un diagramme de données Autres exemples de multiplicité : 1..* Un client peut passer une ou plusieurs commandes. 1 Une commande est passée par un et un seul client. 1..* Une commande comprend un ou plusieurs produits. * Un produit peut faire partie de plusieurs commandes, ou d'aucune. 0..1 Une personne travaille pour une société. 1..* Une alarme est déclenchée par un ou plusieurs capteurs. 1 Un capteur couvre une et une seule zone. 1..* Une fenêtre affiche une ou plusieurs chaînes de caractères. Pour préciser la multiplicité d'un rôle : Ouvrez le menu contextuel du rôle en cliquant avec le bouton droit sur le trait qui se trouve entre l association et l entité, et sélectionnez la commande Multiplicité. 35

1 La multiplicité apparaît alors sur le rôle. Si le menu affiché ne propose pas les multiplicités, vérifiez que vous avez bien cliqué sur la partie du trait qui matérialise le rôle, et non l'association. Toutes les informations précisées avec le menu contextuel peuvent être consultées et modifiées dans la fenêtre de propriétés du rôle. Agrégation L'agrégation est une forme particulière d'association qui indique que l'une des entités contient l'autre. Exemple d agrégation : Une voiture comprend un châssis, un moteur et des roues. Sur le rôle joué par l "Entité 3" dans son association avec l "Entité 1", sélectionnez Tout/Partie > Agrégat. Un losange représentant l'agrégation apparaît alors sur le rôle. 36 MEGA Database Builder

Modélisation conceptuelle Construire un diagramme de données Composition La composition est une agrégation forte pour laquelle la durée de vie des composants coïncide avec celle du composé. Une composition est une agrégation immuable avec une multiplicité 1. Exemple de composition : Une commande est composée de plusieurs lignes de commande qui n'existent plus si la commande est supprimée. La composition est matérialisée par un losange noir. Pour préciser la composition d un rôle, choisissez comme précédemment Tout/Partie > Composé sur le rôle à l aide du menu contextuel de ce rôle. Utiliser les associations réflexives Certaines associations mettent en jeu plusieurs fois la même entité. Une salle de classe, un bâtiment, un établissement scolaire sont tous des lieux. Une salle de classe est contenue dans un bâtiment, lui-même contenu dans un établissement scolaire. Une association réflexive porte deux fois sur la même entité. Pour créer une association réflexive : 1. Cliquez sur le bouton Association de la barre d objets. 37

1 2. Cliquez dans l entité concernée et faites glisser la souris en dehors de cette entité, puis revenez-y ; relâchez ensuite le bouton de la souris. L'association réflexive apparaît sous forme d'un demi-cercle en ligne brisée. Dans le cas d'une association entre une entité et elle-même, il est indispensable de préciser les rôles afin de distinguer les liens correspondants dans le dessin. "Père" et "Fils" sont les deux rôles joués par l entité "Personne" dans l'association "Parent". Un rôle permet d indiquer une des entités concernées par l association. L indication des rôles est particulièrement importante dans le cas d'une association entre une entité et elle-même. Vous pouvez segmenter une ligne en y ajoutant des sommets pour modifier le tracé des traits. Vous pouvez en particulier segmenter un rôle, pour lui faire contourner un obstacle par exemple. Pour cela, cliquez sur la ligne en tenant la touche <Ctrl> enfoncée et déplacez cette ligne. Pour faire apparaître une ligne courbe : 1. Sélectionnez l association. 2. Dans la barre de Format et Dessin du diagramme, cliquez sur l icône Courbe. Le lien est alors incurvé à chacun des sommets. Définir une association "plus que binaire" Certaines associations associent non pas deux, mais davantage d entités. Ces associations sont, en principe, rares. Exemple : Lors d'un inventaire, une certaine quantité de produit a été comptée dans chaque entrepôt. Pour créer une association ternaire : 1. Créez l association entre deux des entités. 2. Cliquez sur le bouton Rôle de l association et reliez l association à la troisième entité. 38 MEGA Database Builder

Modélisation conceptuelle Construire un diagramme de données Généralisations Qu'est-ce qu'une généralisation? Une généralisation représente une relation d'héritage entre une entité générale et une entité plus spécifique. L entité spécifique est cohérente avec l entité plus générale et en hérite ses caractéristiques et son comportement. Elle peut cependant comporter des attributs ou des associations supplémentaires. Toute objet de l entité spécifique est aussi un objet de l entité générale. L entité A est une généralisation de l entité B. Cela suppose que tous les objets de l entité B sont aussi des objets de l entité A. Autrement dit, B est un sous-ensemble de A. B est alors la sous-entité, A la super-entité. Exemple : A : Personne, B : Employé. B étant un sous-ensemble de A, les objets de l entitée B "héritent" des caractéristiques de ceux de l entité A. Il n'est donc pas nécessaire de décrire de nouveau pour l entité B : Ses attributs Ses associations Exemple : L entité "Client important" qui représente les clients dont le "C.A. sur les 12 derniers mois" dépasse 1 M, peut être une spécialisation de l entité "Client". 39

1 Dans l'exemple qui précède, les associations et les attributs spécifiés pour "Client" sont aussi valables pour "Client important". Autres exemples de généralisations : "prospect" et "client" sont deux sous-entités de "personne". "commande export" est une sous-entité de l entité "commande". "personne physique" et "personne morale" sont deux sousentités de l entité "personne". "véhicule à moteur", "véhicule tout-terrain" et "véhicule amphibie" sont des sous-entités de l entité "véhicule". Cas de plusieurs sous-entités Plusieurs sous-entités d'une même entité : Ne sont pas forcément exclusives. Ne forment pas nécessairement une partition. 40 MEGA Database Builder

Modélisation conceptuelle Construire un diagramme de données Intérêt des sous-entités Une sous-entité hérite de tous les attributs et associations de sa super-entité, mais elle peut avoir des attributs ou des associations que ne possède pas sa super-entité. Une sous-entité peut ainsi avoir des attributs spécifiques. Ceux-ci n'ont de sens que pour une sous-entité particulière. Dans l'exemple ci-dessus : Le "numéro de Siret" et le "nombre d employés" n ont de sens que pour une "société". La "date de naissance" est caractéristique d une "personne", pas d une "société". Une sous-entité peut également avoir des associations spécifiques. Une "personne" entre dans une "catégorie socio-professionnelle" : "cadre", "employé", "commerçant", "agriculteur", etc. Cette classification n a pas de sens pour une "société" (il existe également une classification pour les entreprises, mais ce n est pas la même que pour les personnes). Héritage multiple Il est parfois utile de spécifier une entité ayant plusieurs super-entités. La sousentité hérite alors de toutes les caractéristiques des deux super-entités. Cette possibilité doit être utilisée avec précaution. L'héritage multiple n'est pas pris en compte pour la génération des tables. Créer une généralisation Pour créer une généralisation : 1. Cliquez sur le bouton Généralisation de la barre d objets. 41

1 2. Cliquez dans la sous-entité, par exemple "Entité 5", et faites glisser la souris jusqu à l entité générale, par exemple "Entité 3", avant de relâcher votre pression. La fenêtre Ajout d'une généralisation s'ouvre. 3. Saisissez le nom de la généralisation, par exemple, "Généralisation 1", puis cliquez sur Créer. La généralisation apparaît dans le diagramme, matérialisée par une flèche. Discriminant Le discriminant est attribut d'une entité générale dont la valeur permet de répartir les objets entre les sous-entités associées à la généralisation. Par exemple, l'attribut code-sexe permet de répartir les objets de l entité personne entre la sous-entité homme ou femme. 42 MEGA Database Builder

Modélisation conceptuelle Construire un diagramme de données Vous pouvez définir le ou les discriminants dans la fenêtre de propriétés de la généralisation. Il est également possible de préciser si une généralisation est : Disjointe : Une instance ne peut pas appartenir simultanément à deux sous-entités de cette généralisation. Complète : Toutes les instances de la super-entité appartiennent à au moins une des sous-entités de cette généralisation. Les contraintes Une contrainte représente un contrôle ou une règle de gestion qui doit être appliquée lors de l'exécution d'un traitement. La plupart des contraintes impliquent les associations entre les entités. Exemples de contraintes : La personne responsable d'un service doit appartenir à ce service. Toute commande facturée doit avoir été préalablement livrée. La date de livraison doit être postérieure à la date de commande. Un capteur couvrant une zone ne peut déclencher qu'une alarme protégeant cette même zone. La spécification des contraintes a pour but d enrichir le modèle mais elle n'est pas prise en compte automatiquement par la synchronisation et la génération de tables avec MEGA Database Builder. Pour créer une contrainte : 1. Cliquez sur le bouton Contrainte dans la barre d objets du diagramme. 43

1 2. Cliquez dans une des associations concernées par la contrainte, par exemple "Association 1", et faites glisser la souris jusqu à la deuxième association, par exemple "Association 2", avant de relâcher votre pression. La fenêtre Ajout d'une contrainte s'ouvre. 3. Saisissez le nom de la contrainte "Contrainte 1", puis cliquez sur Créer. La "Contrainte 1" apparaît dans le diagramme. Enregistrez régulièrement votre dessin à l'aide du bouton 44 MEGA Database Builder

Modélisation conceptuelle Règles de normalisation RÈGLES DE NORMALISATION Les formes normales sont des règles qui visent à éviter des erreurs de modélisation. A ce jour, il existe de six à sept formes normales. Nous allons voir les trois premières. Première forme normale Règle : La valeur d'un attribut est fixée de manière unique dès que l'on connaît le ou les objets concernés. Si le nombre de véhicules est porté par l entité "Réservation", on ne peut indiquer que le nombre total de véhicules pour une réservation. On doit donc faire une réservation par catégorie de véhicule loué (multiplicité 1). Si le nombre de véhicules est porté par l'association, on peut préciser le nombre de véhicules réservés pour chaque catégorie sur l'association. On peut donc faire une seule réservation pour plusieurs catégories de véhicules (multiplicité 1..N). Deuxième forme normale Règle : La valeur d'un attribut d'association n'est fixée que lorsque l'on connaît toutes les entités concernées. 45

1 Le fait que la catégorie de voiture porte sur l'association "Catégorie Voiture" suppose que la catégorie de la voiture puisse changer d'un contrat à l'autre, ce qui ne serait pas très honnête. Pour que la catégorie de la voiture ne dépende pas du contrat, il faut qu'elle soit portée par l entité "Voiture". Troisième forme normale Règle : Un attribut doit dépendre directement et uniquement de l entité qu'il décrit. Si le "Tarif Catégorie" est porté par l entité "Voiture", cela signifie que deux voitures de la même catégorie peuvent avoir un "Tarif Catégorie" différent. Pour éviter cela, il faut créer une entité "Catégorie" qui portera le tarif. Cette règle permet de faire émerger des concepts qui n'apparaissent pas dans la première ébauche de diagramme de données. 46 MEGA Database Builder

Modélisation conceptuelle Identifiants et options SQL IDENTIFIANTS ET OPTIONS SQL Définir l identifiant d une entité Tout objet possède une identité qui caractérise son existence propre. L'identifiant permet de distinguer tout objet d'une entité de façon non ambiguë. Cela permet, entre autres, de distinguer deux objets dont toutes les valeurs d'attribut sont identiques. Un identifiant est constitué d'un ou plusieurs attributs ou rôles obligatoires qui permettent d'identifier de façon unique une entité. Le client dont le code est 2718 effectue la réservation numéro 314159. Chaque entité possède un identifiant unique dont la valeur permet de retrouver sans ambiguïté chacun de ses exemplaires. Par défaut, l identifiant est implicite. Lors de la synchronisation, une clé primaire est générée automatiquement à partir du nom de l entité. Identification par un attribut Il est aussi possible de choisir un des attributs de l entité comme identifiant. Pour cela, dans l onglet Attributs de la fenêtre des propriétés de l entité, sélectionnez la valeur "Oui" pour la caractéristique Identifiant de l attribut choisi. Un identifiant constitué de cet attribut est alors créé automatiquement pour cette entité. Après synchronisation vers le modèle logique, la clé primaire correspondante sera créée dans la table générée pour l entité. 47

1 Identification relative Dans certains cas, il est intéressant d'identifier une entité relativement à une autre. Ainsi, une ligne de commande peut être identifiée relativement à la commande à laquelle elle appartient. Son identification pourra ainsi être constituée du numéro de la commande suivi de son rang dans la commande (par exemple, 3ème ligne de la commande A721). Pour identifier une entité relativement à une autre : 1. Ouvrez la fenêtre de propriétés de l entité à identifier, par exemple "Ligne de commande". 2. Cliquez sur l onglet Identifiants. 3. Sélectionnez l identifiant et cliquez sur le bouton Ajouter des éléments 4. Une fenêtre liste les éléments qu il est possible d ajouter. 5. Sélectionnez le rôle"commande" et cliquez sur OK. 48 MEGA Database Builder

Modélisation conceptuelle Identifiants et options SQL Identifiant composé Vous pouvez définir un identifiant par : des attributs des rôles de multiplicité 1 des généralisations Lorsqu'un rôle est ajouté dans la constitution de l identifiant de l entité, une clé étrangère et ses colonnes sont générées dans la table correspondante lors de la synchronisation. Les associations n'ont par défaut pas d'identifiants propres : une association est identifiée par les identifiants des entités reliées. Un identifiant peut se composer d un ou plusieurs éléments. Pour définir la composition d un identifiant : 1. Ouvrez la fenêtre de propriétés de l entité. 2. Cliquez sur l onglet Identifiants. 3. Sélectionnez l identifiant et cliquez sur le bouton Ajouter des éléments. La liste des éléments possibles apparaît. 4. Sélectionnez un élément et cliquez sur OK. Les élements qui composent un identifiant s'affichent sous forme de liste. Vous pouvez préciser l ordre des éléments en cliquant sur le bouton Ordonner l onglet Identifiant. D autres boutons vous permettent de : de Supprimer un élément Accéder aux Propriétés d un élément Options SQL des entités Les options SQL disponibles dans la fenêtre de propriétés d une entité concernent la synchronisation, qui permet de traduire un modèle de données exprimé avec le formalisme entité/association en un modèle logique exprimé avec le formalisme relationnel. Voir "Synchronisation", page 85. Lors de la synchronisation, une entité donne lieu à une table. Vous pouvez définir sur l entité le nom de la table qui sera produite. Pour indiquer le nom SQL de la table : 1. Ouvrez la fenêtre de propriétés de l entité. 49

1 2. Cliquez sur l onglet SQL. Lorsqu une entité est reliée à plusieurs bases de données, vous pouvez attribuer à la table créée un nom différent d une base de données à une autre. Vous pouvez également définir un nom par défaut en fonction du SGBD cible. Lorsque les champs Nom SQL (Base de données) et Nom SQL (SGBD) indiquent des noms différents, c est le nom défini au niveau de la base de données qui prévaut lors de la synchronisation. Options SQL des attributs L'onglet SQL de la fenêtre de propriétés d'un attribut permet de préciser qu'un attribut devra être considéré comme obligatoire lors de la génération des tables. Dans ce cas, une clause "Not Null" est générée sur la colonne correspondante. Propriétés d un attribut, onglet Génération, sous-onglet SQL 50 MEGA Database Builder

Modélisation conceptuelle Règles de modélisation de données RÈGLES DE MODÉLISATION DE DONNÉES La construction d un référentiel est soumise à des règles de modélisation. En fonction du ou des produit(s) dont vous disposez, MEGA fournit un certain nombre de règles que vous pouvez appliquer aux objets que vous créez afin de contrôler leur cohérence. Dans le cadre de la création de modèles de données, MEGA Database Builder fournit le "Règlement de modélisation de données". Il est utilisé pour vérifier les modèles de données métiers et ceux destinés à être transformés dans le formalisme relationnel. Pour plus de détails sur les contrôles, voir le guide MEGA Common Features, "Générer la documentation", "Contrôler des objets". Contrôler un modèle de données Pour contrôler un modèle de données : 1. Cliquez avec le bouton droit sur le nom du modèle de données. 2. Sélectionnez Contrôler > Règlement avec Propagation. Une fenêtre apparaît; elle affiche la liste des règlements qui peuvent s appliquer à l objet. 3. Sélectionnez un règlement et cliquez sur OK. Cette commande a pour effet de contrôler l objet ainsi que ceux qui lui sont liés. Ainsi, pour un modèle de données, vous obtenez des résultats sur les objets qu il contient; tels que les entités, les attributs et les associations. Les résultats du contrôle apparaissent dans un rapport HTML. 51

1 52 MEGA Database Builder

2 LES CLASSES ET LE DIAGRAMME DE CLASSES Outre le formalisme du modèle de données présenté dans le premier chapitre, et à titre de compatibilité avec les versions antérieures, MEGA met à votre disposition une autre notation pour décrire les données métiers. Il s agit de la notation UML (Unified Modeling Langage). La description des données en notation UML s effectue dans un diagramme de classes. Ce chapitre décrit les différents concepts manipulés dans ce diagramme. "Créer un paquetage", page 54 "Le diagramme de classes", page 56 "Les Classes", page 57 "Les attributs", page 60 "Rôles des associations", page 62 53

2 CRÉER UN PAQUETAGE Un paquetage partitionne le domaine d étude et les travaux associés. Il est destiné à contenir les éléments modélisés. La représentation graphique de tout ou partie de ces éléments se fait dans un diagramme de classes. Une base de données peut être reliée dès sa création à un paquetage. C est sur cette base de données que pourront se lancer par la suite les différents outils de traitements des données (génération, synchronisation etc.). Le paquetage de la base de données est le détenteur par défaut des classes et associations représentées dans le diagramme de classes. Créer un paquetage Pour créer un paquetage: 1. Dans le navigateur, cliquez avec le bouton droit sur le dossier Paquetages et sélectionnez Nouveau > Paquetage. La fenêtre de création d'un paquetage s'ouvre. 2. Saisissez son Nom. 3. Cliquez sur OK. Le paquetage est créé et ajouté dans la liste des paquetages. Quand le bouton OK ou Créer est grisé, c'est que la fenêtre où il apparaît n'a pas été complètement renseignée. Relier un paquetage à une base de données Cette commande n est pas affichée par défaut et nécessite que vous activiez l option correspondante : 1. Dans MEGA, cliquez sur le menu Outils > Options. 2. Ouvrez le dossier Compatibilité > Autre compatibilité. 3. Dans la partie droite de la fenêtre qui apparaît, cochez l option Paquetage de données, puis cliquez sur OK. Pour créer un paquetage depuis une base de données : Cliquez avec le bouton droit sur la base de données et sélectionnez Nouveau > Paquetage de données. 54 MEGA Database Builder

Les classes et le diagramme de classes Créer un paquetage Pour relier un paquetage existant à une base de données : Cliquez avec le bouton droit sur la base de données et sélectionnez Relier > Paquetage de données. 55

2 LE DIAGRAMME DE CLASSES Un diagramme de classes est une représentation graphique permettant de représenter la structure statique d un système, en particulier les types d'objets manipulés dans le système, leur structure interne et les relations qui existent entre eux. Un diagramme de classes inclut : Des classes, qui représentent les concepts de base (client, compte, produit, etc.). Des associations, qui définissent les relations entre les différentes classes. Des attributs, qui décrivent les caractéristiques des classes et, dans certains cas, des associations. Des opérations, qui peuvent être effectuées sur les objets de la classe. Les opérations ne sont pas prises en compte par les outils de MEGA Database Builder (synchronisation, génération etc.). Créer un diagramme de classes Pour créer le diagramme de classes d un paquetage : 1. Cliquez avec le bouton droit sur le nom du paquetage. 2. Dans le menu contextuel qui s'affiche, cliquez sur Nouveau > Diagramme... Le menu contextuel peut être ouvert en cliquant sur un paquetage dans le navigateur ou dans un diagramme qui contient le paquetage. 3. Dans la fenêtre qui apparaît, sélectionnez "Diagramme de classes" et cliquez sur le bouton Créer. Le nouveau diagramme de classes s'ouvre. Notez que lorsque vous créez un paquetage depuis une base de données, un diagramme de classes est créé automatiquement en même temps. 56 MEGA Database Builder

Les classes et le diagramme de classes Les Classes LES CLASSES Propriétés des classes Différentes caractéristiques sont disponibles sur les classes. Pour les visualiser : Sélectionnez la commande Propriétés dans le menu contextuel de la classe visée. Sa fenêtre de propriétés apparaît. Propriétés de la classe "Classe 1", onglet Caractéristiques Plusieurs onglets permettent de définir les propriétés de la classe. Onglet Caractéristiques L'onglet Caractéristiques permet de saisir différentes caractéristiques de la classe. Son Nom, que vous pouvez modifier. Vous pouvez également modifier le nom d'une classe en cliquant directement sur son nom dans le dessin et en activant la touche F2. Le paquetage Détenteur : dans un diagramme de classes qui décrit un paquetage, toute classe que vous créez est rattachée par défaut à ce paquetage. 57

2 Son Stéréotype : un stéréotype est un type d'élément de modélisation qui permet d'étendre la sémantique du métamodèle. Les stéréotypes d intérêt dans MEGA Database Builder sont : Acteur : un acteur représente le rôle joué par quelque chose ou quelqu un se trouvant dans l environnement du système étudié. Contrôle : ce stéréotype permet de caractériser les classes effectuant des traitements internes au système. Ceux-ci nécessitent généralement le concours de plusieurs classes. Entité : ce stéréotype permet de caractériser des classes passives qui ne génèrent aucune interaction par elles-mêmes. Elles peuvent participer à plusieurs cas d utilisation et survivent généralement à une interaction unique. Elles représentent des objets partagés entre les différents acteurs qui les manipulent. Enumeration : type de données contenant une liste de valeurs tabulées. Il est possible de saisir cette liste de valeurs dans l'onglet Caractéristiques de la fenêtre de propriétés de la classe. Expression : expressions de types de données complexes basés sur des types élémentaires. Il est possible de saisir le type élémentaire d'une expression dans l'onglet Caractéristiques de la fenêtre de propriétés de la classe. Type élémentaire : ce stéréotype permet de caractériser les types de données. D'autres stéréotypes peuvent être créés par l'utilisateur. Une autre caractéristique que vous pouvez préciser est l abstraction : une classe Abstraite n a pas d instances. Elle n est utilisée que pour mettre en commun des opérations ou des attributs communs à ses sousclasses. Pour les autres caractéristiques liées à la notation UML, voir le guide MEGA Designer - Development. 58 MEGA Database Builder

Les classes et le diagramme de classes Les Classes Onglet Textes Vous pouvez également commenter la classe. Les commentaires permettent de compléter le diagramme lorsque des détails utiles n'apparaissent pas dans le dessin. Ces commentaires sont repris dans le document qui décrit le diagramme de classes. Sélectionnez pour cela la commande Commentaire dans l onglet Textes. Propriétés de la classe "Classe 1", onglet Textes Saisissez-y le commentaire de la classe. Cliquez sur le bouton OK pour quitter la fenêtre des propriétés de la classe. 59

2 LES ATTRIBUTS Attributs d une classe Une classe peut être caractérisée par des attributs. Vous pouvez ouvrir la fenêtre de propriétés de chaque attribut à l'aide de son menu contextuel. Propriétés de l attribut "Attribut 1", onglet Caractéristiques Vous pouvez y préciser : Son Type décrit par une expression (voir "Types", page 60). Seules les spécifications du type, de la persistance et du nom d un attribut sont prises en compte par la synchronisation et la génération de tables avec MEGA Database Builder. La Valeur initiale de l attribut qu il prendra lors de la création d une instance de la classe. S il est Modifiable, c est-à-dire si sa valeur peut être modifiée après avoir été renseignée une première fois. Types Un type de données permet de mettre en commun des caractéristiques communes à plusieurs attributs. 60 MEGA Database Builder

Les classes et le diagramme de classes Les attributs Toute classe peut être utilisée pour typer un attribut par exemple. Exemple : Client, Commande, Fenêtre, Tableau Les classes de stéréotype "Type élémentaire" sont créées uniquement afin de typer des attributs ou des paramètres. Elles sont invariables. Exemples de types élémentaires : Chaîne, Entier, Adresse Export, Montant en devises. Vous pouvez lister les types existants déjà à l aide de la flèche ou en créer de nouveaux à l aide de la flèche Les types proposés sont les classes détenues ou utilisées par le ou les paquetages dont il est client. Pour renseigner la structure d'un type : 1. Posez la classe correspondante dans le même diagramme ou dans un autre diagramme 2. Activez la commande Propriétés de son menu contextuel. Pour plus d informations sur l'utilisation des types élémentaires, voir "Types des attributs et des colonnes", page 149. 61

2 RÔLES DES ASSOCIATIONS Ordre Il est possible de préciser si un rôle est Ordonné ou non. Par exemple, pour une commande, il peut être intéressant de mémoriser l'ordre de ses lignes de commande. Pour ordonner un rôle : 1. Ouvrez sa fenêtre de propriétés. 2. Cliquez sur l onglet Caractéristiques. 3. Cochez le champ Ordonné. Par exemple, chaque case d'un échiquier est identifiée par son numéro de ligne et son numéro de colonne dans l'échiquier. Utiliser les classes d'association Une classe d'association est une association qui possède aussi les propriétés d'une classe comme des attributs. Il est utile de créer une classe d'association pour préciser des caractéristiques de l'association. Par exemple, il est nécessaire de préciser la quantité de produit demandée pour chacune des lignes d'une commande. Pour créer une classe d association : Créez la classe et, à l aide du bouton Lien, reliez la classe à l association. La classe d'association apparaît dans le dessin, reliée à l'association par un trait pointillé. 62 MEGA Database Builder

3 BASE DE DONNÉES ET MODÉLISATION LOGIQUE Le modèle de données permet de représenter la structure statique des données au niveau métier. La base de données est l objet qui permet de stocker et d organiser ces données en vue de leur utilisation par des programmes correspondant à des applications distinctes, et de manière à faciliter l évolution indépendante des données et des programmes. Vous pouvez relier un modèle de données et le diagramme associé à une base de données. Vous avez ensuite la possibilité de créer le diagramme relationnel correspondant. Les points abordés ici sont : "La base de données", page 64 "Le diagramme relationnel", page 67 "La modélisation logique", page 70 "Spécifier les clés primaires et étrangères", page 79 "Règles de modélisation d une base de données", page 83 63

3 LA BASE DE DONNÉES Sur une base de données, et en fonction du SGBD cible, vont être définis les paramètres de pilotage des différents outils de traitement des données (synchronisation, génération, rétro-génération etc.). Créer une base de données Pour créer une base de données : 1. Sélectionnez la fenêtre de navigation Objets principaux. 2. Dans le navigateur, cliquez avec le bouton droit sur "Base de données", et sélectionnez Nouveau > Base de données. Vous accédez à la fenêtre de création de la base de données. 3. Saisissez le nom de la base, par exemple "BD Commerciale". Une base de données permet de spécifier la structure de stockage logique ou physique des données. 4. Lorsque la fenêtre est renseignée, cliquez sur le bouton OK. La base de données "BD Commerciale" apparaît dans la liste des bases. Vous pouvez accéder aux propriétés de la base de données par la commande Propriétés de son menu contextuel. Propriétés d une base de données La fenêtre de propriétés d'une base de données présente plusieurs onglets, qui sont décrits dans les sections qui suivent. L'onglet Général, qui présente les sous-onglets Dictionnaire, Impact, etc., est le même que celui présenté pour tous les objets. 64 MEGA Database Builder

Base de données et modélisation logique La base de données Les autres onglets permettent : De modifier la liste des diagrammes de données et des diagrammes relationnels de la base de données ; les diagrammes relationnels permettent de consulter et modifier la base de données à partir de modèles graphiques. De modifier, dans les Caractéristiques de la base, le nom de la Base Cible et le SGBD cible. De consulter les compte-rendus de synchronisation et de génération. L'onglet Options présente des sous-onglets qui permettent d'indiquer : Le paramétrage de la génération des tables. Voir "Paramétrer la génération d'une base de données", page 184. Le paramétrage de la synchronisation. Voir "Paramétrer la synchronisation", page 113. Les compléments par défaut à ajouter au script SQL des tables ou des index. Voir "Compléter les objets", page 199. Relier un modèle de données à une base de données Vous pouvez créer un modèle de données à partir de la base de données ou lui relier un modèle existant. Le modèle de données permet de représenter la structure de la base de données, les entités qu elles contient et leurs associations. Le modèle de données de la base de données est le détenteur par défaut des entités et des associations représentées dans le diagramme de données. Néanmoins, il est possible d utiliser des entités et des associations détenues dans d autres modèles de données. Pour créer un modèle de données : Cliquez avec le bouton droit sur la base de données et sélectionnez Nouveau > Modèle de données. Cette commande crée un nouveau modèle de données ainsi que le diagramme qui lui est associé. Voir "Le modèle de données", page 22. Pour relier un modèle de données : 1. Cliquez avec le bouton droit sur la base de données et sélectionnez Relier > Modèle de données. La fenêtre de recherche apparaît. 2. Cliquez sur Chercher. 3. Sélectionnez le modèle de données voulu et cliquez sur OK. Importer une version de SGBD Lors de la création d un nouveau référentiel, seule la version de SGBD SQL ANSI/ ISO 9075:1992 est installée. Si vous choisissez un autre SGBD cible pour une base de données, il faut importer la bibliothèque d objets correspondante. Vous disposerez ainsi des datatypes correspondants. Pour importer une bibliothèque d objets : 1. Ouvrez MEGA en session "Administration". 65

3 2. A partir du bureau MEGA, sélectionnez Fichier > Importer > Bibliothèque d objets (*.mol). La fenêtre Importer une bibliothèque d objets apparaît. 3. Sélectionnez le fichier.mol correspondant au SGBD cible et cliquez sur OK. 4. Fermez en enregistrant et rouvrez MEGA en mode utilisateur. Vous pouvez maintenant sélectionner le SGBD en question dans la fenêtre de propriétés de la base de données. Voir aussi "Paramétrer la synchronisation", page 113. 66 MEGA Database Builder

Base de données et modélisation logique Le diagramme relationnel LE DIAGRAMME RELATIONNEL Un diagramme relationnel (DR) décrit une base de données : il représente les structures des données physiques exploitées par les programmes. La description dans MEGA des diagrammes relationnels permet d'envisager l'utilisation d'une interface avec le SGBD retenu, garantissant ainsi la cohérence sémantique des données de conception avec celles qui sont exploitées. Construire le diagramme relationnel Généralement, le diagramme relationnel est construit en deux phases : 1. La synchronisation automatisée du ou des diagrammes de données permet d obtenir le diagramme "brut". Voir "Synchronisation", page 85. 2. L optimisation du diagramme, aussi appelée dénormalisation, permet de prendre en compte les besoins d accès aux données de l applicatif et d optimiser les performances de la base de données. Voir "Dénormalisation", page 129. 67

3 Le concept central d'un diagramme relationnel est la table, issue d'une entité ou d'une association. La table est une structure logique de données, utilisée comme référence pour le passage en réalisation ; c est l'élément central de la base de données. Une table est accessible par une clé primaire, et éventuellement des clés étrangères ; elle est décrite par une séquence ordonnée de colonnes. Une table est généralement issue d'une entité ou d'une association. Une table est accessible par une ou plusieurs clés, dont le type indique si elles sont primaires ("primary key") ou étrangères ("foreign key"). Il est possible de définir les index d'une table, en précisant s'ils sont uniques et leur sens de tri (ascendant ou descendant). Les clés et les index sont reliés aux colonnes qui les constituent. Créer des objets depuis le diagramme Pour créer de nouvelles colonnes, clés, et index : Utilisez les saisies spécialisées disponibles sur les tables à partir de leur menu contextuel. Si le dessin n'a pas été généré automatiquement, pour poser facilement dans le diagramme les tables et les clés, vous pouvez utiliser les commandes Lister > Tables et Lister > Clés Etrangères de la base de données. Pour créer une clé ou un index dans le dessin : Dans la barre d objets du diagramme, cliquez sur le bouton Clé ou le bouton Index puis cliquez sur la table concernée. Si le bouton Index n'apparaît pas, activez la vue correspondante, dans la fenêtre ouverte avec le bouton Assurez-vous que les colonnes sur lesquelles doivent porter cette clé ou cet index existent déjà dans la table. Vous pouvez également utiliser l'onglet Tables de la fenêtre de propriétés de la base de données pour créer ces objets. Voir "Créer une clé", page 75 et "Créer un index", page 77. Pour créer une clé étrangère : Cliquez sur le bouton Clé, placez le pointeur sur la première table puis, en maintenant le bouton enfoncé, faites glisser le pointeur vers la seconde table. Une fenêtre de création similaire à celle utilisée pour les autres objets vous permet d indiquer son nom. Fonctionnalité de réorganisation automatique Le graphe des utilisateurs, le diagramme de classes, le diagramme de collaboration, le diagramme de composants et le diagramme relationnel comportent la fonctionnalité de réorganisation automatique du dessin. La fonctionnalité de réorganisation automatique est déclenchée automatiquement au chargement d'un diagramme ne comportant pas encore de dessin. 68 MEGA Database Builder

Base de données et modélisation logique Le diagramme relationnel Pour activer la réorganisation automatique sur un dessin existant : 1. Sélectionnez le menu Dessin > Réorganiser le dessin. 2. Sélectionnez le mode de réorganisation souhaité, la direction ainsi que le style des liens dans le diagramme. L'image miniature à côté des options de réorganisation vous permet d'avoir un aperçu de chaque type de réorganisation. 3. Cliquez sur OK pour appliquer les modifications. Paramétrer l'affichage des diagrammes relationnels De même que pour les diagrammes de données, il est possible de préciser les éléments qui doivent apparaître dans le diagramme : Soit par les vues (commande Affichage > Vues et détails), qui indiquent globalement les types d objets présentés ou non dans le diagramme. Soit par les options d affichage des éléments, qui permettent de définir quelles caractéristiques des objets doivent être présentées. Pour paramétrer l'affichage d'un seul objet : Activez la commande Formes et détails de son menu contextuel. Lorsque l'affichage concerne un objet, la fenêtre Affichage présente d'abord les formes qu'il est possible d'utiliser pour la présentation de l'objet. La sélection d'un élément dans l'arborescence provoque l'affichage de son contenu. La sélection d'un élément dans l'arborescence placée à gauche permet d'indiquer, dans l'onglet Contenu, quelles caractéristiques doivent être présentées. Le contenu varie en fonction de l'élément sélectionné dans l'arborescence. Ainsi, il est par exemple possible d'indiquer, pour une table, quelles seront les colonnes présentées. Pour cela il faut sélectionner, dans la liste Affichage de, une des options : Toutes, Aucune, ou Certaines ; l'option Certaines permet de préciser quelles colonnes apparaîtront dans le dessin du diagramme relationnel. La liste Avec permet de sélectionner les caractéristiques des colonnes qui apparaîtront dans le diagramme. 69

3 LA MODÉLISATION LOGIQUE Une base de données est un ensemble de données organisé en vue de son utilisation par des programmes correspondant à des applications distinctes et de manière à faciliter l'évolution indépendante des données et des programmes. Une base de données est constituée de tables, de colonnes, de clés et d'index : La table est l unité logique de stockage des colonnes. Une colonne est contenue dans une table. De même qu un identifiant "estampille" une entité, la clé primaire de la table "estampille" une ligne de table. Une clé étrangère permet l accès à une autre table, et le contrôle de cohérence des colonnes entre les tables concernées. Un index permet d accélérer l accès aux données ; il peut être unique ou non, ascendant ou descendant. Les tables d une base de données Il est possible de consulter et de mettre à jour les tables d une base de données de deux façons : En ouvrant l éditeur de la base de données, par la commande Editer de son menu contextuel. En ouvrant son diagramme relationnel, c est-à-dire le diagramme des tables de la base de données. En cliquant sur la commande Tables du menu contextuel de la base de données. 70 MEGA Database Builder

Base de données et modélisation logique La modélisation logique La fenêtre de propriétés s'ouvre sur l'onglet Tables de la base de données. Propriétés de la base "BD Bourse", onglet Tables Chaque table est présentée avec son Nom Local, le type d'objet dont elle est issue (Origine) et le nom de cet objet (Justification). Le nom du Groupement de données associé est indiqué, le cas échéant. Créer une table Pour créer une table : Cliquez sur le bouton Nouveau La nouvelle table apparaît dans la fenêtre. Elle se nomme par défaut "Table1". Pour la renommer : 1. Cliquez avec le bouton droit sur le nom de la table et sélectionnez Propriétés. 2. Cliquez sur l onglet Caractéristiques. 71

3 3. Dans le champ Nom Local, saisissez le nouveau nom. Propriétés de la table "Table 1", onglet Caractéristiques Supprimer une table Pour supprimer une table, avec ses colonnes, clés et index : Sélectionnez la table et cliquez sur le bouton Supprimer Un message demande confirmation de la suppression. Une table supprimée ne sera pas recréée automatiquement lors d une nouvelle synchronisation. Pour recréer la table, lors de l étape de validation des résultats de la synchronisation, validez l action de création proposée pour cette table (cochez la case correspondante). Voir "Etape 4 : valider les résultats", page 94. Les colonnes d'une table Visualiser les colonnes Pour consulter les colonnes d'une table : Ouvrez le menu contextuel de la table et sélectionnez la commande Colonnes. La fenêtre de propriétés de la table présente l'onglet Colonnes. Propriétés de la table "Concerner", onglet Colonnes 72 MEGA Database Builder

Base de données et modélisation logique La modélisation logique Pour chaque colonne sont présentés : Son Nom local Son type (Datatype) L'administrateur peut compléter la liste des datatypes (voir "Créer de nouveaux datatypes", page 164). Eventuellement sa longueur (Lng) et son nombre de décimales (Déc) La valeur de l'attribut Not null Sa valeur par défaut : lors de la génération de la table, la valeur prise par défaut est celle de l attribut dont elle découle. Si aucune valeur initiale n est renseignée au niveau de l attribut ou si vous voulez modifier la valeur d une colonne, entrez une valeur dans ce champ. Le fait que la colonne soit reliée ou non à une clé primaire (PK) ou étrangère (FK). Cela est indiqué par Y ("Oui") ou N ("Non"). Créer une colonne Il est possible de modifier le Nom Local d'une colonne en cliquant sur son nom et en saisissant le nouveau nom. Ce nom local sera utilisé dans le script généré pour la table. Il est possible d'indiquer un Nom SQL directement dans l'onglet Génération de la fenêtre de propriétés d'un attribut dans le diagramme de données. De cette façon, toutes les colonnes créées à partir de cet attribut auront pour base le même nom local. De plus ce nom sera réutilisé lors des synchronisations successives, y compris lors d'une réinitialisation totale ou partielle. Il est également possible de modifier la valeur des autres caractéristiques de la colonne. Ces modifications seront conservées lors des synchronisations ultérieures. Il est possible de créer des colonnes qui ne proviennent pas d'attributs du diagramme de données, que ce soit dans une table générée ou créée par l'utilisateur. Pour créer une colonne : Cliquez sur le bouton Nouveau Lorsque la création d'une colonne n'est pas effectuée à partir de l'onglet Colonnes des Propriétés d'une table, par exemple avec l'explorateur, il est nécessaire de sélectionner au préalable la table qui la contiendra, sinon un message indique que la création est impossible. Supprimer une colonne Pour supprimer une colonne : Cliquez sur le bouton Supprimer Une colonne supprimée ne sera pas recréée automatiquement lors d une nouvelle synchronisation. Pour recréer la colonne, lors de l étape de validation des résultats de la synchronisation, validez l action de création proprosée pour cette colonne (cochez la case correspondante). Voir "Etape 4 : valider les résultats", page 94. 73

3 Le bouton Réordonner l'ordre. permet d'accéder à la fenêtre de Modification de Modifier les clés et les index La création automatique des clés primaires et étrangères, et celle d'index sur ces clés, est indiquée dans le paramétrage de la synchronisation. Lorsque ces créations sont demandées : Les clés primaires portent sur les colonnes correspondant aux identifiants. Les clés étrangères portent sur les colonnes qui migrent dans les tables à cause d une association contrainte. Un index est créé sur chaque clé. Il est possible de compléter, modifier ou supprimer les clés et index proposés lors de la génération. Pour cela : Dans la fenêtre de propriétés de la table, sélectionnez l onglet Clés ou l onglet Index. Propriétés de la table "Concerner", onglet Clés Dans l'onglet Clés sont indiqués : Le type de la clé (Type-Clé) : "Etrangère" ou "Primaire". Dans le cas d une clé étrangère : La table référencée. La gestion de l intégrité référentielle en mise à jour (On Update) et en suppression (On Delete) ; référez-vous à la documentation du SGBD cible pour le type d ordres gérés. Lorsqu'une colonne dite "migrante" est créée dans une table pour prendre en compte une association contrainte, il est possible de demander que le SGBD contrôle la valeur mise à jour dans cette colonne. Le SGBD vérifie alors que cette valeur existe toujours dans la table d'origine (intégrité référentielle). 74 MEGA Database Builder

Base de données et modélisation logique La modélisation logique Lors d'une mise à jour (On Update) ou d'une suppression (On Delete) dans la table d'origine, le SGBD peut : Mettre à jour les valeurs dans les tables concernées, avec l option Cascade. Ne rien faire, avec l option No Action. Interdire la mise à jour ou la suppression, avec l option Restrict. Remettre la valeur par défaut dans les tables concernées, avec l option Set Default. Remettre la valeur à Null dans les tables concernées, avec l option Set Null. Propriétés de la table "Concerner", onglet Index Dans l'onglet Index sont indiqués : Son Type : Bitmap, Standard, Unique, Unique where not null. Son Sens de Tri (Ascendant ou Descendant). S il s agit d un index groupé (Clustered). La création d'une colonne à partir d'une clé ou d'un index n'est pas possible. Il faut d'abord créer la colonne dans la table, puis la relier à la clé ou à l'index. Créer une clé Pour créer une clé : Dans l onglet Clés de la fenêtre de propriétés d une table, cliquez sur le bouton Nouveau Une première fenêtre demande de choisir le type de clé à créer, "étrangère" ou "primaire". La création d'une clé varie selon le type indiqué. 75

3 Clé primaire Lorsque vous sélectionnez le type "Primaire", la fenêtre des propriétés de la clé est présentée. Le nom des clés primaires est déduit du nom de la table. Lorsqu'une clé primaire a déjà été définie, la création d'une nouvelle clé déclenche l'affichage d'un message, qui indique que ce nom est déjà utilisé. La clé créée porte un nom différent de la clé initiale. Vous pouvez spécifier les colonnes sur lesquelles porte la clé, dans l'onglet Colonnes de cette fenêtre. Il est également possible de spécifier la clé primaire d'une table dans l'onglet Identifiants de la fenêtre de propriétés de l entité dont elle est issue. Voir "Définir l identifiant d une entité", page 47. Il est également possible de spécifier manuellement la clé primaire en la faisant porter sur des éléments qui peuvent être des attributs de l entité ou la clé primaire d'une autre table reliée par une association contrainte (multiplicité 1). Dans tous les cas, la clé ainsi spécifiée sera créée dans la table lors de la synchronisation. Clé étrangère Lorsque la clé créée est une clé étrangère, une liste des tables de la base de données est présentée. 1. Sélectionnez alors la table de référence sur laquelle porte la clé étrangère. 2. Si la table que vous choisissez comporte une clé primaire, un message apparaît. 3. Sélectionnez Oui. La fenêtre de propriétés de la clé est ensuite présentée. Propriétés de la clé "Cle1", onglet Caractéristiques Vous pouvez modifier le Nom local de la clé (le nom complet d'une clé est composé du nom de la base de données à laquelle elle appartient, suivi du nom de la table, puis de son nom local : dans l'exemple qui précède, "BD Bourse::Concerner::Cle1"). 76 MEGA Database Builder

Base de données et modélisation logique La modélisation logique Pour une clé étrangère, comme lors de l'édition d'une clé, il est possible de préciser la gestion de l'intégrité référentielle en mise à jour (On Update) et en suppression (On Delete). Créer un index Des index sont créés automatiquement sur les clés primaires et étrangères. Il est possible d'ajouter, aux index générés, des colonnes utilisées fréquemment comme critères de recherche. Exemples d'index : Pour créer un index : 1. Ouvrez la fenêtre de propriétés de la table. 2. Cliquez sur l onglet Index. 3. Cliquez sur le bouton Nouveau. La fenêtre de propriétés de l'index est présentée. Propriétés de l index "Index1", onglet Caractéristiques De même que pour une clé, vous pouvez modifier le Nom local de l'index. En fonction des possibilités offertes par le SGBD utilisé, il est possible de préciser le Type de l'index, le Sens de tri de l'index ("Ascendant" ou "Descendant"), et s il s agit d un index groupé (Clustered). Il est alors possible de sélectionner les colonnes de la clé (de l'index) dans l'onglet Colonnes de la fenêtre de propriétés de l'index. 77

3 Ajouter une colonne à une clé ou un index Pour ajouter une colonne à une clé (ou à un index) : 1. Dans la fenêtre de propriétés de la table, cliquez sur l onglet Index. 2. Cliquez avec le bouton droit sur l index et sélectionnez Colonnes. 3. Cliquez sur le bouton Relier Les colonnes de la table sont présentées. 4. Dans cette liste, sélectionnez les colonnes à ajouter à la clé (ou à l index). Le bouton Délier vous permet d'enlever une colonne de la clé (ou de l'index). Il est possible d'indiquer le sens de tri de la clé ou de l'index, qui peut être "Ascendant" ou "Descendant". 78 MEGA Database Builder

Base de données et modélisation logique Spécifier les clés primaires et étrangères SPÉCIFIER LES CLÉS PRIMAIRES ET ÉTRANGÈRES Lorsque les clés de la base ne sont pas complètement spécifiées, il est nécessaire de les Compléter, en sélectionnant les commandes proposées dans le menu contextuel de la base de données. 79

3 Spécifier les clés primaires Dans le menu contextuel de la base, activez la commande Compléter > Clés primaires. La fenêtre de Complément de définition des tables s'ouvre. Lorsque la base est complètement spécifiée, la fenêtre présente une liste vide : aucun complément de spécification n'est nécessaire. La liste Proposition permet d'indiquer le critère utilisé pour proposer les clés : A partir des index uniques : les colonnes qui appartiennent à un index unique sont proposées comme composantes de la clé primaire. A partir des colonnes obligatoires : ces colonnes sont proposées comme composantes d une clé. Par rapprochement des noms : si le même nom de colonne est retrouvé dans plusieurs tables, la colonne est proposée comme clé primaire. Chaque clé est proposée sous la table à laquelle elle appartient. Le menu contextuel ouvert en cliquant sur une clé avec le bouton droit permet d'accepter ou de Refuser chaque clé. Ce menu permet également de renommer les clés acceptées. Un symbole indique le statut de chaque clé. Ce menu est également disponible sur les colonnes des clés pour permettre d'éliminer celles qui répondent aux critères de recherche mais ne sont pas des constituants de la clé. Le bouton Appliquer retire de la liste des propositions les clés explicitement acceptées ou refusées (c'est-à-dire celles dont un symbole précise l'état). Il est également possible de sélectionner/désélectionner une clé avec la barre d'espacement. Pour les clés étrangères, deux clés incluant une même colonne sur une même table sont incompatibles : l'acceptation de l'une provoque automatiquement le rejet de l'autre. 80 MEGA Database Builder

Base de données et modélisation logique Spécifier les clés primaires et étrangères Il n'est pas possible de sélectionner plusieurs clés primaires sur une même table : l'acceptation d'une clé provoque le rejet des autres. Il vous est possible de compléter la spécification des clés en plusieurs passages. Cela vous permet de consulter le contenu de la base pendant que vous faites vos choix. Pour cela : Cliquez sur le bouton Appliquer pour enregistrer vos modifications. Cliquez sur le bouton Annuler pour quitter cette fenêtre sans lancer de traitement. Spécifier les clés étrangères Une fenêtre similaire permet de compléter les clés étrangères ; les critères de proposition sont Par rapprochement des noms et A partir des index. Si la proposition est faite à partir des index, la proposition se base sur les index non uniques de la table. La table de référence est indiquée après le nom de la clé. Cette table n'est pas toujours proposée : il est possible de l'indiquer, ainsi que de modifier la table de référence lorsqu'elle est proposée, en activant la commande Référencer du menu contextuel de la clé. Les clés qui n'ont pas de table de référence ne peuvent être acceptées. Lorsque les clés sont complétées, cliquez sur le bouton OK pour lancer le traitement. Lors de la proposition de clés, on peut trouver plusieurs tables possédant une clé primaire identique. Ce pourrait être le cas par exemple, pour les tables correspondant aux différents sous-types d'une même entité. Colonne clé primaire de deux tables Quand la même colonne est clé primaire de deux tables, la proposition de clé étrangères propose la création de chacune des deux clés. Il convient alors de choisir laquelle des deux clés est effectivement à prendre en compte. 81

3 Colonne clé primaire de trois tables Quand la même colonne est clé primaire de trois tables, la proposition de clés permet de créer une seule clé étrangère à partir d'une colonne d'une table. La proposition de clé permet de créer une seule clé étrangère à partir de la table C. Il faut aller rajouter l'autre dans la saisie des tables de la base de données. 82 MEGA Database Builder

Base de données et modélisation logique Règles de modélisation d une base de données RÈGLES DE MODÉLISATION D UNE BASE DE DONNÉES MEGA Database Builder fournit un ensemble de règles qui permettent de contrôler la modélisation des bases de données. Le règlement logique contient les règles relatives au schéma relationnel d'une base de données. Il est utilisé pour vérifier le schéma relationnel correspondant dans un SGBD. Le règlement physique contient les règles relatives aux spécifications techniques propres au SGBD de la base de données. Il est utilisé pour vérifier la cohérence des paramètres physiques du schéma relationnel spécifique au SGBD. Contrôler une base de donnée Vous pouvez lancer un contrôle sur la base de données ou sur un objet de la base de données. Pour contrôler une base de données : 1. Cliquez avec le bouton droit sur le nom de la base de données. 2. Sélectionnez Contrôler > Règlement avec Propagation. Lorsque plusieurs règlements peuvent s appliquer à l objet contrôlé, une fenêtre vous demande de sélectionner le règlement voulu. Le contrôle s applique à la base de données ainsi qu aux objets qu elle détient. Les résultats apparaissent dans un rapport HTML. Pour plus de détails sur les contrôles, voir le guide MEGA Common Features, "Générer la documentation", "Contrôler des objets". 83

3 84 MEGA Database Builder

4 SYNCHRONISATION La synchronisation est le traitement qui permet de traduire un modèle de données exprimé avec le formalisme entité/association en un modèle logique exprimé avec le formalisme relationnel, et inversement. Elle met ainsi en correspondance les objets des deux modèles. Ce processus est à réaliser à certaines périodes. En effet, tout au long du projet de modélisation, ces modèles subissent des changements chacun de leur côté. La synchronisation intervient lorsque vous voulez confronter les deux modèles et rétablir de façon automatique les correspondances canoniques qui les unissent. Lors de la synchronisation, des règles de correspondance s appliquent par défaut. Vous avez la possibilité de modifier les correspondances et faire en sorte que la synchronisation conserve les personnalisations effectuées à travers le temps. Voir "Dénormalisation", page 129. La synchronisation s effectue dans l éditeur de base de données. Elle est disponible avec l accès au référentiel MEGA en mode "Avancé". Voir aussi "Correspondance des modèles", page 121. Les points suivants sont abordés ici : La synchronisation de modèles d une base de données peut s effectuer dans un sens ou dans l autre - soit dans le sens logique > conceptuel soit dans le sens conceptuel > logique - mais pas les deux à la fois. Une fois le sens de la synchronisation déterminé, il convient de ne pas inverser la synchronisation. La justification des correspondances entre les niveaux conceptuel et logique n est pas garantie si cette règle n est pas respectée. "Règles de synchronisation "Conceptuel vers Logique"", page 86 "Du modèle conceptuel au modèle logique", page 92 "Relancer la synchronisation après modifications", page 104 "Du modèle logique au modèle conceptuel", page 107 "Paramétrer la synchronisation", page 113 85

4 RÈGLES DE SYNCHRONISATION "CONCEPTUEL VERS LOGIQUE" Les règles suivantes sont utilisées pour la transformation des modèles de données en formalisme relationnel. Pour plus d informations, voir également "Paramétrer la génération des noms", page 115 et "Types des attributs et des colonnes", page 149. Entités Règle générale Sous-entité Toute entité non abstraite du modèle devient une table. L identifiant de l entité devient la clé primaire de la table. Si l identifiant est implicite, une colonne est automatiquement créée. Voir "Paramétrer la génération des noms", page 115. Les attributs de l entité deviennent des colonnes de la table. Des règles de correspondance permettent de déduire les datatypes des colonnes à partir du type de données (MD) de chaque attribut. Les paramétrages proposés dépendent du SGBD. Pour plus d informations à ce sujet, voir "Types des attributs et des colonnes", page 149. La clé étrangère issue de la dépendance entre la sous-entité et sa superentité est créée. Entité abstraite Une entité abstraite ne donne lieu à aucune table lors de la synchronisation. 86 MEGA Database Builder

Synchronisation Règles de synchronisation "Conceptuel vers Logique" Si des associations contraintes pointent vers une entité abstraite, les clés étrangères correspondantes ne sont pas créées, mais les colonnes correspondant aux clés étrangères sont créées pour respecter l intégrité de la table. Lorsqu une sous-entité est abstraite, toutes les colonnes et clés étrangères de la table correspondante sont prises en charge par la table correspondant à la super entité. Inversement, lorsqu une une super-entité est abstraite, toutes les colonnes et clés étrangères de la table correspondante sont prises en charge par la table correspondant à la sous-entité. Pour définir une entité abstraite : 1. Ouvrez la fenêtre de propriétés de l entité. 2. Cliquez sur l onglet Caractéristiques. 3. Dans le champ Abstraite, sélectionnez "Oui". Entité réalisée On dit d'une entité qu'elle est réalisée si elle donne lieu à la création d'une table lors d'une synchronisation. Une entité "non réalisée" est traitée comme une entité abstraite. Contrairement à la propriété "abstraite" qui caractérise l entité dans tous ses cas d emploi, le concept "Réalisé" s applique uniquement dans le cadre de la synchronisation d'une base de données. Voir "Mode Réalisé", page 97. Associations Association contrainte (multiplicités : 0,1 ou 1,1) Une association contrainte est une association binaire dont la multiplicité maximum d un de ses rôles est 1. Dans ce cas, il n'est pas nécessaire de créer une table correspondant à cette association. Une colonne rajoutée dans la table correspondant à l entité suffit. Une association contrainte (une de ses multiplicités maximum est à 1) ne donne pas lieu à une table. Dans l'exemple suivant, une commande comporte un client et un seul. La synchronisation de ce diagramme de données donne l un des deux résultats suivants : 87

4 L association ne donne pas lieu à une table Une colonne correspondant à la clé de l entité "Client" est créée dans la table "Commande". Une colonne est également créée pour chaque attribut de l association. Une clé étrangère "FK_Client" est ajoutée pour assurer le contrôle de la colonne "ID_Client" de la table "Commande". Elle indique que les valeurs possibles pour la colonne "Numéro Client" de la table "Commande" sont celles qui existent dans la colonne "Numéro Client" de la table "Client". La clé étrangère ("foreign key") est créée à partir de l'identifiant de l entité. L association est transformée en table Pour que l association se transforme en table : 1. Ouvrez la fenêtre de propriétés de l association. 2. Cliquez sur l onglet Caractéristiques. 3. Dans le champ Correspondance potentielle, sélectionnez la valeur "Table". 88 MEGA Database Builder

Synchronisation Règles de synchronisation "Conceptuel vers Logique" Association contrainte (multiplicités : 0,1 et 0,1) Dans ce cas particulier, la combinaison des multiplicités est ambiguë. Il n'y a pas d'élément permettant de choisir dans quelle table on va créer la colonne correspondant à l'attribut. La synchronisation propose une colonne dans chaque table. Verrous croisés (dead locks) Les multiplicités 1..x, 1..x signifient que chacun des deux objets doit être relié à au moins un objet de l'autre type pour pouvoir exister. Ceci pose un problème pour créer les premiers objets de chaque type. En effet : Un objet de type A doit exister pour pouvoir créer un objet de type B et le lui relier. Réciproquement, un objet de type B doit exister pour pouvoir créer un objet de type A et le lui relier. C'est le cas en particulier pour les couples de multiplicités suivants : Multiplicités 1..*, 1..* Multiplicités 1, 1..* Ces cas n'amènent cependant pas d'impossibilité physique car le problème se cantonne à la création des premiers objets de chaque type. De plus, aucune clé étrangère pour effectuer le contrôle d'intégrité n'est générée dans le premier cas, et une seule dans le deuxième cas, ce qui n'amène pas à une situation de verrou croisé ("dead lock"). 89

4 Les multiplicités 1, 1 génèrent plusieurs clés étrangères obligatoires croisées : On est alors dans une situation de blocage total, car on devrait, pour respecter les contraintes, créer plusieurs tables à la fois. Certains SGBD interdisent complètement la création de tables de ce type. Pour permettre une synchronisation correcte, il vous faut éviter les situations de ce genre. Choisissez une des clés étrangères pour laquelle vous mettez la multiplicité 1 et sur l'autre, mettez 0..1. Vous pouvez également retirer la clé étrangère de la table après la synchronisation, mais c'est moins pratique. Pour ne pas perdre l'information concernant la multiplicité minimum à 1, vous pouvez ajouter une contrainte comme celle présentée dans le diagramme qui suit. Cette contrainte ne sera pas prise en compte dans la synchronisation. Voir "Les contraintes", page 43 pour plus de détails. Voici un autre exemple dans le cas d'une nomenclature : Nomenclature 1, 1 ou 0..1, 1. On veut exprimer que chaque sortie du boulevard périphérique précède une sortie et en suit une autre. 90 MEGA Database Builder

Synchronisation Règles de synchronisation "Conceptuel vers Logique" Cette modélisation oblige à créer toutes les sorties à la fois, puisque pour chaque sortie, on doit avoir créé la précédente. Pour éviter cela, il faut mettre les deux multiplicités à 0..1 et 0..1. Association non-contrainte Une association dont les multiplicités maximum sont différentes de 1 donne lieu à une table : Une colonne est créée pour chacun des attributs des identifiants des entités reliées. La clé primaire de la table porte sur l ensemble de ces colonnes. Une clé étrangère est également constituée pour chaque entité reliée. Une colonne supplémentaire est créée pour chaque attribut de l association. Avant de lancer la synchronisation, il est souhaitable de contrôler la validité du diagramme de données, et de contrôler que le paramétrage de la synchronisation est correct. Voir "Règles de modélisation de données", page 51 et "Préparer la synchronisation", page 113. Classe associative (notation UML) Les associations reliant des classes associatives ne sont pas prises en compte dans la synchronisation. 91

4 DU MODÈLE CONCEPTUEL AU MODÈLE LOGIQUE Cette partie présente comment synchroniser le modèle conceptuel d une base de données (représenté par un diagramme de données) avec le modèle logique (relationnel) correspondant. Bien que la synchronisation du modèle relationnel à partir du diagramme de données concerne essentiellement des entités, elle peut également se faire à partir des classes d un diagramme de classes. La synchronisation dans l autre sens, d un modèle logique vers un modèle conceptuel est également possible mais pas sur une même base de données. Une fois le sens de la synchronisation choisie pour un objet, la synchronisation dans l autre sens n est plus possible. Voir "Du modèle logique au modèle conceptuel", page 107. Les points qui suivent présentent la synchronisation d une base de données. Vous pouvez également lancer une synchronisation réduite, autrement dit sur un objet particulier de la base de données. Voir "Synchronisation réduite (mode Conceptuel- >Logique)", page 100. Lancer la synchronisation Pour lancer la synchronisation sur une base de données : 1. Sous le menu Outils > Options de MEGA, dossier Référentiel, vérifiez que vous avez accès au référentiel en mode "Avancé". 92 MEGA Database Builder

Synchronisation Du modèle conceptuel au modèle logique 2. Cliquez avec le bouton droit de la souris sur la base de données et sélectionnez Editer. L éditeur de la base de données s ouvre en mode correspondance. Il juxtapose la vue conceptuelle et la vue logique de la base. Lorsqu un arbre de correspondance existe déjà, il l affiche automatiquement. Pour construire le modèle logique à partir du modèle conceptuel, autrement dit pour créer les tables et colonnes correspondant aux entités et attributs du diagramme de données : Cliquez sur le menu Outils > Synchronisation (Conceptuel vers Logique). L assistant de synchronisation apparaît. Etape 1 : sélectionner les objets à synchroniser Pour définir le périmètre de la synchronisation : 1. Dans l arbre de la vue conceptuelle, déroulez la liste des objets contenus dans la base de données. 2. Par défaut, tous les objets sont cochés et donc inclus dans la synchronisation. Pour exclure un objet de la synchronisation, décochezle. Lorsqu un objet est exclu, sa correspondance l est aussi. 3. Une fois la liste des objets définie, cliquez sur le lien Etape suivante de l assistant. 93

4 Etape 2 : options de synchronisation Parmi les options de synchronisation, vous pouvez : Réinitialiser les objets cibles : dans le cas où les objets de la vue conceptuelle ont déjà été synchronisés, la synchronisation repart de zéro et supprime les objets cibles existants. Lorsque les modèles ont déjà été synchronisés, pour que les correspondances établies soient prises en compte lors d une nouvelle synchronisation, veillez à ce que l option "Réinitialisation des objets cibles" soit décochée. Recalculer le nom des objets cibles : les noms des objets relationnels sont recalculés en fonction de ceux des objets sources. Cela signifie que toute modification manuelle du nom des objets relationnels est annulée. Prendre en compte les optimisations : toutes les optimisations - dont celles qui ne sont pas cochées dans l étape de validation (voir étape 4) sont proposées. Prendre en compte les suppressions : les entités, associations et diagrammes qui ont été supprimés font partie du périmètre. En conséquence, la suppression des objets ou des liens cibles correspondants est proposée. Voir "Cas d emploi des options", page 95 Les autres options concernent la mise à jour des propriétés des objets cibles. Par défaut, la synchronisation met à jour l ensemble des propriétés de chaque objet concerné. Une fois les options définies, cliquez sur Etape Suivante. Etape 3 : protéger des objets La synchronisation peut avoir un impact sur tous les objets d une base de données existante. Pour garder un objet intact : Dans l arbre de la vue logique, cliquez avec le bouton droit sur l objet en question et sélectionnez Figé. Cliquez sur Etape Suivante pour passer à la suite. Voir "Protéger des objets", page 97. Etape 4 : valider les résultats L assistant affiche les résultats qu entraînera la validation de la synchronisation. Les objets devant subir une modification automatique sont signalés d une coche. Des icônes précédant le nom des objets indiquent les actions qui vont être effectuées sur ces objets. Il peut s agir d une création, d une suppression ou d une mise à jour. Une flèche devant un objet indique que la synchronisation a un impact sur les sous-objets de l objet en question. Dépliez l objet pour visualiser les modifications concernées. 94 MEGA Database Builder

Synchronisation Du modèle conceptuel au modèle logique Validation des optimisations Les optimisations sont des personnalisations sur des objets ainsi soustraits au traitement automatique de la synchronisation. Exemples d optimisation : Une coche désigne les objets qui vont être modifiés. Si vous ne souhaitez pas valider les modifications portant sur certains objets, vous devez décocher les cases correspondantes. Cette optimisation est conservée lors des prochaines synchronisations. Par ailleurs, MEGA déduit des optimisations suite aux actions que vous avez pu effectuer manuellement. Si vous avez ajouté une table dans la vue logique sans avoir créé d objet correspondant dans la vue conceptuelle, la synchronisation ne coche pas la suppression de cette table : Pour que l objet soit supprimé, vous devez cocher la case correspondante. Une fois les actions sur les objets cibles définies, vous pouvez cliquer sur Etape Suivante. Un compte-rendu vous indique les actions effectuées. Vous pouvez fermer l assistant et visualiser les résultats dans l éditeur. Cas d emploi des options La combinaison des options "Prendre en compte les optimisations" et "Prendre en compte les suppressions" varie en fonction du périmètre des objets que vous souhaitez mettre à jour. Prendre en compte les optimisations Lorsque cette option est cochée, la synchronisation propose toutes les créations, suppressions et modifications, y compris les optimisations non cochées par défaut à l'étape de validation. Lorsque l'option est décochée, seules les modifications cochées par défaut sont proposées à l'étape de validation. Cette option permet de filtrer le résultat d'une synchronisation pour présenter uniquement les modifications qui ont un impact réel sur les données cibles. Prendre en compte les suppressions Lorsque cette option est cochée, la synchronisation prend en compte les entités, associations et diagrammes qui ont été supprimés. En conséquence, la suppression des objets ou liens cibles correspondants est proposée. 95

4 Lorsque l'option est décochée, les entités, associations et diagrammes qui ont été supprimés ne sont pas pris en compte. En conséquence, les objets cibles correspondants ne sont pas modifiés. Cette option ne s'applique qu'aux entités, associations et diagrammes. Pour les autres types d'objets supprimés (attributs, identifiants, etc. ), l'impact sur les objets ou liens cibles est conditionné non pas par cette option mais par l'objet qui les contient. Cette option permet de limiter l'impact d'une synchronisation au strict périmètre source défini par l'utilisateur, en excluant tout objet qui n'est pas explicitement déclaré dans le périmètre. Cette option peut être associée au périmètre de synchronisation pour des cas d'emplois types. Combinaisons des options possibles 1. Option "Prendre en compte les suppressions" cochée et périmètre de synchronisation complet Il s'agit d'un cas d'emploi qui privilégie une synchronisation complète entre la source et la cible. Dans ce cas, tous les objets ont une correspondance valide à l'issue de chaque lancement de l'assistant de synchronisation. Ce mode est à utiliser lorsque la source et la cible doivent être mis en cohérence en totalité. 2. Option "Prendre en compte les suppressions" cochée et périmètre de synchronisation partiel Ce cas d'emploi permet de travailler sur le périmètre choisi, tout en incluant l'impact des objets supprimés. Ce mode permet notamment de s'assurer des suppressions d'objets cibles suite à la suppression d'objets sources de type entité, association ou diagramme : ces objets sources ayant été supprimés, il n'est théoriquement pas possible de les inclure dans le périmètre de synchronisation. Cocher cette option rend ce choix possible. Il s'agit du mode à privilégier lorsque le périmètre est large et que le peu d'objets exclus du périmètre le sont à titre provisoire (ce sont par exemple de nouveaux objets dont on veut différer l'impact sur la cible). 3. Option "Prendre en compte les suppressions" cochée et périmètre de synchronisation vide Il s'agit d'un mode particulier permettant de "nettoyer" les objets cibles dont la correspondance n'est plus valide, sans autre impact. 4. Option "Prendre en compte les suppressions" non cochée et périmètre de synchronisation partiel Ce cas d'emploi permet de travailler strictement sur le périmètre choisi, en excluant tout impact en dehors de ce périmètre. Ce mode permet d'éviter des suppressions d'objets cibles suite à la suppression d'objets sources de type entité, association ou diagramme : ces objets sources ayant été supprimés, il n'est théoriquement pas possible de les exclure du périmètre de synchronisation. L'option décochée rend ce choix possible. Il s'agit du mode à privilégier lors d'une synchronisation ponctuelle sur un périmètre restreint, qui ne prend pas en compte la cohérence totale de la source et de la cible. C'est par ailleurs le mode le plus rapide. 96 MEGA Database Builder

Synchronisation Du modèle conceptuel au modèle logique 5. Option "Prendre en compte les suppressions" non cochée et périmètre de synchronisation complet Cette combinaison présente un cas d'emploi en principe peu fréquent. Elle correspond à un mode de travail dans lequel la suppression d'objets sources est systématiquement sans effet sur la cible; autrement dit, tout objet cible créé n'est plus supprimé tant que ce mode est activé. 6. Option "Prendre en compte les suppressions" non cochée et périmètre de synchronisation vide Cette combinaison est sans effet. Protéger des objets Vous pouvez protéger un objet afin que la synchronisation n ait pas d impact sur lui. Cela exclut l objet de la synchronisation sans le faire disparaître. Il existe deux modes de protection des projets; l un en amont de la synchronisation et l autre en aval. Mode Figé Mode Réalisé Le mode "Figé" concerne l objet en réception, celui qui résulte de la synchronisation. Vous pouvez figer des objets : Avant de lancer la synchronisation, dans l éditeur de base de données. Lors du lancement de la synchronisation, dans les options présentées dans l assistant. Voir "Etape 3 : protéger des objets", page 94. Le mode "Réalisé" concerne l objet source de la synchronisation. Un objet est dit réalisé s'il donne lieu à la création d'un objet lors d'une synchronisation. Un objet non réalisé ne donne pas lieu à la création d un objet lors de la synchronisation mais il est traité comme un objet abstrait. Voir "Entité abstraite", page 86. Par défaut, tous les objets sont réalisés. Vous pouvez exclure un objet source de la synchronisation en cliquant avec le bouton droit sur l'objet en question dans l'éditeur de correspondance et en désélectionnant "Réalisé". Cette action est disponible sur les entités, les attributs et les associations. L'action "Réalisé" ou "Non Réalisé" se propage aux objets fils. 97

4 Exemple d entité non réalisée L'entité "Article" possède une association vers l entité "Type article". L'entité "Type article" est dite "Non réalisée". Lors de la synchronisation, l entité "Type article" ne donne lieu à la création d aucune table. Dans la table "Article", la clé étrangère vers "Type article" n'est pas créée; en revanche, la colonne "Code_Type_Article" est créée. Résultats de la synchronisation : les correspondances Quand la synchronisation est terminée, les tables, colonnes, clés et index du diagramme relationnel ont été mis en phase avec le diagramme de données. Ils peuvent être consultés et modifiés pour prendre en compte les optimisations éventuelles. 98 MEGA Database Builder

Synchronisation Du modèle conceptuel au modèle logique Caractéristiques de la correspondance Pour plus de détails sur la correspondance : Dans l éditeur, cliquez avec le bouton droit sur la correspondance et sélectionnez Propriétés. Dans la fenêtre qui apparaît, cliquez sur l onglet Caractéristiques. Périmètre de la synchronisation Par défaut, tous les objets faisant partie des modèles synchronisés sont inclus dans la synchronisation. Vous avez cependant la possibilité d exclure un objet de la synchronisation. Voir "Etape 1 : sélectionner les objets à synchroniser", page 93. Etat de la synchronisation Vous pouvez protéger un objet afin qu il ne subisse aucune modification lors de la synchronisation, vous préciserez alors qu il est "Figé". Voir aussi "Protéger des objets", page 97. Sens de la synchronisation Le sens de la synchronisation sur une correspondance permet de savoir quel objet est mis à jour par rapport à l autre. Dans certains cas, la synchronisation est possible dans les deux sens (par exemple, lorsque deux objets pouvant être synchronisés n ont pas encore de correspondance). Dans d autres cas, elle n est possible que dans un sens (par exemple, si l un des deux objets est déjà synchronisé) ou bien impossible dans les deux (parce que chaque objet a déjà une correspondance ou parce que les types des objets concernés ne peuvent faire l objet d une synchronisation). Cette indication est fournie par le champ Synchronisation. Pour résumer : Bidirectionnelle : la synchronisation se fait dans les deux sens. De gauche à droite : la synchronisation se fait de gauche à droite (l objet de droite est synchronisé par rapport à l objet de gauche). De droite à gauche : la synchronisation se fait de droite à gauche. Jamais : pas de correspondance possible entre les deux objets. 99

4 Pour plus d informations sur les correspondances, voir "L éditeur de base de données", page 122. Synchronisation réduite (mode Conceptuel->Logique) La fonctionnalité de synchronisation permet de synchroniser un modèle conceptuel et un modèle logique d'une base de données. En phase de conception, il est souvent utile de synchroniser une partie du modèle courant sans avoir besoin de prendre en charge la totalité de la base de données qui peut être très volumineuse. MEGA Database Builder permet de limiter le périmètre d une synchronisation à un ensemble d objets, réduisant ainsi le temps de traitement de la synchronisation. La synchronisation réduite est une synchronisation appliquée à un objet autre que la base de données. La synchronisation réduite s applique uniquement à un objet dont la base de données a déjà été synchronisée. Les objets sur lequels vous pouvez lancer une synchronisation réduite sont : Classe Association Paquetage Table Dossier de Table Entité (DM) Association (DM) Modèle de données Les points qui suivent détaillent le mode "Synchronisation réduite" dans le sens Conceptuel > Logique mais il est également disponible dans le sens Logique > Conceptuel. Périmètre de la synchronisation réduite Pour assurer l intégrité du modèle conceptuel et du modèle logique, la synchronisation réduite intègre également dans son périmètre les objets qui dépendent directement de l objet source. Lors d une synchronisation d une entité, par exemple, le périmètre prend en compte tous les objets associés à l entité source qui sont nécessaires à la mise à jour de la table correspondante. Exemple En prenant l entité "Modèle" comme source d une synchronisation réduite, le périmètre s étend à l entité "Groupe véhicule" car les tables correspondant à ces deux entités sont liées par une clé étrangère : l entité "Groupe véhicule" peut modifier la table "Model" associé à l entité "Modèle" par l intermédiaire de la clé étrangère "FK_Group" (voir schéma ci-dessous). 100 MEGA Database Builder

Synchronisation Du modèle conceptuel au modèle logique L entité "Véhicule" quant à elle n est pas prise en compte dans le périmètre car elle ne peut pas agir sur la table "Model". Périmètre étendu L'Option "Etendre le périmètre source aux objets dépendants" étend le périmètre de la synchronisation réduite afin que les modifications de l'objet source soient prises en compte par tous les objets qui en dépendent. En prenant le même exemple : L'entité "Groupe Véhicule" fait partie du périmètre pour les même raisons que celles citées précédement. Avec le périmètre étendu, l 'entité "Véhicule" s ajoute à la synchronisation car elle est est liée à l'entité "Modèle" via l'association "modèle vehicule". Pour savoir s il existe une dépendance entre deux entités,vous devez consulter les associations et les généralisations qui lui sont associées. Voici deux cas : Association non contrainte (*,*) Si la synchronisation réduite s applique à l entité "Groupe véhicule", le périmètre par défaut est constitué uniquement de cette entité. 101

4 Si l option "Etendre le périmètre source aux objets dépendants" est active, le périmètre est constitué de l association et des deux entités. Généralisation Si la synchronisation réduite s applique à l entité "Personne", le périmètre par défaut est constitué uniquement de cette entité. Si l option "Etendre le périmètre source aux objets dépendants" est active, le périmètre est constitué des trois généralisations et des quatre entités. Si la synchronisation réduite s applique à l entité "Employé", le périmètre par défaut est constitué de cette entité et de l entité "Personne". Lancer la synchronisation réduite Avant de commencer, vérifiez que l option «Synchronisation réduite (conceptuel - > logique)» est active : 1. Cliquez sur le menu Outils > Options de MEGA. 2. La fenêtre des options apparaît. 3. Dans la partie gauche de la fenêtre, dépliez le dossier "Modélisation des données". 4. Cliquez sur "Synchronisation de base de données". 5. Dans la partie droite de la fenêtre, cochez la case "Activer la synchronisation réduite (conceptuel> logique)". Pour lancer la synchronisation réduite : 1. Cliquez avec le bouton droit de la souris sur l objet à synchroniser. 102 MEGA Database Builder

Synchronisation Du modèle conceptuel au modèle logique 2. Sélectionnez Synchroniser > Conceptuel vers logique. Une entité peut être utilisée par plusieurs modèles de données, donc par plusieurs bases de données. Quand c est le cas, une fenêtre vous demande de sélectionner la base concernée. Lorsqu une entité est utilisée dans plusieurs modèles de données, il est possible de restreindre le périmètre à un modèle en particulier, ce qui permet d exclure des associations d un autre modèle de la base de données courante. Le contexte dans lequel vous sélectionnez l objet à synchroniser est coché par défaut : par exemple, si la synchronisation réduite est initialisée à partir d une entité dans un diagramme, le modèle du diagramme en question est sélectionné. L option Etendre le périmètre source aux objets dépendants permet de gérer le périmètre des objets à prendre en charge lors de la synchronisation. 3. Une fois les options définies, cliquez sur OK. L éditeur de correspondances s ouvre sur l assistant de synchronisation. 4. Sélectionnez les objets à synchroniser. Le périmètre par défaut est coché. Les objets sélectionnés ne sont pas mémorisés; lors d une nouvelle synchronisation, le périmètre par défaut s affiche à nouveau. 5. Cliquez sur Etape suivante. 6. Définissez les options de synchronisation. Toutes les options de la synchronisation standard sont disponibles à l exception de l option "Réinitialiser les objets cibles". Voir "Etape 2 : options de synchronisation", page 94. 7. Cliquez sur Etape suivante. 8. L option de protection des objets cibles s affiche ; vous pouvez visualiser les objets figés. Il n est pas possible de modifier la protection des objets. Voir "Etape 3 : protéger des objets", page 94. 9. Validez les résultats. L éditeur reste ouvert sur le périmètre en mode [Synchronisation réduite] et affiche les résultats. 103

4 RELANCER LA SYNCHRONISATION APRÈS MODIFICATIONS Lorsqu'une base de données a été synchronisée puis modifiée manuellement, les spécifications complémentaires effectuées directement dans la base de données sont conservées, sauf si : Une réinitialisation est demandée. Des changements intervenus dans les diagrammes de données s y opposent (ajout ou suppression d objets ou de liens). Parmi ces changements peuvent être cités : La création d entités, d associations, d attributs dans le diagramme de données La suppression d entités, d associations, d attributs dans le diagramme de données La modification des caractéristiques d un attribut La modification du nom d un attribut, d une entité, ou d une association La modification de la multiplicité maximum d une association La modification des liens d une association Les spécifications complémentaires dans le diagramme relationnel peuvent être : Des suppressions d objets créés par la synchronisation Des créations d objets Des modifications des caractéristiques d objets créés par la synchronisation Des modifications de l ordre des colonnes dans les tables, les clés, ou les index. Après modification du diagramme de données Création d entités, d'associations et d'attributs dans le diagramme de données Les éléments correspondants sont créés dans le diagramme relationnel, en suivant les règles utilisées lors de la première synchronisation. Suppression d entités, d'associations, d'attributs dans le diagramme de données Les éléments correspondants sont supprimés dans la base de données. Par exemple, lorsqu'un attribut est supprimé dans le diagramme de données, la ou les colonnes correspondantes sont également supprimées. 104 MEGA Database Builder

Synchronisation Relancer la synchronisation après modifications Modification des caractéristiques d'un attribut Les modifications des caractéristiques d'un attribut (type, longueur, décimales,...) sont reportées sur la colonne correspondante du diagramme relationnel. Si la valeur d'une caractéristique de la colonne a été modifiée directement dans le diagramme relationnel, cette valeur est conservée. Modification du nom d'un attribut, d'une entité, ou d'une association La modification du nom d'un attribut, d'une entité, ou d'une association n'est pas reportée sur l'objet correspondant du diagramme relationnel. Modification de la multiplicité maximum d'une association Si la multiplicité maximum d'une association qui était à 1, entraînant ainsi la création d'une colonne migrante, passe à N, la colonne migrante est supprimée, et la table justifiée par la multiplicité maximum à N est créée. Modification des liens d'une association L'association R ne porte plus sur l entité B, mais sur l entité C. Dans ce cas, la colonne migrante de B dans A n'est plus justifiée. Elle est supprimée. Une colonne migrante provenant de C est créée. 105

4 Après des modifications du diagramme relationnel Suppression d'une table ou d'une colonne Créations d'objets Les suppressions dans la base de données d'objets qui ont été créés par la synchronisation (table, colonne, clé, index) sont mémorisées et conservées. Tant que l entité, l'association ou l'attribut qui justifie la table ou la colonne existe, la table ou la colonne n'est pas recréée. Pour rétablir une colonne créée par la synchronisation puis supprimée : Lancez la synchronisation de la base de données Lors de l étape de validation des résultats, confirmez l action de création (cochez la case correspondante) proposée pour cette colonne. Les créations d'objets (table, colonne, clé, index) effectuées dans le diagramme relationnel sont conservées. Cependant, la suppression d'objets dont ils dépendent peut entraîner leur suppression. Par exemple, on crée une colonne dans une table justifiée par une entité. Si on paramètre l entité comme "non table" ou qu'on délie l entité du modèle de données, la table correspondante va disparaître, et avec elle la colonne. Les objets créés dans le diagramme relationnel peuvent être mis en correspondance manuellement. Les objets créés lors de la synchronisation sont mis en correspondance automatiquement. Modifications de caractéristiques d'objets créés par la synchronisation Les modifications de caractéristiques (nom SQL, longueur, not null, datatypes) d'objets créés par la synchronisation sont conservées. Modifications d'ordre Concernant les modifications d'ordre, le traitement dépend des options définies dans l assistant de synchronisation (voir "Etape 2 : options de synchronisation", page 110). 106 MEGA Database Builder

Synchronisation Du modèle logique au modèle conceptuel DU MODÈLE LOGIQUE AU MODÈLE CONCEPTUEL Cette partie présente comment synchroniser le modèle logique d une base de données avec le modèle Conceptuel correspondant. Règles de synchronisation "Logique vers Conceptuel" Synchroniser le modèle conceptuel à partir du modèle logique permet de créer le diagramme de données d'une base à partir de ses tables. Les règles utilisées pour cette transformation sont : - Une table dont la clé primaire est constituée d une clé étrangère qui porte sur les mêmes colonnes devient une entité. Une généralisation est créée entre cette entité et l entité correspondant à la table vers laquelle pointe la clé étrangère. Exemple niveau logique : Résultat au niveau conceptuel : - Une table dont la clé primaire est constituée uniquement de clés étrangères devient une association de multiplicités (*..*). S il existe des colonnes de la table 107

4 qui ne font pas partie de la clé primaire, chacune de ces colonnes donne lieu à la création d un attribut qui est rattaché à l association. Exemple niveau logique : Résultat au niveau conceptuel : - Une table dont la clé primaire contient des clés étrangères et au moins une colonne qui n est pas clé étrangère devient une entité. Une association agrégée est créée entre cette entité et l entité correspondant à la table vers laquelle pointe chacune des clés étrangères. La clé candidate de l entité est composée des rôles des associations agrégées et des attributs correspondant aux autres colonnes de la clé primaire de la table. Exemple niveau logique : Résultat niveau conceptuel : 108 MEGA Database Builder

Synchronisation Du modèle logique au modèle conceptuel - Une table dont la clé primaire est constituée uniquement de deux clés étrangères pointant sur une même table devient une association réflexive de multiplicités (*..*). Exemple niveau logique : Résultat niveau conceptuel : - Dans les autres cas, chaque table devient une entité et ses colonnes les attributs de l entité. - Une clé étrangère devient une association (0..1, *). Si toutes les colonnes de la clé sont obligatoires, ses cardinalités deviennent (1, *). - Les types des attributs sont recalculés à l aide du tableau de conversion spécifique au SGBD cible (voir "Types des attributs et des colonnes", page 149). Lancer la synchronisation Pour lancer la synchronisation : 1. Sous le menu Outils > Options de MEGA, dossier Référentiel, vérifiez que vous avez accès au référentiel en mode "Avancé". 109

4 2. Cliquez avec le bouton droit de la souris sur la base de données et sélectionnez Editer. L éditeur de la base de données s ouvre en mode correspondance. Il juxtapose la vue conceptuelle et la vue logique de la base. Lorsqu un arbre de correspondance existe déjà, il l affiche automatiquement. Pour construire le modèle conceptuel à partir du modèle logique : Cliquez sur le menu Outils > Synchronisation (Logique vers Conceptuel). L assistant de synchronisation apparaît. Etape 1 : sélectionner les objets à synchroniser Pour définir le périmètre de la synchronisation : Dans l arbre de l éditeur s affiche la liste des objets contenus dans la base de données. Par défaut, tous les objets sont cochés et donc inclus dans la synchronisation. 1. Pour exclure un objet de la synchronisation, décochez-le. Lorsqu un objet est exclu, sa correspondance l est aussi. 2. Une fois la liste des objets définie, cliquez sur le lien Etape suivante de l assistant. Etape 2 : options de synchronisation Parmi les options de synchronisation, vous pouvez : Réinitialiser les objets cibles : la synchronisation repart de zéro et supprime les objets cibles existants. Recalculer le nom des objets cibles : les noms des objets du diagramme de données sont recalculés en fonction de ceux des objets du diagramme 110 MEGA Database Builder

Synchronisation Du modèle logique au modèle conceptuel relationnel. Cela signifie que toute modification manuelle du diagramme de données est annulée. Prendre en compte les optimisations : toutes les optimisations - dont celles qui ne sont pas cochées dans l étape de validation (voir "Validation des optimisations", page 95) sont proposées. Prendre en compte les suppressions : les entités, associations et diagrammes qui ont été supprimés font partie du périmètre. En conséquence, la suppression des objets ou des liens cibles correspondants est proposée. Voir "Cas d emploi des options", page 95 Vous devez également indiquer le modèle de données qui va détenir l ensemble des objets créés par la synchronisation. Les autres options concernent la mise à jour des propriétés des objets cibles. Par défaut, la synchronisation met à jour l ensemble des propriétés de chaque objet concerné. Etape 3 : protéger des objets La synchronisation peut avoir un impact sur tous les objets cibles. Pour garder un ou plusieurs objets intacts : 1. Dans l arbre de la vue conceptuelle, cliquez avec le bouton droit sur l objet en question et sélectionnez Figé. 2. Cliquez sur Etape suivante. Vous pouvez afficher la liste des objets figés en cliquant sur le bouton de l éditeur correspondant. Voir "Protéger des objets", page 97. Etape 4 : valider les résultats L assistant affiche les résultats qu entraînera la validation de la synchronisation. Pour valider ces résultats, cliquez sur Etape suivante. Un compte-rendu présente la liste des traitements effectués. Synchronisation réduite La synchronisation ci-dessus s applique à une base de données mais vous pouvez également lancer une synchronisation Logique->Conceptuelle sur un objet particulier d une base de données afin de réduire le périmètre et le temps de traitement de la synchronisation. Voir "Synchronisation réduite (mode Conceptuel- >Logique)", page 100. 111

4 Résultat de la synchronisation "Logique vers Conceptuel" Modèle de données détenteur Un modèle de données détenteur par défaut des entités est créé lors de la synchronisation Logique vers Conceptuel. Les entités et associations synchronisées lui sont automatiquement rattachées. Vous pouvez par la suite répartir ces entités et associations entre les différents modèles de données de votre étude. Diagrammes de données Un diagramme de données est créé pour chacun des diagrammes relationnels de la base de données. Les entités et associations issues des tables du diagramme relationnel correspondant y sont reliées. Les correspondances Voir "Résultats de la synchronisation : les correspondances", page 98. 112 MEGA Database Builder

Synchronisation Paramétrer la synchronisation PARAMÉTRER LA SYNCHRONISATION Cette partie présente les options et les paramètres par défaut pris en compte lors de la synchronisation. Préparer la synchronisation Pour préparer la synchronisation : 1. Sélectionnez la commande Propriétés du menu contextuel de la base de données, puis l onglet Options, sous-onglet Standard. Propriétés de la base "BD Bourse", onglet Options, sous-onglet Standard 2. Si vous voulez que le nom de la base physique utilisé lors de la génération de scripts SQL soit différent de celui de la base de données, renseignez le nom de la base cible dans le champ NomSql. 3. Indiquez éventuellement le Préfixe des tables SQL. Ce préfixe sera ajouté devant le nom de chacune des tables générées. 4. Sélectionnez l onglet Caractéristiques. 5. Sélectionnez le SGBD cible ainsi que sa version dans la liste déroulante. Le type de SGBD détermine : Pour la synchronisation, la génération des datatypes des colonnes en fonction du type et de la longueur des attributs (voir "Déduire 113

4 les datatypes des colonnes à partir des types des attributs", page 154). Pour la génération, la syntaxe des ordres SQL générés. Des paramètres supplémentaires pour le paramétrage des ordres de synchronisation et de génération peuvent être indiqués dans l'onglet Options de la fenêtre de propriétés de la base de données. Ces paramètres varient en fonction du SGBD sélectionné. 6. Cliquez sur OK pour fermer la fenêtre en prenant en compte les modifications. Options de création Sur une base de données Il est possible de paramétrer la synchronisation pour chaque base de données, afin de modifier : Ses options de création Le traitement de l intégrité référentielle (clés en suppression et en mise à jour, en fonction des possibilités offertes par le SGBD cible) Cette configuration concerne également le traitement des colonnes not null et la création automatique d'index sur les clés primaires. Vous pouvez configurer la synchronisation dans la fenêtre de propriétés de la base de données, dans l'onglet Options, sous-onglet Synchronisation. Propriétés de la base "BD Gestion des commandes", onglet Options, sous-onglet Synchronisation. 114 MEGA Database Builder

Synchronisation Paramétrer la synchronisation Vous pouvez renseigner les paramètres suivants : Colonnes Not Null : active/désactive l'option WITH DEFAULT pour les colonnes Not Null. OnDelete : stratégie par défaut pour la suppression des clés. Les valeurs possibles sont : Restrict : la suppression est refusée. Cascade : la suppression d une colonne est répercutée dans les tables dépendantes. Set Null : indique "Null" à la place. Set Default : donne la valeur par défaut lorsque celle-ci est renseignée. Si aucune valeur par défaut n est renseignée, il ne se passe rien ("No action"). No Action : il ne se passe rien. OnUpdate : stratégie par défaut pour la mise à jour des clés. Noms cols PK auto : colonnes issues de l identifiant implicite. Voir "Règle générale", page 86. Les paramètres dont le nom commence par "Noms de" permettent d'indiquer les règles de génération des noms (voir "Paramétrer la génération des noms", page 115). Sur le SGBD Les valeurs par défaut des paramètres de synchronisation et de génération des bases de données sont accessibles dans la fenêtre de propriétés du SGBD utilisé. Pour afficher les paramétrages de synchronisation d un SGBD : 1. Dans la barre MEGA, cliquez sur la fenêtre de navigation Utilitaires. 2. Cliquez avec le bouton droit sur le nom du SGBD cible et ouvrez sa fenêtre de propriétés. 3. Cliquez sur l onglet Options, sous-onglet Synchronisation. Par défaut, les paramètres renseignés au niveau du SGBD sont valables pour toutes les nouvelles bases. Lorsque vous modifiez les paramètres de synchronisation au niveau d une base, cette base ne tient plus compte des paramètres du SGBD. Pour plus d informations sur le paramétrage de la synchronisation, voir également "Lancer la synchronisation", page 92. Paramétrer la génération des noms Règles de construction des noms Les noms des objets relationnels créés lors de la synchronisation "Conceptuel vers logique" sont déduits du Nom Local des objets conceptuels dont ils sont issus. Les noms des objets conceptuels n étant soumis à aucune restriction particulière, des règles de transformation s appliquent par défaut lors de leur synchronisation. Ces règles sont accessibles localement dans l onglet Options > Standard des 115

4 propriétés de la base de données synchronisée, ou globalement dans les propriétés des SGBD cibles : Taille identifiant : taille maximale d'un identificateur SQL pour ce SGBD cible. 1er caractère : jeu de caractères autorisé pour le 1er caractère d'un identificateur SQL. Caractères autorisés : jeu de caractères autorisé pour les caractères d'un identificateur SQL. Caractère de remplacement : caractère de remplacement des caractères non autorisés. Caractères convertis : jeu de caractères à convertir d'un identificateur SQL. Caractères de conversion : jeu de caractères correspondant aux caractères à convertir. Conversion majuscule : conversion en majuscules des identificateurs SQL. Il est possible d indiquer un autre nom pour chaque objet synchronisé à l aide de son Nom SQL. Le Nom SQL se substitue au Nom Local lors de la synchronisation, tout en tenant compte des règles de transformation par défaut. Le Nom SQL des objets conceptuels est accessible dans l onglet SQL de leur fenêtre de propriétés. Vous pouvez donner un nom différent selon la base de données ou le SGBD. Lorsque les champs Nom SQL (Base de données) et Nom SQL (SGBD) indiquent des noms différents, c est le nom défini au niveau de la base de données qui prévaut lors de la synchronisation. 116 MEGA Database Builder

Synchronisation Paramétrer la synchronisation Par défaut, les noms des objets relationnels sont générés selon les masques suivants : Table Colonne Clé primaire Clé étrangère Index de clé primaire Index de clé étrangère Préfixe de la base de données + nom* de l entité ou de l'association Nom* de l'attribut "PK_" + nom* de l entité ou de l association "FK_" + nom* de l entité cible ou du rôle si renseigné "IDX_" + nom* de l entité ou de l association "IDX_" + nom* de l entité cible ou du rôle si renseigné *Nom calculé selon les règles de construction expliquées précédemment. Ces masques peuvent être modifiés localement dans chaque base de données, ou globalement pour un SGBD cilble donné. Modifier une règle de construction Pour modifier le masque d une règle de construction de nom : 1. Dans la fenêtre de propriétés de la base de données, cliquez sur l onglet Options, sous-onglet Synchronisation. 2. Cliquez sur la règle en question. Un menu apparaît à droite du champ. 117

4 3. Cliquez sur Modifier. La fenêtre de Saisie du masque SQL est présentée. Saisie du masque SQL Les masques SQL définissent la règle de construction des noms des objets relationnels lors de la synchronisation. Exemple : dans la base BASE_EMPLOYES qui a pour préfixe EMP, le masque ^DB_^ROOT génère pour la table issue de l entité Client : EMP_CLIENT. 118 MEGA Database Builder

Synchronisation Paramétrer la synchronisation Dans la fenêtre de saisie du masque SQL, vous pouvez saisir directement le Masque, en utilisant la syntaxe indiquée ci-après, mais vous pouvez également utiliser l'aide à la saisie proposée par le cadre Composant. Dans la liste du cadre Composant, indiquez les éléments qui doivent préfixer les noms. Ces éléments sont les suivants : ^ROOT Pour une table : nom* de l entité ou de l association dont elle provient. Pour une colonne : nom* de l attribut. Pour une clé primaire : nom* de l entité ou de l association. Pour une clé étrangère : nom* de l entité cible ou du rôle si renseigné. Pour une colonne de FK : nom* de l attribut. Pour une colonne de PK auto : nom* de l identifiant de l entité. Pour un index sur clé primaire : nom* de l entité ou de l association. Pour un index sur clé étrangère : nom* de l entité cible cible ou du rôle si renseigné. Pour un index : nom* de l attribut. ^DB ^TBL ^TBR ^KEY ^CPT Préfixe de la base de données Nom de la table Nom de la table de référence Nom de la clé Composteur *Nom calculé selon les règles de construction expliquées précédemment. La Taille indique la longueur limite totale du nom généré. Elle est également disponible pour chacun des éléments utilisés, qui seront tronqués au nombre de caractères indiqué entre parenthèses après l'élément concerné. La définition d'un Composteur ("^CPT") permet de générer automatiquement un numéro d ordre, et d'en indiquer la longueur (par exemple, ^CPT[^1^] générera "1", "2", "3"; ^CPT[^3^] générera "001", "002", "003"). L'option Toujours indique que le compostage commence dès la première occurrence (CLI00, CLI01,.., au lieu de CLI, CLI01,,). Vous pouvez également préciser les caractères utilisés comme préfixe et suffixe de ce composteur. L option Unicité du nom permet de garantir l unicité du nom d un objet au niveau de la base de données, du référentiel ou de la table dans lesquels se trouve cet objet. Ainsi, lorsque vous définissez l'unicité de nom au niveau de la table, il n'est 119

4 pas possible d'attribuer un même nom à des objets différents au sein d'une même table. 120 MEGA Database Builder

5 CORRESPONDANCE DES MODÈLES Dans beaucoup de projets de modélisation se pose le problème de la communication entre les équipes d'analystes, d architectes et les équipes de développement des bases de données. Il existe dans MEGA trois niveaux de modélisation : Le niveau conceptuel, qui décrit la modélisation des données en termes d entités et de relations, et qui s adresse aux analystes et utilisateurs. Le niveau logique (ou relationnel) qui décrit la base de données en termes de tables et qui fait l interface avec le SGBD. Ce niveau s adresse au concepteur et à l administrateur de base de données. Le niveau physique qui correspond à l exploitation des données par les SGBD et qui concerne l administrateur de base de données. En permettant le passage d un modèle de données à un autre, l éditeur de base de données favorise la cohésion entre l architecture des données et les systèmes qui les supportent. Les points abordés ci-après sont : "L éditeur de base de données", page 122 "Détails des correspondances", page 124 121

5 L ÉDITEUR DE BASE DE DONNÉES L éditeur d une base de données est l application qui vous permet de mettre en correspondance les différentes vues d une base de données, qui sont le modèle conceptuel et le modèle logique (ou relationnel). L autre fonction de l éditeur est la gestion des propriétés physiques. Voir "Ajouter des propriétés physiques aux objets d une base de données", page 206. Pour utiliser l éditeur, vous devez être en mode "Avancé" : 1. Cliquez sur le menu Outils > Options de MEGA. 2. Cliquez sur le dossier Référentiel. 3. Sélectionnez l accès au métamodèle "Avancé". Pour ouvrir l éditeur sur une base de données: Cliquez avec le bouton droit de la souris sur la base de données et sélectionnez Editer. L éditeur de la base de données s ouvre en mode correspondance. Il juxtapose la vue conceptuelle et la vue logique de la base. Lorsqu un arbre de correspondance existe déjà, il l affiche automatiquement. Ici, l arbre de l éditeur ne représente pas le chemin standard de navigation d un modèle de données, mais celui d une architecture technique. L assistant de synchronisation lancé depuis l éditeur met en correspondance de façon automatique les deux modèles. Voir "Synchronisation", page 85. Vous pouvez créer et modifier manuellement des correspondances dans l éditeur, mais cette méthode ne garantit plus la cohérence entre les deux modèles. L assistant de dénormalisation permet de maintenir cette cohérence. Voir "Dénormalisation", page 129. Créer une correspondance Pour créer une correspondance entre une entité et une table : 1. Dans l éditeur de la base de données, sélectionnez l entité puis la table. 2. Ouvrez le menu contextuel de la table et cliquez sur Etablir une correspondance. La correspondance se crée à partir du dernier objet sélectionné. Ainsi, pour créer une correspondance du modèle conceptuel vers logique, autrement dit pour définir un objet du modèle logique à partir d un objet du modèle conceptuel, vous devez sélectionner l objet du modèle conceptuel puis celui du modèle logique, et créer la 122 MEGA Database Builder

Correspondance des modèles L éditeur de base de données correspondance depuis ce dernier. Si une correspondance ne peut être créée, un message d erreur apparaît (Voir "Sens de la synchronisation", page 99). Exemple de nouvelle correspondance Prenons l entité "Personne" qui contient l attribut "Date Naissance". Elle a comme correspondance dans le formalisme logique la table "Personne" qui contient la colonne "Date_Naissance". Supposons que l on ajoute l attribut "Age" sur l entité. Celui-ci peut être calculé depuis la date de naissance. Pour ne pas créer de colonne correspondant à ce nouvel attribut lors de la synchronisation, vous pouvez le relier directement à la colonne "Date_Naissance". Pour créer une correspondance entre l attribut "Age" et la colonne "Date_Naissance" : 1. Dans l éditeur, sélectionnez d un côté la colonne "Date_Naissance" et de l autre l attribut "Age". 2. Cliquez avec le bouton droit sur le nom de l attribut et sélectionnez Etablir une correspondance. Une fois la correspondance créée, une coche apparaît devant l attribut "Age". Pour voir la représentation graphique de la correspondance, cliquez sur le menu Affichage > Fenêtre de dessin. Supprimer une correspondance Pour supprimer une correspondance sur un objet : Cliquez avec le bouton droit sur l objet en question et sélectionnez Enlever la correspondance. 123

5 DÉTAILS DES CORRESPONDANCES Les objets qui ont une correspondance sont cochés en vert. Lorsque vous sélectionnez l un de ces objets, sa correspondance apparaît dans la fenêtre de propriétés de la correspondance située par défaut en bas de l éditeur de base de données. Elle regroupe le nom des objets reliés dans les deux formalismes, le type des objets et éventuellement un commentaire. Exemple de correspondance On sélectionne la table "Client" dans l arbre de la vue logique : La correspondance affiche les objets suivants : Cela signifie que la table "Client" est issue de l entité du même nom. Propriétés d une correspondance Pour visualiser les propriétés d une correspondance : Dans l éditeur de base de données, cliquez avec le bouton droit sur la correspondance et sélectionnez Propriétés. Dans la fenêtre qui apparaît, cliquez sur l onglet Caractéristiques. 124 MEGA Database Builder

Correspondance des modèles Détails des correspondances Voir aussi "Caractéristiques de la correspondance", page 99. Rapport des correspondances Vous pouvez générer dans un document le détail des correspondances entre les deux modèles de la base de données. Il peut s agir d un fichier HTML, texte ou XML. Générer un rapport HTML Pour générer le rapport HTML d un arbre de correspondance : Dans l éditeur de la base de données, cliquez sur le menu Outils > Rapport > HTML. Le fichier correspondant s ouvre. Il présente sous forme de tableau le détail des correspondances de la vue logique d une part et de la vue conceptuelle d autre part. Chaque ligne du tableau présente un objet du modèle et son équivalence dans l autre modèle. Au milieu de chaque ligne apparaît l état de la correspondance entre les deux objets. Ala fin du document, vous trouvez également la liste des correspondances invalides. Etat des objets Des indicateurs permettent d indiquer l état des objets mis en correspondance. Une barre de filtrage vous permet d afficher l ensemble ou uniquement certains de ces indicteurs. Cette barre est disponible sous le menu Affichage > Barre d outils de l éditeur. Les objets peuvent être caractérisés par les états suivants : Valide Invalide (Lorsqu un objet a conservé une correspondance vers un objet qui n existe plus) Sans correspondance 125

5 Figé (Protégé) Standard Source de la correspondance En sélectionnant un objet dans un des formalismes présentés dans l éditeur, vous pouvez afficher sa correspondance dans l autre formalisme. Pour afficher la correspondance d un objet : Cliquez avec le bouton droit sur l objet en question et sélectionnez Chercher. L éditeur affiche l objet source. Exemple de correspondance Prenons la table "Tarif" créée dans le modèle logique. Dans le menu contextuel de la table, cliquez sur Chercher. Vous constatez qu elle correspond à une association. 126 MEGA Database Builder

Correspondance des modèles Détails des correspondances En ouvrant le diagramme du modèle conceptuel, vous pouvez voir qu il s agit de l association "Tarif" qui relie les entités "Catalogue" et "Article". Lors de la synchronisation, cette association non contrainte donne lieu à une table dans laquelle : Une colonne est créée pour l identifiant de chaque entité reliée. La clé primaire de la table porte sur l ensemble de ces colonnes. Une clé étrangère est constituée pour chaque entité reliée. Pour plus d informations sur la synchronisation des associations, voir "Associations", page 87. Dessin de la correspondance Pour visualiser le dessin d une correspondance : 1. Sélectionnez dans l arbre de correspondance les objets concernés. 2. Dans la barre d outils de l éditeur, cliquez sur le menu Affichage > Fenêtre de dessin. Une fenêtre apparaît en bas de l éditeur et présente le dessin des objets et les liens de correspondance qui les unissent. 127

5 128 MEGA Database Builder

6 DÉNORMALISATION Après avoir synchronisé vos modèles, vous pouvez les faire évoluer en apportant des modifications directement dans leur diagramme. Mais cette méthode ne garantit pas la cohérence entre les deux modèles. Les assistants de dénormalisation ont été créés pour maintenir cette cohérence. Il vous permettent de toucher à la définition d un modèle tout en maintenant les correspondances avec l autre. Les assistants vous permettent également d effectuer rapidement des opérations de type duplication ou fusion d entités sans report des correspondances et/ou sans suppression des objets sources lorsque vous souhaitez reporter les modifications dans le modèle relationnel. Les points suivants sont abordés ici : "Principes de la dénormalisation", page 130 "Dénormalisation conceptuelle", page 134 "Dénormalisation logique", page 142 129

6 PRINCIPES DE LA DÉNORMALISATION La dénormalisation permet de transformer ou d'affiner les modèles en fonction de besoins spécifiques : choix de modélisation, optimisation des performances, choix de mise en œuvre physique, redondances etc. L outil de dénormalisation est présenté sous forme d'assistants permettant de réaliser ces transformations. Un assistant s applique à un objet ou à un groupe d objets. Selon le type d optimisation demandé, la dénormalisation crée dans un modèle de nouveaux objets (objets cibles) à partir des objets de départ (objets sources). Cohérence des modèles La dénormalisation effectue un changement sur l objet d un modèle. Lorsque ce modèle a été mis en correspondance avec un autre (voir la "Synchronisation", page 85), vous devez gérer l impact du changement sur l autre modèle. Lors de la dénormalisation, vous pouvez ainsi : - Reporter ou non les correspondances avec les objets synchronisés. - Supprimer ou conserver les objets sources. Report des correspondances Le report des correspondances permet d assurer la stabilité et la cohérence entre deux modèles. Lorsqu une dénormalisation crée un nouvel objet au niveau conceptuel, la correspondance avec l objet logique est reportée sur le nouvel objet conceptuel. Lorsque vous décochez cette option, les correspondances vers les nouveaux objets ne sont pas créées, les deux modèles doivent donc être resynchronisés. Afin que la synchronisation valide les changements occasionnés par la dénormalisation, veillez à ce que l option "Réinitialisation des objets cibles" soit décochée. Supprimer les objets sources Par défaut, les objets sources sont supprimés. La non suppression des objets sources vous permet de conserver les objets de départ après la dénormalisation. Synchronisation et dénormalisation Dans l'activité de modélisation de données, synchronisation et dénormalisation doivent souvent être combinées pour répondre à tel ou tel cas d'emploi. 130 MEGA Database Builder

Dénormalisation Principes de la dénormalisation Exemple Soit une entité PAIEMENT que vous voulez représenter dans la base de données par trois tables VIREMENT, CHEQUE et AUTRE. Pour réaliser cette modélisation : Créez l'entité PAIEMENT. Lancez la synchronisation (conceptuel vers logique) pour obtenir la table PAIEMENT. Lancez l'assistant logique pour partitionner horizontalement la table PAIEMENT. Renommez les trois duplicatas en VIREMENT, CHEQUE et AUTRE. Les trois tables ainsi obtenues sont dès lors liées à l'entité PAIEMENT et suivent ses évolutions lors des futures synchronisations. Combinaison des options de dénormalisation et synchronisation L impact d une dénormalisation sur deux modèles synchronisés varie en fonction des options choisies. Prenons l exemple d une dénormalisation conceptuelle. Les combinaisons possibles sont : Suppression des objets sources + report des correspondances : les objets sources du modèle conceptuel sont supprimés. Le niveau logique reste inchangé; la correspondance avec les objets conceptuels résultant de la dénormalisation est assurée. Suppression des objets sources + non report des correspondances : les objets logiques correspondant aux objets conceptuels résultant de la dénormalisation sont créés. Les objets logiques correspondant aux objets conceptuels supprimés sont supprimés. Non suppression des objets sources + report des correspondances : les objets sources du modèle conceptuel sont conservés. Le niveau logique reste inchangé; la correspondance avec les objets résultant de la dénormalisation est assurée. Non suppression des objets sources + non report des correspondances : les objets logiques correspondant aux objets résultant de la dénormalisation sont créés. Les objets logiques existants sont conservés. Cas particuliers : fusions ascendante et descendante : Dans le cas d une fusion ascendante, l'entité sur-type a un rôle particulier. La dénormalisation conserve sa correspondance dans tous les cas. De même, dans le cas d une fusion descendante, les entités sous-types jouent un role particulier; leur correspondance est conservée dans tous les cas. Dénormalisation : cas d emploi La combinaison des options de dénormalisation varie en fonction du mode de conception de vos modèles. 131

6 1. Préserver la stabilité du niveau logique lorsqu'une modification est appliquée au niveau conceptuel. Contexte : une synchronisation a déjà été établie entre les niveaux conceptuel et logique. Le niveau logique est en production. Une modification doit être appliquée au niveau conceptuel, sans impact sur le niveau logique. Options préconisées pour la dénormalisation : report des correspondances, suppression des objets sources. Ce cas d'emploi correspond à un mode de travail orienté maintenance anticipée : des modifications sont effectuées par anticipation sur le niveau conceptuel, sachant que le niveau logique ne doit pas être modifié jusqu'à nouvel ordre. Résultat : après la dénormalisation, les corrrespondances sont rétablies entre les objets conceptuels cibles et les objets logiques. Lors de la synchronisation, rien ne change au niveau logique. 2. Faire évoluer le niveau logique lorsqu'une dénormalisation est appliquée au niveau conceptuel. Contexte : une synchronisation a déjà été établie entre les niveaux conceptuel et logique. Le niveau logique n'est pas figé et doit évoluer en fonction du niveau conceptuel. Options préconisées pour la dénormalisation : non report des correspondances, suppression des objets sources. Ce cas d'emploi permet de privilégier les évolutions du niveau conceptuel, sans se préoccuper de l'impact au niveau logique. Résultat : après la dénormalisation, les objets conceptuels cibles sont sans correspondance; les objets logiques correspondant aux objets conceptuels sources ne sont plus synchronisés. Après synchronisation, le niveau logique est mis à jour : les objets logiques correspondant aux objets conceptuels sources (objets existants avant la dénormalisation) sont supprimés ; de nouveaux objets logiques correspondant aux objets conceptuels cibles (objets créés par la dénormalisation) sont créés. 3. Faciliter le développement du niveau conceptuel, en phase de développement. Contexte : une synchronisation a déjà été établie entre les niveaux conceptuel et logique, ou bien le niveau logique n'est pas encore implémenté. Options préconisées pour la dénormalisation : non report des correspondances, non suppression des objets sources. Ce cas d'emploi correspond à un mode de travail "incrémental" : les objets sources du niveau conceptuel restent inchangés. Le modèle est enrichi des objets cibles issus de la dénormalisation. Ces objets cibles donnent lieu à une partie nouvelle dans le niveau logique, la partie logique existante restant stable. Résultat : après la dénormalisation, les correspondances restent inchangées. Après synchronisation, de nouveaux objets logiques correspondant aux nouveaux objets conceptuels sont créés ; les objets logiques correspondant aux objets conceptuels sources sont inchangés. 132 MEGA Database Builder

Dénormalisation Principes de la dénormalisation 4. Favoriser la mise en place de scenarios multiples, en phase de développement. Contexte : une synchronisation a déjà été établie entre les niveaux conceptuel et logique, plusieurs options de modélisation coexistent temporairement, pour un seul niveau logique. Options préconisées pour la dénormalisation : report des correspondances, non suppression des objets sources. Ce cas d'emploi, à utiliser avec précaution, permet de conserver deux options de modélisation au niveau conceptuel, donnant lieu à un résultat commun au niveau logique. Résultat : après la dénormalisation, les objets logiques restent reliés aux objets conceptuels sources, et sont également reliés aux objets conceptuels cibles. Après synchronisation, les objets du niveau logique restent inchangés. 133

6 DÉNORMALISATION CONCEPTUELLE La dénormalisation conceptuelle s applique aux entités (ou classes) et attributs du modèle de données. Lancer une dénormalisation conceptuelle Pour dénormaliser le formalisme conceptuel : 1. Sous le menu Outils > Options de MEGA, dossier Référentiel, vérifiez que vous avez accès au référentiel en mode "Avancé". 2. Cliquez avec le bouton droit sur la base de données à laquelle est associé le modèle de données et sélectionnez la commande Editer. 3. Dans l éditeur de base de données, cliquez sur le menu Outils > Dénormalisation (Conceptuel). Un assistant apparaît. Il présente l ensemble des personnalisations possibles sur les objets du modèle. Voir "Liste des assistants de dénormalisation conceptuelle", page 137. Exemple de dénormalisation conceptuelle Supposons que vous vouliez transformer l entité "Ligne de commande" en une association. 134 MEGA Database Builder

Dénormalisation Dénormalisation conceptuelle Pour transformer cette entité en association : 1. Ouvrez l éditeur de la base de données "Gestion des commandes" qui contient cette entité. Vous pouvez voir que l entité "Ligne de commande" est synchronisée avec la table "Ligne de commande". Pour afficher la correspondance d un objet, cliquez avec le bouton droit de cet objet et sélectionnez Chercher. 2. Pour lancer la dénormalisation, cliquez sur le menu Outils > Dénormalisation (Conceptuel). 3. Dans la liste présentée, cliquez sur le point "Transformer une entité en association", puis cliquez sur le lien Lancer l assistant. 4. Dans l arbre de l éditeur, cochez la case qui précède l entité "Ligne de commande" afin de la sélectionner. Vous avez la possibilité de sélectionner plusieurs entités lors d une dénormalisation. 5. Cliquez sur Etape suivante. Les options de dénormalisation apparaissent. Par défaut, le report des correspondances et la suppression des objets sources sont activés. Cela signifie que l entité "Ligne de commande" va être supprimée et que le lien de correspondance avec la table "Ligne de commande" va être reporté sur l association qui la remplace. 135

6 6. Cliquez sur Etape suivante. L éditeur affiche les changements occasionnés par cette dénormalisation. Vous pouvez voir que l entité "Ligne de commande" va être supprimée et que l association "Ligne de commande" va être créée. Lorsqu une entité sélectionnée ne peut être transformée, l éditeur vous en explique la raison. Vous pouvez refuser une modification en décochant la case correspondante. 7. Validez les résultats en cliquant sur Etape suivante. Cette transformation est définitive et sera prise en compte par la prochaine synchronisation. A la fin de la dénormalisation, vous pouvez voir que l association "Ligne de commande" qui remplace l entité est désormais en correspondance avec la table "Ligne de commande". Si un objet est protégé, il n est pas possible de le sélectionner pendant la dénormalisation. 136 MEGA Database Builder

Dénormalisation Dénormalisation conceptuelle Liste des assistants de dénormalisation conceptuelle Transformer une association en entité Cette dénormalisation permet de transformer une association n-aire, quelles que soient ses multiplicités, en entité. Une association de multiplicité '*,1' est créée entre cette entité et les entités de l'association. Avant Après Transformer une entité en association Cette dénormalisation permet de transformer une entité qui possède n associations binaires dont les rôles opposés sont de multiplicité '1' en association. Une nouvelle association n-aire de multiplicité * est créée entre ces entités. Avant 137

6 Après Transformer une généralisation en association Cette dénormalisation permet de transformer une généralisation entre deux entités en association. Une association de multiplicité *,1 est créée entre les deux entités, et la généralisation est supprimée. Avant Après Transformer une association en généralisation Cette dénormalisation permet de transformer une association 1,* en généralisation. Une généralisation est créée entre les deux entités, et l'association est supprimée. Avant Après 138 MEGA Database Builder

Dénormalisation Dénormalisation conceptuelle Partition verticale d une entités Cette dénormalisation permet de diviser une entité en plusieurs entités. Les entités obtenues se répartissent les attributs, les associations et les généralisations. Avant Après Partition horizontale d une entité Cette dénormalisation permet de dupliquer une entité. Avant Après 139

6 Fusion d entités Cette dénormalisation permet de fusionner des entités. Avant Après Fusion d entités ascendantes Cette dénormalisation permet de fusionner une entité avec son entité mère : tous les attributs et les liens sont reportés sur l'entité parente et l'entité fille est supprimée. Avant Après 140 MEGA Database Builder

Dénormalisation Dénormalisation conceptuelle Fusion d entités descendantes Cette dénormalisation permet de fusionner une entité avec son entité fille : tous les attributs et les liens sont reportés sur l'entité fille et l'entité parente est supprimée. Avant Après Copier/Coller d attributs Cette dénormalisation permet de reporter des attributs d'une entité ou d'une association vers d'autres entités ou d'autres associations. Avant Après 141

6 DÉNORMALISATION LOGIQUE La dénormalisation logique s applique aux objets de la base de données représentés par les tables, les colonnes, les clés et les index. Lancer une dénormalisation logique Pour dénormaliser le formalisme logique : 1. Sous le menu Outils > Options de MEGA, dossier Référentiel, vérifiez que vous avez accès au référentiel en mode "Avancé". 2. Dans l éditeur de correspondance, cliquez sur le menu Outils > Dénormalisation (Logique). Un assistant présente l ensemble des personnalisations possibles sur les objets de la base. Exemple de dénormalisation logique Il est possible de faire en sorte qu une table se divise en deux tables distinctes, soit pour séparer les colonnes dans deux tables (partition verticale), soit pour dupliquer les informations d une table dans deux autres (partition horizontale). Prenons l exemple d une prise de commande. Cette prise de commande est représentée par une entité au niveau conceptuel, elle donne une table au niveau logique. Supposons que cette prise de commande soit amenée à être gérée différemment au niveau technique selon qu il s agisse d une commande par téléphone ou d une commande par Internet. On peut intégrer ce changement dans le modèle logique sans être obligé de modifier en parallèle le modèle conceptuel. Pour cela, on va faire en sorte que l entité représentant la prise d une commande se divise en deux tables; une table pour les commandes par téléphone, une autre pour les commandes Internet. En intégrant cette modification depuis l assistant, la partition devient automatique lors de chaque synchronisation, et les deux modèles restent cohérents. 142 MEGA Database Builder

Dénormalisation Dénormalisation logique Pour créer une partition horizontale telle que celle décrite ci-dessus : 1. Ouvrez l éditeur de la base de données "Gestion des commandes" qui contient la table "Commande". Vous pouvez voir que la table "Commande" est synchronisée avec l entité "Commande". 2. Pour lancer la dénormalisation, cliquez sur le menu Outils > Dénormalisation (Logique). 3. Dans la liste des personnalisations, cliquez sur "Partition horizontale d une table" puis cliquez sur le lien Lancer l assistant. 4. Dans l arbre de l éditeur, sélectionnez la table que vous voulez dupliquer, ici "Commande", et cliquez sur Etape suivante. 5. Les options de dénormalisation apparaissent. Par défaut, le report des correspondances et la suppression des objets sources sont activés. Cela signifie que la table "Commande" va être supprimée et que le lien de correspondance avec l entité "Commande" va être reporté sur les deux tables. Précisez le nombre de partitions, autrement dit le nombre de tables créées. Par défaut, l outil en crée deux. 143

6 6. Cliquez sur Etape suivante. L éditeur affiche les changements occasionnés par cette dénormalisation. Vous pouvez voir que la table "Commande" va être supprimée et que deux nouvelles tables vont être créées. 7. Validez les résultats en cliquant sur Etape suivante. Cette transformation est définitive et sera prise en compte par la prochaine synchronisation. A la fin de la dénormalisation, vous pouvez voir que les deux nouvelles tables sont désormais en correspondance avec l entité "Commande". La dénormalisation s applique ici au modèle logique. La synchronisation qui prendra en compte cette personnalisation devra donc se faire dans le même sens, autrement dit du modèle conceptuel vers le modèle logique. Elle n est pas valable dans l autre sens. 144 MEGA Database Builder

Dénormalisation Dénormalisation logique Liste des assistants de dénormalisation logique Partition verticale d'une table Cette dénormalisation permet de diviser une table en plusieurs tables. Les tables obtenues se répartissent les colonnes. Avant Après Partition horizontale d'une table Cette dénormalisation permet de dupliquer une table. Les deux tables obtenues contiennent l'ensemble des colonnes de la table d'origine. Avant Après 145

6 Fusion de tables Cette dénormalisation permet de fusionner des tables. Avant Après Transformation d'une clé étrangère en table Cette dénormalisation permet de transformer une clé étrangére en table. Une nouvelle table est créée, ainsi que deux nouvelles clés étrangères. La clé étrangère d'origine est supprimée. Avant Après 146 MEGA Database Builder

Dénormalisation Dénormalisation logique Transformation d'une table en clé étrangère Cette dénormalisation permet de transformer une table en clé étrangère. La table, ainsi que ses deux clés étrangères sont supprimées, et une nouvelle clé étrangère est créée. Avant Après Copier/Coller des colonnes Cette dénormalisation permet de reporter des colonnes d'une table vers une autre. Avant Après 147

6 148 MEGA Database Builder

7 TYPES DES ATTRIBUTS ET DES COLONNES Les données n ont pas toutes le même type de valeur. Déterminer le type des données permet d indiquer leur format et ainsi de favoriser leur manipulation par les différents outils de traitement de données. MEGA gère les types de données aux différents niveaux de modélisation, en assurant la correspondance entre les types de données du niveau conceptuel et les types de données pris en charge par les différents SGBD supportés. Les points suivants sont abordés ici : "Types de données des attributs", page 150 "Déduire les datatypes des colonnes à partir des types des attributs", page 154 "Correspondances entre types pivots et datatypes", page 161 "Créer de nouveaux datatypes", page 164 149

7 TYPES DE DONNÉES DES ATTRIBUTS Un type de données permet de mettre en commun des caractéristiques communes à plusieurs attributs. Pour typer les attributs d'une entité, ne sont proposés que les types de données définis pour le modèle de données qui contient cette entité. Un modèle de données permet de représenter la structure statique d'un système, en particulier les types d objets manipulés dans le système, leur structure interne et les relations qui existent entre eux. Un modèle de données regroupe un ensemble d entités avec leurs attributs, les associations qui existent entre ces entités, des contraintes qui portent sur ces entités et associations, etc. Paquetages de types de données Un paquetage de types de données est un paquetage de référence détenant tout ou partie des types de données utilisés dans l'entreprise. Chacun des autres paquetages sera déclaré client du paquetage de référence des types de données. Lorsque vous créez un modèle de données, le paquetage de types de données "Référence des types de données" lui est automatiquement associé par défaut. Ce paquetage "Référence des types de données" détient les types de données standard "Adresse", "Code", "Date", etc. 150 MEGA Database Builder

Types des attributs et des colonnes Types de données des attributs En ouvrant l explorateur sur ce paquetage de type de données, vous pouvez voir qu il est référencé par plusieurs modèles de données. Les attributs des entités de ces modèles peuvent donc être typés à l'aide des types de données "Adresse", "Code", "Date", etc. Créer un nouveau paquetage de types de données Vous pouvez définir un nouveau paquetage de types de données de référence détenant les types de données utilisés dans l'entreprise. Pour créer votre propre paquetage de types de données : 1. Dans le navigateur MEGA, cliquez avec le bouton droit sur le dossier Paquetages de types de données. 2. Sélectionnez Nouveau > Paquetage de type de données. 3. Tapez son nom et cliquez sur OK. Vous pouvez ensuite ajouter des types à ce paquetage. Créer un type de données Pour créer un type de données : 1. Cliquez avec le bouton droit sur le nom du paquetage et sélectionnez Nouveau > Type de données. 2. Tapez le nom du type et cliquez sur OK. Type de données composé Vous pouvez créer des types de données composés en leur ajoutant une liste d attributs, par exemple un type "Adresse" composé du numéro, de la rue, du code postal, de la ville et du pays. 151

7 Valeur littérale Vous pouvez affecter des valeurs littérales à un type de données qui définissent les valeurs qu il peut prendre. Les attributs basés sur un tel type de données ne peuvent prendre que les valeurs définies par le type de données. Une fois le nouveau paquetage de types de données créé, il convient de le référencer sur le modèle de données client. Référencer un paquetage de types de données Lorsque vous définissez un nouveau paquetage de types de données, vous devez le relier au modèle de données concerné. Pour relier un paquetage de types de données à un modèle de données : 1. Dans la fenêtre de navigation des objets, cliquez avec le bouton droit sur le modèle de données et ouvrez sa fenêtre de propriétés. 2. Cliquez sur l onglet Caractéristiques. 3. Dans le champ Paquetage de types de données référencé, cliquez sur la flèche puis sur Rechercher Paquetage des types de données. La fenêtre de recherche apparaît. 4. Cliquez sur Chercher. La liste des paquetages de types de données s affiche. 5. Sélectionnez le paquetage voulu et cliquez sur OK. Affecter des types aux attributs Une fois le paquetage de types de données référencé pour le modèle de données, la liste des types qu il contient est disponible sur chaque attribut des entités du modèle. Il vous reste à sélectionner celui qui convient. Pour définir le type d un attribut : 1. Cliquez avec le bouton droit sur l entité qui contient l attribut. 2. Sélectionnez Attributs. 3. Dans le champ Type de données (MD) correspondant à l attribut, sélectionnez le type voulu dans la liste. 152 MEGA Database Builder

Types des attributs et des colonnes Types de données des attributs 4. Cliquez sur Appliquer. 153

7 DÉDUIRE LES DATATYPES DES COLONNES À PARTIR DES TYPES DES ATTRIBUTS Les types de données définis au niveau conceptuel ne sont pas toujours compréhensibles pour le SGBD cible. Ils nécessitent dans ce cas d être convertis en types de données correspondant au SGBD visé. Cette conversion intervient notamment lors de la synchronisation. Les types de données des attributs définis dans le modèle conceptuel sont traduits en datatypes pour les colonnes générées. La conversion est assurée par un lien d équivalence avec des types pivots. Les types pivots constituent un intermédiaire entre les types de données conceptuels et les datatypes générés. Types pivots Les types pivots sont des types de données définis indépendamment du SGBD cible et que vous pouvez utiliser quand vous ne connaissez pas encore le systeme dans lequel sera hebergée la base de données, ou quand plusieurs systèmes sont susceptibles d'être utilisés. Les types pivots ont un datatype équivalent dans chaque SGBD supporté. Ils permettent ainsi de définir une seule fois les types des attributs et de les réinterpréter ensuite en fonction du SGBD cible. Pour disposer des datatypes d un SGBD, il faut importer la bibliothèque correspondante. Voir "Importer une version de SGBD", page 65. Liste des types pivots Une bibliothèque de types pivots est systématiquement installée dans MEGA. Ils sont disponibles dans la fenêtre de navigation Objets principaux, sous le paquetage de types de données "Pivot". Types alphanumériques Compléments P-String P-Text P-Character P-Varchar Chaîne de caractères alphanumériques Chaîne de caractères alphanumériques Chaîne de caractères alphanumériques de taille fixe Chaîne de caractères alphanumériques de taille variable Longueur 154 MEGA Database Builder

Types des attributs et des colonnes Déduire les datatypes des colonnes à partir des types des attributs Types numériques P-Decimal Décimal P-Double P-Float P-Integer Entier P-Long Integer P-Long Real P-Real P-Smallint P-Tinyint P-Numeric Numérique Longueur, Décimale P-Currency Montant exprimé en monnaie Longueur, Décimale Types dates P-Date P-Time P-DateTime Date Heure Date et heure Types binaires P-Binary P-Byte P-Timestamp Chaîne binaire Chaîne binaire Identification générée automatiquement à partir de la date et de l'heure exprimée en millièmes de secondes après le 01 Janvier 1970 P-Boolean Booléen valant 0 ou 1 P-Multimedia P-Varbinary Chaîne binaire Chaîne binaire Relier un type de données à un type pivot Les types de données contenus dans le paquetage "Reférence des types de données" et associés par défaut à tout nouveau modèle de données sont reliés à ces types pivots. Aussi, lorsque vous créez de nouveaux types de données, il est nécessaire de les relier aux types pivots correspondants afin qu ils puissent être exploités par la suite au niveau physique. 155

7 Pour relier un type de données à un type pivot : Ouvrez la fenêtre de propriétés du type de données et cliquez sur l onglet Caractéristiques. Dans le champ SQL Datatype, sélectionnez le type pivot dans la zone de liste. Prenons le type de données "Code". Ouvrez sa fenêtre de propriétés et cliquez sur l onglet Caractéristiques. Dans le champ SQL Datatype, vous pouvez voir qu il est relié au type pivot "P-Character". Lors de la synchronisation d un modèle conceptuel vers un modèle logique, ce type pivot "P-Character" donnera un datatype CHAR, VARCHAR, LONG ou TEXT suivant le SGBD concerné par la synchronisation. Vous pouvez modifier le SGBD cible sans avoir à modifier le type de données, MEGA assure la conversion automatique. Voir "Correspondances entre types pivots et datatypes", page 161. Relier un type de données à un type pivot dans la notation UML Si vous utilisez la notation UML et les diagrammes de classes pour modéliser vos données - et à titre de compatibilté avec les versions antérieures de MEGA Database Builder - d autres méthodes de référencement des types pivots sont possibles. Vous pouvez créer de nouveaux types de données et les relier à des types pivots : Par héritage Par un lien de correspondance Par un lien d équivalence En créant un type de données composé 156 MEGA Database Builder

Types des attributs et des colonnes Déduire les datatypes des colonnes à partir des types des attributs Par héritage Vous pouvez définir vos propres types de données en les déclarant sous-classes des types pivots proposés en standard comme dans l'exemple ci-dessous. Les types de données définis comme sous-classes vont hériter automatiquement des caractéristiques de leur super-classe. En particulier, la règle de transformation en datatype de la super-classe est appliquée à la sous-classe. Il est possible de préciser sur la sous-classe une longueur et un nombre de décimales. Ceux-ci seront pris en compte pour la génération des datatypes s'ils n'ont pas déjà été définis pour la super-classe. Par un lien de correspondance Pour effectuer ce lien : 1. Dans la fenêtre de propriétés du type, sélectionnez l onglet Génération. 157

7 2. Indiquez le Type SQL associé à la classe. Seuls les types pivots du paquetage Standard::Types::Pivot sont proposés dans la liste. 3. Précisez si nécessaire la longueur et le nombre de décimales à appliquer. Par un lien d équivalence Il est possible de définir un nouveau type de données en créant un lien d équivalence avec un type pivot. Pour cela : 1. Créez un nouveau type de données. 2. Dans le menu contextuel du type, sélectionnez Explorer. 3. Dans la fenêtre qui apparaît, cliquez sur le bouton Collections vides. 158 MEGA Database Builder

Types des attributs et des colonnes Déduire les datatypes des colonnes à partir des types des attributs 4. Cliquez avec le bouton droit sur le dossier "Equivalence conceptuelle" et sélectionnez Relier. 5. Dans la boîte standard de recherche, sélectionnez le type pivot que vous souhaitez relier à votre type. En créant un type de données composé On peut définir un type de données composé en lui précisant une liste d'attributs. Ici le type "Adresse" est composé du numéro, de la rue, du code postal, de la ville et du pays. Un attribut de type "Adresse" donnera lieu lors de la dérivation à ces cinq colonnes. Il est possible de décomposer un type à plusieurs niveaux en affectant un type décomposé à l'un de ses attributs. 159

7 Par exemple, on peut décomposer le code postal en code ville et code département. 160 MEGA Database Builder

Types des attributs et des colonnes Correspondances entre types pivots et datatypes CORRESPONDANCES ENTRE TYPES PIVOTS ET DATATYPES Les types pivots établissent une correspondance entre les types de données conceptuels auxquels ils sont reliés et les datatypes pour lesquels ils ont un équivalent dans chaque SGBD cible. Les liens d équivalence comportent des conditions qui permettent de les distinguer les uns des autres. Pour visualiser les correspondances entre les types pivots et les datatypes des différents SGBD supportés, voir "Tableaux de correspondances entre types pivots et datatypes", page 273. Exemple de correspondances entre les types pivots et les datatypes pour Oracle 8 Pivot vers Datatype Pivot Condition Datatype P-AutoIdentifier P-Binary NUMBER RAW(@L) P-Boolean L<2 or L ø RAW(1) L>1 RAW(@L) P-Byte RAW(1) P-Character L<256 or L ø CHAR(@L) L>2000 LONG 255<L<2001 VARCHAR2(@L) P-Currency P-Date P-Datetime P-Decimal P-Double P-Float P-Integer P-Long Integer P-Long Real P-Multimedia NUMBER(@L,@D) DATE DATE NUMBER(@L,@D) NUMBER(@L,@D) NUMBER(@L,@D) NUMBER(@L) NUMBER(@L) NUMBER(@L,@D) LONG RAW 161

7 Pivot Condition Datatype P-Numeric L=0 or L ø NUMBER L>0 et D ø NUMBER(@L) L>0 and D not ø NUMBER(@L,@D) P-Real P-Smallint P-String P-Text P-Time P-Timestamp P-Tinyint P-Varbinary NUMBER(@L,@D) NUMBER(@L) LONG VARCHAR2(@L) DATE ROWID NUMBER(@L) LONG RAW P-Varchar L>2000 or L=0 or L ø LONG 0<L<2001 VARCHAR2(@L) Datatype vers Pivot Datatype Condition Pivot CHAR(L) DATE LONG LONG RAW NUMBER NUMBER(L) NUMBER(L,D) RAW(1) RAW(L) ROWID VARCHAR2(L) P-Character P-Date P-String P-Multimedia P-Numeric P-Numeric P-Numeric P-Boolean P-Boolean P-Timestamp P-Varchar Dans ce tableau, on peut voir que le type "P-Numeric" a trois correspondances pour les classes types, grâce à trois conditions différentes sur les liens d équivalence. 162 MEGA Database Builder

Types des attributs et des colonnes Correspondances entre types pivots et datatypes Exemple : si P_Numeric est affecté à un attribut et que la longueur de cet attribut est de 10, alors la colonne justifiée par cet attribut via la synchronisation donnera Number(10). La condition est écrite en langage VB Script. Les principaux éléments de la condition sont les suivants : Sub ConditionInvoke (Colonne, ByRef bvalid) : la première ligne constitue la signature de la fonction. Colonne : la colonne est donnée en paramètre d'entrée. bvalid : c'est le paramètre de retour. Sa valeur est "True" si la condition est vérifiée, "False" en cas contraire. Exemple: Sub ConditionInvoke (Colonne, ByRef bvalid) bvalid = False If (IsNumeric(Colonne.Length)) Then bvalid = True End Sub Dans la condition, il est possible de préciser les éléments suivants : Présence d un nombre Présence d une décimale Plage concernée (exemple : compris entre 0 et 150) 163

7 CRÉER DE NOUVEAUX DATATYPES Chaque datatype est implémenté sous forme de classe ; il est propre à une version de SGBD. Il est possible d utiliser des masques avec les datatypes. Exemple pour Oracle 10 Objectif Faire apparaître un datatype Data8 (numérique avec une longueur et une décimale) dans les scripts ORACLE. Etapes Les étapes sont les suivantes : 1. Créez un nouveau datatype dans MEGA. Eventuellement, créez un masque. 2. Reliez le datatype à la version du SGBD cible (en l occurrence Oracle 10). 3. Reliez le datatype au type correspondant dans le paquetage "Pivot". 4. Paramétrez les conditions sur chaque lien, et ce dans les deux sens (du datatype aux types pivots et du type pivot aux datatypes). Pour plus d informations sur les liens d équivalence et les conditions, voir "Déduire les datatypes des colonnes à partir des types des attributs", page 154. Conditions préalables Pour voir apparaître les paquetages contenant les datatypes des SGBD, vous devez importer la bibliothèque d objets correspondante. Voir "Importer une version de SGBD", page 65. Vous pouvez relier le datatype à une cible de génération que vous aurez créée. Pour créer une cible de génération, voir "Créer une nouvelle version de SGBD", page 183 et "Dupliquer une version de SGBD", page 183. Il est recommandé de ne définir un datatype que dans une seule version de SGBD. De plus, certaines données sont protégées dans MEGA. Afin de pouvoir modifier les objets contenus dans les paquetages des SGBD : 1. Ouvrez l application d administration. 2. Ouvrez les options de l utilisateur avec lequel vous travaillez. 3. Dans la fenêtre des options, sélectionnez l icône Référentiel. La liste des options liées au référentiel apparaît dans la partie droite de la fenêtre. 4. Dans le champ "Autoriser la modification des données MEGA", sélectionnez "Autoriser". 5. Fermez l administration et ouvrez l application MEGA. 164 MEGA Database Builder

Types des attributs et des colonnes Créer de nouveaux datatypes Créer un nouveau datatype Pour créer un nouveau datatype : 1. Sélectionnez la fenêtre de navigation Objets principaux. 2. Dans le dossier Paquetage, allez sous "Standard >Types > Sql". 3. Cliquez avec le bouton droit sur le paquetage "Oracle 10" et sélectionnez Nouveau > Classe. La fenêtre de Création d une classe s ouvre. 4. Nommez votre classe "Data8 (@L,@D)". 5. Ouvrez la fenêtre de propriétés de cette nouvelle classe par son menu contextuel. 6. Dans l onglet Caractéristiques, sélectionnez dans le champ Stéréotype la valeur "Expression", puis cliquez sur Appliquer. 165

7 7. Le champ Type expression apparaît. Dans ce champ, sélectionnez la valeur "Data8 (@L,@D)". Supprimez également les guillemets qui entourent cette valeur. Vous pouvez constater dans le navigateur qu une nouvelle classe "Data8" est créée automatiquement. Relier le datatype au type pivot Cette nouvelle classe est créée automatiquement pour les besoins de fonctionnement d UML. Si vous voulez obtenir ce datatype après synchronisation, vous devez lui donner un équivalent au niveau conceptuel. pivot : 1. Dans la fenêtre de propriétés du datatype "Data8 (@L,@D)", sélectionnez l onglet Compléments. 166 MEGA Database Builder

Types des attributs et des colonnes Créer de nouveaux datatypes 2. Dans le menu contextuel du dossier "Equivalence conceptuelle", sélectionnez Relier. 3. Dans la fenêtre standard de recherche, sélectionnez la classe "P- Numeric". Paramétrer les conditions sur les liens Pour paramétrer la condition sur les liens : 1. Dans le menu contextuel de la classe "Data8", sélectionnez Explorer. 2. Dépliez le dossier "Equivalence conceptuelle". 167

7 3. Sélectionnez le dossier vert "Programming Language Equivalence". Vous constatez qu il existe trois autres correspondances pour Oracle 10. Il s agit donc de modifier les conditions sur ces correspondances pour qu elles soient cohérentes avec les conditions posées sur le nouveau datatype. 4. Ouvrez la fenêtre de propriétés du datatype "NUMBER(@L,@D)". 5. Dans l onglet Textes, sélectionnez "Condition d équivalence de langage", et modifiez le texte pour qu il corresponde à ceci : Sub ConditionInvoke (Colonne, ByRef bvalid) bvalid = False Dim IsNumericLength IsNumericLength = IsNumeric(Colonne.Length) Dim IsNumericDecimal IsNumericDecimal = IsNumeric(Colonne.Decimal) If (IsNumericLength and IsNumericDecimal) Then If (Colonne.Length <> 8) Then bvalid = True End If End If End Sub 168 MEGA Database Builder

Types des attributs et des colonnes Créer de nouveaux datatypes 6. De la même façon, ajoutez le texte suivant dans la fenêtre de propriétés du nouveau datatype "Data8". Sub ConditionInvoke (Colonne, ByRef bvalid) bvalid = False Dim IsNumericLength IsNumericLength = IsNumeric(Colonne.Length) Dim IsNumericDecimal IsNumericDecimal = IsNumeric(Colonne.Decimal) If (IsNumericLength and IsNumericDecimal) Then If (Colonne.Length = 8) Then bvalid = True End If End If End Sub Vérifier les datatypes Pour vérifier les datatypes : 1. Sur une base de données du navigateur de MEGA Database Builder, choisissez le menu contextuel Tables. 2. Affichez les propriétés d une colonne concernée par les conditions posées sur le datatype. 3. Vérifiez que le masque affiché dans la colonne Datatype est bien "Data8 (%l, %d)" pour cette colonne. Exemple pour SQL Server 7 Objectif Relire des colonnes SQL Server 7 comportant un datatype non standard. Les manipulations sont les mêmes que pour Oracle (voir "Exemple pour Oracle 10", page 164). Cette fois-ci, nous ne créerons pas de masque. Créer un nouveau datatype Pour créer un nouveau datatype : 1. Dans le paquetage SQL Server 7, sélectionnez Nouveau > Classe. La fenêtre de Création d une classe s ouvre. 2. Nommez votre classe "TLibelleLong". 3. Ouvrez la fenêtre de propriétés de cette nouvelle classe par son menu contextuel. 4. Dans l onglet Caractéristiques, sélectionnez dans le champ Stéréotype la valeur "Expression", puis cliquez sur OK. 169

7 Relier le datatype au type pivot Pour relier le datatype au type pivot : 1. Dans la fenêtre de propriétés du datatype "TLibelleLong", sélectionnez l onglet Compléments. 2. Dans le menu contextuel du dossier "Equivalence contextuelle", sélectionnez Relier. 3. Dans la fenêtre standard de recherche, sélectionnez la classe "P-Text". Paramétrer les conditions sur les liens Pour paramétrer la condition sur les liens : 1. Dans le menu contextuel de la classe "TLibelleLong", sélectionnez Explorer. 2. Sélectionnez le dossier vert "Programming Language Equivalence". Vous constatez qu il existe une autre correspondance pour SQL Server 7. 3. Ouvrez la fenêtre de propriétés du datatype "text". 4. Dans l onglet Textes, sélectionnez "Condition d équivalence de langage", et modifiez le texte pour qu il corresponde à ceci : Sub ConditionInvoke (Colonne, ByRef bvalid) bvalid = False Dim IsNumericLength IsNumericLength = IsNumeric(Colonne.Length) If (IsNumericLength) Then If (Colonne.Length > 255) Then bvalid = True End If End If End Sub 5. De la même façon, ajoutez le texte suivant dans la fenêtre de propriétés du nouveau dataype "TLibelleLong". Sub ConditionInvoke (Colonne, ByRef bvalid) bvalid = False Dim IsNumericLength IsNumericLength = IsNumeric(Colonne.Length) If (IsNumericLength) Then If (Colonne.Length <= 255) Then bvalid = True End If End If End Sub 170 MEGA Database Builder

8 GÉNÉRATION SQL La fonctionnalité de génération SQL produit des fichiers de scripts SQL, qui, à partir des objets logiques de votre référentiel MEGA (BD, table, colonne, etc.), vous permettent de créer, modifier ou de mettre à jour les objets correspondants dans le SGBD cible de votre choix. La génération prend en compte les paramètres hérités du SGBD cible (spécifié pour la base de données), paramètres que vous pouvez personnaliser à un niveau global (voir "Paramétrer la génération d'une base de données", page 184), ou à un niveau de détail plus fin, sur une colonne ou sur une clé primaire, par exemple. Pour les principaux SGBD cibles du marché, l éditeur de base de données rend accessible une "vue physique" qui vous permet d'optimiser la grammaire SQL des scripts générés, pour y intégrer des options techniques spécifiques au SGBD choisi, tel le partitionnement. Voir "Ajouter des propriétés physiques aux objets d une base de données", page 206. Enfin, le niveau logique peut être complété par la génération d objets physiques propres à chaque base de données pour un SGBD, comme les vues logiques, les procédures stockées et les triggers. Voir "Options SQL avancées", page 193. Les différents modes de génération présentés ci-après autorisent la prise en compte de contraintes liées à l administration des bases de données sous différents systèmes, avec un maximum de souplesse. Les points abordés ici sont : "Lancer la génération SQL", page 172 "Génération incrémentale", page 176 "Générer plusieurs bases sous un composant", page 179 "Paramétrer la génération", page 181 "Syntaxe supportée", page 187 171

8 LANCER LA GÉNÉRATION SQL Objets de la génération SQL Les objets pris en compte par la génération sont : Table Colonne Clé primaire Clé étrangère Index Groupe de données Vue logique Vue matérialisée Trigger Procédure stockée Fonction Synonyme Séquence Cluster Partition Les scripts générés par MEGA ne gèrent que la structure des objets relationnels, leur contenu n est pas pris en charge. Lancer l assistant de génération L affichage de certaines cibles de génération peut être filtré. Avant de lancer la génération, vérifiez que la cible de génération choisie est bien activée : 1. Dans la barre d outils de MEGA, cliquez sur le menu Outils > Options. 172 MEGA Database Builder

Génération SQL Lancer la génération SQL 2. Cliquez sur le dossier "Modélisation des données" puis sur "Génération SQL". Ce dossier contient l ensemble des générateurs SQL supportés. 3. Cochez ceux que vous voulez afficher dans MEGA. Pour les cibles de génération, référez-vous aux "SGBD et versions supportées", page 181. Pour lancer la génération SQL : 1. Activez la commande Générer : du menu contextuel des bases de données, pour une génération complète. du menu contextuel des tables et des index et des autres objets SQL pour une génération partielle. 2. Sélectionnez le dossier de génération, puis cliquez sur Suivant. Par défaut, le dossier de l utilisateur est proposé. Il est possible d indiquer un autre chemin relatif à l environnement. 173

8 3. Paramétrez le mode de génération. Quatre modes de génération sont disponibles : "Création" : génère les ordres de création de l ensemble des objets. "Suppression" : génère uniquement les ordres de suppression d objets. "Remplacement" : lance la suppression d objets, puis les re-crée (afin d éviter la création de doublons, par exemple). Suppose que le SGBD cible supporte ce mode de génération. "Modification" : prend en compte les modifications uniquement. Contrairement aux autres modes qui agissent sans tenir compte d un éventuel existant, ce mode permet de se connecter au serveur de SGBD et d obtenir un accès en lecture à la base de données déjà créée. L assistant compare le fichier des données MEGA et les informations de la base de données. Après analyse des deux structures, l assistant génère les ordres SQL de modification correspondants. Voir "Génération incrémentale", page 176. Ce mode n est disponible que pour les principaux SGBD. Voir "SGBD et versions supportées", page 181. 174 MEGA Database Builder

Génération SQL Lancer la génération SQL 4. Cliquez sur Suivant. Une fenêtre présente les objets générés. 5. Cliquez sur Terminer. La génération est lancée. Une fenêtre présente l'avancement de l'opération et précise les fichiers contenant le résultat. Le bouton Détail permet de visualiser les fichiers résultats de la génération. Lorsque l'extension utilisée pour les fichiers générés est reconnue par Windows, il suffit d'effectuer un double-clic sur le nom du fichier pour le consulter avec l'éditeur associé à l'extension. 175

8 GÉNÉRATION INCRÉMENTALE Lorsqu une base de données a déjà été générée, vous pouvez répercuter par la suite uniquement les changements apportés à la base de données grâce au mode "Modification" de la génération SQL. La génération incrémentale permet, pour une base de données : de consulter dans un rapport.html les différences entre la base de données et sa représentation dans MEGA. de produire les scripts SQL permettant de mettre à jour la base de données cible à partir de sa description dans MEGA. Objets de la génération incrémentale Les objets gérés par la génération incrémentale sont les mêmes que ceux de la génération en mode "Création" : table, colonne, clé primaire, clé étrangère, index, groupe de données, vue logique, vue matérialisée, trigger, procédure stockée, fonction, synonyme, séquence, cluster, partition. Les scripts générés par MEGA ne gère que la structure des objets relationnels, leur contenu n est pas pris en charge. Des options de génération incrémentale permettent d isoler les ordres SQL qui nécessitent des précautions particulières ou des traitements complémentaires. Lancer la génération incrémentale Options de la génération La génération incrémentale se fait dans un fichier global; elle s effectue depuis la base de données et non depuis un objet modifié en particulier. Avant de lancer la génération : 1. Ouvrez la fenêtre de propriétés de la base de données. 2. Cliquez sur l onglet Options, sous-onglet Génération. 3. Dans le champ Ventilation Script, sélectionnez "Un fichier global". 4. Cliquez sur OK. Sous les options, vous devez également indiquer le mode de génération incrémentale, qui autorise ou non la suppression d objets. Pour plus de détails sur les options de génération, voir "Paramétrer la génération d'une base de données", page 184. Lancer l assistant de génération Pour lancer la génération incrémentale : 1. Dans le menu contextuel de la base de données, cliquez sur Générer. 2. Indiquez le dossier où seront générés le rapport et le script SQL. 176 MEGA Database Builder

Génération SQL Génération incrémentale 3. Cliquez sur Suivant. 4. Dans le champ Paramètre de la génération, sélectionnez "Modification". La commande "Modification" n est disponible que pour les principaux SGBD. Voir "SGBD et versions supportées", page 181. 5. Cliquez sur Suivant. 6. Sélectionnez la source de données. La génération incrémentale peut s'effectuer : A partir d'une connexion ODBC. A partir d'un fichier d'extraction. Voir "Utilitaire d extraction ODBC", page 229. 7. Cliquez sur Suivant. 8. Une fois connecté au SGBD cible, saisissez le nom du propriétaire. Cela vous permet de filtrer les tables à prendre en compte dans la génération. 9. Cliquez sur Terminer. La fenêtre de résultat présente deux fichiers, le fichier.sql ainsi qu un fichier "Report.htm". Ce dernier fichier est un compte-rendu de génération. C est un fichier dynamique qui présente le contenu de la base initiale et les modifications apportées. 177

8 Chaque ligne de la liste décrit : L'objet MEGA. Celui-ci peut être vide si il a été supprimé du référentiel MEGA. Le symbole de mise à jour du SGBD par rapport à MEGA. Les différentes actions possibles sur les objets sont : la création la modification la suppression le remplacement Un symbole d avertissement lorsque la mise à jour d un objet du SGBD n est pas complète ou que celle-ci doit être opérée avec prudence. Lorsque cette icône est présente, un bloc dans le script généré détaille ce qui ne peut être mis à jour. L'objet du côté SGBD. Celui-ci peut être vide dans le cadre d'une création du côté MEGA. Le lien vers le script de mise à jour de l'objet. A partir de chaque objet, vous pouvez accéder à l'ensemble de ses sous-objets en dépliant l'arborescence correspondante. Vous pouvez également visualiser les paramètres physiques. Dans le cadre d'une modification d'un objet, seuls les paramètres physiques modifiés sont affichés. Il existe également un compte-rendu de génération (.txt) dans la fenêtre de propriétés de la base générée. 178 MEGA Database Builder

Génération SQL Générer plusieurs bases sous un composant GÉNÉRER PLUSIEURS BASES SOUS UN COMPOSANT Un composant est un regroupement d objets que l on veut générer. Pour regrouper sous un composant des bases de données : 1. Sélectionnez la fenêtre de navigation Objets principaux. 2. Cliquez avec le bouton droit de la souris sur le dossier Composant et sélectionnez Nouveau > Composant. 3. Sélectionnez le type de composant "SQL Project" et cliquez sur Suivant. 4. Indiquez les bases de données à regrouper dans le composant. Les fenêtres suivantes permettent de paramétrer la génération du composant. 5. Cliquez sur Terminer. Pour générer le composant : 1. Cliquez avec le bouton droit sur le composant. 2. Sélectionnez Générer. 3. Précisez le dossier de génération et cliquez sur Terminer. Générer des objets spécifiques Pour générer sur ce composant des objets spécifiques : Cliquez avec le bouton droit sur le composant et sélectionnez Nouveau > Composant. 179

8 Vous obtenez la liste des objets que vous pouvez générer à partir de ce composant. Index script : génère les index de la base de données. Key script : génère les clés. Logical view script : génère les vues logiques. Object script : permet de générer différents objets sous des fichiers différents. Root script : permet de générer différents objets sous un fichier global. Stored procedure script : génère les procédures stockées. Table script : génère les tables. Tablespace script : génère les tablespaces. Trigger script : génère les triggers. 180 MEGA Database Builder

Génération SQL Paramétrer la génération PARAMÉTRER LA GÉNÉRATION Paramétrer la version de SGBD SGBD et versions supportées La liste suivante est donnée à titre indicatif. Elle ne prétend pas être exhaustive et elle est susceptible d'évoluer en fonction de la sortie de nouvelles versions des SGBD. Produit Editeur Versions supportées SQL ANSI ISO 9075 1992 DB2 IBM OS 390 V5 / OS 390 V7 / OS 390 V8 UDB V5 / UDB V7 / UDB V8 Ingres II Computer Associates 2.0 Dynamic Server Informix 7.3 Oracle Oracle 8 / 9i /10 SQL Server Microsoft 7 / 2000 / 2005 Adaptative Server Sybase 11 / 12.5 Modifier les propriétés de la version de SGBD Le paramétrage de la génération est effectué pour le contrôle, entre autres, de la taille des identificateurs générés, le contrôle des caractères autorisés, etc. L accès aux versions de SGBD nécessite que vous soyez en métamodèle avancé. Pour passer en mode étendu : 1. A partir de l'espace de travail, cliquez sur le menu Outils > Options. 2. Double-cliquez sur l'icône Référentiel. 3. Dans le champ Accès au métamodèle, sélectionnez "Avancé". 4. Cliquez sur OK. Pour paramétrer les options de génération d'une version de SGBD : 1. Sélectionnez la fenêtre de navigation Utilitaires de la barre MEGA. 181

8 2. Dans le navigateur, dépliez le dossier Version SGBD. 3. Sélectionnez dans l arborescence votre version de SGBD. Les versions de SGBD préfixées par "MEGA_" sont protégées, vous ne pouvez pas les modifier. 4. Dans son menu contextuel, sélectionnez Propriétés. La fenêtre de paramétrage de la version de SGBD apparaît. 5. Cliquez sur l onglet Options. 6. Sous le sous-onglet Génération, modifiez les paramètres que vous souhaitez changer. Les paramètres disponibles varient en fonction du SGBD cible. Si le sous-onglet Génération n apparaît pas, cliquez sur le menu Outils > Options de la barre MEGA, puis dépliez le dossier "Modélisation des données > Génération SQL" et vérifiez que l option de génération liée au SGBD en question est bien cochée. 182 MEGA Database Builder

Génération SQL Paramétrer la génération Créer une nouvelle version de SGBD Pour créer une nouvelle version de SGBD vierge et en définir manuellement les propriétés : 1. Dans le navigateur (onglet Utilitaires de la barre MEGA), ouvrez le menu contextuel du dossier Version SGBD et sélectionnez Nouveau > Version SGBD. La fenêtre Création d une Version SGBD s ouvre. 2. Donnez un nom à votre nouvelle version de SGBD. 3. Vous pouvez modifier cette cible comme décrit dans "Modifier les propriétés de la version de SGBD", page 181. Après avoir créé une version de SGBD, vous devrez probablement créer de nouveaux datatypes. Dupliquer une version de SGBD Il est possible de dupliquer une version de SGBD afin d en utiliser les caractéristiques pour une nouvelle cible. Pour dupliquer une version de SGBD : 1. Dans le navigateur, dossier Version SGBD, ouvrez le menu contextuel de la version de SGBD à dupliquer et sélectionnez Dupliquer. 183

8 2. Dans la fenêtre Dupliquer, donnez un nom à votre nouvelle version de SGBD. Par défaut, MEGA utilise le nom de la version de SGBD dupliquée précédé du préfixe "Copie de". Vous pouvez ensuite modifier cette nouvelle version de SGBD de la même façon que les autres, en utilisant les différents onglets de sa fenêtre de propriétés. Il ne peut y avoir qu un seul générateur par version de SGBD. Pour créer un nouveau générateur, voir dans le guide MEGA Exchange - Generation le chapitre "Descripteurs de génération de code", paragraphe "Créer une cible de génération". Après avoir dupliqué une version de SGBD, vous devrez probablement créer de nouveaux datatypes. Paramétrer la génération d'une base de données Pour paramétrer la génération d'une base de données : Dans la fenêtre de propriétés de la base, sélectionnez l onglet Options puis le sous-onglet Génération. De même que pour le paramétrage de la cible, les paramètres proposés varient en fonction du SGBD, et un message explicatif indique l'utilisation de chaque paramètre. Vous pouvez renseigner les paramètres suivants : Script SQL : nom du fichier généré lorsqu il s agit d un fichier global. Par défaut, il s appelle MEGASQL.SQL. Vous pouvez le personnaliser au niveau du SGBD. La flèche située à l extrémité du champ vous permet de réinitialiser le paramètre. Vous pouvez également réinitialiser tous les paramètres de l objet en question. Cette action est à utiliser avec précaution. Répertoire Script : répertoire de génération relatif. Ventilation script : indique si le résultat de la génération doit être créé dans un fichier unique, ou réparti dans un fichier distinct pour chaque type d objet ou pour chaque objet. Conversion : format des fichiers générés (ANSI Windows ou ASCII MS- DOS). Commentaires : active/désactive la génération des commentaires MEGA dans le script SQL. 184 MEGA Database Builder

Génération SQL Paramétrer la génération Val. par défaut : active/désactive la génération des ordres DEFAULT pour les colonnes. CREATE TABLE : active/désactive la génération des ordres CREATE TABLE. PRIMARY KEY : active/désactive la génération des ordres PRIMARY KEY. Syntaxe PRIMARY KEY : les ordres PRIMARY KEY sont générés dans l'ordre CREATE TABLE ou dans un ordre ALTER TABLE. FOREIGN KEY : active/désactive la génération des ordres FOREIGN KEY. Position FOREIGN KEY : génération des ordres FOREIGN KEY après chaque CREATE TABLE ou groupés en fin de script. CREATE TABLESPACE : active/désactive la génération des ordres CREATE TABLESPACE. CREATE INDEX : active/désactive la génération des ordres CREATE INDEX. CREATE INDEX PK : active/désactive la génération des ordres CREATE INDEX pour les index de clés primaires. CREATE INDEX[UNIQUE] : active/désactive la génération des ordres CREATE INDEX pour les index uniques. UNIQUE : active/désactive la génération des ordres UNIQUE. UNIQUE[PK] : active/désactive la génération des ordres UNIQUE portant sur les clés primaires. CREATE VIEW : active/désactive la génération des vues logiques. CREATE PROCEDURE : active/désactive la génération des procédures stockées. CREATE TABLESPACE : active/désactive la génération des ordres CREATE TABLESPACE. CREATE CLUSTER : active/désactive la génération des ordres CREATE CLUSTER. CREATE SEQUENCE : active/désactive la génération des ordres CREATE SEQUENCE. CREATE SYNONYM : active/désactive la génération des ordres CREATE SYNONYM. CREATE TRIGGER : active/désactive la génération des triggers. Les paramètres Nom Trigger définissent les noms des trois types de trigger. Les différents paramètres Complément activent/désactivent la génération des compléments sur les tables, les groupements de données etc. Les différents paramètres Ext. permettent de préciser les extensions de chaque fichier généré, pour les tables, les groupements de données, les vues etc. COMMENT ON TABLE : commentaires sur les tables (0 : pas de commentaire, 1 : une ligne, Total : texte complet). COMMENT ON COLUMN : commentaires sur les colonnes (0 : pas de commentaire, 1 : une ligne, Total : texte complet). La génération des commentaires n'est possible que pour les systèmes cibles qui les acceptent (Oracle, DB2,...). 185

8 Tbspace des tables : par défaut, les tables sont générées dans le tablespace SYSTEM. Tbspace des index : par défaut, les index sont générés dans le tablespace SYSTEM. Base numéro d erreur : numéro d erreur utilisateur pour le SGBD courant. Quoted Identifier : active/désactive la génération des guillemets autour des identifiants SQL (Nom SQL). Mode génération inc : ce paramètre s applique à la génération incrémentale et peut prendre les valeurs "Alter" et "Drop/Create". "Alter" n'autorise pas la suppression d'objets (tables, indexes, etc.) au niveau des scripts générés. Seules les instructions pouvant être réalisées au travers de la commande ALTER sont générées. Pour les paramètres physiques, la suppression reste autorisée (c'est le cas notamment pour les partitions). "Drop/Create" autorise la suppression d'objets. Si une mise à jour ne peut s'effectuer au travers de la commande ALTER, l'objet est supprimé puis recréé. Par défaut, le paramètre prend la valeur "Alter". 186 MEGA Database Builder

Génération SQL Syntaxe supportée SYNTAXE SUPPORTÉE Instruction CREATE TABLE L'instruction CREATE TABLE définit une table. La définition inclut : Le nom de la table Les noms et attributs de ses colonnes Les attributs de la table tels que ses clés primaire et étrangères La syntaxe est la suivante : CREATE TABLE nom-table (nom-col1 type-col1 [NOT NULL]... nom-coln type-coln [NOT NULL]) Pour DB2, la syntaxe est la suivante : CREATE TABLE nom-table (nom-col1 type-col1 [NOT NULL]... nom-coln type-coln [NOT NULL]) [in Tablespace <Nom>] Pour Oracle, la syntaxe est la suivante : CREATE TABLE nom-table (nom-col1 type-col1 [NOT NULL]... nom-coln type-coln [NOT NULL]) [Tablespace <Nom>] nom-table : Valeur " SQL " de la table, ou, à défaut, nom de la table ; les caractères non reconnus sont remplacés par "_" nom-col : Valeur de l attribut SQL Name de la colonne ou, à défaut, nom de la colonne ; les caractères non reconnus sont remplacés par "_" type-col NOT NULL : Voir "Gestion de NOT NULL", page 187 Tablespace : DB2 et Oracle : Nom du tablespace cible pour les tables La clause PRIMARY KEY est précisée dans l'ordre "CREATE TABLE" (voir "Clause PRIMARY KEY", page 188). Gestion de NOT NULL Les clauses NULL, NOT NULL et NOT NULL WITH DEFAULT sont générées automatiquement sur les colonnes de clés primaires et sur les colonnes issues d'attributs obligatoires lors de la synchronisation. Ces valeurs peuvent être initialisées à "Null", "Not Null" ou "Not Null with Default" en fonction du paramétrage défini dans la fenêtre de propriétés de la base de données pour Colonnes Not Null, dans le sous-onglet Synchronisation de l'onglet Options. Les valeurs ainsi proposées peuvent ensuite être modifiées sur chaque colonne. 187

8 Clause PRIMARY KEY Définition d une clé primaire Une ou plusieurs colonnes d'une table permettent d'identifier chaque ligne de cette table. Les valeurs dans ces colonnes doivent être renseignées. Elles constituent la clé primaire ("primary key") de la table. Une table doit avoir une seule clé primaire ou aucune. Chaque nom de colonne doit identifier une colonne de la table et la colonne ne doit pas être identifiée plus d'une fois. Traitements et génération des ordres SQL Après la déclaration des noms de colonnes de la table, si l'option PRIMARY KEY est active, le ou les noms de colonnes de la clé primaire sont déclarés de la manière suivante : PRIMARY KEY (liste des colonnes de la clé primaire) La clause PRIMARY KEY est générée dans l'ordre CREATE TABLE. Exemple 1 Exemple 2 La clé primaire "CP" n'a qu'une colonne, "Col-cp". CREATE TABLE nom-table (Col-cp CHAR(9) NOT NULL, info1 CHAR(7), info2 CHAR(7), PRIMARY KEY (Col-cp) La clé primaire "CP1" a pour colonnes "CP11" et "CP12". CREATE TABLE nom-table (CP11 CHAR(9) NOT NULL, CP12 CHAR(9) NOT NULL, info1 CHAR(7), info2 CHAR(7), PRIMARY KEY (CP11, CP12) Pour Oracle, la clause PRIMARY KEY complète est la suivante : CONSTRAINT <nom de la clé> (liste des colonnes de la clé primaire) Clause FOREIGN KEY L'intégrité référentielle peut être exprimée, selon le système cible, soit par des clauses FOREIGN KEY, soit par la génération de triggers. Pour Oracle, elle est exprimée soit par des triggers, soit par des clauses FOREIGN KEY, en fonction du paramétrage de la base de données. Une ou plusieurs colonnes d'une table peuvent faire référence à une clé primaire dans cette table ou dans une autre. Ces colonnes constituent une clé étrangère. Ces colonnes peuvent ne pas avoir de valeur sur chaque ligne. La table qui contient la clé primaire référencée est une table parente. La table qui contient la clé étrangère est une table dépendante. Chaque nom de colonne doit identifier une seule colonne de la table et une même colonne ne doit pas être identifiée plus d'une fois. Si la même liste de noms de colonne est spécifiée dans plus d'une clause FOREIGN KEY, ces clauses ne doivent pas identifier la même table. 188 MEGA Database Builder

Génération SQL Syntaxe supportée Le nom de la table spécifié dans la clause FOREIGN KEY doit identifier une table parente. Une clé étrangère de table dépendante doit avoir le même nombre de colonnes que la clé primaire de la table parente. Le nombre de clés étrangères n'est pas limité. Traitement et génération des ordres SQL Après la déclaration des clés primaires (PRIMARY KEY), le(s) nom(s) de colonnes de la (des) clé(s) étrangère(s) de la table sont déclarés avec l'indication FOREIGN KEY : FOREIGN KEY (liste des colonnes de la clé étrangère) REFERENCES <Nom table parente> [ON DELETE <Action>] [ON UPDATE <Action>] ou : ALTER TABLE nomtable [ADD] FOREIGN KEY (liste des colonnes de la clé étrangère) REFERENCES <Nom table parente> [ON DELETE <Action>] [ON UPDATE <Action>] Pour Oracle, la syntaxe est la suivante : CONSTRAINT <nom de la clé étrangère> (liste des colonnes de la clé étrangère) REFERENCES <Nom table parente> [ON DELETE <Action>] [ON UPDATE <Action>] ou : ALTER TABLE... Exemples La table "nom-table1" a deux clés étrangères. Ces clés n'ont pas de composante. CREATE TABLE nom-table1 (cp1 CHAR(9) NOT NULL, cp2-rel12 CHAR(7) NOT NULL, cp3-rel13 CHAR(7) NOT NULL, info1 CHAR(7), info2 CHAR(7), PRIMARY KEY (cp1)) ALTER TABLE nom-table1 ADD FOREIGN KEY(cp2-rel12) REFERENCES nom-table2 ALTER TABLE nom-table2 ADD FOREIGN KEY(cp3-rel13) REFERENCES nom-table3 189

8 La table "nom-table1" possède une clé étrangère "ce2" qui a deux composantes, "ce21" et "ce22". La clé étrangère "ce2" n'a pas de référence (elle est donc composante de la clé primaire d'une autre table). CREATE TABLE nom-table1 (cp1 CHAR(9) NOT NULL, ce21 CHAR(7) NOT NULL, ce22 CHAR(7) NOT NULL, info1 CHAR(7), PRIMARY KEY (cp1)) ALTER TABLE nom-table 1 ADD FOREIGN KEY (ce21, ce22) REFERENCES nom-table 2 La table "nom-table1" a une clé étrangère, "ce2". La clé étrangère "ce2" est équivalente à la clé primaire "cp2" qui a deux composantes, "cp21" et "cp22". Les colonnes identifiées par "cp21" et "cp22" sont "NOT NULL". CREATE TABLE nom-table1 (cp1 CHAR(9) NOT NULL, cp21 CHAR(7) NOT NULL, cp22 CHAR(7) NOT NULL, info1 CHAR(7), info2 (CHAR7), PRIMARY KEY (cp1)) ALTER TABLE nom-table1 ADD FOREIGN KEY (cp21, cp22) REFERENCES nom-table2 Clause UNIQUE Une clause UNIQUE est générée pour chaque index unique de la table, sauf si cet index correspond à la clé primaire. Traitement et génération des ordres SQL Pour chaque index unique, la clause suivante est générée : UNIQUE (col1,...,coln) (col1,...n,coln) représente les colonnes de l'index. Instruction CREATE INDEX (Oracle, Sybase, SQL Server) Définition d'un index Un index est un ensemble de colonnes d'une table sur lesquelles un accès direct est défini. Pour Sybase et SQL Server, la valeur de l'attribut type-index de l'index détermine le type de l'index généré : UNIQUE, CLUSTERED ou UNIQUE CLUSTERED. 190 MEGA Database Builder

Génération SQL Syntaxe supportée Traitement et génération des ordres SQL Pour chaque index, une clause est générée, en fonction du SGBD cible. Pour Oracle : CREATE INDEX (colonne1,..., colonnen) [TABLESPACE (NomTbSpace) (colonne1,..., colonnen) représente les colonnes de l'index ; NomTbSpace est le nom du tablespace pour les index (voir "Paramétrer la génération", page 181). Pour Sybase et SQL Server : CREATE [UNIQUE] [CLUSTERED] INDEX (NomIndex) (NomTable) (colonne1,..., colonnen) (colonne1,..., colonnen) représente les colonnes de l'index ; NomTbSpace est le nom du tablespace pour les index (voir "Paramétrer la génération", page 181). Clause CREATE VIEW Une vue est définie sur une base de données. Elle peut utiliser une ou plusieurs tables. CREATE VIEW nom-vue AS SELECT (nom-colonne, nom-colonne,...) Il est possible de compléter cette définition dans la spécification de la vue (voir "Définir les vues d'une base de données", page 194). 191

8 192 MEGA Database Builder

9 OPTIONS SQL AVANCÉES Vous pouvez compléter la définition des objets relationnels par des définitions d objets techniques tels que les vues, triggers, procédures stockées, dont la spécification est propre à chaque SGBD cible et qui peuvent être générés séparément ou dans le fichier SQL de la base de données. Vous pouvez ainsi : "Définir les vues d'une base de données", page 194 "Définir les triggers pour une base de données", page 201 "Utiliser des procédures stockées", page 204 "Ajouter des propriétés physiques aux objets d une base de données", page 206 Les outils présentés dans les pages qui suivent sont disponibles avec un accès au référentiel en mode "Avancé". 193

9 DÉFINIR LES VUES D'UNE BASE DE DONNÉES La création des vues d'une base de données se fait par l'intermédiaire d'un arbre, qui permet de générer automatiquement une partie de la définition de la vue, et peut être complétée par l'utilisateur. Une vue logique est une table virtuelle dont la structure et le contenu sont déduits d'une ou plusieurs autres tables par une requête SQL. Créer les vues d une base de données Pour créer les vues d'une base de données : Sélectionnez la commande Vues du menu contextuel de la base de données. La fenêtre d'edition des vues s'ouvre. Dans la partie gauche de cette fenêtre, les différentes vues de la table et leur contenu sont présentés sous forme arborescente. Des boutons vous permettent : De créer une vue D'ajouter une table dans une vue Sélectionnez une vue pour rendre ce bouton actif. De référencer une vue dans une autre vue Sélectionnez une vue pour rendre ce bouton actif. 194 MEGA Database Builder

Options SQL avancées Définir les vues d'une base de données D'ajouter des colonnes à une table référencée dans la vue Sélectionnez une table pour rendre ce bouton actif. D'ajouter toutes les colonnes d'une table à une vue Sélectionnez une table pour rendre ce bouton actif. De proposer automatiquement une vue correspondant à chacune des tables de la base de données Sélectionnez une base de données pour rendre ce bouton actif. D'effacer l'élément sélectionné Pour les tables et les colonnes, qui ont une existence propre, seule leur référence est supprimée. En revanche, effacer une vue la supprime, ainsi que sa définition SQL. D'accéder à la fenêtre de propriétés de l'objet sélectionné Définition SQL La fenêtre d édition des vues présente, dans le cadre Définition SQL, le code de définition de la vue tel qu'il sera généré. Le code est, au départ, calculé en fonction de la définition indiquée dans l'arborescence. Vous pouvez modifier ce code, notamment à l aide des jointures. Vous pouvez également saisir directement les modifications dans le cadre SQL. La génération des vues peut être activée ou désactivée dans la fenêtre de propriétés d'une base de données, onglet Options, sous-onglet Génération. Jointures de vue Mode utilisateur Par défaut, la fenêtre d édition des vues propose les clés étrangères des tables sélectionnées, lorsqu elles existent. Il est ainsi possible de compléter la spécification d'une vue en lui associant des clés étrangères, sources potentielles de jointures. Pour associer une clé étrangère à la vue : Sélectionnez dans l arboresence la clé étrangère et glissez-la dans le champ de définition SQL. Vous pouvez modifier le code de la vue en tapant directement dans le cadre de définition SQL : Sélectionnez l'option "Définie par l'utilisateur" et cliquez sur le bouton Enregistrer pour que la Définition SQL soit conservée dans le référentiel en tant que telle. Après modification, il est possible de revenir à la définition telle qu'elle est déduite de l'arborescence, en choisissant de nouveau l'option "Définie par le système". Dans ce cas, tous les compléments éventuellement apportés à la définition de la vue sont perdus. 195

9 Champs Les catégories de champ correspondent aux types d'objets utilisés dans l'arbre déclaratif : table, vue, colonne et colonne de clé étrangère. Les champs affichés dans la définition SQL correspondent aux éléments déclarés dans l'arbre. Le type clé étrangère ne donne pas lieu à une catégorie de champ : les champs utilisables proviennent des colonnes de clé et non pas des clés elles-mêmes. Le bouton vous permet d afficher les champs du code SQL. Si un objet est ajouté dans l'arbre, un champ correspondant devient disponible pour insertion. Si un objet est renommé dans l'arbre ou dans le référentiel, ses références restent valides et les champs sont affichés avec le nouveau nom dans le texte. Si un objet est supprimé dans l'arbre ou dans le référentiel, ses références deviennent invalides et sont signalées comme telles dans les champs. Exemple de vue Supposons que vous vouliez créer une vue pour la base de données "Gestion des commandes". Dans cette vue, vous voulez voir le code des différents articles et leur taux de TVA. Pour cela : 1. Cliquez avec le bouton droit sur la base de données "Gestion des commandes". 2. Sélectionnez Vues. 3. Dans la fenêtre qui apparaît, cliquez sur "Gestion des commandes" puis sur le bouton Créer une vue 4. Saisissez le nom de la vue, "V1" par défaut, et cliquez sur OK. Pour préciser les tables prises en compte dans la vue : 5. Cliquez sur "V1" puis sur le bouton Ajouter des tables La fenêtre de sélection des tables apparaît. 196 MEGA Database Builder

Options SQL avancées Définir les vues d'une base de données 6. Sélectionnez les tables qui vont vous permettre de définir la vue. Il s agit ici des tables "Article" et "Type d article". 7. Cliquez sur OK. Vous pouvez voir que le code correspondant apparaît dans la partie droite de la fenêtre d édition des vues. Pour préciser les colonnes que vous voulez afficher : 8. Cliquez avec le bouton droit sur les tables et sélectionnez Ajouter des colonnes. Dans notre exemple, sélectionnez dans la table "Type d article" la colonne "Type_d_article.Taux_TVA", et dans la table "Article" la colonne "Article.Code_article". 9. Dans l encadré de définition SQL, tapez WHERE + espace. Vous passez alors automatiquement en mode utilisateur. 10. Cliquez sur Enregistrer. Sous la table "Article", vous pouvez voir la clé étrangère "FK_Typer". Cette clé vous est proposée par défaut, elle vous permet de faire la jointure entre les deux tables. 197

9 11. Sélectionnez la clé et glissez-la dans le code après la commande WHERE. Les colonnes auxquelles la clé est reliée apparaissent automatiquement dans le code. 12. Cliquez sur Enregistrer. Définir un groupement de données Un groupement de données - ou tablespace - est un regroupement dans une même page ou des pages physiques voisines de la base de données des lignes de plusieurs tables à des fins d'optimisation, en particulier pour les jointures. Ex : Tablespace dans DB2, Cluster dans Oracle etc. Pour définir des groupements de données dans la base de données : 1. Ouvrez la fenêtre de propriétés de la base de données. 2. Cliquez sur l onglet Compléments. 3. Sélectionnez le dossier Groupement de données. Propriétés de la base "BD Bourse", onglet Compléments 4. Cliquez sur le bouton Nouveau. 5. Dans la fenêtre qui apparaît, indiquez le Nom du groupement de données. Il est possible, d'ouvrir, avec le menu contextuel du groupement de données ainsi créé, sa fenêtre de propriétés, pour définir les tables et les index qu'il inclut, dans les onglets correspondants. Les commandes Tables et Index du menu contextuel des groupements de données permettent d'accéder directement à ces onglets. 198 MEGA Database Builder

Options SQL avancées Définir les vues d'une base de données Pour spécifier les tables et les index inclus dans le groupement de données : 1. Dans l onglet Tables, cliquez sur le bouton Relier 2. Dans la liste des tables de la base de données qui est alors présentée, sélectionnez les tables de la base de données qu il devra inclure. Le bouton Délier permet d'enlever une table de la liste en cas d'erreur. 3. Effectuez les mêmes opérations pour les index du tablespace. 4. Cliquez sur OK. Compléter les objets Dans les fenêtres de paramétrage des tables, des colonnes, des clés, des index et des tablespaces, le bouton Compléments permet d'accéder à un texte, qui s'utilise comme les commentaires usuels. Ce texte est utilisé lors de la génération, et permet de compléter le code généré : le texte ainsi saisi sera inséré lors de la génération avant la commande indiquant la fin de la séquence de commandes concernant l'objet. Les compléments sont également utilisés lors de la rétro-génération, pour reprendre les compléments éventuels de définition des objets dans les ordres SQL. 199

9 Le tableau suivant récapitule les différents compléments existants. Type d'objet Applicable à... Saisie Colonne La colonne courante Onglet Complément de la fenêtre de propriétés de la colonne Index L'index courant Onglet Complément de la fenêtre de propriétés de l'index Table La table courante Onglet Complément de la fenêtre de propriétés de la table Groupement de données Le groupement de données courant Onglet Options, Complément de la fenêtre de propriétés de la colonne Table Les tables du tablespace Onglet Options, Complément par défaut de la fenêtre de propriétés du groupement de données Table Les tables de la base de données Onglet Options, Complément par défaut de la fenêtre de propriétés de la base de données Index Les index du tablespace Onglet Options, Complément par défaut de la fenêtre de propriétés du groupement de données Index Les index de la base de données Onglet Options, Complément par défaut de la fenêtre de propriétés de la base de données Exemple de création de tablespace pour Oracle CREATE TABLESPACE My_Data_Group Enter here your tablespace tuning parameters...; Exemple de création de table pour Oracle CREATE TABLE Account ( Number_Account_1 NOT NULL, Customer_code_1 NOT NULL, Opening_date DATE NOT NULL, CONSTRAINT PK_Account PRIMARY KEY ( Number_Account_1 ) USING INDEX TABLESPACE My_Data_Group Enter here your table tuning parameters... ) TABLESPACE My_Data_Group; 200 MEGA Database Builder

Options SQL avancées Définir les triggers pour une base de données DÉFINIR LES TRIGGERS POUR UNE BASE DE DONNÉES Un trigger est un traitement enregistré dans une base de données et qui est déclenché automatiquement lors de la mise à jour d une table. Les triggers se définissent dans l éditeur physique d une base de données, au niveau des tables. Créer un trigger Pour définir un trigger : 1. Ouvrez le menu contextuel de la base de données contenant la table sur laquelle va porter le trigger. 2. Cliquez sur Editer. L éditeur de la base de données apparaît. 3. Afichez le Mode physique. La liste des tables de la base de données apparaît. Editeur physique de la base "BD Gestion des commandes" Sur chaque élément, un menu contextuel, ouvert en cliquant avec le bouton droit, permet d'accéder aux différentes commandes applicables à l'objet, et, en particulier, d'enlever l'objet de la vue et de consulter et modifier ses propriétés. 4. Ouvrez le menu contextuel de la table concernée. 201

9 5. Cliquez sur Triggers. Il faut noter que les triggers sont définis en fonction du SGBD cible; c'est pourquoi il est important de contrôler, avant de créer les triggers, que le SGBD cible est correct. Si le SGBD cible est modifié a posteriori, les triggers créés pour ce SGBD ne sont pas supprimés, mais ils sont inactivés. 6. La fenêtre de propriétés de la table apparaît sur l onglet Trigger. 7. Cliquez sur le bouton Nouveau pour créer un nouveau trigger. 8. Ouvrez la fenêtre de propriétés du trigger créé pour définir ses caractéristiques. Déclenchement du trigger Le trigger peut se déclencher suite à l une des trois actions suivantes : Lors de l insertion d une ligne dans la table Lors de la suppression d une ligne Lors d une modification de la table ou d une colonne en particulier Définition SQL De plus, vous pouvez choisir de le lancer avant ou après ces actions, sur l ensemble de la table ou sur chaque ligne concernée. Références Les champs "Ancienne" et "Nouvelle" créent dans le code du trigger des références aux lignes insérées, supprimées ou mises à jour. Le nom indiqué dans le champ "Ancienne" correspond à la ligne qui existait avant la mise à jour. Le nom du champ "Nouvelle" fait référence à la ligne après la mise à jour. En cas d insertion, seule la nouvelle ligne est valide. En cas de suppression, seule l ancienne est valide. L option Définition SQL, sous l onglet Textes, présente le code du trigger. Pour accéder à cette option, vous devez avoir accès au référentiel en mode "Expert". Pour afficher le mode expert : 1. Cliquez sur le menu Outils > Options de MEGA. 2. Cliquez sur le dossier Référentiel. 3. Dans la partie droite de la fenêtre, dans le champ Accès au référentiel, sélectionnez le mode "Expert". 202 MEGA Database Builder

Options SQL avancées Définir les triggers pour une base de données Intégrité référentielle L intégrité référentielle est gérée par la création des clés étrangères sur une base de données. Elle regroupe l ensemble des contraintes permettant de contrôler l incidence d une modification d une table dans les tables qui lui sont liées. Il se peut que l existence de clés dans certains SGBD n implique pas un contrôle systématique. Il se peut également que vous vouliez personnaliser les contraintes à appliquer sur une table en particulier. C est pourquoi vous pouvez générer dans des triggers le code qui correspond à la gestion de l intégrité référentielle. Pour générer l intégrité référentielle d une table : 1. Ouvrez l éditeur de la base de données en mode physique. 2. Sélectionnez la table de la base de données. 3. Cliquez sur le bouton Générer les triggers par intégrité référentielle. Vous pouvez également générer l intégrité référentielle sur la base de données. Dans ce cas, toutes les tables de la base sont prises. Une fenêtre vous demande de confirmer la génération. Une fois la génération terminée, les triggers apparaissent sous le dossier Trigger disponible sous chaque table. Il existe trois type de trigger : Un trigger de mise à jour (U_ suivi du nom de la table), qui permet de spécifier l action à réaliser en cas de modification d une ligne de la table faisant partie de la clé étrangère. Un trigger de suppression (D_), qui spécifie l action à réaliser en cas de suppression. Un trigger d insertion (I_), qui spécifie l action à réaliser en cas d insertion. Ces triggers ne sont valables que pour un SGBD cible. Lorsque vous changez de SGBD, vous devez regénérér les triggers. 203

9 UTILISER DES PROCÉDURES STOCKÉES MEGA vous permet de créer des procédures stockées. Une procédure stockée combine un langage procédural et des requêtes SQL au sein d un programme. Elle permet d exécuter une tâche particulière sur une base de données. Elle est enregistrée dans une base de données et peut être appelée depuis un programme extérieur à la base de données ou depuis un trigger. Une procédure stockée peut être implémentée de deux façons; sous la forme d une procédure ou d une fonction. Une procédure est un ensemble d instructions exécutant un sousprogramme. Une fonction est une procédure retournant une valeur à la fin de l'exécution. Pour créer ou éditer les procédures et les fonctions stockées pour une base de données : 1. Ouvrez le menu contextuel de la base de données sur laquelle va porter la procédure stockée. 2. Cliquez sur Editer. L éditeur de la base de données apparaît. 3. Afichez le Mode physique. 4. Ouvrez le menu contextuel du dossier Procédure Stockée et cliquez sur Nouveau > Procédure stockée. La fenêtre de création apparaît. 5. Indiquez le nom de la procédure et sa forme (Procédure ou Fonction). 6. Cliquez sur OK. La procédure stockée apparaît dans l éditeur. Vous pouvez définir son code dans la partie droite de l éditeur. 204 MEGA Database Builder

Options SQL avancées Utiliser des procédures stockées Exemple de procédure stockée pour Oracle Voici l exemple d une procédure stockée mettant à jour le prix unitaire d une pièce en fonction de l identifiant de la pièce : CREATE PROCEDURE update_part_unitprice (part_id IN INTEGER, new_price IN NUMBER) IS Invalid_part EXCEPTION; BEGIN -- HERE S AN UPDATE STATEMENT TO UPDATE A DATABASE RECORD UPDATE sales.parts SET unit_price = new_price WHERE id = part-id; -- HERE S AN ERROR-CHECKING STATEMENT If SQL%NOTFOUND THEN RAISE invalid_part; END IF; EXCEPTION -- HERE S AN ERROR-HANDLING ROUTINE WHEN invalid_part THEN raise_application_error(-20000, Invalid Part ID ); END update_part_unitprice; 205

9 AJOUTER DES PROPRIÉTÉS PHYSIQUES AUX OBJETS D UNE BASE DE DONNÉES Une fois votre base de données définie dans un diagramme relationnel, vous pouvez générer les scripts SQL correspondants à destination de différents SGBD. L éditeur de base de données vous permet de compléter la modélisation physique d une base de données en spécifiant les paramètres propres à chaque SGBD et de produire ainsi des scripts SQL complets. Vous pouvez également importer dans MEGA les paramètres physiques définis sur des objets rétro-générés. Voir la "Rétro-génération des propriétés physiques", page 226. Vous pouvez adapter un même modèle logique à plusieurs SGBD. Il n est pas nécessaire de dupliquer les objets. SGBD cibles Le mode physique de l éditeur de base de données est disponible pour les versions de SGBD suivantes : DB2 OS/390 Version 7 DB2 OS/390 Version 8 DB2 Universal Database Version 7 DB2 Universal Database Version 8 Oracle 9i Oracle 10 Pour définir un SGBD cible sur une base de données : 1. Ouvrez la fenêtre de propriétés de la base de données concernée. 2. Cliquez sur l onglet Caractéristiques. 3. Renseignez le champ SGBD cible. Voir aussi "Importer une version de SGBD", page 65. Afficher le mode physique Pour ajouter des propriétés physiques sur les objets d une base de données : 1. Dans MEGA, sélectionnez la fenêtre de navigation Objets principaux. 2. Dépliez le dossier "Bases de données". 3. Cliquez avec le bouton droit sur une base de données et sélectionnez Editer. L éditeur de base de données s affiche. 4. Cliquez sur le menu Affichage > Mode physique. Ce mode n est visible que si vous avez défini sur la base de données un SGBD pour lequel des personnalisations sont possibles. 206 MEGA Database Builder

Options SQL avancées Ajouter des propriétés physiques aux objets d une base de données Les paramètres sont présentés sous forme arborescente, conformément à la grammaire SQL du SGBD considéré (référez-vous à la documentation SQL du SGBD). Deux types de dossier sont présentés dans l arbre : Les dossiers de navigation. Les groupes de paramètres que vous devez instancier. Chaque groupe de paramètres, représenté par un objet "clause SQL", dispose d'une page de propriétés permettant de définir leur valeur. Les clauses SQL ainsi définies sont accessibles comme des objets standard du référentiel. Il est par exemple possible de rechercher des objets SQL ayant une valeur donnée pour un paramètre. Par défaut, les clauses ne sont pas réutilisables d'un objet à l'autre. Il est néanmoins possible de définir une clause pour un objet et de la relier à d'autres objets. Dans ce cas, toute modification de la clause affecte les objets qui l'utilisent. Objets contenant des paramètres physiques Tous les objets dans MEGA ne supportent pas les paramètres physiques. Ceux-ci concernent uniquement : Les groupes de données Les tables Les index Les clusters Créer une nouvelle clause Pour définir les paramètres d un objet : 1. Cliquez avec le bouton droit sur le groupe de paramètres correspondant et sélectionnez Nouveau > SQL clause. 207

9 2. Ouvrez la fenêtre de propriétés de la clause et renseignez la valeur du paramètre à définir. Ces propriétés s affichent également dans la partie droite de l éditeur lorsque vous sélectionnez la clause dans le navigateur. Relier une clause Vous pouvez affecter une même clause à plusieurs objets, à condition de relier le bon type de clause. Prenons la base de données "Gestion des commandes" ayant pour SGBD Oracle 9i. Sur la colonne "Code_catalogue", créez la "Clause 1" de type "inline_constraint". Vous pouvez relier la "Clause 1" à une autre colonne. S agissant du même type de clause, celle-ci est copiée sans problème sur la nouvelle colonne. Par contre, si vous reliez la "Clause 1" à un objet dont le type est différent de celui défini initialement sur la "Clause 1" - par exemple "Storage_clause " - alors la "Clause 1" change de type pour prendre celui du dernier élément relié. Autrement dit, la "Clause 1" qui était de type "inline_constraint" prend le type "storage_clause". Ce changement se répercute sur les colonnes de départ auxquelles était reliée la "Clause 1". 208 MEGA Database Builder

Options SQL avancées Ajouter des propriétés physiques aux objets d une base de données Nommage des clauses Cas standard Par défaut, le nom de la clause prend le nom de la clause type à laquelle elle est rattachée. Lorsque vous rattachez une clause à un autre type, le nom s adapte automatiquement. Nommage spécifique Vous avez la possibilité de donner un nom spécifique à une clause. Dans ce cas, le nom de la clause devient statique; le changement de clause type ne modifie pas le nom de la clause. Vous pouvez revenir en mode dynamique en forçant le nom à vide. Un nommage spécifique est indispensable lorsqu une clause est utilisée dans différents contextes (clause générique). Clauses multiples Pour un niveau donné, plusieurs clauses peuvent être rattachées à une même clause type. Afin de distinguer les différentes clauses, le nom de la clause est constitué du nom de la clause type puis de son hexaidabs. Nommage à partir d'une propriété Il est possible de modifier le comportement standard en définissant une règle de nommage automatique pour un type de clauses SQL. Ce paramétrage s effectue au niveau de la propriété _settings de la clause type. Dans l'exemple ci-dessous, le paramétrage effectué sur la clause type "range_partition" pour Oracle 9i indique que le nom des clauses SQL de ce type se construit à partir de la valeur de la propriété PARTITION. 209

9 Une fois ce paramètre effectué, les noms des clauses SQL est automatiquement calculé à partir des valeurs de la propriété PARTITION. Le nom des clauses SQL n est pas pris en compte dans la génération SQL. Dans l exemple fourni, c est bien la valeur de la propriété PARTITION qui alimente les scripts SQL générés. Générer le fichier SQL Une fois la personnalisation d un objet effectuée, vous pouvez générer le fichier script correspondant afin d observer les résultats, sans pour autant re-générer toute la base de données. Par exemple, pour générer le fichier SQL d un index : Cliquez avec le bouton droit sur l index et sélectionnez Générer. Voir aussi "Génération SQL", page 171. Exemple de personnalisation d un modèle logique Vous pouvez partitionner une table afin de faciliter l accès aux données ou de gérer différemment des blocs d informations. Supposons que vous vouliez partionner la table "Ligne de commande" de la base de données "Gestion des commandes" selon la méthode by hash d Oracle. Cette méthode permet de calculer dynamiquement la partition d une table. Syntaxe de l instruction Hash partitioning Vérifiez que la base de données a pour SGBD cible Oracle 9i. Ouvrez sa fenêtre de propriétés et cliquez sur l onglet Caractéristiques. Le nom du SGBD est indiqué dans le champ SGBD cible. 210 MEGA Database Builder

Options SQL avancées Ajouter des propriétés physiques aux objets d une base de données Ouvrez l éditeur de la base de données "Gestion des commandes" : Cliquez avec le bouton droit sur la base de données et sélectionnez Editer. L éditeur apparaît. Cliquez sur le menu Affichage > Mode physique. Les paramètres liés à la grammaire Oracle sont présentés. Pour partitionner la table "Ligne de commande" : Dépliez la table "Ligne_de_commande". Dépliez le groupe de paramètres "MEGA_Oracle::relational_table". Cliquez avec le bouton droit sur le type de clause "MEGA_Oracle::table_properties" et sélectionnez Nouveau > SQL clause. Nommez la clause "Ligne_de_commande/Table_properties". Elle apparaît dans l éditeur. Sous cette clause, dépliez le groupe de paramètres "MEGA_Oracle::table_partitioning_clauses". Il contient les différents types de partionnement qu il est possible de réaliser dans Oracle. Sur le dossier "MEGA_Oracle::hash_partitioning", créez la clause "Ligne_de_commande/hash_partitioning". Ouvrez sa fenêtre de propriétés. 211

9 Dans l onglet PARTITION BY HASH, indiquez les colonnes sur lesquelles s applique le découpage. Pour cela, reliez les colonnes concernées par la partition. Fermez la fenêtre de propriétés. Sous la clause "Ligne_de_commande/hash_partitioning" sont disponibles deux types de clauses : individual_hash_partitions : permet de nommer chaque partition. hash_partitions_by_quantity : permet de définir le nombre de partitions que vous voulez créer. Créez la clause "Ligne_de_commande/Hash_partition_by_quantity". Ouvrez sa fenêtre de propriétés. Cliquez sur l onglet PARTITIONS. Dans le champ Hash partition quantity, indiquez le nombre de partitions. Ces partitions sont représentées par des groupements de données. Sous le champ STORE IN, reliez les groupements de données. 212 MEGA Database Builder

Options SQL avancées Ajouter des propriétés physiques aux objets d une base de données Pour obtenir le script correspondant à ce partitionnement, cliquez avec le bouton droit sur la table "Ligne de commande" et sélectionnez Générer. 213

9 214 MEGA Database Builder

10 RÉTRO-GÉNÉRATION La rétro-génération permet, à partir de bases de données existantes, de créer dans le référentiel MEGA, les tables et colonnes correspondantes. Cette rétro-génération peut se faire par extraction préalable, ou par accès direct aux bases accessibles par ODBC. Les tables et colonnes sont intégrées dans une base de données où elles peuvent être facilement maintenues et documentées. Les points suivants sont abordés ici : "Lancer la rétro-génération", page 216 "Utiliser un profil de connexion", page 219 "Reconnaissance des datatypes par ODBC", page 221 "Rétro-génération de scripts DB2 OS/390 V5", page 224 "Rétro-génération des propriétés physiques", page 226 Les outils présentés dans les pages qui suivent sont disponibles avec un accès au référentiel en mode "Avancé". 215

10 LANCER LA RÉTRO-GÉNÉRATION Configuration requise Pour l'extraction de données, le poste de travail doit être connecté à la base de données avec le protocole ODBC (voir la documentation de ce produit pour son installation). Le pilote de la base de données doit avoir un niveau de conformité ("conformance level") égal à 2. Après l'installation du gestionnaire ODBC : 1. Définissez une source de données correspondant à la base qui doit être traitée. 2. Dans la fenêtre de propriétés de la base, indiquez, dans l onglet Caractéristiques, le nom de la base de données concernée comme Source de données ODBC. 3. Indiquez si nécessaire un nom d Utilisateur, un Mot de passe et un Dossier de travail. Pour plus d informations sur l extraction ODBC, voir "Extraire la description d une base de données", page 230. Il est nécessaire, pour lancer la rétro-génération, de définir une base de données dans MEGA (voir "La base de données", page 64). 216 MEGA Database Builder

Rétro-génération Lancer la rétro-génération Pour lancer la rétro-génération : 1. Ouvrez le menu contextuel de la base de données et cliquez sur la commande Relire la base cible. La fenêtre Relire une base cible apparaît. 2. Sélectionnez le Type de données à prendre en compte : "ODBC", ou "Fichier d extraction" obtenu avec l utilitaire d extraction de données (voir "Utilitaire d extraction ODBC", page 229). 3. Indiquez le Nom de la base de données ou du fichier. Le bouton Parcourir permet, si le type sélectionné est un fichier, de parcourir l arborescence des dossiers, ou, si une connexion ODBC est sélectionnée, la liste des sources de données définie avec le gestionnaire ODBC. En ce cas, la sélection d une connexion peut se faire par double-clic dans la liste, ou par glisser-déplacer du nom de la connexion vers le champ Nom. 4. Dans la fenêtre présentant les tables, sélectionnez les tables à rétrogénérer. 217

10 5. Dans la seconde partie de la fenêtre, vous pouvez affiner la Sélection (Clés primaires, Clés étrangères etc.). 6. Utilisez le bouton Options pour indiquer d autres paramètres. Si la base a déjà été rétro-générée, vous pouvez spécifier l étendue de la Réinitialisation, qui peut être : Totale : toutes les tables existantes sont supprimées. Partielle et concerner uniquement les Ajouts, les Suppressions ou les Modifications. L'option Simulation permet de simuler l'opération, et de générer un compte-rendu indiquant les impacts sur le référentiel. Il est possible de prendre en compte uniquement les tables qui ont un propriétaire donné en sélectionnant son nom dans la liste Propriétaire. 7. Cliquez sur le bouton Exécuter pour lancer la rétro-génération. Des messages rendent compte du déroulement de l'exécution. 8. Utilisez le bouton Anomalies pour ouvrir la seconde partie de la fenêtre, qui permet de consulter des messages plus détaillés. 9. A la fin du traitement, le bouton Compte-rendu vous permet d accéder au compte-rendu de l exécution. A la fin de la rétro-génération, les tables et les colonnes de la base sont créées ; en revanche, le diagramme relationnel doit être créé pour pouvoir consulter la base de données sur un modèle graphique. Si certains datatypes non standard ont été créés dans le SGBD, il faut les rajouter dans le paramétrage pour qu'ils soient reconnus par MEGA. 218 MEGA Database Builder

Rétro-génération Utiliser un profil de connexion UTILISER UN PROFIL DE CONNEXION Un profil de connexion est utilisé pour établir une connexion avec une base de données lors de la rétro-génération. Il est composé de plusieurs champs : Un nom d Utilisateur Un Mot de passe La source ODBC (ODBC Datasource) Textes : Edition de script SQL : le chemin que vous spécifiez (par exemple C:\Oracle\SQLPLUS.EXE) permet de lancer automatiquement l'éditeur SQL que vous utilisez habituellement, au moment où vous lancez la commande Ouvrir la base cible de la base de données. Import de script SQL : ce texte est utilisé pour importer des scripts SQL. Il indique le chemin du gestionnaire de scripts SQL, le chemin du script, les paramètres d import, et le chemin du fichier de compterendu. Il est utilisé au moment où vous lancez la commande Mettre à jour la base cible. Pour spécifier un profil de connexion à utiliser : Dans la fenêtre de propriétés de la base, sélectionnez l onglet Options, sous-onglet Standard. Le champ Profil de connexion vous permet de Créer, Rechercher ou Lister des profils de connexion. 219

10 La fenêtre de propriétés du profil de connexion peut être renseignée ultérieurement, en utilisant dans le même menu la commande Propriétés. Exemple de profil de connexion : 220 MEGA Database Builder

Rétro-génération Reconnaissance des datatypes par ODBC RECONNAISSANCE DES DATATYPES PAR ODBC Lors de la relecture d une base (commande Relire la base cible du menu contextuel d une base), MEGA demande à la base (Oracle dans notre exemple) quels sont ses datatypes, par l intermédiaire d ODBC. Par exemple, si Oracle contient un datatype "SQL_LONGVARCHAR", MEGA saura interpréter qu il s agit d un datatype "P-Text". Pour cela, MEGA utilise le fichier "xmdb.xdr", situé dans le dossier "Mega\Mega_Std". La partie du fichier "xmdb.xdr" qui concerne la correspondance des datatypes commence par la ligne suivante : <!-- Mapping of standard Datatypes --> Chaque ligne se présente ainsi : <!-- #DataType(5B845EAE3BAF0020) = "SQL_LONGVARCHAR" Standard::Types::Pivot::P-Text --> Le chiffre entre parenthèses (ici 5B845EAE3BAF0020) est l identifiant absolu du datatype. Le texte entre guillemets (ici SQL_LONGVARCHAR) est le nom du datatype ODBC. Le chemin qui suit (ici Standard::Types::Pivot::) précise dans quel paquetage MEGA se trouve le datatype correspondant. Enfin, le datatype MEGA (ici P-Text) est précisé. Pour reconnaître les datatypes, le logiciel utilise, dans l ordre, les trois listes suivantes : La liste des datatypes ajoutés par l utilisateur. En effet, lorsque vous créez manuellement un datatype, il faut ajouter une règle à la liste pour que celui-ci soit reconnu. La liste des datatypes du driver ODBC utilisé. Exemple : ici il existe une liste de datatypes pour Ingres, et deux listes pour Oracle, pour deux drivers différents (driver Oracle et driver Microsoft). 221

10 <!-- Declaration Rule Parser Datatypes for Ingres --> <!-- #DataType(13ED147938B5008F) = "SQL_CHAR,SQL_INGRESC" Standard::Types::Pivot::P-Character --> <!-- #DataType(5B845EAE3BAF0020) = "SQL_VARCHAR,SQL_INGRESTEXT" Standard::Types::Pivot::P-Text --> <!-- #DataType(13ED1A3D38B501E0) = "SQL_DECIMAL,SQL_INGRESMONEY" Standard::Types::Pivot::P-Currency --> <!-- #DataType(13ED1A3038B501D5) = "SQL_TIMESTAMP,SQL_INGRESDATE" Standard::Types::Pivot::P-Date --> <!-- Declaration Rule Parser Datatypes for Oracle with Oracle Driver --> <!-- #DataType(B55EB70C3471008F) = "SQL_TIMESTAMP,SQL_Oracle8DATE" Standard::Types::Pivot::P-Datetime --> <!-- #DataType(45F44A3B3BAF003D) = "SQL_VARBINARY,SQL_Oracle8RAW" Standard::Types::Pivot::P-Binary --> <!-- #DataType(B55EB71E347100BC) = "SQL_VARCHAR,SQL_Oracle8ROWID" Standard::Types::Pivot::P-Timestamp --> <!-- #DataType(B55EB6F134710044) = "SQL_DECIMAL,SQL_Oracle8DECIMAL" Standard::Types::Pivot::P-Numeric --> <!-- #DataType(B55EB6F134710044) = "SQL_TINYINT,SQL_Oracle8NUMBER(3,0)" Standard::Types::Pivot::P-Numeric --> <!-- #DataType(B55EB6F134710044) = "SQL_INTEGER,SQL_Oracle8DECIMAL" Standard::Types::Pivot::P-Numeric --> <!-- Declaration Rule Parser Datatypes for Oracle with Microsoft Driver --> <!-- #DataType(B55EB70C3471008F) = "SQL_TIMESTAMP,SQL_OracleDATE" Standard::Types::Pivot::P-Datetime --> <!-- #DataType(45F44A3B3BAF003D) = "SQL_VARBINARY,SQL_OracleRAW" Standard::Types::Pivot::P-Binary --> <!-- #DataType(B55EB71E347100BC) = "SQL_CHAR,SQL_OracleROWID" Standard::Types::Pivot::P-Timestamp --> <!-- #DataType(B55EB6F134710044) = "SQL_DECIMAL,SQL_OracleNUMBER" Standard::Types::Pivot::P-Numeric --> La liste des datatypes standard. Problèmes de reconnaissance des datatypes Il est nécessaire d ajouter une correspondance entre les datatypes dans le fichier "xmdb.xdr", dans les deux cas suivants : Le datatype est mal reconnu. L utilisateur peut s en rendre compte en constatant par exemple qu un datatype "Integer" dans Oracle devient un datatype "P-Number" dans MEGA, au lieu de "P-Integer". Le datatype n est pas reconnu. Lorsque le datatype n est pas reconnu, un message de ce type apparaît en bas de la fenêtre, lors de la relecture de la base cible : Le DataType 'SQL_Data8' n'a pas été reconnu. Voir l'aide pour paramétrer la correspondance des DataTypes. Pour ajouter une correspondance de datatypes : 1. Ouvrez le fichier résultat de l extraction. Voir "Extraire la description d une base de données", page 230 pour savoir comment produire le fichier résultat de l extraction. 2. Repérez dans ce fichier la correspondance entre les datatypes. Par exemple, dans l expression : <COLDATATYPE Name="COLDATATYPE.JAVA036HTTP036DEPLOYMENT036DIGEST036.IS09 5DOC095ROOT" DataType="SQL_DECIMAL" TypeTech="SQL_Oracle8DECIMAL" /> 222 MEGA Database Builder

Rétro-génération Reconnaissance des datatypes par ODBC le datatype ODBC est "SQL_DECIMAL" et le datatype MEGA est "SQL_Oracle8DECIMAL". 3. Ajoutez à n importe quel endroit dans le fichier "xmdb.xdr" une ligne construite comme présenté ci-dessus indiquant la correspondance entre les datatypes. Exemple : <!-- #DataType(B55EB6F134710044) = "SQL_Data8" Standard::Types::Pivot::P-Text --> Nous avons ici défini le datatype "SQL_Data8" comme un datatype "P-Text". 223

10 RÉTRO-GÉNÉRATION DE SCRIPTS DB2 OS/390 V5 MEGA permet de récupérer la définition d'une base de données relationnelle. Pour cela, un accès en ligne au SGBD est nécessaire. Il est assuré par une connexion ODBC dont la mise en oeuvre peut s'avérer fastidieuse. De plus, cette technique pose des problèmes de sécurité pour un environnement tel que DB2 OS/390 V5 sur un site central. C est pourquoi il est possible d utiliser un dispositif agissant en mode "déconnecté" sans accès direct aux bases de production. Concepts reconnus Le convertisseur reconnaît les ordres suivants de la syntaxe DB2 OS/390 V5 : CREATE TABLE CREATE INDEX CREATE TABLESPACE Il existe deux modes de création des tablespaces: Par une commande du type CREATE TABLESPACE nom-tablespace. Par une déclaration d'appartenance dans une commande de création de table (CREATE TABLE nom-table IN nom-tablespace). Dans les deux cas, le tablespace est considéré comme appartenant à la base de données. Dans le second cas, il est en outre considéré comme contenant la table. La présence de doublons est vérifiée. ALTER TABLE COMMENT ON Mise en oeuvre Dans la fenêtre Relire une base cible, un type supplémentaire, Script SQL, est disponible. Ce nouveau type est visible uniquement si la cible de la base de données est "DB2 OS/390 Version 5". 224 MEGA Database Builder

Rétro-génération Rétro-génération de scripts DB2 OS/390 V5 Lors de l'exécution pour le type "Script SQL", une première phase analyse le script pour le convertir au format "Fichier d'extraction", puis enchaîne sur le processus de relecture existant. Analyseur syntaxique Il est possible de lancer le convertisseur isolément à des fins de diagnostic. Il peut ainsi servir d analyseur syntaxique. Pour convertir les fichiers DB2 OS/390 V5 au format "Fichier d'extraction" : Ouvrez une fenêtre DOS. Dans cette fenêtre, tapez la ligne de commande suivante : <dossier du site MEGA> mgwsdb2.exe [<options>] <nomfichier-db2> <nom-fichier-mega> Le programme mgwsdb2.exe se trouve dans le dossier C:\Program Files\MEGA\Utilities\MEGA Data Extractor. Les options sont facultatives. Elles sont suivies du nom du fichier à convertir et du nom du fichier converti au format MEGA. Les options possibles sont les suivantes : -h : Affiche l'aide concernant l'utilisation du programme. Lorsque cette option est rencontrée, le programme n'essaie pas de convertir les fichiers et sort sans erreur. -v : Bascule vers le mode "bavard". Une série d'informations concernant l'analyse du fichier sont données. Cette commande est utilisée pour la détection d'erreurs de syntaxe dans le fichier DB2 OS/390 V5 ou dans des fichiers ne correspondant pas tout à fait à la norme. On peut rediriger le flux standard vers un fichier pour conserver ces informations, en ajoutant "> <nom-fichier>" à la ligne de commande. -d<nom-fichier-debug> : Stocke les informations de débogage dans le fichier suivant l'option -d. Il n'y a pas d'espace entre l'option et le nom du fichier. -n<nom-bd> : Précise le nom de la base de données si celui-ci n'est pas précisé dans le script DB2 OS/390 V5. C'est le nom du script qui est pris en priorité, ensuite celui de la ligne de commande. Enfin, si rien n'est précisé, c est "BdSansNom" qui est choisi comme nom par défaut. Dans tous les cas, ce nom est ignoré dans le processus de rétro-génération MEGA. -s<nom-fichier-statut> : Stocke les informations de fin d'exécution dans le fichier donné. Si tout se passe bien, le fichier contient uniquement la lettre 1. Dans le cas contraire, le fichier est composé d'une première ligne contenant le code 0. 225

10 RÉTRO-GÉNÉRATION DES PROPRIÉTÉS PHYSIQUES La rétro-génération permet également de créer dans MEGA les propriétés physiques sur les objets d une base de données. Les propriétés physiques sont des paramètres permettant d'exprimer, pour un objet relationnel (table, index, etc.), la manière dont les informations vont être stockées au sein d'une base de données. Ces paramètres sont spécifiques à chaque SGBD et peuvent évoluer selon les versions d'un même SGBD. L éditeur de base de données permet à un utilisateur de visualiser dans MEGA l'ensemble des propriétés physiques d'une base de données. Voir "Ajouter des propriétés physiques aux objets d une base de données", page 206. Les propriétés physiques ne sont pas importées automatiquement lors de la rétrogénération d une base de données, il est nécessaire de cocher la case correspondante dans la fenêtre Relire une base cible (voir "Configuration requise", page 216). Seules les propriétés physiques relatives aux objets sélectionnés sont prises en compte. Valeurs par défaut Certaines propriétés du SGBD sont automatiquement rétro-générées dans MEGA même lorsqu elles n ont pas été explicitement spécifiées. Afin de ne pas récupérer ces valeurs par défaut, MEGA fournit pour chaque SGBD et pour chaque version de SGBD une clause générique qui contient la liste de ces valeurs par défaut et les traite de façon spécifique. Lors d'une rétro-génération, les propriétés des SGBD dont les valeurs sont égales aux valeurs définies dans la clause générique ne sont pas importées. Vous pouvez activer la clause générique en important dans MEGA le fichier.mol associé à chaque SGBD dans le dossier Mega_Std de votre installation. Elimination des valeurs redondantes et transverses Lors de la rétro-génération d'objets dans MEGA, certaines propriétés physiques qui n'ont pas été clairement déterminées sont automatiquement restituées par le SGBD au travers d'un mécanisme d'héritage. Avec Oracle par exemple, la valeur de la propriété PCTFREE dans une table, si elle n'a pas été spécifiée, est directement héritée de celle du tablespace qui lui est rattaché. Une telle valeur est dite transverse car elle est issue d un héritage entre deux types d objets distincts. Une valeur est dite redondante si l'héritage est issu d'objets de même type. Lors de la rétro-génération, MEGA ne récupère pas les valeurs transverses et redondantes. 226 MEGA Database Builder

Rétro-génération Rétro-génération des propriétés physiques Cas spécifiques Propriétés physiques des tablespaces Dans certains cas, la rétro-génération de propriétés physiques des objets requiert une connexion ODBC bénéficiant des droits Administrateur du SGBD. Par exemple, avec Oracle, la rétro-génération des propriétés physiques des Tablespaces nécessite que vous utilisiez un compte "System". Rétro-génération des clusters La rétro-génération d'un cluster dans Oracle s'effectue correctement si l'utilisateur de connexion vérifie l'une des deux conditions suivantes : L'utilisateur est le propriétaire du cluster L'utilisateur à un profil administrateur Lorsque le cluster n'est pas accessible, il n est pas rétro-généré. Lorsque l utilisateur voit le cluster mais n est ni propriétaire, ni administrateur, le cluster est rétro-généré mais la liaison entre les colonnes du cluster et les colonnes des tables qui lui sont rattachées n est pas rétro-générée dans MEGA. D'un point de vue technique, pour un utilisateur non administrateur, la rétro-génération s'appuie sur la vue oracle sys.all_clu_columns (relation entre les colonnes de cluster et les colonnes de tables). Cette vue permet de lire uniquement les informations relatives aux objets pour lesquels l'utilisateur est propriétaire. 227

10 228 MEGA Database Builder

11 UTILITAIRE D EXTRACTION ODBC L'utilitaire d'extraction ODBC permet d'extraire la description d'une base de données accessible par le protocole ODBC. Cette description, obtenue en format structuré, peut être ensuite utilisée pour la rétro-génération dans MEGA. Les points suivants sont abordés ici : "Extraire la description d une base de données", page 230 "Restrictions sur certains pilotes", page 235 "Format des clauses SELECT", page 236 229

11 EXTRAIRE LA DESCRIPTION D UNE BASE DE DONNÉES L'utilitaire est destiné à être lancé à partir d'un poste qui ne dispose pas de MEGA, le résultat obtenu étant ensuite transféré sur un poste MEGA pour être traité par la rétro-génération. Pour l'extraction de données, le poste de travail doit être connecté à la base de données avec le protocole ODBC (voir la documentation de ce produit pour son installation). Le pilote de la base de données doit avoir un niveau de conformité ("conformance level") supérieur ou égal à 1. Pour installer cet utilitaire, il faut copier dans un dossier les fichiers mgwdbx32.exe et mg_dbex.dll. Le cas échéant, le fichier odwdbex.ini doit être créé. L'utilitaire d'extraction peut être installé indépendamment de MEGA Database Builder. Pour extraire la description d'une base de données : 1. A partir du dossier "C:\Program Files\MEGA\Utilities\MEGA Data Extractor" (ou dans "MEGA\Utilities\MEGA Data Extractor", dans le dossier où vous avez choisi d installer MEGA), lancez l utilitaire d extraction MGWDBX32.EXE. 230 MEGA Database Builder

Utilitaire d extraction ODBC Extraire la description d une base de données 2. Connectez-vous à une source de données en activant le menu Data Source > Connect. La fenêtre Data Sources s affiche. La liste déroulante présente les connexions ODBC. Cette liste est vide si ces connexions ne sont pas définies, ou n'ont pu être établies. 3. Le bouton Browse permet d accéder au gestionnaire ODBC pour définir une nouvelle source de données, ou installer un nouveau pilote. 4. En fonction de la connexion, il peut être nécessaire de préciser un code utilisateur (User ID), un mot de passe (Password) et un nom de serveur (Server name). Si d autres paramètres sont requis par le pilote ODBC, ils seront demandés au début de la connexion. 5. Validez les informations saisies en cliquant sur OK. Le feu vert indique que la connexion est établie. Un message apparaît si la connexion ne s'est pas correctement établie. Il faut dans ce cas vérifier la définition de la source de données. Une fois la connexion établie, vous pouvez choisir les options d'extraction. Si certaines des options restent grisées, c'est parce que le pilote ne les supporte pas. Pour obtenir des informations sur le protocole ODBC utilisé, activez la commande ODBC informations du menu System. 6. Sélectionnez les éléments à extraire, en plus des tables et des colonnes. Par défaut, ces éléments sont tous sélectionnés. Toutes les tables auxquelles l'utilisateur a accès, qu'elles lui appartiennent ou non, sont présentées. Les tables synonymes peuvent également apparaître si la case correspondante a été cochée. Un synonyme est un nom alternatif donné à un objet (table, vue, procédure stockée, synonyme et séquence). On peut définir un synonyme pour désigner un objet d'une autre base de données. Il est possible de filtrer les tables par propriétaire (Owner), en le sélectionnant dans la zone correspondante. L'affichage de la liste des propriétaires, ainsi que celle de leurs tables peut prendre plusieurs secondes. L'extraction des tables prend plusieurs minutes. 231

11 Les éléments suivants sont inclus dans l'extraction : Clés primaires (Primary keys). Clés étrangères (Foreign keys). Index (Index) : il s agit des index qui ne portent pas sur des clés primaires. Index primaires (Primary index) : il s agit des index qui portent sur des clés primaires. Les primitives ODBC permettant d'extraire ces éléments ne sont pas supportés par tous les pilotes des sources de données ; un message en rend compte dans le fichier compte-rendu. De plus, certains SGBD ne gèrent pas les concepts correspondants, qui sont alors ignorés. Le champ Destination file permet de préciser le chemin et le nom du fichier d'extraction ; le bouton Browse permet de parcourir les dossiers. 7. Après sélection des options d extraction, appuyez sur Extract pour démarrer le traitement. Un message rend compte du nombre de tables extraites. L'activation du bouton Warnings permet de consulter simultanément le compte-rendu. Durant le traitement, le bouton Extract devient Cancel et permet d'interrompre l'extraction. Il est possible de visualiser la liste des tables accessibles en activant le bouton List Tables, et d'extraire uniquement les tables sélectionnées par l'utilisateur dans la liste alors obtenue (toutes les tables sont sélectionnées par défaut). 8. A la fin de l extraction, la commande Edit > Report file permet de consulter le compte-rendu ; la commande Edit > Extraction file permet de consulter le résultat. Le fichier résultat pourra être ensuite transféré sur un poste qui dispose de MEGA Database Builder, pour être exploité par la rétro-génération (voir "Rétrogénération", page 215). Il contient la description de la base sous forme d'objets MEGA. Une fois l'opération d'extraction terminée : Activez la commande Disconnect du menu Data Source pour vous déconnecter de la source de données. Reconnectez-vous à une autre source de données ou quittez la fenêtre en activant la commande Exit du menu Data Source. Fichier de compte-rendu de l'extraction Le fichier de compte-rendu de l'extraction des tables par l'utilitaire d'extraction ODBC s'appelle <FIC>_CRD.TXT où <FIC> représente les trois premiers caractères du nom du fichier résultat. Il contient la liste des tables relues. 232 MEGA Database Builder

Utilitaire d extraction ODBC Extraire la description d une base de données Exemple : ================================================== Data Source Extracting : DATASOURCE ================================================== Table : OWNER.NOMTABLE1 Table : OWNER.NOMTABLE2 (suite) ================================================== End of extraction ================================================== Fichier résultat de l'extraction Le fichier résultat de l extraction contient la description des tables et des colonnes, résultat de la relecture. Ce fichier porte l extension ".xml". Exemple de fichier d extraction : 233

11 Personnaliser l extraction ODBC Odwdbex.ini est le fichier qui permet de personnaliser l extraction ODBC. Si l utilitaire n extrait pas les clés primaires et les clés étrangères, vous pouvez utiliser des requêtes personnalisées. Pour personnaliser l extraction : 1. Renseignez-vous auprès de votre administrateur de base de données pour obtenir les requêtes systèmes permettant de sélectionner les clés primaires et étrangères pour le SGBD cible. 2. Dans le dossier "All users" de Windows, créez un fichier nommé Odwdbex.ini (exemple: C:\Documents and Settings\All Users\Application Data\Mega\Odwdbex.ini). 3. Editez le fichier et copiez les requêtes. [<DBMS Name>] PRIMARY KEYS="Requête système" FOREIGN KEYS="Requête système" TBLCOLUMNS="Requête système" La valeur de <DBMS Name> dépend de l utilitaire ODBC. Pour avoir la valeur appropriée : 1. Lancez l outil d extraction MEGA (mgwdbx32.exe). 2. Dans le menu Data source, sélectionnez la source de données. 3. Cliquez ensuite sur System > ODBC Informations. 4. Lisez le "DBMS Name". Vous pouvez éditer le fichier Odwdbex.ini en cliquant sur le menu System > Edit Odwdbex.ini dans l outil d extraction MEGA. Assurez-vous que ce fichier est archivé. 234 MEGA Database Builder

Utilitaire d extraction ODBC Restrictions sur certains pilotes RESTRICTIONS SUR CERTAINS PILOTES Lorsque le pilote utilisé ne permet pas d'extraire les clés primaires, étrangères ou les index, il est possible d'inclure dans le fichier ODWDBEX.INI, qui se trouve dans le dossier C:\Documents and Settings\All Users\Application Data\Mega, une clause SQL SELECT destinée à extraire les éléments concernés des tables système, lorsqu'ils sont gérés par le SGBD. Cette clause SELECT permet de remplacer la fonction ODBC non supportée. Si le fichier ODWDBEX.INI existe, il peut être édité en activant la commande Edit Odwdbex.ini du menu System de la fenêtre MEGA Data Extractor. S'il n'existe pas, créez-le dans le dossier C:\Documents and Settings\All Users\Application Data\Mega. Le fichier ODWDBEX.INI est structuré de la façon suivante : [DBMS Name] PRIMARY KEYS="clause Select" FOREIGN KEYS="clause Select" INDEXES="clause Select" Le nom du SGBD ("DBMS name") est indiqué dans la fenêtre obtenue en activant la commande ODBC informations du menu System. 235

11 FORMAT DES CLAUSES SELECT Il est important de respecter la syntaxe indiquée ; en particulier, les "1" ne doivent pas être omis. De plus, il faut noter que les clauses doivent être écrites sur une seule ligne dans le fichier ODWDBEX.INI. Clés primaires SELECT 1, TABLE_OWNER, TABLE_NAME, COLUMN_NAME, KEY_SEQUENCE, PK_NAME FROM... WHERE... TABLE_OWNER : Propriétaire de la table de la clé primaire TABLE_NAME : Nom de la table de la clé primaire COLUMN_NAME : Nom de la colonne de la clé primaire KEY_SEQUENCE : Numéro de la colonne dans la clé (à partir de 1) PK_NAME : Nom de la clé primaire ; "1" si ce nom n est pas supporté par le SGBD. 236 MEGA Database Builder

Utilitaire d extraction ODBC Format des clauses SELECT Clés étrangères SELECT 1, PKTABLE_OWNER, PKTABLE_NAME, 1, 1, FKTABLE_OWNER, FKTABLE_NAME, FKCOLUMN_NAME, KEY_SEQ, UPDATE_RULE, DELETE_RULE, FK_NAME FROM... WHERE... PKTABLE_OWNER : Nom du propriétaire de la table de la clé primaire (table de référence) PKTABLE_NAME : Nom de la table de la clé primaire FKTABLE_OWNER : Nom du propriétaire de la table de la clé étrangère FKTABLE_NAME : Nom de la table de la clé étrangère FKCOLUMN_NAME : Nom de la colonne de la clé étrangère KEY_SEQ : Numéro de la colonne dans la clé (à partir de 1) UPDATE_RULE : "R" : Restrict, "C" : Cascade DELETE_RULE : "R" : Restrict, "C" : Cascade FK_NAME : Nom de la clé étrangère ; "1" si ce nom n est pas supporté par le SGBD. 237

11 Index SELECT 1, TABLE_OWNER, TABLE_NAME, NON_UNIQUE, 1, INDEX_NAME, TYPE, SEQ_IN_INDEX, COLUMN_NAME, COLLATION FROM... WHERE... TABLE_OWNER : Nom du propriétaire de la table de la concernée par la statistique ou par l index TABLE_NAME : Nom de la table de l index NON_UNIQUE : Les index doivent avoir une valeur unique INDEX_NAME : Nom de l index TYPE : Type de l index SEQ_IN_INDEX : Numéro de la colonne dans la clé (à partir de 1) COLUMN_NAME : Nom de la colonne COLLATION : Tri de la colonne ; "A" ascendant, "D" descendant 238 MEGA Database Builder

12 IMPORT ERWIN L outil d import Erwin vous permet de reprendre dans MEGA des modèles de données créés dans ERwin. "Présentation de l import ERwin", page 240 "Correspondance des objets ERwin/MEGA", page 242 "Traçabilité", page 247 239

12 PRÉSENTATION DE L IMPORT ERWIN Le périmètre d'import concerne uniquement la partie conceptuelle des données (entités, associations, attributs etc.). Dans ERwin, cette partie conceptuelle est traitée dans un modèle de type "logique". Le modèle physique d ERwin qui modélise les tables et colonnes d une base de données n est pas traité. Versions supportées L import porte sur un fichier.xml. L import ERwin supporte la version 4.1 et la version 7 du format de fichiers.xml ERwin. Aussi faut-il dans l application ERwin que vous sauvegardiez le fichier contenant le modèle à importer au format XML. Dans la version 7, vous devez choisir le format XML «Standard» et décocher l option «Only save minimum amount of information» afin d obtenir un fichier lisible par l outil d import MEGA. Lancer l import Erwin Pour importer dans MEGA un modèle créé dans Erwin : 1. Dans MEGA, cliquez sur le menu Fichier > Importer > ERwin. La fenêtre d import apparaît. 2. Sélectionnez le fichier à importer. Si le modèle importé correspond à un modèle physique, un message d erreur apparaît. S il s agit d un modèle Physique/logique, un message d avertissement vous informe que seules les données logiques seront importées. 3. Cliquez sur Suivant. Les options d import apparaissent. Elles vous permettent de : Créer un rapport qui mémorise les informations liées à l import (telles que la date de création des objets dans Erwin). Définir la notation à appliquer. L assistant propose d importer le modèle dans sa notation d origine. Mais vous pouvez l importer dans 240 MEGA Database Builder

Import ERwin Présentation de l import ERwin l une des autres notations gérées par MEGA; à savoir IDEF1X, I.E, Merise et la notation standard de MEGA. 4. Une fois les options précisées, cliquez sur Importer. La fenêtre vous informe de la progression de l import. Quand il est terminé, un rapport fait état des objets qui ont été importés. Vous pouvez obtenir un fichier plus détaillé en cliquant sur le bouton Rapport d import. Une page Web s affiche alors. Elle comprend le nom du modèle de données importé et le détail des objets qu il contient. 5. Cliquez sur Suivant. 6. La fenêtre suivante vous permet d associer aux datatypes importés des types pivots MEGA. Cette opération peut s effectuer ultérieurement, une fois les objets créés dans MEGA. 7. Cliquez sur Fermer. Un paquetage contenant le modèle de données importé est créé. Il porte le nom du fichier.xml. Un paquetage contenant les datatypes du modèle est également créé. Il se nomme "Erwin data type package". 241

12 CORRESPONDANCE DES OBJETS ERWIN/MEGA Notations ERwin propose deux notations pour modéliser des données : Integration DEFinition for Information Modeling (IDEF1X) Information Engineering (IE) Lorsque vous importez un modèle ERwin dans MEGA, l assistant propose par défaut de l importer dans sa notation d origine. Mais vous pouvez l importer dans l une des autres notations gérées par MEGA; à savoir IDEF1X, I.E, Merise et la notation standard de MEGA. Pour plus d informations sur les notations, voir le guide MEGA Business Data. Modèle de données Lorsque vous importez un fichier ERwin dans MEGA, un modèle de données est créé avec le même nom. Tous les objets importés (entités, associations, subject areas etc.) sont détenus par ce modèle de données. A chaque nouvel import est créé un nouveau modèle et de nouveaux objets, même si le fichier a déjà été importé. Subject areas Un "subject area" est un sous-ensemble d un modèle de données. La division d un modèle volumineux en sous-modèles permet de décrire plus facilement les objets qu il contient. 242 MEGA Database Builder

Import ERwin Correspondance des objets ERwin/MEGA Dans ERwin, à tout nouveau modèle de données sont automatiquement reliés un subject area principal et un diagramme associé. Un subject area est importé dans MEGA sous la forme d un modèle de données. Une entité référencée dans un subject area est importée comme une entité utilisée par le modèle de données qui correspond à ce subject area. Diagramme de données Par défaut, seuls les diagrammes importés dans la notation standard s affichent dans MEGA. Pour voir les diagrammes importés dans une autre notation, il est nécessaire de cocher l option correspondante. Pour afficher une notation : 1. Dans MEGA, cliquez sur le menu Outils > Options. La fenêtre des options apparaît. 2. Sélectionnez Modélisation de données. 3. Dans la partie droite qui s affiche, cochez le champ correspondant à la notation en question.. 4. Cliquez sur Appliquer. Types de données Les types de données importés sont rassemblés dans un paquetage de types créé à cet effet. Chaque fois que vous importez un même fichier ERwin dans MEGA, de nouveaux objets sont créés, et donc un nouveau paquetage contenant le modèle et les objets associés. Mais le paquetage des types de données quant à lui reste le même. Tous 243

12 les nouveaux types de données contenus dans les fichiers importés sont ajoutés à ce paquetage de types de données. Les types de données déjà présents ne sont pas recréés. Nom des types de données Dans ERwin, on spécifie le type de données d un attribut à travers une chaîne de caractères qui contient le nom du type de données, la longueur de l attribut et d autres paramètres. Pour recréer les types de données dans MEGA, l import reprend le nom ainsi que les deux premiers paramètres. Le premier paramètre indique la longueur de l attribut, le second donne la décimale. Les autres paramètres sont ignorés. Exemples : ERwin MEGA Nom Nom Longueur Décimale CHAR(18) CHAR 18 néant NUMBER(6,2) NUMBER 6 2 BLOB(2,5,9) BLOB 2 5 Tableau de correspondance des concepts ERwin/MEGA Le tableau suivant dresse la liste des concepts ERwin gérés par l import et leur correspondance dans MEGA : Concepts ERwin Propriétés Liens Concepts MEGA Propriétés Liens Package Modèle de données Name Nom Definition Commentaire Subject Area Modèle de données détenu Entity Entité (DM) détenue Relationship Association (DM) détenue Sub-category Généralisation (DM) détenue 244 MEGA Database Builder

Import ERwin Correspondance des objets ERwin/MEGA Concepts ERwin Propriétés Liens Concepts MEGA Propriétés Liens Subject Area Modèle de données Name Nom Definition Commentaire Entity Entité (DM) dans Modèle Relationship Association (DM) dans Modèle Sub-category Généralisation (DM) dans Modèle Display Description Entity Entité (DM) Name Nom Definition Commentaire Note, Note2, Note3 Note + Note Attribute Attribut (DM) Key (Primary key) Identifiant Relationship Association (DM) Parent-to-Child Nom Definition Commentaire Cardinality Multiplicité sur rôle de l association (DM) Identifying Rôle identifiant sur rôle de l association (DM) Entities linked Rôle de l association (DM) Entité (DM) Rôle de l association (DM) Attribute Attribut (DM) Name Nom 245

12 Concepts ERwin Propriétés Liens Concepts MEGA Propriétés Liens Definition Commentaire Note Note + Note Datatype Type de données Type de données Primary key Identifiant Primary key Identifiant Name Nom Attribute member Attribut (DM) Subtype relationship Généralisation (DM) Parent Sur-entité (DM) Child Sous-entité (DM) Display Diagramme de données Name Nom Definition Commentaire 246 MEGA Database Builder

Import ERwin Traçabilité TRAÇABILITÉ L origine des objets ERwin importés dans MEGA est conservée sous la forme de notes de traçabilité. Les objets détenteurs de ces notes techniques sont : Modèle Entité Association Les éléments conservés dans la traçabilité sont : Fichier d origine Identifiant dans ERwin Nom dans ERwin Date de création Auteur (uniquement pour modèle) Les informations disponibles sur les type de données sont : Nom du type de données dans ERwin 247

12 248 MEGA Database Builder

13 IMPORT POWERAMC L outil d import PowerAMC vous permet de reprendre dans MEGA des modèles de données créés dans PowerAMC. "Présentation de l import PowerAMC", page 250 "Correspondance des objets PowerAMC/MEGA", page 251 "Reprise des types de données", page 259 "Traçabilité", page 262 249

13 PRÉSENTATION DE L IMPORT POWERAMC Le périmètre d'import concerne la partie conceptuelle des données (entités, associations, attributs etc.). Il reprend dans MEGA les Modèles Conceptuels de Données (MCD) de PowerAMC. L import porte sur les fichiers XML d extension.mcd et.cmd. Les premiers correspondent aux fichiers exportés de PowerAMC, les seconds sont des fichiers exportés de PowerDesigner, la version US de PowerAMC. L import supporte les versions 11 et 12.5 du format de fichier.xml PowerAMC. Lancer l assistant d import Pour importer un fichier PowerAMC dans MEGA : 1. Dans le navigateur MEGA, cliquez sur le menu Fichier > Importer > PowerDesigner (*.mcd; *.cmd). L assistant d import apparaît. 2. Sélectionnez le fichier à importer et cliquez sur Suivant. 3. Sélectionnez la notation à appliquer aux diagrammes importés. Voir "Notation", page 251. D autre part, l assistant vous propose de créer les notes techniques d import. Cette option est cochée par défaut. Voir "Traçabilité", page 262. 4. Cliquez sur Importer. La fenêtre vous informe de la progression de l import. Quand il est terminé, un rapport fait état des objets qui ont été importés. Vous pouvez obtenir un fichier plus détaillé en cliquant sur le bouton Rapport d import. Une page Web s affiche alors. Elle comprend le nom du modèle de données importé et le détail des objets qu il contient. 5. Cliquez sur Suivant. 6. La fenêtre suivante vous permet d associer aux datatypes importés des types pivots MEGA. Cette opération peut s effectuer ultérieurement, une fois les objets créés dans MEGA. 7. Cliquez sur Terminer. 250 MEGA Database Builder

Import PowerAMC Correspondance des objets PowerAMC/MEGA CORRESPONDANCE DES OBJETS POWERAMC/MEGA Modèle de données Notation PowerAMC supporte quatre notations : Entité/Relation, Merise, E/R+Merise et IDEF1X. Lorsque vous importez un modèle PowerAMC dans MEGA, l assistant propose par défaut de l importer dans sa notation d origine (voir le tableau de correspondance ci-dessous). Mais vous pouvez l importer dans l une des autres notations gérées par MEGA; à savoir IDEF1X, I.E, Merise et la notation standard de MEGA. Le tableau suivant dresse la liste des notations gérées par PowerAMC et leur correspondance dans MEGA : PowerAMC Entité/relation Merise E/R+Merise IDEF1X MEGA I.E (Information Engineering) Merise Merise IDEF1X Objets du modèle Lorsque vous importez un fichier PowerAMC dans MEGA, un modèle de données est créé avec le même nom. Tous les objets importés (entités, associations, subject areas etc.) sont détenus par ce modèle de données. A chaque nouvel import est créé un nouveau modèle et de nouveaux objets, même si le fichier a déjà été importé. 251

13 Relation et association Dans ses modèles conceptuels de données, PowerAMC différencie les relations des associations : Relation Association Dans MEGA, même si sa représentation varie selon la notation utilisée - on parlera de relation dans un diagramme IDF1X et d association dans un diagramme Merise - il s agit d un seul et même objet. Ainsi, une relation dans PowerAMC donne lieu à une association dans MEGA. Attributs Dans MEGA, un attribut ne peut être utilisé que dans une entité. Un attribut partagé par plusieurs entités dans PowerAMC donne un attribut par entité dans MEGA. Diagramme de données Par défaut, seuls les diagrammes importés dans la notation standard s affichent dans MEGA. Pour voir les diagrammes importés dans une autre notation, il est nécessaire de cocher l option correspondante. Pour afficher une notation : 1. Dans MEGA, cliquez sur le menu Outils > Options. La fenêtre des options apparaît. 2. Sélectionnez Modélisation de données. 3. Dans la partie droite qui s affiche, cochez le champ correspondant à la notation en question.. 4. Cliquez sur Appliquer. 252 MEGA Database Builder

Import PowerAMC Correspondance des objets PowerAMC/MEGA Package Dans PowerAMC, un "package" est un sous-ensemble d un modèle de données. La division d un modèle volumineux en sous-modèles permet de décrire plus facilement les objets qu il contient. Les packages importés dans MEGA donnent lieu à des sous-modèles. Les entités détenues dans les packages y sont restituées. Les packages sont importés mais ils n apparaissent pas dans les diagrammes de données MEGA, contrairement aux diagrammes PowerAMC qui les représentent graphiquement. Type de données Les types de données importés sont rassemblés dans le paquetage de types de données "PowerAMC data type package" créé à cet effet. Tous les nouveaux types de données contenus dans les fichiers importés sont ajoutés à ce paquetage de types de données. Les types de données déjà présents ne sont pas recréés. Voir "Reprise des types de données", page 259. 253

13 Tableau de correspondance des concepts PowerAMC/MEGA Le tableau suivant dresse la liste des concepts PowerAMC gérés par l import et leur correspondance dans MEGA : Concepts PowerAMC Propriétés Liens Concepts MEGA Propriétés Liens Modèle conceptuel de données Modèle de données Paquetage Modèle de données Nom Nom Code Non repris Commentaire Commentaire Stéréotype Nombre Non repris Non repris Description Note Note Annotation Note Note Entité Entité (MD) détenue Héritage Généralisation (MD) détenue Relation Association (MD) détenue Association Association (MD) détenue Liens d association Non repris Diagramme Description Entité Entité (MD) Nom Nom Code Nom SQL Commentaire Commentaire 254 MEGA Database Builder

Import PowerAMC Correspondance des objets PowerAMC/MEGA Concepts PowerAMC Propriétés Liens Stéréotype Nombre Concepts MEGA Propriétés Liens Non repris Non repris Description Note Note Annotation Note Note Attribut Attribut (MD) Identifiant (primaire) Identifiant (primaire) Index Identifiant (non primaire) Identifiant (non primaire) Index Association Association (MD) Nom Nom Code Nom SQL Commentaire Commentaire Stéréotype Nombre Non repris Non repris Description Note Note Annotation Note Note Attribut Attribut Liens d association Rôle de l association (MD) Entité Association Lien d association Rôle de l association (MD) 255

13 Concepts PowerAMC Propriétés Liens Concepts MEGA Propriétés Liens Rôle Nom Identifiant Rôle identifiant Cardinalité Multiplicité Stéréotype Non repris Attribut Attribut (MD) Nom Nom Code Nom SQL Commentaire Commentaire Stéréotype Non repris Type de données Type de données (Md) Type de données (Voir : "Reprise des types de données", page 259) Longueur Longueur Précision Décimale Identifiant primaire Identifiant Obligatoire Exigé Description Note Note Annotation Note Note Identifiant primaire Identifiant (Clé candidate primaire) Index (clé candidate index) Identifiant non principal Identifiant (Clé candidate primaire) Index (clé candidate index) Nom Nom Code Non repris 256 MEGA Database Builder

Import PowerAMC Correspondance des objets PowerAMC/MEGA Concepts PowerAMC Propriétés Liens Concepts MEGA Propriétés Liens Commentaire Nom Stéréotype Non repris Description Note Note Annotation Note Note Attribut Attribut (MD) Relation Association (MD) Nom Nom Code Nom SQL Commentaire commentaire Stéréotype Non repris Description Note Note Annotation Note Note Entité 1 Rôle de l association (MD) Entité (MD) Association (MD) Entité 2 Rôle de l association (MD) Entité (MD) Association (MD) Rôle dominant Non repris Entité A vers Entité B - Nom de rôle Nom du rôle Entité B Entité A vers Entité B - Dépendant Identifiant = 'oui' pour rôle Entité B Entité A vers Entité B - Obligatoire Multiplicité du rôle Entité B Entité A vers Entité B - Cardinalité Multiplicité du rôle Entité B 257

13 Concepts PowerAMC Propriétés Liens Concepts MEGA Propriétés Liens Héritage Généralisation (MD) Nom Nom Code Non repris Commentaire Commentaire Stéréotype Enfants mutuellement exclusifs Non repris Non repris Complet Complète Description Note Note Annotation Note Note Parent Sur-entité (MD) Enfant Sous-entité (MD) Diagramme conceptuel de données Diagramme de données Nom Nom Code Non repris Commentaire Commentaire Description Note Note Annotation Note Note Note Note 258 MEGA Database Builder

Import PowerAMC Reprise des types de données REPRISE DES TYPES DE DONNÉES Nom des types de données Dans PowerAMC, on spécifie le type de données d un attribut à travers une chaîne de caractères qui contient le code du type de données suivi de la longueur et de la précision de l attribut. Lorsque des types de données sont importés dans MEGA, l import analyse le nom afin de recréer le type dans MEGA ainsi que la longueur et la décimale de l attribut. Le nom du type de données est retrouvé grâce au code du type importé. S il ne s agit pas d un type de données standard, MEGA crée le type de données qui lui correspond. Voir "Liste des types standard de PowerAMC", page 260. Exemples de reprise de types de données PowerAMC MEGA Nom Longueur Précision Nom Longueur Décimale MYTYPE0 néant néant MYTYPE néant néant DC20,10 20 10 Décimal 20 10 MN5,2 5 2 Monnaie 5 2 BT200 200 néant Octet 200 néant TYPE2F 2 néant TYPE 2 néant TI_PI5x 5 néant TI_PI 5 néant XY,KO;20 20 néant XY,KO; 20 néant DES20;9 20 néant DES 20 néant VA500 500 néant Caractère variable 500 néant I néant néant Entier néant néant 259

13 Liste des types standard de PowerAMC Code I SI LI BT N DC F SF LF MN NO BL A VA LA LVA TXT MBT VMBT D T DT TS BIN LBIN BMP PIC OLE <UNDEF> Nom Entier Entier court Entier long Octet Numérique Décimal Réel Réel court Réel long Monnaie Séquentiel Booléen Caractère Caractère variable Caractère long Caractère long variable Texte Multibyte Multibyte variable Date Heure Date & heure Date système Binaire Binaire long Bitmap Image OLE Non défini 260 MEGA Database Builder

Import PowerAMC Reprise des types de données Notes de traçabilité Les types de données importés de PowerAMC sont rangés dans le paquetage de types de données "PowerAMC data type package" créé à cet effet. Les types déjà importés ne sont pas recréés. Chaque type importé est identifié par une note de traçabilité. Vous pouvez modifier le nom du type dans MEGA, mais les informations contenues dans cette note ne changent pas. Si par la suite vous importez le même type de données, sa note de traçabilité indique qu il est déjà présent dans la base, MEGA ne le recrée pas mais utilise le type de données existant. 261

13 TRAÇABILITÉ L origine des objets PowerAMC importés dans MEGA est conservée sous la forme de notes de traçabilité. Les objets détenteurs de ces notes techniques sont : Entité Association Généralisation Modèle de données Type de données (uniquement nom et code) Les éléments conservés dans la traçabilité sont : Fichier d'origine Identifiant de l'objet dans PowerAMC Nom dans PowerAMC Code dans PowerAMC Créateur Date de création Modificateur Date de modification Auteur (uniquement pour modèle) Version (uniquement pour modèle) 262 MEGA Database Builder

14 IMPORT ORACLE DESIGNER L outil d import Oracle Designer vous permet de reprendre dans MEGA des données créées dans Oracle Designer. "Présentation de l import Oracle Designer", page 264 "Correspondance des objets Oracle Designer/MEGA", page 265 263

14 PRÉSENTATION DE L IMPORT ORACLE DESIGNER L'import Oracle Designer est disponible avec MEGA Exchange - Generation et supporte la version 10g d'oracle designer. L'import des données Oracle dans MEGA se fait par un fichier.dat. Aussi faut-il dans l'application de Oracle que vous sauvegardiez les modèles de données à importer sous forme de fichier.dat. Pour exporter des diagrammes dans un fichier.dat : 1. Dans Oracle Designer, ouvrez le "Repository Object Navigator ". L export porte sur le conteneur racine du diagramme. 2. Dans le menu contextuel de "Container", cliquez sur Exporter. 3. Dans l assistant d export, sélectionnez le format texte. Indiquez le chemin du fichier de sauvegarde. A la fin de la procédure, vous obtenez un fichier.dat contenant les données des modèles de données. Périmètre d'application L'import Oracle Designer standard prend en compte les éléments du métamodèle concernant les "Entity Relationship diagrams". En dehors des datatypes, l'import ne gère pas la mise à jour des objets. A chaque nouvel import sont créés de nouveaux paquetages et de nouveaux objets, même si le fichier a déjà été importé. Lancer l'import Oracle Designer Pour importer dans MEGA des modèles de données créés avec Oracle designer : 1. Dans MEGA, cliquez sur le menu Fichier > Importer > Oracle designer (*.dat). La fenêtre d'import apparaît. 2. Sélectionnez le fichier à importer. 3. Cliquez sur Suivant. Vous pouvez choisir d'enregistrer le rapport dans un fichier texte. 4. Cliquez sur Importer. La fenêtre vous informe de la progression de l'import. 5. A la fin de l'import, cliquez sur Suivant. La fenêtre suivante vous permet d associer aux datatypes importés des types pivots MEGA. Cette opération peut s effectuer ultérieurement, une fois les objets créés dans MEGA. 6. Cliquez sur Fermer. 264 MEGA Database Builder

Import Oracle Designer Correspondance des objets Oracle Designer/MEGA CORRESPONDANCE DES OBJETS ORACLE DESIGNER/ MEGA Modèles importés Les modèles repris sont de type Entity Relationship. Ils correspondent dans MEGA à des paquetages. Les objets créés sont des entités, des associations et des attributs "MD"; ils sont donc visibles également dans les modèles de données. Tableau de correspondance Le tableau suivant dresse la liste des concepts Oracle Designer gérés par l'import et leur correspondance dans MEGA : Correspondance des objets Concepts Oracle Designer Propriétés Liens Concepts MEGA Propriétés Liens Entity Entité MD Name Nom Attribute Attribut Name Attribut MD Format Nom Type Classe Attribute Attribut MD Name Nom Format Valeur littérale 265

14 Concepts Oracle Designer Propriétés Liens Concepts MEGA Propriétés Liens Value 1 Valeur littérale 1 Value 2 Valeur littérale Valeur littérale 2 UID Identifiant Candidate attribute Membre de clé candidate Candidate relationship Attribut MD Membre de clé candidate Association MD Description Commentaire Note Note Note Correspondance des liens Entity / Entity Association MD Association connexion Rôle 1 Association connexion Rôle 2 266 MEGA Database Builder

15 GLOSSAIRE Le glossaire présente les principaux concepts utilisés dans MEGA Database Builder. agrégation L'agrégation est une forme particulière d'association qui indique que l'une des entités contient l'autre. association attribut base de données classe d association Une association est une relation entre deux ou plusieurs entités. Elle peut comporter des attributs qui caractérisent l'association entre ces entités. Un attribut est une propriété nommée d'une entité. C'est la donnée élémentaire mémorisée dans le système d'information de l'entreprise. Une base de données permet de spécifier la structure de stockage logique ou physique des données. Une classe d'association est une association qui possède aussi les propriétés d'une classe comme des attributs. classe Une classe est un regroupement d'objets possédant des caractéristiques communes et un comportement semblable. Les classes persistantes sont des éléments de gestion considérés d'intérêt pour représenter l'activité de l'entreprise et donc conservés à cet effet. Elles donneront lieu à des tables dans la base de données relationnelle. 267

15 clé cluster colonne composition contrainte dénormalisation diagramme relationnel diagramme de classes Les clés permettent de définir les accès privilégiés permettant de passer d'une table à une autre ainsi que les contrôles d'intégrité correspondants. La clé d'une table est constituée d'un ensemble de colonnes. La clé primaire permet d'identifier un enregistrement de manière unique. Elle est reliée aux colonnes qui la constituent, et, le cas échéant, au rôle ou à l'association qui la justifie. Une clé étrangère est constituée de colonnes qui font référence à la clé primaire d'une table parente, à laquelle elle est reliée par le lien migrante. Le cluster est un segment physique qui regroupe les lignes d'une ou plusieurs tables ayant une caractéristique commune. Sa mise en place permet de réduire l'espace de stockage et d'accélérer les requêtes portant sur ces lignes. Une colonne est le constituant élémentaire d'une table relationnelle. Une colonne est issue d'un attribut d'une classe ou d'une association. Elle est éventuellement reliée à l'index ou à la clé qu'elle constitue. La composition est une agrégation forte pour laquelle la durée de vie des composants coïncide avec celle du composé. Une composition est une agrégation immuable avec une multiplicité 1. Une contrainte représente un contrôle ou une règle de gestion qui doit être appliquée lors de l'exécution d'un traitement. La dénormalisation permet de transformer ou d'affiner les modèles en fonction de besoins spécifiques : choix de modélisation, optimisation des performances, choix de mise en œuvre physique, redondances etc. L outil de dénormalisation est présenté sous forme d'assistants permettant de réaliser ces transformations. Un diagramme relationnel (DR) décrit une base de données : il représente les structures de données physiques exploitées par les programmes. Un diagramme de classes permet de représenter la structure statique d'un système, en particulier les types d'objets manipulés dans le système, leur structure interne et leurs relations. 268 MEGA Database Builder

Glossaire entité Une entité est un regroupement d'objets possédant des caractéristiques communes et un comportement semblable. Les entités persistantes sont des éléments de gestion considérés d'intérêt pour représenter l'activité de l'entreprise et donc conservés à cet effet. Elles donneront lieu à des tables dans la base de données relationnelle. généralisation Une généralisation représente une relation d'héritage entre une entité générale et une entité plus spécifique. L entité spécifique est cohérente avec l entité plus générale et en hérite ses caractéristiques et son comportement. Elle peut cependant comporter des attributs ou des associations supplémentaires. Toute objet de l entité spécifique est aussi un objet de l entité générale. groupement de données identifiant index métamodèle modèle de données Un groupement de données - ou tablespace - est un regroupement dans une même page ou des pages physiques voisines de la base de données des lignes de plusieurs tables à des fins d'optimisation, en particulier pour les jointures. Ex : Tablespace dans DB2, Cluster dans Oracle etc. Un identifiant est constitué d'un ou plusieurs attributs ou rôles obligatoires qui permettent d'identifier de façon unique une entité. Un index est une liste permettant de retrouver rapidement les enregistrements d'une table correspondant à un critère donné. L'index d'une table est relié aux colonnes qui le constituent. Son type définit s'il est unique ou non, son sens, s'il est ascendant ou descendant. Le métamodèle définit la structure du langage utilisé pour décrire un modèle. Un modèle de données permet de représenter la structure statique d'un système, en particulier les types d objets manipulés dans le système, leur structure interne et les relations qui existent entre eux. Un modèle de données regroupe un ensemble d entités avec leurs attributs, les associations qui existent entre ces entités, des contraintes qui portent sur ces entités et associations, etc. mot-clé Un mot-clé est une description typologique permettant de classer les objets. Le segment motclé est rattaché à tous les autres objets. 269

15 multiplicité objet paquetage de types de données persistance procédure stockée projet rôle séquence La multiplicité précise l'intervalle entre les valeurs minimum et maximum des cardinalités possibles pour un ensemble. On l'indique en particulier pour chacun des rôles que jouent les classes dans une association. Elle peut prendre les valeurs *, 0..1, 1, 1..*, 2..*, 4..10, etc. La valeur proposée par défaut est *. Un objet est une entité avec une identité et des frontières clairement définies dont l'état et le comportement sont encapsulés. Son état est défini par les valeurs de ses attributs et de ses liens avec d'autres objets. Un objet est une instance de classe. Un paquetage de types de données est un paquetage de référence détenant tout ou partie des types de données utilisés dans l'entreprise. Chacun des autres paquetages sera déclaré client du paquetage de référence des types de données. La persistance précise si une classe doit être conservée dans le temps ou si elle ne vit que le temps du traitement en mémoire dans l'ordinateur. Une procédure stockée combine un langage procédural et des requêtes SQL au sein d un programme. Elle permet d exécuter une tâche particulière sur une base de données. Elle est enregistrée dans une base de données et peut être appelée depuis un programme extérieur à la base de données ou depuis un trigger. Un projet consiste en l'étude d'une partie d'un système confiée à une même équipe. Un rôle permet d indiquer une des entités concernées par l association. L indication des rôles est particulièrement importante dans le cas d'une association entre une entité et elle-même. Une séquence est une suite de nombres entiers générés en fonction de paramètres que vous avez définis sur la séquence (valeur de départ, valeur d'incrémentation etc.). La séquence permet notamment de générer les clés uniques des colonnes d'une table. stéréotype Un stéréotype est un type d'élément de modélisation qui permet d'étendre la sémantique du métamodèle. Les stéréotypes doivent être basés sur des types ou des classes existantes dont ils reprennent la structure. 270 MEGA Database Builder

Glossaire synchronisation synonyme table tablespace trigger type de données vue La synchronisation est le traitement qui permet de traduire un modèle de données exprimé avec le formalisme entité/association en un modèle logique exprimé avec le formalisme relationnel, et inversement. Un synonyme est un nom alternatif donné à un objet (table, vue, procédure stockée, synonyme et séquence). On peut définir un synonyme pour désigner un objet d'une autre base de données. La table est une structure logique de données, utilisée comme référence pour le passage en réalisation ; c est l'élément central de la base de données. Une table est accessible par une clé primaire, et éventuellement des clés étrangères ; elle est décrite par une séquence ordonnée de colonnes. Une table est généralement issue d'une entité ou d'une association. Voir groupement de données. Un trigger est un traitement enregistré dans une base de données et qui est déclenché automatiquement lors de la mise à jour d'une table. Un type de données permet de mettre en commun des caractéristiques communes à plusieurs attributs. Une vue logique est une table virtuelle dont la structure et le contenu sont déduits d'une ou plusieurs autres tables par une requête SQL. 271

15 272 MEGA Database Builder

16 TABLEAUX DE CORRESPONDANCES ENTRE TYPES PIVOTS ET DATATYPES Les tableaux suivants donnent les correspondances entre les types pivots et les datatypes des différents SGBD supportés. "DB2 OS/390 Version 5", page 274 "DB2 OS/390 Version 7", page 277 "DB2 for z/os Version 8", page 281 "DB2 for z/os Version 9", page 285 "DB2 Universal Database Version 5", page 289 "DB2 Universal Database Version 7", page 292 "DB2 Universal Database Version 8", page 295 "DB2 Universal Database Version 9", page 298 "Informix Dynamic Server 7.3", page 305 "Ingres II 2.0", page 307 "MySQL 4.1", page 309 "MySQL 5.0", page 319 "Oracle 10", page 329 "Oracle 11", page 332 "Oracle 8", page 335 "Oracle 9i", page 337 "SQL ANSI/ISO 9075:1992", page 340 "SQL Server 2000", page 342 "SQL Server 2005", page 345 "SQL Server 7", page 348 "Sybase Adaptive Server 11", page 350 "Sybase Adaptive Server 12.5", page 353 273

16 DB2 OS/390 VERSION 5 Pivot --> Datatype (DB2 OS/390 Version 5) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime Not Unicode and (L=0 or L ø) Not Unicode and 0<L<256 Unicode and (L<256 or L ø) Not Unicode and L>255 Unicode and L>255 INTEGER CHAR(@L) FOR BIT DATA CHAR(@L) FOR BIT DATA CHAR (1) FOR BIT DATA CHAR CHAR(@L) GRAPHIC(@L) VARCHAR(@L) VARGRAPHIC(@L) DECIMAL(@L,@D) DATE TIMESTAMP P-Decimal L=0 or L ø DECIMAL L>0 and D ø DECIMAL(@L) L>0 and D not ø DECIMAL(@L,@D) P-Double DOUBLE P-Float L=0 or L ø FLOAT L<>0 FLOAT(@L) P-Integer P-Long Integer P-Long Real P-Multimedia INTEGER INTEGER REAL LONG VARCHAR FOR BIT DATA 274 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 OS/390 Version 5 Pivot --> Datatype (DB2 OS/390 Version 5) Pivot Condition Datatype P-Numeric L not ø and D not ø DECIMAL(@L,@D) L>9 and D ø FLOAT(@L) 4<L<10 and D ø INTEGER L<5 or L ø SMALLINT P-Real P-Smallint P-String P-Text P-Time P-Timestamp P-Tinyint P-Varbinary P-Varchar Not Unicode and (L=0 or L ø) Not Unicode and L<>0 Unicode REAL SMALLINT LONG VARCHAR LONG VARCHAR TIME TIMESTAMP SMALLINT VARCHAR(@L) FOR BIT DATA VARCHAR VARCHAR(@L) VARGRAPHIC(@L) Datatype --> Pivot (DB2 OS/390 Version 5) Datatype Condition Pivot CHAR CHAR (1) FOR BIT DATA CHAR(L) CHAR(L) FOR BIT DATA DATE DECIMAL DECIMAL(L) DECIMAL(L,D) DOUBLE P-Character P-Byte P-Character P-Boolean P-Date P-Decimal P-Decimal P-Decimal P-Double 275

16 Datatype --> Pivot (DB2 OS/390 Version 5) Datatype Condition Pivot FLOAT FLOAT(L) P-Float P-Float GRAPHIC INTEGER LONG VARCHAR LONG VARCHAR FOR BIT DATA REAL SMALLINT TIME TIMESTAMP VARCHAR VARCHAR(L) VARCHAR(L) FOR BIT DATA P-Integer P-Text P-Multimedia P-Real P-Smallint P-Time P-Timestamp P-Varchar P-Varchar P-Varbinary 276 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 OS/390 Version 7 DB2 OS/390 VERSION 7 Pivot --> Datatype (DB2 OS/390 Version 7) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime Not Unicode and (L=0 or L ø) Not Unicode and 0<L<256 Unicode and (L<256 or L ø) Not Unicode and L>255 Unicode and L>255 INTEGER CHAR(@L) FOR BIT DATA CHAR(@L) FOR BIT DATA CHAR (1) FOR BIT DATA CHAR CHAR(@L) GRAPHIC(@L) VARCHAR(@L) VARGRAPHIC(@L) DECIMAL(@L, @D) DATE TIMESTAMP P-Decimal L=0 or L ø DECIMAL L>0 and D ø DECIMAL(@L) L>0 and D not ø DECIMAL(@L, @D) P-Double DOUBLE P-Float L=0 or L ø FLOAT L<>0 FLOAT(@L) P-Integer P-Long Integer P-Long Real P-Multimedia INTEGER INTEGER REAL LONG VARCHAR FOR BIT DATA 277

16 Pivot --> Datatype (DB2 OS/390 Version 7) Pivot Condition Datatype P-Numeric L not ø and D not ø DECIMAL(@L, @D) L>9 and D ø FLOAT(@L) 4<L<10 and D ø (L<5 and D ø) or L ø INTEGER SMALLINT P-Real P-Smallint P-String P-Text P-Time P-Timestamp P-Tinyint P-Varbinary P-Varchar Not Unicode and (L=0 or L ø) Not Unicode and L<>0 Unicode REAL SMALLINT LONG VARCHAR LONG VARCHAR TIME TIMESTAMP SMALLINT VARCHAR(@L) FOR BIT DATA VARCHAR VARCHAR(@L) VARGRAPHIC(@L) Datatype --> Pivot (DB2 OS/390 Version 7) Datatype Condition Pivot BLOB BLOB(L) CHAR CHAR (1) FOR BIT DATA P-Character P-Byte CHAR FOR MIXED DATA CHAR FOR SBCS DATA CHAR(L) CHAR(L) FOR BIT DATA P-Character P-Boolean CHAR(L) FOR MIXED DATA 278 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 OS/390 Version 7 Datatype --> Pivot (DB2 OS/390 Version 7) Datatype Condition Pivot CHAR(L) FOR SBCS DATA CLOB CLOB FOR MIXED DATA CLOB FOR SBCS DATA CLOB(L) CLOB(L) FOR MIXED DATA CLOB(L) FOR SBCS DATA DATE P-Date DBCLOB DBCLOB(L) DECIMAL DECIMAL(L) DECIMAL(L, D) DOUBLE FLOAT FLOAT(L) P-Decimal P-Decimal P-Decimal P-Double P-Float P-Float GRAPHIC INTEGER LONG VARCHAR LONG VARCHAR FOR BIT DATA REAL P-Integer P-Text P-Multimedia P-Real ROWID SMALLINT TIME TIMESTAMP VARCHAR(L) VARCHAR(L) FOR BIT DATA P-Smallint P-Time P-Datetime P-Varchar P-Varbinary VARCHAR(L) FOR MIXED DATA 279

16 Datatype --> Pivot (DB2 OS/390 Version 7) Datatype Condition Pivot VARCHAR(L) FOR SBCS DATA 280 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 for z/os Version 8 DB2 FOR Z/OS VERSION 8 Pivot --> Datatype (DB2 for z/os Version 8) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime Not Unicode and (L=0 or L ø) Not Unicode and 0<L<256 Unicode and (L<256 or L ø) Not Unicode and L>255 Unicode and L>255 INTEGER CHAR(@L) FOR BIT DATA CHAR(@L) FOR BIT DATA CHAR (1) FOR BIT DATA CHAR CHAR(@L) GRAPHIC(@L) VARCHAR(@L) VARGRAPHIC(@L) DECIMAL(@L, @D) DATE TIMESTAMP P-Decimal L=0 or L ø DECIMAL L>0 and D ø DECIMAL(@L) L>0 and D not ø DECIMAL(@L, @D) P-Double DOUBLE P-Float L=0 or L ø FLOAT L<>0 FLOAT(@L) P-Integer P-Long Integer P-Long Real P-Multimedia INTEGER INTEGER REAL LONG VARCHAR FOR BIT DATA 281

16 Pivot --> Datatype (DB2 for z/os Version 8) Pivot Condition Datatype P-Numeric L not ø and D not ø DECIMAL(@L, @D) L>9 and D ø FLOAT(@L) 4<L<10 and D ø (L<5 and D ø) or L ø INTEGER SMALLINT P-Real P-Smallint P-String P-Text P-Time P-Timestamp P-Tinyint P-Varbinary P-Varchar Not Unicode and (L=0 or L ø) Not Unicode and L<>0 Unicode REAL SMALLINT LONG VARCHAR LONG VARCHAR TIME TIMESTAMP SMALLINT VARCHAR(@L) FOR BIT DATA VARCHAR VARCHAR(@L) VARGRAPHIC(@L) Datatype --> Pivot (DB2 for z/os Version 8) Datatype Condition Pivot BLOB BLOB(L) CHAR CHAR (1) FOR BIT DATA P-Character P-Byte CHAR FOR MIXED DATA CHAR FOR SBCS DATA CHAR(L) CHAR(L) FOR BIT DATA P-Character P-Boolean CHAR(L) FOR MIXED DATA 282 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 for z/os Version 8 Datatype --> Pivot (DB2 for z/os Version 8) Datatype Condition Pivot CHAR(L) FOR SBCS DATA CLOB CLOB FOR MIXED DATA CLOB FOR SBCS DATA CLOB(L) CLOB(L) FOR MIXED DATA CLOB(L) FOR SBCS DATA DATE P-Date DBCLOB DBCLOB(L) DECIMAL DECIMAL(L) DECIMAL(L, D) DOUBLE FLOAT FLOAT(L) P-Decimal P-Decimal P-Decimal P-Double P-Float P-Float GRAPHIC INTEGER LONG VARCHAR LONG VARCHAR FOR BIT DATA REAL P-Integer P-Text P-Multimedia P-Real ROWID SMALLINT TIME TIMESTAMP VARCHAR(L) VARCHAR(L) FOR BIT DATA P-Smallint P-Time P-Datetime P-Varchar P-Varbinary VARCHAR(L) FOR MIXED DATA 283

16 Datatype --> Pivot (DB2 for z/os Version 8) Datatype Condition Pivot VARCHAR(L) FOR SBCS DATA 284 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 for z/os Version 9 DB2 FOR Z/OS VERSION 9 Datatype -> Pivot (DB2 for z/os Version 9) Datatype Condition Pivot P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime Not Unicode and (L=0 or L ø) Unicode and (L<256 or L ø) Not Unicode and L>255 Not Unicode and 0<L<256 Unicode and L>255 INTEGER CHAR(@L) FOR BIT DATA CHAR(@L) FOR BIT DATA CHAR (1) FOR BIT DATA CHAR CHAR(@L) GRAPHIC(@L) VARCHAR(@L) VARGRAPHIC(@L) DECIMAL(@L, @D) DATE TIMESTAMP P-Decimal L=0 or L ø DECIMAL L>0 and D ø DECIMAL(@L) L>0 and D not ø DECIMAL(@L, @D) P-Double DOUBLE P-Float L=0 or L ø FLOAT L<>0 FLOAT(@L) P-Integer P-Long Integer P-Long Real INTEGER INTEGER REAL 285

16 Datatype -> Pivot (DB2 for z/os Version 9) Datatype Condition Pivot P-Multimedia BLOB BLOB(@L) CLOB CLOB FOR MIXED DATA CLOB(@L) CLOB(@L) FOR MIXED DATA LONG VARCHAR FOR BIT DATA P-Numeric L not ø and D not ø DECIMAL(@L, @D) L>9 and D ø FLOAT(@L) 4<L<10 and D ø (L<5 and D ø) or L ø INTEGER SMALLINT P-Real P-Smallint P-String P-Text P-Time P-Timestamp P-Tinyint P-Varbinary P-Varchar Not Unicode and (L=0 or L ø) Not Unicode and L<>0 Unicode REAL SMALLINT LONG VARCHAR LONG VARCHAR TIME TIMESTAMP SMALLINT VARCHAR(@L) FOR BIT DATA VARCHAR VARCHAR(@L) VARGRAPHIC(@L) Pivot -> Datatype (DB2 for z/os Version 9) Pivot Condition Datatype BLOB P-Multimedia 286 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 for z/os Version 9 Pivot Condition Datatype BLOB(L) CHAR CHAR (1) FOR BIT DATA P-Multimedia P-Character P-Byte CHAR FOR MIXED DATA CHAR FOR SBCS DATA CHAR(L) CHAR(L) FOR BIT DATA P-Character P-Boolean CHAR(L) FOR MIXED DATA CHAR(L) FOR SBCS DATA CLOB CLOB FOR MIXED DATA P-Multimedia P-Multimedia CLOB FOR SBCS DATA CLOB(L) CLOB(L) FOR MIXED DATA P-Multimedia P-Multimedia CLOB(L) FOR SBCS DATA DATE P-Date DBCLOB DBCLOB(L) DECIMAL DECIMAL(L) DECIMAL(L, D) DOUBLE FLOAT FLOAT(L) P-Decimal P-Decimal P-Decimal P-Double P-Float P-Float GRAPHIC INTEGER LONG VARCHAR LONG VARCHAR FOR BIT DATA REAL P-Integer P-Text P-Multimedia P-Real ROWID 287

16 Pivot Condition Datatype SMALLINT TIME TIMESTAMP VARCHAR(L) VARCHAR(L) FOR BIT DATA VARCHAR(L) FOR MIXED DATA VARCHAR(L) FOR SBCS DATA P-Smallint P-Time P-Datetime P-Varchar P-Varbinary 288 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 Universal Database Version 5 DB2 UNIVERSAL DATABASE VERSION 5 Pivot --> Datatype (DB2 Universal Database Version 5) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime Not Unicode and (L=0 or L ø) Not Unicode and 0<L<255 Unicode and (L<256 or L ø) Not Unicode and L>254 Unicode and L>255 INTEGER CHAR(@L) FOR BIT DATA CHAR(@L) FOR BIT DATA CHAR (1) FOR BIT DATA CHAR CHAR(@L) GRAPHIC(@L) VARCHAR(@L) VARGRAPHIC(@L) DECIMAL(@L,@D) DATE TIMESTAMP P-Decimal L=0 or L ø DECIMAL L>0 and D ø DECIMAL(@L) L>0 and D not ø DECIMAL(@L,@D) P-Double DOUBLE P-Float L=0 or L ø FLOAT L<>0 FLOAT(@L) P-Integer P-Long Integer P-Long Real P-Multimedia INTEGER BIGINT REAL BLOB(@L) 289

16 Pivot --> Datatype (DB2 Universal Database Version 5) Pivot Condition Datatype P-Numeric L not ø and D not ø DECIMAL(@L,@D) L>9 and D ø FLOAT(@L) 4<L<10 and D ø (L<5 and D not ø) or L ø INTEGER SMALLINT P-Real P-Smallint P-String P-Text P-Time P-Timestamp P-Tinyint P-Varbinary P-Varchar Not Unicode and (L=0 or L ø) Not Unicode and L<>0 Unicode REAL SMALLINT LONG VARCHAR LONG VARCHAR TIME TIMESTAMP SMALLINT VARCHAR(@L) FOR BIT DATA VARCHAR VARCHAR(@L) VARGRAPHIC(@L) Datatype --> Pivot (DB2 Universal Database Version 5) Datatype Condition Pivot BIGINT BLOB(L) CHAR CHAR (1) FOR BIT DATA CHAR(L) CHAR(L) FOR BIT DATA P-Long Integer P-Multimedia P-Character P-Byte P-Character P-Boolean CLOB(L) DATALINK DATALINK(L) 290 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 Universal Database Version 5 Datatype --> Pivot (DB2 Universal Database Version 5) Datatype Condition Pivot DATE P-Date DBCLOB(L) DECIMAL DECIMAL(L) DECIMAL(L,D) DOUBLE FLOAT FLOAT(L) P-Decimal P-Decimal P-Decimal P-Double P-Float P-Float GRAPHIC INTEGER LONG VARCHAR P-Integer P-Text LONG VARCHAR FOR BIT DATA LONG VARGRAPHIC REAL SMALLINT TIME TIMESTAMP VARCHAR VARCHAR(L) VARCHAR(L) FOR BIT DATA P-Real P-Smallint P-Time P-Timestamp P-Varchar P-Varchar P-Varbinary 291

16 DB2 UNIVERSAL DATABASE VERSION 7 Pivot --> Datatype (DB2 Universal Database Version 7) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime Not Unicode and (L=0 or L ø) Not Unicode and 0<L<255 Unicode and (L<256 or L ø) Not Unicode and L>254 Unicode and L>255 INTEGER CHAR(@L) FOR BIT DATA CHAR(@L) FOR BIT DATA CHAR (1) FOR BIT DATA CHAR CHAR(@L) GRAPHIC(@L) VARCHAR(@L) VARGRAPHIC(@L) DECIMAL(@L,@D) DATE TIMESTAMP P-Decimal L=0 or L ø DECIMAL L>0 and D ø DECIMAL(@L) L>0 and L not ø DECIMAL(@L,@D) P-Double DOUBLE P-Float L=0 or L ø FLOAT L<>0 FLOAT(@L) P-Integer P-Long Integer P-Long Real P-Multimedia INTEGER BIGINT REAL BLOB(@L) 292 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 Universal Database Version 7 Pivot --> Datatype (DB2 Universal Database Version 7) Pivot Condition Datatype P-Numeric L not ø and D not ø DECIMAL(@L,@D) L>9 and D ø FLOAT(@L) 4<L<10 and D ø INTEGER L<5 or L ø SMALLINT P-Real P-Smallint P-String P-Text P-Time P-Timestamp P-Tinyint P-Varbinary P-Varchar Not Unicode and (L=0 or L ø) Not Unicode and L<>0 Unicode REAL SMALLINT LONG VARCHAR LONG VARCHAR TIME TIMESTAMP SMALLINT VARCHAR(@L) FOR BIT DATA VARCHAR VARCHAR(@L) VARGRAPHIC(@L) Datatype --> Pivot (DB2 Universal Database Version 7) Datatype Condition Pivot BIGINT BLOB(L) CHAR CHAR (1) FOR BIT DATA CHAR(L) CHAR(L) FOR BIT DATA P-Long Integer P-Multimedia P-Character P-Byte P-Character P-Boolean CLOB(L) DATALINK DATALINK(L) 293

16 Datatype --> Pivot (DB2 Universal Database Version 7) Datatype Condition Pivot DATE P-Date DBCLOB(L) DECIMAL DECIMAL(L) DECIMAL(L,D) DOUBLE P-Decimal P-Decimal P-Decimal P-Double DOUBLE PRECISION FLOAT FLOAT(L) P-Float P-Float GRAPHIC INTEGER LONG VARCHAR P-Integer P-Text LONG VARCHAR FOR BIT DATA LONG VARGRAPHIC REAL SMALLINT TIME TIMESTAMP VARCHAR VARCHAR(L) VARCHAR(L) FOR BIT DATA P-Real P-Smallint P-Time P-Timestamp P-Varchar P-Varchar P-Varbinary 294 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 Universal Database Version 8 DB2 UNIVERSAL DATABASE VERSION 8 Pivot --> Datatype (DB2 Universal Database Version 8) Pivot Condition Datatype P-AutoIdentifier P-Byte P-Character P-Currency P-Date P-Datetime Not Unicode and (L=0 or L ø) Not Unicode and 0<L<255 Unicode and (L<256 or L ø) Not Unicode and L>254 Unicode and L>255 INTEGER CHAR (1) FOR BIT DATA CHAR CHAR(@L) GRAPHIC(@L) VARCHAR(@L) VARGRAPHIC(@L) DECIMAL(@L,@D) DATE TIMESTAMP P-Decimal L=0 or L ø DECIMAL L>0 and D ø DECIMAL(@L) L>0 and L not ø DECIMAL(@L,@D) P-Double DOUBLE P-Float L=0 or L ø FLOAT L<>0 FLOAT(@L) P-Integer P-Long Integer P-Long Real INTEGER BIGINT REAL P-Numeric L not ø and D not ø DECIMAL(@L,@D) L>9 and D ø FLOAT(@L) 4<L<10 and D ø INTEGER L<5 or L ø SMALLINT P-Real REAL 295

16 Pivot --> Datatype (DB2 Universal Database Version 8) Pivot Condition Datatype P-Smallint P-String P-Text P-Time P-Timestamp P-Tinyint P-Varbinary P-Varchar Not Unicode and (L=0 or L ø) Not Unicode and L<>0 Unicode SMALLINT LONG VARCHAR LONG VARCHAR TIME TIMESTAMP SMALLINT VARCHAR(@L) FOR BIT DATA VARCHAR VARCHAR(@L) VARGRAPHIC(@L) Datatype --> Pivot (DB2 Universal Database Version 8) Datatype Condition Pivot BIGINT P-Long Integer BLOB(L) CHAR CHAR (1) FOR BIT DATA CHAR(L) P-Character P-Byte P-Character CHAR(L) FOR BIT DATA CLOB(L) DATALINK DATALINK(L) DATE P-Date DBCLOB(L) DECIMAL DECIMAL(L) DECIMAL(L,D) P-Decimal P-Decimal P-Decimal 296 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 Universal Database Version 8 Datatype --> Pivot (DB2 Universal Database Version 8) Datatype Condition Pivot DOUBLE P-Double DOUBLE PRECISION FLOAT FLOAT(L) P-Float P-Float GRAPHIC INTEGER LONG VARCHAR P-Integer P-Text LONG VARCHAR FOR BIT DATA LONG VARGRAPHIC REAL SMALLINT SMALLINT TIME TIMESTAMP VARCHAR VARCHAR(L) VARCHAR(L) FOR BIT DATA P-Real P-Smallint P-Tinyint P-Time P-Timestamp P-Varchar P-Varchar P-Varbinary 297

16 DB2 UNIVERSAL DATABASE VERSION 9 Pivot --> Datatype (DB2 Universal Database Version 9) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Byte P-Character P-Currency P-Date P-Datetime Not Unicode and (L=0 or L ø) Not Unicode and 0<L<255 Unicode and (L<256 or L ø) Not Unicode and L>254 Unicode and L>255 INTEGER CHAR(@L) FOR BIT DATA CHAR (1) FOR BIT DATA CHAR CHAR(@L) GRAPHIC(@L) VARCHAR(@L) VARGRAPHIC(@L) DECIMAL(@L,@D) DATE TIMESTAMP P-Decimal L=0 or L ø DECIMAL L>0 and D ø DECIMAL(@L) L>0 and L not ø DECIMAL(@L,@D) P-Double DOUBLE P-Float L=0 or L ø FLOAT L<>0 FLOAT(@L) P-Integer P-Long Integer P-Long Real P-Multimedia INTEGER BIGINT REAL BLOB(@L) 298 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 Universal Database Version 9 Pivot --> Datatype (DB2 Universal Database Version 9) Pivot Condition Datatype P-Numeric L not ø and D not ø DECIMAL(@L,@D) L>9 and D ø FLOAT(@L) 4<L<10 and D ø INTEGER L<5 or L ø SMALLINT P-Real P-Smallint P-String P-Text P-Time P-Timestamp P-Tinyint P-Varbinary P-Varchar Not Unicode and (L=0 or L ø) Not Unicode and L<>0 Unicode REAL SMALLINT LONG VARCHAR LONG VARCHAR TIME TIMESTAMP SMALLINT VARCHAR(@L) FOR BIT DATA VARCHAR VARCHAR(@L) VARGRAPHIC(@L) Datatype --> Pivot (DB2 Universal Database Version 9) Datatype Condition Pivot BIGINT BLOB(L) CHAR CHAR (1) FOR BIT DATA CHAR(L) CHAR(L) FOR BIT DATA CLOB(L) DATE DBCLOB(L) ub ConditionInvoke (Colonne, ByRef bvalid) P-Long Integer P-Multimedia P-Character P-Byte P-Character P-Binary CLOB P-Date 299

16 Datatype --> Pivot (DB2 Universal Database Version 9) Datatype Condition Pivot DECIMAL DECIMAL(L) DECIMAL(L,D) DOUBLE P-Decimal P-Decimal P-Decimal P-Double DOUBLE PRECISION FLOAT FLOAT(L) P-Float P-Float GRAPHIC INTEGER LONG VARCHAR P-Integer P-Text LONG VARCHAR FOR BIT DATA LONG VARGRAPHIC REAL SMALLINT SMALLINT TIME TIMESTAMP VARCHAR VARCHAR(L) VARCHAR(L) FOR BIT DATA P-Real P-Smallint P-Tinyint P-Time P-Timestamp P-Varchar P-Varchar P-Varbinary 300 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 Universal Database Version 9 DB2 VERSION 9 FOR OS Pivot --> Datatype (DB2 Version 9 For OS) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime Not Unicode and (L=0 or L ø) Not Unicode and 0<L<256 Unicode and (L<256 or L ø) Not Unicode and L>255 Unicode and L>255 INTEGER CHAR(@L) FOR BIT DATA CHAR(@L) FOR BIT DATA CHAR (1) FOR BIT DATA CHAR CHAR(@L) GRAPHIC(@L) VARCHAR(@L) VARGRAPHIC(@L) DECIMAL(@L, @D) DATE TIMESTAMP P-Decimal L=0 or L ø DECIMAL L>0 and D ø DECIMAL(@L) L>0 and D not ø DECIMAL(@L, @D) P-Double DOUBLE P-Float L=0 or L ø FLOAT L<>0 FLOAT(@L) P-Integer P-Long Integer P-Long Real INTEGER INTEGER REAL 301

16 Pivot --> Datatype (DB2 Version 9 For OS) Pivot Condition Datatype P-Multimedia BLOB BLOB(@L) CLOB CLOB FOR MIXED DATA CLOB(@L) CLOB(@L) FOR MIXED DATA LONG VARCHAR FOR BIT DATA P-Numeric L not ø and D not ø DECIMAL(@L, @D) L>9 and D ø FLOAT(@L) 4<L<10 and D ø (L<5 and D ø) or L ø INTEGER SMALLINT P-Real P-Smallint P-String P-Text P-Time P-Timestamp P-Tinyint P-Varbinary P-Varchar Not Unicode and (L=0 or L ø) Not Unicode and L<>0 Unicode REAL SMALLINT LONG VARCHAR LONG VARCHAR TIME TIMESTAMP SMALLINT VARCHAR(@L) FOR BIT DATA VARCHAR VARCHAR(@L) VARGRAPHIC(@L) Datatype --> Pivot (DB2 Version 9 For OS) Datatype Condition Pivot BLOB P-Multimedia 302 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes DB2 Universal Database Version 9 Datatype --> Pivot (DB2 Version 9 For OS) Datatype Condition Pivot BLOB(L) CHAR CHAR (1) FOR BIT DATA P-Multimedia P-Character P-Byte CHAR FOR MIXED DATA CHAR FOR SBCS DATA CHAR(L) CHAR(L) FOR BIT DATA P-Character P-Boolean CHAR(L) FOR MIXED DATA CHAR(L) FOR SBCS DATA CLOB CLOB FOR MIXED DATA P-Multimedia P-Multimedia CLOB FOR SBCS DATA CLOB(L) CLOB(L) FOR MIXED DATA P-Multimedia P-Multimedia CLOB(L) FOR SBCS DATA DATE P-Date DBCLOB DBCLOB(L) DECIMAL DECIMAL(L) DECIMAL(L, D) DOUBLE FLOAT FLOAT(L) P-Decimal P-Decimal P-Decimal P-Double P-Float P-Float GRAPHIC INTEGER LONG VARCHAR LONG VARCHAR FOR BIT DATA REAL P-Integer P-Text P-Multimedia P-Real 303

16 Datatype --> Pivot (DB2 Version 9 For OS) Datatype Condition Pivot ROWID SMALLINT TIME TIMESTAMP VARCHAR(L) VARCHAR(L) FOR BIT DATA P-Smallint P-Time P-Datetime P-Varchar P-Varbinary VARCHAR(L) FOR MIXED DATA VARCHAR(L) FOR SBCS DATA 304 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes Informix Dynamic Server 7.3 INFORMIX DYNAMIC SERVER 7.3 Pivot --> Datatype (Informix Dynamic Server 7.3) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime SERIAL BYTE SMALLINT BYTE CHAR(@L) MONEY(@L,@D) DATE DATETIME P-Decimal D ø DECIMAL(@L) D not ø DECIMAL(@L,@D) P-Double FLOAT P-Float L=0 or L ø FLOAT L<>0 SMALLFLOAT(@L) P-Integer P-Long Integer P-Long Real P-Multimedia INTEGER INTEGER FLOAT BYTE P-Numeric L>9 DECIMAL(@L) 4<L<10 INTEGER L<5 or L ø SMALLINT P-Real P-Smallint P-String P-Text P-Time FLOAT SMALLINT VARCHAR(@L) VARCHAR(@L) DATETIME 305

16 Pivot --> Datatype (Informix Dynamic Server 7.3) Pivot Condition Datatype P-Timestamp P-Tinyint SERIAL SMALLINT P-Varchar D ø VARCHAR(@L) D not ø VARCHAR(@L,@D) Datatype --> Pivot (Informix Dynamic Server 7.3) Datatype Condition Pivot BYTE CHAR(L) DATE DATETIME DECIMAL(L) DECIMAL(L,D) FLOAT INTEGER MONEY(L,D) SERIAL SMALLFLOAT(L) SMALLINT VARCHAR(L) VARCHAR(L,D) P-Multimedia P-Character P-Date P-Datetime P-Decimal P-Decimal P-Float P-Integer P-Currency P-Timestamp P-Float P-Boolean P-Varchar P-Varchar 306 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes Ingres II 2.0 INGRES II 2.0 Pivot --> Datatype (Ingres II 2.0) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime P-Decimal P-Double P-Float P-Integer P-Long Integer P-Long Real integer long byte(@l) integer1 byte(@l) char(@l) money(@l,@d) date date decimal(@l,@d) integer1 float4 integer integer float P-Multimedia L<2001 or L ø byte(@l) L>2000 long byte(@l) P-Numeric L>9 float 4<L<10 integer L<3 or L ø integer1 2<L<5 smallint P-Real P-Smallint P-String P-Text P-Time float smallint long varchar(@l) text(@l) date 307

16 Pivot --> Datatype (Ingres II 2.0) Pivot Condition Datatype P-Timestamp P-Tinyint P-Varbinary P-Varchar date integer1 byte varying(@l) varchar(@l) Datatype --> Pivot (Ingres II 2.0) Datatype Condition Pivot byte varying(l) byte(l) P-Varbinary P-Multimedia CL char(l) date decimal(l,d) float float4 integer integer1 long byte(l) long varchar(l) money(l,d) P-Character P-Datetime P-Decimal P-Real P-Float P-Integer P-Tinyint P-Binary P-String P-Currency Object_Key smallint P-Smallint Table_Key text(l) varchar(l) P-Text P-Varchar 308 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes MySQL 4.1 MYSQL 4.1 Pivot --> Datatype (MySQL 4.1) Pivot Condition Datatype P-AutoIdentifier INTEGER P-Binary L ø or L<=0 BINARY L is numeric and L<>0 BINARY (@L) P-Boolean BOOLEAN P-Byte L ø or L<=0 BIT L is numeric and L<>0 BIT (@L) P-Character Not Unicode and L=0 CHAR Not Unicode and L<>0 Unicode and L<>0 Unicode and L=0 CHAR (@L) CHAR (@L) UNICODE CHAR UNICODE P-Character Ascii L ø or L<=0 CHAR ASCII L is numeric and L<>0 CHAR(@L) ASCII P-Character Binary Not Unicode and L<>0 CHAR (@L) BINARY Unicode and L<>0 Not Unicode and L=0 Unicode and L=0 CHAR (@L) UNICODE BINARY CHAR BINARY CHAR UNICODE BINARY P-Character Unicode L is numeric and L<>0 CHAR (@L) UNICODE P-Character Unicode Binary P-Currency P-Date P-Datetime L ø or L<=0 L is numeric and L<>0 L ø or L<=0 CHAR UNICODE CHAR (@L) UNICODE BINARY CHAR UNICODE BINARY DECIMAL(@L,@D) DATE DATETIME 309

16 Pivot --> Datatype (MySQL 4.1) Pivot Condition Datatype P-Decimal L=0 or L ø DECIMAL L>0 and D ø DECIMAL (@L) L>0 and D not ø DECIMAL(@L,@D) P-Decimal Unsigned L>0 and D ø DECIMAL (@L) UNSIGNED L>0 and D not ø DECIMAL (@L,@D) UNSI- GNED L=0 or L ø DECIMAL UNSIGNED P-Decimal Unsigned Zerofill L>0 and D ø DECIMAL (@L) UNSIGNED ZEROFILL L>0 and D not ø DECIMAL (@L,@D) UNSI- GNED ZEROFILL L=0 or L ø DECIMAL UNSIGNED ZEROFILL P-Double L ø or L<=0 DOUBLE PRECISION L<>0 or D<>0 DOUBLE PRECISION (@L,@D) P-Double Unsigned L>0 and D not ø DOUBLE PRECISION (@L,@D) UNSIGNED L=0 or L ø DOUBLE PRECISION UNSI- GNED P-Double Unsigned Zerofill L>0 and D not ø DOUBLE PRECISION (@L,@D) UNSIGNED ZEROFILL L=0 or L ø DOUBLE PRECISION UNSI- GNED ZEROFILL P-Float L=0 or L ø FLOAT L>0 and D ø FLOAT (@L) L>0 and D not ø FLOAT (@L,@D) P-Float Unsigned L>0 and D ø FLOAT (@L) UNSIGNED L>0 and D not ø FLOAT (@L,@D) UNSI- GNED L=0 or L ø FLOAT UNSIGNED 310 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes MySQL 4.1 Pivot --> Datatype (MySQL 4.1) Pivot Condition Datatype P-Float Unsigned Zerofill L>0 and D ø FLOAT (@L) UNSIGNED ZEROFILL L>0 and D not ø FLOAT (@L,@D) UNSI- GNED ZEROFILL L=0 or L ø FLOAT UNSIGNED ZERO- FILL P-Integer L ø or L<=0 INTEGER L is numeric and L<>0 INTEGER (@L) P-Integer Unsigned L is numeric and L<>0 INTEGER (@L) UNSIGNED L ø or L<=0 INTEGER UNSIGNED P-Integer Unsigned Zerofill L is numeric and L<>0 INTEGER (@L) UNSIGNED ZEROFILL L ø or L<=0 INTEGER UNSIGNED ZEROFILL P-Long Integer L ø or L<=0 BIGINT L is numeric and L<>0 BIGINT (@L) P-Long Integer Unsigned L is numeric and L<>0 BIGINT (@L) UNSIGNED P-Long Integer Unsigned Zerofill P-Longblob P-Longtext P-Mediumblob L ø or L<=0 L is numeric and L<>0 L ø or L<=0 BIGINT UNSIGNED BIGINT (@L) UNSIGNED ZEROFILL BIGINT UNSIGNED ZERO- FILL LONGBLOB LONGTEXT MEDIUMBLOB P-Mediumint L ø or L<=0 MEDIUMINT L is numeric and L<>0 MEDIUMINT (@L) P-Mediumint Unsigned L is numeric and L<>0 MEDIUMINT (@L) UNSI- GNED P-Mediumint Unsigned Zerofill L ø or L<=0 L is numeric and L<>0 L ø or L<=0 MEDIUMINT UNSIGNED MEDIUMINT (@L) UNSI- GNED ZEROFILL MEDIUMINT UNSIGNED ZEROFILL 311

16 Pivot --> Datatype (MySQL 4.1) Pivot Condition Datatype P-Mediumtext P-Multimedia MEDIUMTEXT BLOB P-National Varchar L ø or L<0 NATIONAL VARCHAR L is numeric and L>=0 NATIONAL VARCHAR (@L) P-National Varchar Binary L is numeric and L>=0 NATIONAL VARCHAR (@L) BINARY L ø or L<0 NATIONAL VARCHAR BINARY P-Numeric L=0 or L ø NUMERIC L>0 and D ø NUMERIC (@L) L>0 and D not ø NUMERIC (@L,@D) P-Real L ø or L<=0 REAL L>0 and D not ø REAL (@L,@D) P-Real Unsigned L>0 and D not ø REAL (@L,@D) UNSIGNED L=0 or L ø REAL UNSIGNED P-Real Unsigned Zerofill L>0 and D not ø REAL (@L,@D) UNSIGNED ZEROFILL L=0 or L ø REAL UNSIGNED ZEROFILL P-Smallint SMALLINT L is numeric and L<>0 SMALLINT (@L) P-Smallint Unsigned L is numeric and L<>0 SMALLINT (@L) UNSIGNED P-Smallint Unsigned Zerofill P-String P-Text P-Time P-Timestamp P-Tinyblob L ø or L<=0 L is numeric and L<>0 L ø or L<=0 SMALLINT UNSIGNED SMALLINT (@L) UNSIGNED ZEROFILL SMALLINT UNSIGNED ZEROFILL VARCHAR(@L) TEXT TIME TIMESTAMP TINYBLOB 312 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes MySQL 4.1 Pivot --> Datatype (MySQL 4.1) Pivot Condition Datatype P-Tinyint L ø or L<=0 TINYINT L is numeric and L<>0 TINYINT (@L) P-Tinyint Unsigned L is numeric and L<>0 TINYINT (@L) UNSIGNED L ø or L<=0 TINYINT UNSIGNED P-Tinyint Unsigned Zerofill L is numeric and L<>0 TINYINT (@L) UNSIGNED ZEROFILL L ø or L<=0 TINYINT UNSIGNED ZERO- FILL P-Tinytext TINYTEXT P-Varbinary L ø or L<0 VARBINARY L is numeric and L>=0 VARBINARY (@L) P-Varchar L ø or L<0 VARCHAR L is numeric and L>=0 VARCHAR(@L) P-Varchar Binary L is numeric and L>=0 VARCHAR (@L) BINARY L ø or L<0 VARCHAR BINARY P-Wide Character L ø or L<=0 NATIONAL CHAR L is numeric and L<>0 NATIONAL CHAR (@L) P-Wide Character Binary L is numeric and L<>0 NATIONAL CHAR (@L) BINARY L ø or L<=0 NATIONAL CHAR BINARY P-Year L ø or L<=0 YEAR L is numeric and L<>0 YEAR (@L) Datatype --> Pivot (MySQL 4.1) Datatype Condition Pivot BIGINT BIGINT (L) BIGINT (L) UNSIGNED BIGINT (L) UNSIGNED ZEROFILL P-Long Integer P-Long Integer P-Long Integer Unsigned P-Long Integer Unsigned Zerofill 313

16 Datatype --> Pivot (MySQL 4.1) Datatype Condition Pivot BIGINT UNSIGNED BIGINT UNSIGNED ZERO- FILL BINARY BINARY (L) BLOB BOOLEAN CHAR (L) P-Long Integer Unsigned P-Long Integer Unsigned Zerofill P-Binary P-Binary P-Multimedia P-Boolean P-Character CHAR (L) ASCII BINARY CHAR (L) BINARY CHAR (L) UNICODE CHAR (L) UNICODE BINARY CHAR ASCII P-Character Binary P-Character Unicode P-Character Unicode Binary P-Character Ascii CHAR ASCII BINARY CHAR BINARY CHAR UNICODE CHAR UNICODE BINARY CHAR(L) ASCII DATE DATETIME DECIMAL (L) DECIMAL (L) UNSIGNED DECIMAL (L) UNSIGNED ZEROFILL DECIMAL (L,D) UNSIGNED DECIMAL (L,D) UNSIGNED ZEROFILL DECIMAL UNSIGNED DECIMAL UNSIGNED ZEROFILL P-Character Binary P-Character Unicode P-Character Unicode Binary P-Character Ascii P-Date P-Datetime P-Decimal P-Decimal Unsigned P-Decimal Unsigned Zerofill P-Decimal Unsigned P-Decimal Unsigned Zerofill P-Decimal Unsigned P-Decimal Unsigned Zerofill 314 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes MySQL 4.1 Datatype --> Pivot (MySQL 4.1) Datatype Condition Pivot DOUBLE DOUBLE PRECISION DOUBLE PRECISION (L,D) DOUBLE PRECISION (L,D) UNSIGNED DOUBLE PRECISION (L,D) UNSIGNED ZEROFILL DOUBLE PRECISION UNSI- GNED DOUBLE PRECISION UNSI- GNED ZEROFILL FLOAT FLOAT (L) FLOAT (L) UNSIGNED FLOAT (L) UNSIGNED ZEROFILL FLOAT (L,D) FLOAT (L,D) UNSIGNED FLOAT (L,D) UNSIGNED ZEROFILL FLOAT UNSIGNED FLOAT UNSIGNED ZERO- FILL INTEGER INTEGER (L) INTEGER (L) UNSIGNED INTEGER (L) UNSIGNED ZEROFILL INTEGER UNSIGNED INTEGER UNSIGNED ZEROFILL LONGBLOB LONGTEXT P-Double P-Double P-Double Unsigned P-Double Unsigned Zerofill P-Double Unsigned P-Double Unsigned Zerofill P-Float P-Float P-Float Unsigned P-Float Unsigned Zerofill P-Float P-Float Unsigned P-Float Unsigned Zerofill P-Float Unsigned P-Float Unsigned Zerofill P-Integer P-Integer P-Integer Unsigned P-Integer Unsigned Zerofill P-Integer Unsigned P-Integer Unsigned Zerofill P-Longblob P-Longtext LONGVARBINARY 315

16 Datatype --> Pivot (MySQL 4.1) Datatype Condition Pivot MEDIUMBLOB MEDIUMINT MEDIUMINT (L) MEDIUMINT (L) UNSIGNED MEDIUMINT (L) UNSIGNED ZEROFILL MEDIUMINT UNSIGNED MEDIUMINT UNSIGNED ZEROFILL MEDIUMTEXT NATIONAL CHAR NATIONAL CHAR (L) NATIONAL CHAR (L) BINARY NATIONAL CHAR BINARY NATIONAL VARCHAR NATIONAL VARCHAR (L) NATIONAL VARCHAR (L) BINARY NATIONAL VARCHAR BINARY NUMERIC NUMERIC (L) P-Mediumblob P-Mediumint P-Mediumint P-Mediumint Unsigned P-Mediumint Unsigned Zerofill P-Mediumint Unsigned P-Mediumint Unsigned Zerofill P-Mediumtext P-Wide Character P-Wide Character P-Wide Character Binary P-Wide Character Binary P-National Varchar P-National Varchar P-National Varchar Binary P-National Varchar Binary P-Numeric P-Numeric NUMERIC (L) UNSIGNED NUMERIC (L) UNSIGNED ZEROFILL NUMERIC (L,D) P-Numeric NUMERIC (L,D) UNSIGNED NUMERIC (L,D) UNSI- GNED ZEROFILL NUMERIC UNSIGNED NUMERIC UNSIGNED ZEROFILL 316 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes MySQL 4.1 Datatype --> Pivot (MySQL 4.1) Datatype Condition Pivot REAL REAL (L,D) REAL (L,D) UNSIGNED REAL (L,D) UNSIGNED ZEROFILL REAL UNSIGNED REAL UNSIGNED ZEROFILL SMALLINT SMALLINT (L) SMALLINT (L) UNSIGNED SMALLINT (L) UNSIGNED ZEROFILL SMALLINT UNSIGNED SMALLINT UNSIGNED ZEROFILL TEXT TIME TIMESTAMP TINYBLOB TINYINT TINYINT (L) TINYINT (L) UNSIGNED TINYINT (L) UNSIGNED ZEROFILL TINYINT UNSIGNED TINYINT UNSIGNED ZERO- FILL TINYTEXT VARBINARY VARBINARY (L) VARCHAR VARCHAR (L) BINARY P-Real P-Real P-Real Unsigned P-Real Unsigned Zerofill P-Real Unsigned P-Real Unsigned Zerofill P-Smallint P-Smallint P-Smallint Unsigned P-Smallint Unsigned Zerofill P-Smallint Unsigned P-Smallint Unsigned Zerofill P-Text P-Time P-Timestamp P-Tinyblob P-Tinyint P-Tinyint P-Tinyint Unsigned P-Tinyint Unsigned Zerofill P-Tinyint Unsigned P-Tinyint Unsigned Zerofill P-Tinytext P-Varbinary P-Varbinary P-Varchar P-Varchar Binary 317

16 Datatype --> Pivot (MySQL 4.1) Datatype Condition Pivot VARCHAR BINARY VARCHAR(L) YEAR YEAR (L) P-Varchar Binary P-Varchar P-Year P-Year 318 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes MySQL 5.0 MYSQL 5.0 Pivot --> Datatype (MySQL 5.0) Pivot Condition Datatype P-AutoIdentifier INTEGER P-Binary L ø or L<=0 BINARY L is numeric and L<>0 BINARY (@L) P-Boolean BOOLEAN P-Byte L ø or L<=0 BIT L is numeric and L<>0 BIT (@L) P-Character Not Unicode and L=0 CHAR Unicode and L<>0 Unicode and L=0 Not Unicode and L<>0 CHAR (@L) UNICODE CHAR UNICODE CHAR(@L) P-Character Ascii L ø or L<=0 CHAR ASCII L is numeric and L<>0 CHAR(@L) ASCII P-Character Binary Not Unicode and L<>0 CHAR (@L) BINARY Unicode and L<>0 Not Unicode and L=0 Unicode and L=0 CHAR (@L) UNICODE BINARY CHAR BINARY CHAR UNICODE BINARY P-Character Unicode L is numeric and L<>0 CHAR (@L) UNICODE P-Character Unicode Binary P-Currency P-Date P-Datetime L ø or L<=0 L is numeric and L<>0 L ø or L<=0 CHAR UNICODE CHAR (@L) UNICODE BINARY CHAR UNICODE BINARY DECIMAL(@L,@D) DATE DATETIME 319

16 Pivot --> Datatype (MySQL 5.0) Pivot Condition Datatype P-Decimal L=0 or L ø DECIMAL L>0 and D ø DECIMAL (@L) L>0 and D not ø DECIMAL(@L,@D) P-Decimal Unsigned L>0 and D ø DECIMAL (@L) UNSIGNED L>0 and D not ø DECIMAL (@L,@D) UNSI- GNED L=0 or L ø DECIMAL UNSIGNED P-Decimal Unsigned Zerofill L>0 and D ø DECIMAL (@L) UNSIGNED ZEROFILL L>0 and D not ø DECIMAL (@L,@D) UNSI- GNED ZEROFILL L=0 or L ø DECIMAL UNSIGNED ZEROFILL P-Double L=0 or L ø DOUBLE PRECISION L>0 and D not ø DOUBLE PRECISION (@L,@D) P-Double Unsigned L>0 and D not ø DOUBLE PRECISION (@L,@D) UNSIGNED L=0 or L ø DOUBLE PRECISION UNSI- GNED P-Double Unsigned Zerofill L>0 and D not ø DOUBLE PRECISION (@L,@D) UNSIGNED ZEROFILL L=0 or L ø DOUBLE PRECISION UNSI- GNED ZEROFILL P-Float L=0 or L ø FLOAT L>0 and D ø FLOAT (@L) L>0 and D not ø FLOAT (@L,@D) P-Float Unsigned L>0 and D ø FLOAT (@L) UNSIGNED L>0 and D not ø FLOAT (@L,@D) UNSI- GNED L=0 or L ø FLOAT UNSIGNED 320 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes MySQL 5.0 Pivot --> Datatype (MySQL 5.0) Pivot Condition Datatype P-Float Unsigned Zerofill L>0 and D ø FLOAT (@L) UNSIGNED ZEROFILL L>0 and D not ø FLOAT (@L,@D) UNSI- GNED ZEROFILL L=0 or L ø FLOAT UNSIGNED ZERO- FILL P-Integer L ø or L<=0 INTEGER L is numeric and L<>0 INTEGER (@L) P-Integer Unsigned L is numeric and L<>0 INTEGER (@L) UNSIGNED L ø or L<=0 INTEGER UNSIGNED P-Integer Unsigned Zerofill L is numeric and L<>0 INTEGER (@L) UNSIGNED ZEROFILL L ø or L<=0 INTEGER UNSIGNED ZEROFILL P-Long Integer L ø or L<=0 BIGINT L is numeric and L<>0 BIGINT (@L) P-Long Integer Unsigned L is numeric and L<>0 BIGINT (@L) UNSIGNED P-Long Integer Unsigned Zerofill P-Longblob P-Longtext P-Mediumblob L ø or L<=0 L is numeric and L<>0 L ø or L<=0 BIGINT UNSIGNED BIGINT (@L) UNSIGNED ZEROFILL BIGINT UNSIGNED ZERO- FILL LONGBLOB LONGTEXT MEDIUMBLOB P-Mediumint L ø or L<=0 MEDIUMINT L is numeric and L<>0 MEDIUMINT (@L) P-Mediumint Unsigned L is numeric and L<>0 MEDIUMINT (@L) UNSI- GNED P-Mediumint Unsigned Zerofill L ø or L<=0 L is numeric and L<>0 L ø or L<=0 MEDIUMINT UNSIGNED MEDIUMINT (@L) UNSI- GNED ZEROFILL MEDIUMINT UNSIGNED ZEROFILL 321

16 Pivot --> Datatype (MySQL 5.0) Pivot Condition Datatype P-Mediumtext P-Multimedia MEDIUMTEXT BLOB P-National Varchar L ø or L<0 NATIONAL VARCHAR L is numeric and L<>0 NATIONAL VARCHAR (@L) P-National Varchar Binary L is numeric and L<>0 NATIONAL VARCHAR (@L) BINARY L ø or L<0 NATIONAL VARCHAR BINARY P-Numeric L=0 or L ø NUMERIC L>0 and D ø NUMERIC (@L) L>0 and D not ø NUMERIC (@L,@D) P-Real L=0 or L ø REAL L>0 and D not ø REAL (@L,@D) P-Real Unsigned L>0 and D not ø REAL (@L,@D) UNSIGNED L=0 or L ø REAL UNSIGNED P-Real Unsigned Zerofill L>0 and D not ø REAL (@L,@D) UNSIGNED ZEROFILL L=0 or L ø REAL UNSIGNED ZEROFILL P-Smallint L ø or L<=0 SMALLINT L is numeric and L<>0 SMALLINT (@L) P-Smallint Unsigned L is numeric and L<>0 SMALLINT (@L) UNSIGNED P-Smallint Unsigned Zerofill P-String P-Text P-Time P-Timestamp P-Tinyblob L ø or L<=0 L is numeric and L<>0 L ø or L<=0 SMALLINT UNSIGNED SMALLINT (@L) UNSIGNED ZEROFILL SMALLINT UNSIGNED ZEROFILL VARCHAR(@L) TEXT TIME TIMESTAMP TINYBLOB 322 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes MySQL 5.0 Pivot --> Datatype (MySQL 5.0) Pivot Condition Datatype P-Tinyint L ø or L<=0 TINYINT L is numeric and L<>0 TINYINT (@L) P-Tinyint Unsigned L is numeric and L<>0 TINYINT (@L) UNSIGNED L ø or L<=0 TINYINT UNSIGNED P-Tinyint Unsigned Zerofill L is numeric and L<>0 TINYINT (@L) UNSIGNED ZEROFILL L ø or L<=0 TINYINT UNSIGNED ZERO- FILL P-Tinytext TINYTEXT P-Varbinary L ø or L<0 VARBINARY L is numeric and L>=0 VARBINARY (@L) P-Varchar L ø or L<=0 VARCHAR L is numeric and L=0 VARCHAR(@L) P-Varchar Binary L is numeric and L<>0 VARCHAR (@L) BINARY L ø or L<0 VARCHAR BINARY P-Wide Character L ø or L<=0 NATIONAL CHAR L is numeric and L<>0 NATIONAL CHAR (@L) P-Wide Character Binary L is numeric and L<>0 NATIONAL CHAR (@L) BINARY L ø or L<=0 NATIONAL CHAR BINARY P-Year L ø or L<=0 YEAR L is numeric and L<>0 YEAR(@L) Datatype --> Pivot (MySQL 5.0) Datatype Condition Pivot BIGINT BIGINT (L) BIGINT (L) UNSIGNED BIGINT (L) UNSIGNED ZEROFILL P-Long Integer P-Long Integer P-Long Integer Unsigned P-Long Integer Unsigned Zerofill 323

16 Datatype --> Pivot (MySQL 5.0) Datatype Condition Pivot BIGINT UNSIGNED BIGINT UNSIGNED ZERO- FILL BINARY BINARY (L) BIT BIT (L) BLOB BOOLEAN CHAR P-Long Integer Unsigned P-Long Integer Unsigned Zerofill P-Binary P-Binary P-Byte P-Byte P-Multimedia P-Boolean P-Character CHAR (L) ASCII BINARY CHAR (L) BINARY CHAR (L) UNICODE CHAR (L) UNICODE BINARY CHAR ASCII P-Character Binary P-Character Unicode P-Character Unicode Binary P-Character Ascii CHAR ASCII BINARY CHAR BINARY CHAR UNICODE CHAR UNICODE BINARY CHAR(L) CHAR(L) ASCII DATE DATETIME DECIMAL DECIMAL (L) DECIMAL (L) UNSIGNED DECIMAL (L) UNSIGNED ZEROFILL DECIMAL (L,D) UNSIGNED P-Character Binary P-Character Unicode P-Character Unicode Binary P-Character P-Character Ascii P-Date P-Datetime P-Decimal P-Decimal P-Decimal Unsigned P-Decimal Unsigned Zerofill P-Decimal Unsigned 324 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes MySQL 5.0 Datatype --> Pivot (MySQL 5.0) Datatype Condition Pivot DECIMAL (L,D) UNSIGNED ZEROFILL DECIMAL UNSIGNED DECIMAL UNSIGNED ZEROFILL DECIMAL(L,D) DOUBLE PRECISION DOUBLE PRECISION (L,D) DOUBLE PRECISION (L,D) UNSIGNED DOUBLE PRECISION (L,D) UNSIGNED ZEROFILL DOUBLE PRECISION UNSI- GNED DOUBLE PRECISION UNSI- GNED ZEROFILL FLOAT FLOAT (L) FLOAT (L) UNSIGNED FLOAT (L) UNSIGNED ZEROFILL FLOAT (L,D) FLOAT (L,D) UNSIGNED FLOAT (L,D) UNSIGNED ZEROFILL FLOAT UNSIGNED FLOAT UNSIGNED ZERO- FILL INTEGER INTEGER (L) INTEGER (L) UNSIGNED INTEGER (L) UNSIGNED ZEROFILL INTEGER UNSIGNED P-Decimal Unsigned Zerofill P-Decimal Unsigned P-Decimal Unsigned Zerofill P-Decimal P-Double P-Double P-Double Unsigned P-Double Unsigned Zerofill P-Double Unsigned P-Double Unsigned Zerofill P-Float P-Float P-Float Unsigned P-Float Unsigned Zerofill P-Float P-Float Unsigned P-Float Unsigned Zerofill P-Float Unsigned P-Float Unsigned Zerofill P-Integer P-Integer P-Integer Unsigned P-Integer Unsigned Zerofill P-Integer Unsigned 325

16 Datatype --> Pivot (MySQL 5.0) Datatype Condition Pivot INTEGER UNSIGNED ZEROFILL LONGBLOB LONGTEXT P-Integer Unsigned Zerofill P-Longblob P-Longtext LONGVARBINARY MEDIUMBLOB MEDIUMINT MEDIUMINT (L) MEDIUMINT (L) UNSIGNED MEDIUMINT (L) UNSIGNED ZEROFILL MEDIUMINT UNSIGNED MEDIUMINT UNSIGNED ZEROFILL MEDIUMTEXT NATIONAL CHAR NATIONAL CHAR (L) NATIONAL CHAR (L) BINARY NATIONAL CHAR BINARY NATIONAL VARCHAR NATIONAL VARCHAR (L) NATIONAL VARCHAR (L) BINARY NATIONAL VARCHAR BINARY NUMERIC NUMERIC (L) P-Mediumblob P-Mediumint P-Mediumint P-Mediumint Unsigned P-Mediumint Unsigned Zerofill P-Mediumint Unsigned P-Mediumint Unsigned Zerofill P-Mediumtext P-Wide Character P-Wide Character P-Wide Character Binary P-Wide Character Binary P-National Varchar P-National Varchar P-National Varchar Binary P-National Varchar Binary P-Numeric P-Numeric NUMERIC (L) UNSIGNED NUMERIC (L) UNSIGNED ZEROFILL NUMERIC (L,D) P-Numeric NUMERIC (L,D) UNSIGNED 326 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes MySQL 5.0 Datatype --> Pivot (MySQL 5.0) Datatype Condition Pivot NUMERIC (L,D) UNSI- GNED ZEROFILL NUMERIC UNSIGNED NUMERIC UNSIGNED ZEROFILL REAL REAL (L,D) REAL (L,D) UNSIGNED REAL (L,D) UNSIGNED ZEROFILL REAL UNSIGNED REAL UNSIGNED ZEROFILL SMALLINT SMALLINT (L) SMALLINT (L) UNSIGNED SMALLINT (L) UNSIGNED ZEROFILL SMALLINT UNSIGNED SMALLINT UNSIGNED ZEROFILL TEXT TIME TIMESTAMP TINYBLOB TINYINT TINYINT (L) TINYINT (L) UNSIGNED TINYINT (L) UNSIGNED ZEROFILL TINYINT UNSIGNED TINYINT UNSIGNED ZERO- FILL TINYTEXT P-Real P-Real P-Real Unsigned P-Real Unsigned Zerofill P-Real Unsigned P-Real Unsigned Zerofill P-Smallint P-Smallint P-Smallint Unsigned P-Smallint Unsigned Zerofill P-Smallint Unsigned P-Smallint Unsigned Zerofill P-Text P-Time P-Timestamp P-Tinyblob P-Tinyint P-Tinyint P-Tinyint Unsigned P-Tinyint Unsigned Zerofill P-Tinyint Unsigned P-Tinyint Unsigned Zerofill P-Tinytext 327

16 Datatype --> Pivot (MySQL 5.0) Datatype Condition Pivot VARBINARY VARBINARY (L) VARCHAR VARCHAR (L) BINARY VARCHAR BINARY VARCHAR(L) YEAR YEAR(L) P-Varbinary P-Varbinary P-Varchar P-Varchar Binary P-Varchar Binary P-Varchar P-Year P-Year 328 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes Oracle 10 ORACLE 10 Pivot --> Datatype (Oracle 10) Pivot Condition Datatype P-AutoIdentifier P-Binary NUMBER RAW(@L) P-Boolean L<2 or L ø RAW(1) L>1 RAW(@L) P-Byte P-Character Not Unicode and (L<2001 or L ø) RAW(1) CHAR(@L) L>4000 LONG Unicode and (L<2001 or L ø) Unicode and 2000<L<4001 Not Unicode and 2000<L<4001 NCHAR(@L) NVARCHAR2(@L) VARCHAR2(@L) P-Currency P-Date P-Datetime P-Decimal P-Double NUMBER(@L,@D) DATE DATE NUMBER(@L,@D) NUMBER(@L,@D) P-Float L=0 or L>126 or L ø FLOAT 0<L<127 FLOAT(@L) P-Integer P-Long Integer P-Long Real P-Multimedia NUMBER(@L) NUMBER(@L) NUMBER(@L,@D) LONG RAW 329

16 Pivot --> Datatype (Oracle 10) Pivot Condition Datatype P-Numeric L=0 or L ø NUMBER L>0 and D ø NUMBER(@L) L>0 and D not ø NUMBER(@L,@D) P-Real P-Smallint P-String NUMBER(@L,@D) NUMBER(@L) LONG P-Text Unicode NVARCHAR2(@L) Not Unicode VARCHAR2(@L) P-Time DATE P-Timestamp L>9 or L ø TIMESTAMP L<10 TIMESTAMP(@L) P-Tinyint P-Varbinary NUMBER(@L) LONG RAW P-Varchar L>4000 or L=0 or L ø LONG Unicode and 0<L<4001 Not Unicode and 0<L<4001 NVARCHAR2(@L) VARCHAR2(@L) Datatype --> Pivot (Oracle 10) Datatype Condition Pivot BFILE BLOB CHAR(L BYTE) CHAR(L CHAR) CHAR(L) P-Character CLOB DATE FLOAT FLOAT(L) P-Date P-Float P-Float 330 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes Oracle 10 Datatype --> Pivot (Oracle 10) Datatype Condition Pivot INTERVAL DAY TO SECOND INTERVAL DAY TO SECOND(D) INTERVAL DAY(L) TO SECOND(D) INTERVAL YEAR TO MONTH INTERVAL YEAR(L) TO MONTH LONG LONG RAW P-String P-Multimedia NCLOB NUMBER NUMBER(L) NUMBER(L,D) RAW(1) RAW(L) P-Numeric P-Numeric P-Numeric P-Boolean P-Boolean ROWID TIMESTAMP P-Timestamp TIMESTAMP WITH LOCAL TIME ZONE TIMESTAMP WITH TIME ZONE TIMESTAMP(L) P-Timestamp TIMESTAMP(L) WITH LOCAL TIME ZONE TIMESTAMP(L) WITH TIME ZONE UROWID UROWID(L) VARCHAR2(L BYTE) VARCHAR2(L CHAR) VARCHAR2(L) P-Varchar 331

16 ORACLE 11 Pivot --> Datatype (Oracle 11) Pivot Condition Datatype P-AutoIdentifier P-Binary NUMBER RAW(@L) P-Boolean L<2 or L ø RAW(1) L>1 RAW(@L) P-Byte RAW(1) P-Character L<2001 or L ø CHAR(@L) L>4000 LONG 2000<L<4001 VARCHAR2(@L) P-Currency P-Date P-Datetime P-Decimal P-Double NUMBER(@L,@D) DATE DATE NUMBER(@L,@D) NUMBER(@L,@D) P-Float L=0 or L>126 or L ø FLOAT 0<L<127 FLOAT(@L) P-Integer P-Long Integer P-Long Real NUMBER(@L) NUMBER(@L) NUMBER(@L,@D) P-Numeric L=0 or L ø NUMBER L>0 and D ø NUMBER(@L) L>0 and D not ø NUMBER(@L,@D) P-Real P-Smallint P-String P-Text NUMBER(@L,@D) NUMBER(@L) LONG VARCHAR2(@L) 332 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes Oracle 11 Pivot --> Datatype (Oracle 11) Pivot Condition Datatype P-Time DATE P-Timestamp L>9 or L ø TIMESTAMP L<10 TIMESTAMP(@L) P-Tinyint NUMBER(@L) P-Varchar L>4000 or L=0 or L ø LONG 0<L<4001 VARCHAR2(@L) Datatype --> Pivot (Oracle 11) Datatype Condition Pivot BFILE BINARY_DOUBLE BINARY_FLOAT BLOB CHAR(L BYTE) CHAR(L CHAR) CHAR(L) P-Character CLOB DATE FLOAT FLOAT(L) P-Date P-Float P-Float INTERVAL DAY TO SECOND INTERVAL DAY TO SECOND(D) INTERVAL DAY(L) TO SECOND(D) INTERVAL YEAR TO MONTH INTERVAL YEAR(L) TO MONTH 333

16 Datatype --> Pivot (Oracle 11) Datatype Condition Pivot LONG P-String LONG RAW NCHAR(L) NCLOB NUMBER NUMBER(L) NUMBER(L,D) P-Numeric P-Numeric P-Numeric NVARCHAR2(L) RAW(1) RAW(L) P-Boolean P-Boolean ROWID TIMESTAMP P-Timestamp TIMESTAMP WITH LOCAL TIME ZONE TIMESTAMP WITH TIME ZONE TIMESTAMP(L) P-Timestamp TIMESTAMP(L) WITH LOCAL TIME ZONE TIMESTAMP(L) WITH TIME ZONE UROWID UROWID(L) VARCHAR2(L BYTE) VARCHAR2(L CHAR) VARCHAR2(L) P-Varchar 334 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes Oracle 8 ORACLE 8 Pivot --> Datatype (Oracle 8) Pivot Condition Datatype P-AutoIdentifier P-Binary NUMBER RAW(@L) P-Boolean L<2 or L ø RAW(1) L>1 RAW(@L) P-Byte RAW(1) P-Character L<2001 or L ø CHAR(@L) L>4000 LONG 2000<L<4001 VARCHAR2(@L) P-Currency P-Date P-Datetime P-Decimal P-Double P-Float P-Integer P-Long Integer P-Long Real P-Multimedia NUMBER(@L,@D) DATE DATE NUMBER(@L,@D) NUMBER(@L,@D) NUMBER(@L,@D) NUMBER(@L) NUMBER(@L) NUMBER(@L,@D) LONG RAW P-Numeric L=0 or L ø NUMBER L>0 et D ø NUMBER(@L) L>0 and D not ø NUMBER(@L,@D) P-Real P-Smallint P-String P-Text NUMBER(@L,@D) NUMBER(@L) LONG VARCHAR2(@L) 335

16 Pivot --> Datatype (Oracle 8) Pivot Condition Datatype P-Time P-Timestamp P-Tinyint P-Varbinary DATE ROWID NUMBER(@L) LONG RAW P-Varchar L>4000 or L=0 or L ø LONG 0<L<4001 VARCHAR2(@L) Datatype --> Pivot (Oracle 8) Datatype Condition Pivot CHAR(L) DATE LONG LONG RAW NUMBER NUMBER(L) NUMBER(L,D) RAW(1) RAW(L) ROWID VARCHAR2(L) P-Character P-Date P-String P-Multimedia P-Numeric P-Numeric P-Numeric P-Boolean P-Boolean P-Timestamp P-Varchar 336 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes Oracle 9i ORACLE 9I Pivot --> Datatype (Oracle 9i) Pivot Condition Datatype P-AutoIdentifier P-Binary NUMBER RAW(@L) P-Boolean L<2 or L ø RAW(1) L>1 RAW(@L) P-Byte P-Character Not Unicode and (L<2001 or L ø) RAW(1) CHAR(@L) L>4000 LONG Unicode and (L<2001 or L ø) Unicode and 2000<L<4001 Not Unicode and 2000<L<4001 NCHAR(@L) NVARCHAR2(@L) VARCHAR2(@L) P-Currency P-Date P-Datetime P-Decimal P-Double NUMBER(@L,@D) DATE DATE NUMBER(@L,@D) NUMBER(@L,@D) P-Float L=0 or L>126 or L ø FLOAT 0<L<127 FLOAT(@L) P-Integer P-Long Integer P-Long Real P-Multimedia NUMBER(@L) NUMBER(@L) NUMBER(@L,@D) LONG RAW 337

16 Pivot --> Datatype (Oracle 9i) Pivot Condition Datatype P-Numeric L=0 or L ø NUMBER L>0 and D ø NUMBER(@L) L>0 and D not ø NUMBER(@L,@D) P-Real P-Smallint P-String NUMBER(@L,@D) NUMBER(@L) LONG P-Text Unicode NVARCHAR2(@L) Not Unicode VARCHAR2(@L) P-Time DATE P-Timestamp L>9 or L ø TIMESTAMP L<10 TIMESTAMP(@L) P-Tinyint P-Varbinary NUMBER(@L) LONG RAW P-Varchar L>4000 or L=0 or L ø LONG Unicode and 0<L<4001 Not Unicode and 0<L<4001 NVARCHAR2(@L) VARCHAR2(@L) Datatype --> Pivot (Oracle 9i) Datatype Condition Pivot BFILE BLOB CHAR(L BYTE) CHAR(L CHAR) CHAR(L) P-Character CLOB DATE FLOAT FLOAT(L) P-Date P-Float P-Float 338 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes Oracle 9i Datatype --> Pivot (Oracle 9i) Datatype Condition Pivot INTERVAL DAY TO SECOND INTERVAL DAY TO SECOND(D) INTERVAL DAY(L) TO SECOND(D) INTERVAL YEAR TO MONTH INTERVAL YEAR(L) TO MONTH LONG LONG RAW P-String P-Multimedia NCLOB NUMBER NUMBER(L) NUMBER(L,D) RAW(1) RAW(L) P-Numeric P-Numeric P-Numeric P-Boolean P-Boolean ROWID TIMESTAMP P-Timestamp TIMESTAMP WITH LOCAL TIME ZONE TIMESTAMP WITH TIME ZONE TIMESTAMP(L) WITH LOCAL TIME ZONE TIMESTAMP(L) WITH TIME ZONE UROWID UROWID(L) VARCHAR2(L BYTE) VARCHAR2(L CHAR) VARCHAR2(L) P-Varchar 339

16 SQL ANSI/ISO 9075:1992 Pivot --> Datatype (SQL ANSI/ISO 9075:1992) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime P-Decimal P-Double P-Float P-Integer P-Long Integer P-Long Real P-Multimedia INTEGER BIT VARYING(@L) BIT(@L) BIT(@L) CHAR(@L) DECIMAL(@L,@D) DATE DATETIME DECIMAL(@L,@D) DOUBLE PRECISION FLOAT INTEGER INTEGER REAL BIT VARYING(@L) P-Numeric L>4 INTEGER L<5 or L ø SMALLINT P-Real P-Smallint P-String P-Text P-Time P-Timestamp P-Tinyint P-Varbinary REAL SMALLINT VARCHAR(@L) VARCHAR(@L) TIME DATETIME SMALLINT BIT VARYING(@L) 340 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes SQL ANSI/ISO 9075:1992 Pivot --> Datatype (SQL ANSI/ISO 9075:1992) Pivot Condition Datatype P-Varchar VARCHAR(@L) Datatype --> Pivot (SQL ANSI/ISO 9075:1992) Datatype Condition Pivot BIT VARYING(L) BIT(L) CHAR(L) DATE DATETIME DECIMAL(L,D) DOUBLE PRECISION FLOAT INTEGER REAL SMALLINT TIME VARCHAR(L) P-Multimedia P-Boolean P-Character P-Date P-Datetime P-Currency P-Double P-Float P-Integer P-Real P-Smallint P-Time P-Varchar 341

16 SQL SERVER 2000 Pivot --> Datatype (SQL Server 2000) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime P-Decimal P-Double P-Float P-Integer P-Long Integer P-Long Real P-Multimedia P-Numeric P-Real P-Smallint Not Unicode and (L<8001 or L ø) Unicode and (L<8001 or L ø) Unicode and L>8000 Not Unicode and L>8000 uniqueidentifier binary(@l) bit bit char(@l) nchar(@l) ntext text money smalldatetime datetime decimal(@l,@d) numeric(@l,@d) float int bigint real image numeric(@l,@d) real smallint P-String Unicode ntext Not Unicode text 342 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes SQL Server 2000 Pivot --> Datatype (SQL Server 2000) Pivot Condition Datatype P-Text Unicode ntext Not Unicode text P-Time P-Timestamp P-Tinyint P-Varbinary datetime timestamp tinyint varbinary(@l) P-Varchar Unicode and L>8000 ntext Unicode and (L<8001 or L ø) Not Unicode and L>8000 Not Unicode and (L<8001 or L ø) nvarchar(@l) text varchar(@l) P-Wide Character P-Wide String nchar(@l) nvarchar(@l) Datatype --> Pivot (SQL Server 2000) Datatype Condition Pivot bigint binary(l) bit char(l) datetime decimal(l,d) float image int money nchar(l) numeric(l,d) P-Long Integer P-Binary P-Boolean P-Character P-Datetime P-Decimal P-Float P-Multimedia P-Integer P-Currency P-Wide Character P-Numeric 343

16 Datatype --> Pivot (SQL Server 2000) Datatype Condition Pivot nvarchar(l) real smalldatetime smallint P-Wide String P-Real P-Date P-Smallint smallmoney sql_variant text timestamp tinyint uniqueidentifier varbinary(l) varchar(l) P-Text P-Timestamp P-Tinyint P-AutoIdentifier P-Varbinary P-Varchar 344 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes SQL Server 2005 SQL SERVER 2005 Pivot --> Datatype (SQL Server 2005) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte P-Character P-Currency P-Date P-Datetime P-Decimal P-Double P-Float P-Integer P-Long Integer P-Long Real P-Multimedia P-Numeric P-Real P-Smallint Not Unicode and (L<8001 or L ø) Unicode and (L<8001 or L ø) Unicode and L>8000 Not Unicode and L>8000 uniqueidentifier binary(@l) bit bit char(@l) nchar(@l) ntext text money smallmoney smalldatetime datetime decimal(@l,@d) numeric(@l,@d) float int bigint real image numeric(@l,@d) real smallint P-String Unicode ntext Not Unicode text 345

16 Pivot --> Datatype (SQL Server 2005) Pivot Condition Datatype P-Text Unicode ntext Not Unicode text P-Time P-Timestamp P-Tinyint P-Varbinary datetime timestamp tinyint varbinary(@l) P-Varchar Unicode and L>8000 ntext Unicode and (L<8001 or L ø) Not Unicode and L>8000 Not Unicode and (L<8001 or L ø) nvarchar(@l) text varchar(@l) P-Wide Character P-Wide String nchar(@l) nvarchar(@l) Datatype --> Pivot (SQL Server 2005) Datatype Condition Pivot bigint binary(l) bit char(l) datetime decimal(l,d) float image int money nchar(l) numeric(l,d) P-Long Integer P-Binary P-Boolean P-Character P-Datetime P-Decimal P-Float P-Multimedia P-Integer P-Currency P-Wide Character P-Numeric 346 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes SQL Server 2005 Datatype --> Pivot (SQL Server 2005) Datatype Condition Pivot nvarchar(l) real smalldatetime smallint smallmoney P-Wide String P-Real P-Date P-Smallint P-Currency sql_variant text timestamp tinyint uniqueidentifier varbinary(l) varchar(l) P-Text P-Timestamp P-Tinyint P-AutoIdentifier P-Varbinary P-Varchar 347

16 SQL SERVER 7 Pivot --> Datatype (SQL Server 7) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte timestamp binary(@l) bit bit P-Character 0<L<251 char(@l) L>250 or L=0 or L ø text P-Currency P-Date P-Datetime P-Decimal P-Double P-Float P-Integer P-Long Integer P-Long Real P-Multimedia money smalldatetime datetime decimal(@l,@d) numeric(@l,@d) float int int real image P-Numeric L>9 and D ø float 4<L<10 and D ø L not ø and D not ø 2<L<5 and D ø (L<3 and D ø) or L ø int numeric(@l,@d) smallint tinyint P-Real P-Smallint P-String P-Text real smallint char(@l) text 348 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes SQL Server 7 Pivot --> Datatype (SQL Server 7) Pivot Condition Datatype P-Time P-Timestamp P-Tinyint P-Varbinary P-Varchar datetime timestamp tinyint varbinary(@l) varchar(@l) Datatype --> Pivot (SQL Server 7) Datatype Condition Pivot binary(l) bit char(l) datetime decimal(l,d) float image int money numeric(l,d) real smalldatetime smallint P-Binary P-Boolean P-String P-Datetime P-Decimal P-Float P-Multimedia P-Integer P-Currency P-Double P-Real P-Date P-Smallint smallmoney text timestamp tinyint varbinary(l) varchar(l) P-Character P-Timestamp P-Tinyint P-Varbinary P-Varchar 349

16 SYBASE ADAPTIVE SERVER 11 Pivot --> Datatype (Sybase Adaptive Server 11) Pivot Condition Datatype P-AutoIdentifier P-Binary P-Boolean P-Byte timestamp binary(@l) bit bit P-Character Not Unicode and L<256 char(@l) Unicode and L<256 nchar(@l) L>255 or L ø text P-Currency P-Date P-Datetime money smalldatetime datetime P-Decimal 0<L<39 and D not ø decimal(@l,@d) (L>9 and D ø) or (1<L<38 and D not ø) 4<L<10 and D ø 2<L<5 and D ø (L<3 and D ø) or L ø float int smallint tinyint P-Double P-Float P-Integer P-Long Integer P-Long Real P-Multimedia double precision float int int real image 350 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes Sybase Adaptive Server 11 Pivot --> Datatype (Sybase Adaptive Server 11) Pivot Condition Datatype P-Numeric P-Real P-Smallint (L>9 and D ø) or (1<L<38 and D not ø) 4<L<10 and D ø 0<L<39 and D not ø 2<L<5 and D ø (L<3 and D ø) or L ø float int numeric(@l,@d) smallint tinyint real smallint P-String Not Unicode char(@l) Unicode nchar(@l) P-Text P-Time P-Timestamp P-Tinyint P-Varbinary text datetime timestamp tinyint varbinary(@l) P-Varchar Unicode nvarchar(@l) Not Unicode varchar(@l) Datatype --> Pivot (Sybase Adaptive Server 11) Datatype Condition Pivot binary(l) bit char(l) datetime decimal(l,d) double precision float image int P-Binary P-Boolean P-String P-Datetime P-Decimal P-Double P-Float P-Multimedia P-Integer 351

16 Datatype --> Pivot (Sybase Adaptive Server 11) Datatype Condition Pivot money numeric(l,d) real smalldatetime smallint P-Currency P-Numeric P-Real P-Date P-Smallint smallmoney text timestamp tinyint varbinary(l) varchar(l) P-Character P-Timestamp P-Tinyint P-Varbinary P-Varchar 352 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes Sybase Adaptive Server 12.5 SYBASE ADAPTIVE SERVER 12.5 Pivot --> Datatype (Sybase Adaptive Server 12.5) Pivot Condition Datatype P-AutoIdentifier timestamp P-Binary L=0 or L ø binary L > 0 binary(@l) P-Boolean P-Byte P-Character Not Unicode and (L=0 or L ø) Not Unicode and 0<L<256 bit bit char char(@l) L>255 text Unicode and (L<256 or L ø) unichar(@l) P-Currency P-Date P-Datetime money smalldatetime datetime P-Decimal 0<L<39 and D not ø decimal(@l,@d) (L>9 and D ø) or ((L<1 or L>38) and D not ø) 4<L<10 and D ø 2<L<5 and D ø L ø or (L<3 and D ø) float int smallint tinyint P-Double P-Float P-Integer P-Long Integer P-Long Real P-Multimedia double precision float int int real image 353

16 Pivot --> Datatype (Sybase Adaptive Server 12.5) Pivot Condition Datatype P-Numeric P-Real P-Smallint P-String (L>9 and D ø) or ((L<1 or L>38) and D not ø) 4<L<10 and D ø 0<L<39 and D not ø 2<L<5 and D ø L ø or (L<3 and D ø) Not Unicode and (L=0 or L ø) Not Unicode and (0<L<256) float int numeric(@l,@d) smallint tinyint real smallint char char(@l) L>255 text Unicode and (L<256 or L ø) unichar(@l) P-Text P-Time P-Timestamp P-Tinyint text datetime timestamp tinyint P-Varbinary L=0 or L ø varbinary L > 0 varbinary(@l) P-Varchar L>255 text Unicode and (L<256 or L ø) Not Unicode and (L=0 or L ø) Not Unicode and 0<L<256 univarchar(@l) varchar varchar(@l) Datatype --> Pivot (Sybase Adaptive Server 12.5) Datatype Condition Pivot binary P-Binary 354 MEGA Database Builder

Tableaux de correspondances entre types pivots et datatypes Sybase Adaptive Server 12.5 Datatype --> Pivot (Sybase Adaptive Server 12.5) Datatype Condition Pivot binary(l) bit char char(l) datetime P-Binary P-Boolean P-Character P-Character P-Datetime decimal decimal(l) decimal(l,d) double precision float image int money P-Decimal P-Double P-Float P-Multimedia P-Integer P-Currency nchar(l) numeric numeric(l) numeric(l,d) P-Numeric nvarchar(l) real smalldatetime smallint P-Real P-Date P-Smallint smallmoney text timestamp tinyint varbinary varbinary(l) varchar varchar(l) P-Text P-Timestamp P-Tinyint P-Varbinary P-Varbinary P-Varchar P-Varchar 355

16 356 MEGA Database Builder

INDEX A B abstraite entité............................. 86 agrégation définition......................... 267 rôle.............................. 36 ALTER TABLE........................ 224 analyseur syntaxique................. 225 arranger dessin............................ 68 association.......................... 31 "plus que binaire".................... 38 agrégation......................... 36 composition........................ 37 contrainte.......................... 87 créer............................. 32 définition......................... 267 import PowerAMC................... 252 non-contrainte...................... 91 réflexive créer........................... 37 synchronisation...................... 87 tout/partie......................... 36 attribut............................. 29 affecter un type.................... 152 définir............................ 30 définition......................... 267 héritage........................... 31 identifiant.......................... 47 import PowerAMC................... 252 mutabilité.......................... 60 option SQL......................... 50 propriétés.......................... 60 type.............................. 60 type de données.................... 149 valeur initiale....................... 60 barycentrique réorganisation...................... 68 base cible relire..........................216 base de données clause SQL........................207 contrôler.......................... 83 créer............................ 64 définition.........................267 éditeur...........................122 extraire la description.................230 générer..........................173 modèle........................... 65 modélisation....................... 63 objets............................ 70 options de génération.................184 options de synchronisation.............114 paramétrer........................113 profil de connexion...................219 propriétés......................... 64 propriétés physiques.................206 règle de modélisation................. 83 synchroniser....................... 92 vue.............................194 bibliothèque d objets importer.......................... 65 C cible de génération modifier..........................184 357

Index paramétrer........................ 181 classe.............................. 57 abstraite.......................... 58 caractéristiques..................... 57 définition..................... 267, 269 stéréotype......................... 58 classe d association................... 62 définition......................... 267 clause SELECT clé étrangère...................... 237 clé primaire....................... 236 format........................... 236 index............................ 238 clause SQL ajouter.......................... 207 clé créer............................. 75 dans dessin...................... 68 définition......................... 268 étrangère....................... 70, 76 créer.......................... 68 identifiant......................... 49 modifier........................... 74 primaire........................ 70, 76 synchronisation..................... 79 colonne............................. 70 ajouter........................... 78 créer............................. 73 datatype......................... 154 définition......................... 268 nom local.......................... 73 nom SQL.......................... 73 valeur par défaut.................... 73 COMMENT ON....................... 224 commentaire......................... 59 diagramme........................ 25 compléments objets........................... 199 composant générer.......................... 179 composition définition......................... 268 rôle.............................. 37 compte-rendu extraction ODBC.................... 232 condition équivalence de langage............... 168 paramétrer sur les liens..................... 167 connexion profil............................ 219 contrainte........................... 43 créer............................. 43 définition......................... 268 contrôler base de données..................... 83 modèle de données...................51 convertisseur........................ 224 copier version de SGBD.................... 183 correspondance conceptuel/logique.................. 121 créer............................ 122 dessin........................... 127 détails (synchronisation).............. 124 éditeur........................... 122 propriétés (synchronisation)......... 99, 124 rapport........................... 125 sens.............................. 99 source........................... 126 supprimer......................... 123 CREATE INDEX.................. 190, 224 CREATE TABLE.................. 187, 224 CREATE TABLESPACE................. 224 CREATE VIEW....................... 191 D datatype colonne.......................... 154 correspondance type pivot...................... 154 créer............................ 164 exemple pour Oracle............... 164 exemple pour SQL Server........... 169 reconnaissance par ODBC.............. 221 vérifier........................... 169 DBMS name......................... 235 dénormalisation...................... 129 conceptuelle....................... 134 logique........................... 142 dessin synchronisation..................... 127 diagramme affichage..........................24 commenter......................... 25 fermer............................ 26 import ERwin...................... 243 import PowerAMC................... 252 réorganisation automatique............. 68 diagramme de données créer.............................24 dessiner........................... 27 diagramme relationnel.................67 définition......................... 268 paramétrer l affichage.................69 358 MEGA Database Builder

Index discriminant......................... 42 données modéliser.......................... 22 dupliquer version de SGBD.................... 183 formalisme dénormalisation.....................129 formalisme relationnel................. 67 formes normales..................... 45 E éditeur mode physique..................... 206 éditeur de base de données............ 122 entité............................... 27 abstraite.......................... 86 créer............................. 28 discriminant........................ 42 généralisation....................... 41 héritage multiple..................... 41 identifiant.......................... 47 nom SQL.......................... 49 réalisée........................... 87 synchronisation...................... 86 ERwin import........................... 239 état objet (synchronisation)............... 125 extraction ODBC fichier de compte-rendu............... 232 fichier Odwdbex.ini.................. 234 fichier résultat exemple....................... 233 transférer...................... 232 personnaliser...................... 234 restrictions........................ 235 extraire description de la base................ 230 G généralisation....................... 39 créer............................ 41 définition.........................269 génération introduction....................... 15 noms............................115 SQL lancer.........................173 génération SQL clause CREATE VIEW.................191 clause FOREIGN KEY.................188 clause PRIMARY KEY.................188 clause UNIQUE.....................190 gestion de NOT NULL.................187 instruction CREATE INDEX.............190 instruction CREATE TABLE..............187 paramétrer........................181 base de données..................184 paramétrer la version de SGBD..........181 règles............................187 syntaxe..........................187 générer base de données....................173 composant........................179 groupement de données définir...........................198 rétro-génération....................227 spécifier les tables et index.............199 F H fichier ERwin........................... 242 import ERwin...................... 240 import PowerAMC................... 250 résultat de l extraction ODBC........... 233 xmdb.xdr......................... 221 figé synchronisation...................... 97 FOREIGN KEY clause........................... 188 héritage attribut........................... 31 multiple.......................... 41 hiérarchique réorganisation...................... 68 359

Index I identifiant composé.......................... 49 définir............................ 47 définition......................... 269 entité............................ 47 implicite........................... 47 relatif............................ 48 identifiant hiérarchique................. 48 Import Oracle Designer.................... 263 import fichier ERwin...................... 239 PowerAMC........................ 249 importer bibliothèque d objets.................. 65 version de SGBD..................... 65 index............................... 70 créer............................. 77 dans dessin...................... 68 définition......................... 269 modifier........................... 74 intégrité référentielle............. 188, 203 J jointure vue............................. 195 L lancer MEGA Database..................... 20 lien paramétrer conditions................ 167 métamodèle définition......................... 269 mg_dbex.dll........................ 230 mgwdbx32.exe...................... 230 mode physique base de données.................... 206 modèle base de données.....................65 correspondance conceptuel/logique....... 121 détenteur......................... 112 modèle de données contrôler..........................51 créer.............................23 définition..........................19 dénormalisation.................... 129 ERwin........................... 242 PowerAMC........................ 251 modélisation logique............................ 63 modéliser données........................... 22 modifier cible de génération.................. 184 mot-clé définition......................... 269 multiplicité définition...................... 33, 270 rôle.............................. 35 N nom colonne........................... 73 paramètres de génération............. 115 nom SQL entité.............................49 normalisation règles............................ 45 NOT NULL.......................... 187 notation import ERwin...................... 242 PowerAMC........................ 251 M O masque SQL saisir............................ 118 objet base de données mode physique................... 206 360 MEGA Database Builder

Index complément....................... 199 définition......................... 270 synchronisation correspondance.................. 124 état.......................... 125 protéger........................ 97 ODBC reconnaissance des datatypes........... 221 Oracle Designer import........................... 263 ordre rôle.............................. 62 orthogonale réorganisation....................... 68 P package import PowerAMC................... 253 paquetage définition......................... 270 type de données.................... 150 paramétrer base de données.................... 113 conditions sur les liens..................... 167 génération SQL..................... 181 base de données................. 184 version de SGBD.................... 181 périmètre synchronisation...................... 99 persistance définition......................... 270 portée cible.......................... 62 PowerAMC import........................... 249 PRIMARY KEY....................... 188 procédure stockée.......................... 204 profil connexion......................... 219 projet définition......................... 270 propriétés classe............................ 57 protéger objet (synchronisation)................ 97 R réalisé entité............................ 87 règle modélisation....................... 51 règle de modélisation base de données.................... 83 règles de normalisation................ 45 réinitialisation.......................218 relation PowerAMC.........................252 relire base cible.........................216 réorganiser dessin........................... 68 rétro-génération configuration requise.................216 définition.........................215 lancer............................216 propriétés physiques.................227 scripts DB2........................224 rôle agrégation........................ 36 association définition....................... 33 composition....................... 37 définition.........................270 multiplicité........................ 35 tout/partie........................ 37 S saisir masque SQL.......................118 script DB2 problèmes.........................225 rétro-générer......................224 script SQL..........................224 sens synchronisation..................... 99 SGBD importer.......................... 65 options de synchronisation.............115 propriétés physiques.................206 synchronisation.....................113 version créer..........................183 dupliquer.......................183 361

Index SGBD et versions supportées........... 181 sous-entité.......................... 40 SQL attribut........................... 50 génération lancer......................... 173 masque.......................... 118 stéréotype acteur............................ 58 classe............................ 58 contrôle........................... 58 définition......................... 270 entité............................ 58 énumération........................ 58 expression......................... 58 type élémentaire..................... 58 subject area import ERwin...................... 242 synchonisation nom des objets..................... 115 synchronisation association......................... 87 correspondance détails........................ 124 propriétés................... 99, 124 supprimer...................... 123 définition.......................... 85 dessin........................... 127 entité............................ 86 entité abstraite...................... 86 état des objets..................... 125 figé.............................. 97 introduction........................ 15 lancer............................ 92 modèle détenteur................... 112 modifications...................... 104 paramétrer........................ 113 périmètre.......................... 99 protéger des objets................... 97 règles............................ 86 relancer.......................... 104 sens............................. 99 SGBD cible........................ 113 spécifier les clés..................... 79 synchronisation réduite............... 100 synchroniser base de données..................... 92 syntaxe génération SQL..................... 187 vérifier.......................... 225 T table...............................70 créer.............................71 définition......................... 271 tablespace Voir groupement de données textes.............................. 59 tout/partie agrégation......................... 36 composition........................37 rôle.............................. 37 traçabilité import ERwin...................... 247 import PowerAMC................... 262 trigger créer............................ 201 définir........................... 201 type affecter à un attribut................. 152 créer.............................61 type de données..................... 149 composé......................... 159 import ERwin...................... 243 import PowerAMC................... 253 type pivot correspondance datatype.............. 154 U UNIQUE............................ 190 utilitaire d extraction ODBC définition......................... 229 installer.......................... 230 V valeur colonne........................... 73 valeur initiale génération attribut...................73 verrous croisés....................... 89 version de SGBD créer............................ 183 dupliquer......................... 183 importer........................... 65 362 MEGA Database Builder

Index vue créer............................ 194 définition SQL...................... 195 jointure.......................... 195 X xmdb.xdr........................... 221 datatype ajouter une correspondance......... 222 363

Index 364 MEGA Database Builder