Base de données fictive pour tester son développement
Lors du développement d’une application web, qu’il s’agisse d’AJAX ou de Flash, il est souvent nécessaire d’avoir recours à une base de données pour tester l’avancée du travail en situation.
Généralement, nous disposons plus ou moins de la structure de la base, ou disons que c’est un travail indépendant de ce qui nous préoccupe. Le fait est que nous n’avons pas systématiquement un grand nombre d’enregistrements sous la main. Il nous faut donc les générer.
Il est possible de les saisir un à un mais il s’agit là d’une tâche vite fastidieuse. Par ailleurs, à ce stade du projet, le client ne souhaite pas forcément distribuer des données de manière trop précoce.
Nous allons donc devoir trouver une solution qui ne soit pas trop chronophage et qui reste suffisamment efficace et simple à mettre en place. Au cours de cet article nous approcherons certaines méthodes qui peuvent remplir cette tâche et être très utiles dans bien des situations.
Structure de la base de données, exemple à remplir
Imaginons que nous ayons à travailler sur un projet de cartographie et que nous devions appuyer le contenu d’une table, sur par exemple, les départements et les régions de France.
Sans rentrer dans une modélisation complète du système d’information, plantons un décor de base. Quelles seraient les informations nécessaires… disons une clé primaire d’identification, les informations sur le département (Nom du département, Région du département, et numéro du département…) et enfin, il pourrait être intéressant d’ajouter une référence d’activation ou non de l’enregistrement.
Reste la question pour la gestion de la région. En effet, si les départements n’utilisent qu’une seule région, les régions quant à elles, contiennent plusieurs départements… du coup, il faudrait utiliser une table relationnelle pour gérer les régions. Le bons sens oriente donc vers deux tables, mais pour les besoins de cet article et pour rester focalisé sur la création de contenu, nous n’utiliserons qu’une seule table.
Une fois la mécanique décrite mise en place, il sera très facile de l’adapter et de la reproduire en fonction des besoins. Donc, en tenant compte de ce cahier des charges, la structure de la base serait :
- Identifiant de l’enregistrement (clé primaire auto-incrémentée) – SMALLINT – PRIMARY et AUTO INCREMENTE
- Nom du département – VARCHAR sur 50
- Région du département – VARCHAR sur 100
- Numéro de département – VARCHAR sur 2
- Etat d’activation de l’enregistrement – BOOL – VALEUR DEFAULT 1
Mettons-là en place, au sein de PHP myAdmin en s’appuyant sur le fichier SQL suivant:
CREATE TABLE IF NOT EXISTS `departements` ( `ch_dep_id` smallint(6) NOT NULL AUTO_INCREMENT, `ch_dep_label` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `ch_dep_region` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `ch_dep_num` varchar(2) COLLATE utf8_unicode_ci NOT NULL, `ch_dep_etat` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`ch_dep_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
Si vous souhaitez utilisez des outils plus avancés sur la modélisation de la base de données, orientez-vous vers des outils comme DB Designer, SQL Designer, en vous appuyant sur l’excellent article sur la base de données d’exemple paru sur Developpez.com. Bref, et quoi qu’il en soit… la structure en place, il ne nous reste plus qu’à trouver du contenu pour créer l’ensemble des enregistrements nécessaires.
Souvent Google peut être plus bavard qu’on ne le pense !
Commençons déjà par vérifier s’il n’existe pas des données toutes prêtes à récupérer sur le web. Pour cela rien de plus simple, lançons Google et interrogeons-le.
Il faut savoir qu’en parallèle des recherches par mots et expressions clés, il est toujours possible de procéder à des recherches avancées et donc d’affiner les requêtes.
Par exemple, il est possible de forcer la recherche sur un type de fichier en particulier. La recherche ‘départements régions’ retournerait un certain nombre de pages web utilisant ces mots, alors que si l’on ajoute filetype:type_de_fichier, nous concentrerons nos recherches sur ces types de fichiers…. Essayons avec la requête suivante :
départements régions filetype:sql
Il est facile de constater que le site, http://lamemelongueurdonde.com, propose un lien très intéressant. Directement une requête SQL est accessible et n’attends plus qu’à être injectée dans une base de données… mais disons que nous souhaitions ajouter d’autres informations à cette table et que bien que très intéressante, cette pioche ne nous satisfasse pas. Essayons donc une seconde requête :
départements régions filetype:xls
Cette fois-ci, c’est le site http://liensutiles.org qui répond favorablement à notre requête. Cliquons donc sur le lien qu’il propose et ouvrons le fichier dans un tableur quelconque.
Nettoyage et préparation du fichier
Dans un premier temps, il faut commencer par supprimer les colonnes et les rangées qui ne sont pas utiles, et ensuite réorganiser toutes ces informations en fonction de la structure de la table à remplir.
Dans le cas présent, le tableur Excel contient trois colonnes :
- Numéro de département
- Nom du département
- Région du département
Le travail est en fait simple : commençons par déplacer la première colonne en la coupant / collant vers la quatrième. Ensuite, remplissons la première colonne devenue vide par une valeur incrémentée de 1 à n. Pour cela tapons 1 dans la première cellule, et en maintenant la touche CTRL (excel PC) enfoncée, il suffit de glisser déposer cette cellule sur l’intégralité de la colonne. La valeur 1 s’auto-incrémentera automatiquement jusqu’à la dernière cellule.
Il faut procéder de la même manière, cette fois-ci sans la touche CTRL, sur la dernière colonne (la 5ème) pour mettre en place la valeur de l’état à savoir 1.
Le fichier Excel est maintenant prêt à l’emploi. On peut l’enregistrer afin d’en faire une sauvegarde, mais le format xls ne nous sera pas utile pour l’importation dans la base de données.
Nous allons pour cela utiliser un format intermédiaire plus standard pour représenter les données tabulées.
Le format csv (pour coma separated value) qui est un standard dans le domaine. Attention à ne pas le confondre avec CSV pour Mac ou CSV pour DOS présents comme type de fichiers sous Excel.
Deux boites de dialogues nous préviennent alors que certaines informations propres au format xls seront perdues. En effet, le format csv étant un format brut de texte, il perdra donc un certain nombre d’enrichissements, comme les couleurs de cellules, la gestion multi-feuilles, les macros, etc… tout ceci est normal, et pas gênant dans notre démarche. Il suffit de valider par OK à chaque fois. Le fichier peut être fermé, pas besoin de l’enregistrer… cela évite donc de repasser par le même chemin de validation.
Encodage en UTF-8
Bien que le fichier puisse être déjà exploitable en l’état, il est toujours bon de s’assurer de l’encodage des caractères. Surtout qu’en fonction de la provenance des enregistrements, ceux-ci peuvent être encodés de manière hétérogène.
Rien de plus simple, une fois le fichier enregistré et fermé depuis le tableur, il suffit de le ré-ouvrir avec un outil de type Notepad++ et depuis le menu Encodage > Convertir en UTF-8 (opter pour la version sans signature BOM).
Rien ne change en apparence, mais sous le capot nous avons la certitude que les caractères accentués, les glyffes et autres particularités de la langue française seront préservés et seront correctement interprétés par les divers outils de travail : à savoir base de données, fichiers PHP ou Javascript, HTML, … et bien d’autres.
Importation sous PHPMyAdmin
Cette fois-ci, le travail de préparation est bien terminé, il ne reste plus qu’à importer ces données dans la base. Lançons PHP MyAdmin et ouvrons la base créée précédemment.
Depuis l’onglet importer, il devient alors facile de pointer vers le fichier csv en gardant l’ensemble des options par défaut. Il ne reste plus qu’à lancer la requête.
Si vous constatez des problèmes de caractères, accents mal interprétés ou présence de caractères tels que é ou ô, è et autres confrères, pas de soucis :
Depuis PHPMyAdmin exportez la base en SQL (structure et données sans les transmettre), supprimez l’ensemble des tables, ouvrez un document Notepad++, collez le SQL (vous pouvez optez pour langage SQL depuis le menu Langage > S > SQL afin de colorer le code si besoin est), convertissez en UTF-8 depuis le menu Encodage > Convertir en UTF-8 et recopiez le résultat, retournez dans PHPMyAdmin et depuis l’onglet SQL collez le SQL convertit et lancez la requête… tout devrait rentrer dans l’ordre.
Notre base est mise en place, nous pouvons commencer à développer l’application. Il est vrai que cet exemple est très simple et que dans la plupart des développements, les structures de bases de données, ou la nature des informations peuvent être beaucoup plus complexes à récupérer. Mais l’idée est là et le principe restera identique.
Nous allons voir au chapitre suivant une autre approche qui pourrait compléter celle-ci.
Utiliser un générateur de contenu
Une autre solution serait d’utiliser un générateur de contenu, une sorte de Lorem Ipsum pour base de donnée. Si vous en avez le courage, vous pouvez utiliser un outil comme Director, Visual Basic ou tout autre éditeur de code C++, PHP, PERL ou encore Java, pour mettre en place une telle moulinette qui injecterait de la donnée dans votre base MySQL ou CSV.
Vous pouvez également utiliser un excellent outil comme celui proposé par GenerateData.com. Dommage qu »il n’ait pas été francisé ou latinisé.
Par ailleurs, et en fonction des environnements de développement sur lesquels nous œuvrons, il existe sur le web diverses autres solutions. Par exemple, les CMS possèdent tous leur plug-in dédié à cette tâche : Dummy Content, Demo Data Creator ou Test Post pour WordPress, Initial Dummy Content pour Drupal, Mass Content pour Joomla, … vous trouverez également une liste plus importante de plug-in pour ces trois CMS sur le site de Speckyboy.