Permettre l'infrastructure de tables liées avec phpMyAdmin
Date de publication : 18 janvier 2008
Par
Samuel SAYAG
phpMyAdmin est une interface sous forme de site permettant
d'administrer une base de données MySQL.
On peut ainsi créer une base, des tables, des champs etc.
Un artefact utilisé lors de la création d'une base est la relation entre tables.
Il est possible d'utiliser phpMyAdmin pour créer des relations
entre tables via l'interface mais ceci exige de configurer phpMyAdmin
car cette interface n'offre pas directement la possibilité de le faire.
Cet article a pour but de montrer rapidement comment s'y prendre.
D'autres options plus ou moins utiles s'offriront à l'utilisateur
en plus de la création de relations.
I. Introduction
I-A. Pour qui c'est fait...
I-B. ... et pour quoi faire...
II. Installation de phpMyAdmin
III. Import du script sous phpmyAdmin
IV. Configuration de l'infrastructure de tables liées
IV-A. Le mode manuel
IV-B. Le mode graphique
IV-B-1. Configurer phpMyAdmin
IV-B-2. Créer la base
V. Conclusion
V-A. La création graphique d'une relation entre tables
V-B. L'enregistrement de requêtes dans les signets
V-C. La création de PDF
I. Introduction
I-A. Pour qui c'est fait...
Bonjour à tous, l'idée de ce tutoriel m'est venue après avoir
passé une petite soirée à essayer d'avoir sous phpMyAdmin
la possibilité de lier deux tables entre elles de manière graphique.
Cela peut sans doute paraître idiot pour les personnes avancées,
experts qui écrivent couramment le LDD
(langage de définition des données, ou DDL (
Data Definition Language),
mais pour les petits novices qui veulent à tout prix retrouver
sous phpMyAdmin les mêmes services que dans
Access
(ça y'est le mot est lâché !), cela peut s'avérer décourageant.
I-B. ... et pour quoi faire...
Bref, vous apprendrez uniquement ici à configurer phpMyAdmin pour qu'il puisse
(aux dires de la documentation) :
- Effectuer des relations entre vos tables. Si cela ne vous dit rien, n'allez pas plus loin et lisez plutôt un tutoriel Merise ou UML, et découvrez la « relation » et tous ses secrets (voir ici) ;
- Mettre en favoris vos requêtes préférées ;
- Afficher des info-bulles sur les champs de vos tables ;
- Générer un PDF du diagramme de tables de votre base de données (et à afficher amoureusement dans votre chambre :)) ;
- Stocker des commentaires sur chaque colonne de vos tables ;
- Avoir un historique SQL lorsque vous travaillez sous phpMyAdmin ;
- Effectuer les relations décrites au point un en mode graphique.
Voilà c'est tout, d'aucuns diront que c'est déjà ça !
II. Installation de phpMyAdmin
Je ne m'étendrai pas ici sur l'installation de
phpMyAdmin qui s'accompagne en général du serveur
MySQL, d'Apache et de PHP. Vous pouvez installer
ceux-ci séparément, ou avec des installateurs de
plus en plus conviviaux.
Une petite liste (non exhaustive) de liens :
- Séparément, l'excellent tuto que voici
- Un comparatif ici même
Je vais considérer que vous avez trouvé votre
bonheur avec un des liens ci-dessus ou que vous
vous êtes débrouillé par vous même, en tout cas
que l'installation est maintenant opérationnelle.
III. Import du script sous phpmyAdmin
Maintenant, nous allons importer cette base vide.
- Lancez phpmyAdmin si ce n'est déjà fait ;
- Cette icône permet d'ouvrir le module d'import de code SQL :
- Cliquez dessus, vous devriez voir apparaître cette fenêtre :

Figure 1. Fenêtre du module d'import de code SQL
- Cliquez sur "Importez les fichiers", puis sur "Parcourir", sélectionnez votre fichier sauvegardé et cliquez sur "Exécuter".
IV. Configuration de l'infrastructure de tables liées
L'objectif est, maintenant, dans notre base,
de pouvoir "associer" un pays à chaque contact.
Pour cela, il faut "lier" par une contrainte les
deux tables en indiquant au moteur de bases de données
que l'identifiant du pays dans la table "contact" doit
avoir une des valeurs prises par l'identifiant de la table "pays".
IV-A. Le mode manuel
Cela peut généralement se faire par une commande dans le goût suivant :
| Script de création d'un contrainte de clé étrangère. |
ALTER TABLE t_contact
ADD 'nom_de_ma_contrainte_non_obligatoire'
FOREIGN KEY 'id_pays'
REFERENCE t_pays ('id_pays')
ON DELETE NO ACTION
ON UPDATE CASCADE
|
Mais, comme sur plusieurs SGBD actuels,
il y a maintenant possibilité de le faire
directement de manière graphique.
IV-B. Le mode graphique
Nous allons maintenant installer le module
graphique sous phpMyAdmin. Lorsque vous vous
placez sous le menu de votre base de données, vous devez voir quelque chose comme ceci :
Lorsque j'ai voulu ajouter la contrainte
décrite précédemment, je suis allé naturellement
dans "Opération" et j'ai eu la surprise de voir ceci
en bas de page (voir figure 3) :
En cliquant "ici" comme ils disent, on apprend en anglais
ou en français que les relations entre les tables sont
gouvernées par une table que l'on peut ajouter, au choix,
dans sa propre base de données ou dans une autre base de données.
Le second choix vous laisse la possibilité de répertorier les
relations entre tables mais pour plusieurs bases différentes.
C'est une solution qui paraît, a priori, plus propre.
Nous allons l'adopter.
Vous avez remarqué qu'au début du tutoriel,
il est dit que l'installation va également permettre
de mettre en favoris vos requêtes, mettre des info-bulles
sur les champs de vos tables, générer des PDF etc.
Cela va également se faire grâce à des tables que
vous installerez de la même manière que la table de relations.
L'installation du module dans phpMyAdmin va se faire en deux étapes :
- Créer la base qui accueillera vos relations, vos signets, l'historique SQL etc. ;
- Signaler à phpMyAdmin que cette base aura dorénavant cette utilité pour vous.
IV-B-1. Configurer phpMyAdmin
Nous n'allons, bien sûr pas le faire à la mimine !
Les créateurs de phpMyAdmin ont déjà écrit un script
pour nous, un outil d'importation de SQL fonctionnels
et les explications pour s'en servir. Nous allons donc
en profiter. Allez tout de suite dans le répertoire
C:\wamp\apps\phpMyAdmin2.10.1\scripts
si vous avez installé wamp à la racine et sinon
vous devez sans doute savoir où vous l'avez installé
et, le cas contraire, une simple recherche vous y aidera.
Si vous avez une version de MySQL supérieur ou égale à
la 4.1.2, localisez le fichier :
create_tables_mysql_4_1_2+.sql,
dans le cas contraire localisez les deux fichiers :
create_tables.sql et upgrade_tables_mysql_4_1_2+.sql.
Puis importez-le(s) via le module servant à exécuter du
SQL sur votre base de données.
Après importation, vous devez avoir quelque chose comme
ceci :

Figure 4. Base de données pour les nouvelles fonctionnalités de phpMyAdmin
IV-B-2. Créer la base
Éditez le fichier
wamp\apps\phpMyAdmin2.10.1\config.inc.php.
Ce fichier vous permet de redéfinir, au moment du lancement
de phpMyAdmin, la valeur de plusieurs paramètres de cette
application. Tous ces paramètres sont mis dans
un dictionnaire (ou "map").
Nous allons donner à certaines de ces variables
une valeur en rapport avec la base ainsi que
les tables qui viennent d'êtres créées.
| Script du fichier de configuration des paramètres de phpMyAdmin |
<?php
$cfg['Servers'][$i]['pmadb'] = 'phpMyAdmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
|
Maintenant, il ne vous reste plus qu'à
redémarrer votre service de WAMP ou phpMyAdmin
afin que vos modifications de configurations
puissent êtres prises en compte.
V. Conclusion
En guise de conclusion, nous allons vérifier la bonne configuration
de phpMyAdmin sur trois des fonctionnalités installées :
la création d'une relation entre tables, l'enregistrement
des requêtes dans des signets, la création de PDF.
Il faut ajouter que malheuresement, dans phpMyAdmin, l'utilisation
de ces nouvelles fonctionnalités peut se révèler un rien
problématique car parfois non totalement intuitive.
V-A. La création graphique d'une relation entre tables
Tout d'abord, dans le menu lié à la base de données, vous devez
pouvoir désormais compter avec un nouvel onglet "Concepteur".
Lorsque vous cliquez sur ce menu, une nouvelle interface
apparaît, l'ensemble des tables existantes dans la base
sur laquelle vous pointez :

Figure 5. Fenêtre de conception graphique
Plusieurs options sont à votre disposition via des icônes.
La troisième en partant de la gauche vous permet de créer une
relation entre vos deux tables.
- Cliquez dessus ;
- Une info bulle vous demande de pointer sur la clé de table référencée ;
- Cliquez sur le champ clé primaire de la table pays ;
- Puis une info bulle vous demande de pointer sur la clé étrangère ;
- Cliquez sur le champ id_pays de la table contact ;
- Vous devriez voir la fenêtre suivante :

Figure 6. Création de la relation
- Choissisez ON UPDATE -> CASCADE (si on change le pays d'un contact, l'identifiant référençant le pays doit lui aussi être mi à jour) et ON DELETE -> NO ACTION (nous ne voulons pas effacer un contact même si son pays venait à être effacé) et validez votre choix.
La relation entre les tables est désormais effective (phpMyAdmin
vous le confirme d'ailleurs par un message)
et seule une erreur de conception peut a priori empêcher qu'elle
soit créée (le typage des deux champs liés doit être cohérent
par exemple, on ne lie pas un identifiant de type string à un
identifiant numérique).
 |
Si vous cliquez sur l'icône de PDF, cela ne produira
rien si vous n'avez pas déjà préparé le schéma de votre
page PDF (voir plus loin).
|
V-B. L'enregistrement de requêtes dans les signets
Une autre fonctionnalité offerte est la possiblité
d'enregistrer vos requêtes dans des signets. Vous pouvez
faire cela depuis l'onglet "SQL", ou "Requête".
Je ne saurais trop vous conseiller d'utiliser
directement l'onglet "SQL" car bien que l'onglet "Requête"
permette plus rapidement et sans connaissance du SQL d'obtenir
un résultat, il devient par trop rigide dès que l'on
aborde des requêtes plus élaborées. De plus, le SQL
s'apprend relativement vite.
Pour illustrer cela, nous allons enregistrer la requête qui
permet de sélectionner tous les pays de la table pays.
- Cliquez sur l'onglet "SQL" ;
- Tapez dans la fenêtre SQL le code SQL suivant :
| Requête de sélection des pays présents dans la base |
SELECT * FROM ids_t_pays;
|
- Cliquez sur "Exécuter" ;
- Dans la même fenêtre, tout en bas, on vous propose d'enregistrer la requête sous un nom et de valider votre choix :

- Faites-le puis, lorsque vous reviendrez dans l'onglet SQL après avoir effectué une autre tâche, il vous sera possible de rappeler votre requête pour l'exécuter, la modifier, la visualiser ou l'effacer :
.
Une interface tout à fait similaire est disponible sous l'onglet "Requête".
V-C. La création de PDF
Soyons clairs, la production de schémas de base de données avec
phpMyAdmin ne vaut pas un outil dédié.
De plus, vous verrez que l'interface de création de ce PDF
n'est pas des plus intuitives.
Néanmoins, cela peut s'avérer pratique dans certaines situations
(génération rapide de documentation pour donner un aperçu
du schéma de base ou du dictionnaire des données) et si c'est
disponible, autant ne pas s'en priver. De plus,
la génération est ici automatique, cela gagne du temps
quoiqu'on en dise.
- Sous le menu base de données, cliquez sur l'onglet "Opération" et cliquez sur le lien Préparer le schéma en PDF (il est tout en bas de la page) ;
- Vous tombez sur une interface peu claire, mais quoique vous fassiez vous pourrez le modifier donc... N'hésitez pas à expérimenter. Donner le nom de votre page PDF dans le champ prévu à cet effet ;
- Cliquez sur "Exécuter" ;
- Votre fenêtre affichera alors plusieurs options qui vous permettront de garnir votre PDF de tout ou partie du schéma de table, de couleurs, d'une grille etc. Faites votre choix
et cliquez sur "Exécuter". N'oubliez pas de sauvegarder vos tables lorsque vous les incluez dans votre document et utilisez l'éditeur visuel pour les organiser au mieux ;
- Votre PDF est généré.
Voilà c'est à peu près tout. Vous découvrirez facilement
comment ajouter les commentaires aux tables et aux champs à
partir de là.


Copyright © 2008 Samuel Sayag. Aucune reproduction, même partielle, ne peut être faite
de ce site et de l'ensemble de son contenu : textes, documents, images, etc
sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts.
Cette page est déposée à la
SACD.