Disposer d’un MCD (modèle conceptuel de données) lorsqu’on
travaille sur une requête SQL impliquant différentes tables
représente un gain de temps.
Il est en effet plus rapide de jeter un coup d’oeil sur un MCD
afin de repérer quels sont les champs qui lient une table à une
autre plutôt que d’enchaîner les “DESC ma_table”, puis repérer la
clé primaire et les éventuelles clés étrangères, et rebolote sur
la ou les tables de destination…
La prochaine série d’articles sur les index MySQL va nous amener
à enchaîner quelques requêtes sur une des deux bases d’exemple
disponibles sur le site de MySQL : world et sakila,
le prétexte est donc tout trouvé pour évoquer ici la solution que
j’ai retenu pour obtenir le MCD de ces tables : DBDesigner 4.
Cet outil n’est pas nouveau, son successeur officiel est même déjà connu, il s’agit de MySQL Workbench. Celui-ci n’étant pas encore disponible sous linux, nous utiliserons son ancêtre et plus particulièrement sa fonctionnalité de “reverse engineering” : une fois connecté à votre base, DBDesigner 4 va générer sous forme graphique vos tables, leurs descriptions, et si tout se passe bien, les relations entre vos tables.
Installation (fastidieuse) sous linux
L’installation de DBDesigner 4 sous linux (ubuntu 8.04 pour ma
part) n’est pas de tout repos… J’ai rencontré toutes les erreurs
potentielles croisées sur les différents tutoriels sur le sujet.
Résultat des courses : il apparaît plus simple d’installer
DBDesigner 4 en passant par wine, les problèmes de librairies
manquantes disparaissent et les polices sont plus
travaillées.
Si néanmoins vous souhaitez vous passer de wine, voici quelques
pistes : http://wiki.splitbrain.org/dbdesigner et un
how-to tiré des forums ubuntu. Des solutions sont
proposées pour ces fameuses libraries manquantes, cela dit
j’avais toujours des problèmes malgré ces manipulations.
Une fois wine installé (apt-get install wine
),
téléchargez simplement le fichier
d’installation de DBDesigner 4 pour windows.
L’installation s’effectue simplement :
root@u200:/opt# wine
DBDesigner4.0.5.6_Setup.exe
Si vous êtes sous MySQL 5, vous devez modifier le mot de
passe de l’utilisateur à partir duquel vous vous
connectez à DBDesigner de la façon suivante :
mysql> SET PASSWORD FOR 'dbdesign'@'localhost' =
OLD_PASSWORD('dbdesign');
Depuis sa version 5, MySQL utilise en effet un mécanisme
d’authentification qui est incompatible avec les versions
précédentes (< 4.1). Afin d’assurer une rétro compatibilité,
il est néanmoins possible avec MySQL 5 d’utiliser la commande
“OLD_PASSWORD“, le format utilisé pour le mot
de passe sera alors compatible avec MySQL 4 (short hash contre
long hash pour MySQL 5).
Lancement de l’application:
root@u200:~/.wine/drive_c/Program Files/fabFORCE# wine
DBDesigner4.exe
Obtenir le schéma de sa base
Pour générer votre MCD, et selon votre langue d’installation :
- Choisissez le menu “Database”, puis “Reverse Engineering”.
- Selectionnez une connexion à la base de données ou créez la vôtre : “Localhost 127.0.0.1″ par exemple, puis renseignez vos login/pwd et validez, n’oubliez pas la commande “OLD_PASSWORD” si besoin.
- La fenêtre “Reverse Engineering” affiche alors la liste des tables de la base, par défaut elles sont toutes cochées. Remarquez un peu plus bas l’option “Build Relations“, cochez-là puis indiquez “Build Relations based on primary keys”. C’est grâce à cette option que vous indiquez à DBDesigner de relier vos tables entre elles (si possible).
- Si tout s’est bien passé, l’étape suivante affiche vos tables, leurs champs, leurs clés…
Remarques :
- DBDesigner ne parvient pas à joindre les tables de la base “world” entre elles, les noms des clés primaires sont différents et les clés étrangères absentes de la définition des tables (MyISAM), vous pouvez néanmoins rajouter vos différentes relations à la main.
- En ce qui concerne la base “sakila” les relations entre les tables sont bien présentes :
Vous pouvez à présent d’un seul coup d’oeil construire vos requêtes, les jointures entre les tables sont ici évidentes.
- La console dans laquelle vous lancez DBDesigner va peut-être contenir quelques messages d’erreur du type:
QPixmap::operator=: Cannot assign to pixmap during
painting
QPopupMenu: (unnamed) Popup has invalid menu item
Cela n’a pas bloqué le comportement de l’application lors de mes tests cependant DBDesigner a la facheuse tendance à ouvrir des boites de dialogues sous les fenêtres déjà existantes, n’hésitez pas notamment lors de votre connexion à la base, à déplacer vos fenêtres (la principale et celle consacrée au reverse engineering) pour faire apparaître la boîte de dialogue vous invitant à renseigner vos identifiants de connexion. A noter qu’il existe là aussi des solutions pour régler ce problème de pop-up, cf les tutoriels cités en début d’article.
Pour explorer les autres fonctionnalités de DBDesigner 4, ou bien encore tester (sous windows uniquement pour le moment) son successeur MySQL Workbench, rendez-vous sur fabforce.net, vous y trouverez les fichiers d’installation, des captures d’écran et de la documentation.
Si vous connaissez d’autres outils intéressants disposant d’un module de “reverse engineering”, partagez-les dans les commentaires, ils sont là pour ça.