Contents |
Migration de base de données
Modèle généré par DB Designer
DBDesigner 4 is a visual database design system that integrates database design, modeling, creation and maintenance into a single, seamless environment. It combines professional features and a clear and simple user interface to offer the most efficient way to handle your databases.Source : fabFORCE.net
Organisation du fichier :
- Noeud racine de la structure de BDD : /DBMODEL/METADATA
- ==> /DBMODEL/SETTINGS ne comprend que des informations concernant le logiciel..
Organisation du noeud METADATA :
<METADATA> <REGIONS>....</REGIONS> //Ces régions que l'on pourrait assimiler à des sous- packages ne sont que purement graphiques et aucunement liées aux tables ==> non-utilisables <TABLES> //Conteneur des tables <TABLE> //Une table <COLUMNS> //Conteneur des attributs de la table <COLUMN/> //Noeud attribut ... <COLUMN/> //Noeud attribut </COLUMNS> <RELATIONS_START> //Conteneur des références aux relations «sortantes» <RELATION_START/> //Référence à une relation </RELATIONS_START> <RELATIONS_END> //Conteneur des références aux relations «entrantes» <RELATION_END/> //Référence à une relation </RELATIONS_END> <INDICES> //Conteneur des index de la tables <INDEX> <INDEXCOLUMNS> //Conteneur du ou des attribut(s) formant l'index <INDEXCOLUMN/> //Référence un attribut </INDEXCOLUMNS> </INDEX> </INDICES> </TABLE> </TABLES> <RELATIONS> //Conteneur des relations définies pour le diagramme <RELATION .... /> //Description de la relation (attributs uniquement) </RELATIONS> </METADATA> <Les noeuds suivants ne contiennt pas d'infos intéressantes pour nous.../>
MetaModel intermédiaire
Un meta-modèle intermédiaire a été créé dans le but de servir d'intermédiaire entre le modèle source et le modèle source. Ce modèle peut être réutilisé pour d'autres migrations, quitte à le faire évoluer... Le but de ce méta-modèle est de conserver un maximum d'informations sur la structure de la BDD.
- XML Schema : InterMetaModel/InterMetaModelSchema.xsd
- RelaxNG : InterMetaModel/InterMetaModelSchema.rng
Ce meta-modèle sert de couche intermédiaire entre le formalisme Entité-Relation de toute BDD relationnelle et le modèle Classe-Association de BlueXML. Il serait intéressant de s'en servir pour toutes les migrations de BDD vers BlueXML.
Feuilles de style XSLT
Deux stylesheets sont rédigées :
- DBD_to_InterMetaModel.xsl
- InterMetaModel_to_BlueXML.xsl
Après ces deux transformations, le fichier xml produit est au format BlueXML, il faut lui adjoindre l'extension '.obl' pour l'ouvrir directement avec TopCased.
A améliorer :
- Gestion des types ENUM et SET en base de données : ceux-ci doivent être transcrits en éléments 'Enumeration'. Les valeurs prises par les attributs de BDD sont présentes dans l'attribut DatatypeParams des noeuds COLUMN (côte DBDesigner).
- Faire des tables de conversions en tête de fichiers pour les types de données des attributs au lieu de mon horrible conditionnelle <xsl:if/> ...
- Ajouter l'assignation au schéma si celui-ci est suffisamment stable
Modèle BlueXML
Le modèle BlueXML s'appuie sur des noeuds conteneurs <Package> contenant des classes <classSet> et des associations <associationSet>..
Génération du diagramme de classe avec TopCased :
Le fichier obtenu est désormais exploitable par notre modeler.
Après l'import dans BlueXML Developer Studio, initialiser un diagramme obldi à partir du modèle obl, et l'ouvrir. Dans le cadre 'Outline' en bas à gauche, créer un diagramme (de classe) au même niveau que les classes et associations du modèles. L'ouvrir et faire ensuite glisser les classes et associations du modèle vers la zone de dessin. Les classes ET les associations doivent être liées entre elles.
