Modélisation UML & SysML

Expertise et articles Blog sur UML, SysML, et Enterprise Architect de Sparx Systems

vendredi, 29 décembre 2017 12:05

Import schéma base de données Java Apache Derby avec Enterprise Architect

Écrit par
Évaluer cet article
(0 Votes)

import base de données apache derby sparx enterprise architect

Introduction

Cet article est un partage d'expérience sur l'intégration de l'outil de modélisation Enterprise Architect avec la base de données Apache Derby.

  • DERBY est une base de données relationnelle Java (sous-projet Apache DB).
  • Avantages du moteur de base de données Apache Derby :
    • Open Source.
    • Empreinte de petite taille (2/3 Mo).
    • Multiplateforme.
    • Compatible JDBC et SQL.
    • Intégration dans une solution Java.

Enterprise Architect propose des fonctions de rétro-ingénierie compatible avec la plupart des moteurs de base de données (MySQL, Ms SQL Server, PostgreSQL, Oracle, etc.). EA requiert une connexion ODBC pour interroger la base de données et récupérer la définition du schéma relationnel de base de données.

Le projet sur lequel je suis intervenu avait besoin de générer sous EA les modèles de données pour une base Derby existante, ce en vue de l'analyse et de la conception de sa future version. En l'absence d'un support Derby sous EA, la solution s'est portée sur la réalisation d'un script pour importer le contenu d'un fichier DDL. Derby permet en effet de générer un fichier DDL (contenu SQL) via la commande dblook.

La solution d'intégration entre DERBY et EA s'est opérée en deux étapes :

  • Définition dans EA des data types DERBY.
  • Script d'import de fichiers DDL issus de DERBY.

Définition des data type Derby

Les classes UML créées sous Enterprise Architect contiennent la propriété « Language » pour choisir les data types associés lors de la création d'attributs. Par exemple la classe suivante est associée au langage Java, et propose ainsi les data types Java pour ses attributs.

EA permet de définir un nouveau "produit" via le menu (EA12) Project > Settings > Code Engineering Data Types. J'ai donc créé un produit "DerbyAnalysis" en m'appuyant sur la documentation disponible ici.

Résultat : DerbyAnalysis est proposé comme "language" de classe pour disposer des data types supportés.

apache derby sparx enterprise architect integration datatypes

Remarque : ce langage peut être activé par défaut pour toute nouvelle classe UML sur le projet en cours via le menu PROJECT > Settings > Project Options, onglet Source Code Engineering.

Cette première étape permettra aux utilisateurs de travailler sur les modèles de classe UML pour réaliser la future version de la base de données.

Script d'import DDL Derby

Un script VB a été réalisé sous EA pour traiter le contenu d'un fichier DDL issu d'une base de données Derby, et de générer des classes "DerbyAnalysis".

Voici un exemple de contenu SQL généré via la commande dblook (ex : dblook -d 'jdbc:derby:MyDbTest' -o derby.sql).:

DROP TABLE "TABLE1";
DROP TABLE "TABLE2";

CREATE TABLE "TABLE1" (
"ID" INTEGER DEFAULT AUTOINCREMENT: start 1 increment 1 NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 ,INCREMENT BY 1),
"NAME" VARCHAR(50),
"DETAILS" BLOB(2147483647),
"ISENABLED" SMALLINT DEFAULT 0
);

CREATE TABLE "TABLE2" (
"ID" INTEGER DEFAULT AUTOINCREMENT: start 1 increment 1 NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 ,INCREMENT BY 1),
"VALUE1" DOUBLE NOT NULL,
"VALUE2" DOUBLE,
"ID_TABLE1" INTEGER
);

ALTER TABLE "TABLE1" ADD CONSTRAINT "PK1" PRIMARY KEY ("ID");
ALTER TABLE "TABLE2" ADD CONSTRAINT "PK2" PRIMARY KEY ("ID");

ALTER TABLE "TABLE2" ADD CONSTRAINT "FK_TABLE2_TABLE1" FOREIGN KEY ("ID_TABLE1")
REFERENCES "TABLE1" ("ID")
ON DELETE CASCADE;

Utilisation du script d'import DDL Derby :

  • Clic droit sur le paquetage cible du modèle EA dans le Project Browser > Scripts > Derby DDL Import.
  • Une fenêtre de dialogue propose de sélectionner un répertoire qui contient le ou les fichiers DDL à importer. A noter que ce script traite tous les fichiers avec une extension « .sql » présents dans ce répertoire.
  • La fin d'exécution de l'import est notifiée avec quelques chiffres sur les classes importées, générées dans EA.

apache derby sparx enterprise architect import confirmed

Résultat :

apache derby sparx enterprise architect import result

 Remarques :

  • Les classes UML ont été créées avec le langage DerbyAnalysis afin de disposer des ‘data types’ Derby.
  • Les colonnes ID de chaque table contiennent AS IDENTITY ; les attributs correspondants ont été créés avec l’option isID = true (cf. indication {id}).
  • La contrainte Foreign Key associée à une colonne a donné lieu à la création d’une association de la Foreign Key vers la Primary Key (cf. diagramme ci-dessus).
  • L'indication DEFAULT a été traitée pour générer la valeur par défaut (cf. Table1.IsEnabled).
  • L'indication NOT NULL a donné lieu à une multiplicité minimum de 1 (exemple cf. Table2.Value1), et l'absence de cette information a donné lieu à une multiplicité minimum de 0.
  • Si une longueur maximum est indiquée pour la colonne, par exemple « BLOB(2147483647) », cette valeur est copiée dans la multiplicité maximum (cf. Table1.Details).
  •  La contrainte Primary Key associée à une colonne a donné lieu à la création d’une Tagged Value isPK sur l’attribut correspondant :

apache derby sparx enterprise architect import result primary key pk