Valid XHTML     Valid CSS2    

Langages de scripts, automatisation de commandes et

production de documents structurés :

2. Langages de script, persistance, bases de données et ORM

                     gilles.hunault "at" univ-angers.fr

 

Table des matières cliquable

  1. Installation des bases de données exemples pour MySql

  2. Affichages MySql filtrés et numérotés

  3. Persistance, sérialisation et format XML en PPPR

  4. Installation et utilisation de Sqlite3

  5. Autres formats de sérialisation

  6. ORM pour ELF

  7. Formats de graphes

  8. Formats de données pour analyses statistiques

 

Il est possible d'afficher toutes les solutions via  ?solutions=1 .

 

1. Installation des bases de données exemples pour MySql

Recopiez l'archive lesbd.zip sur votre ordinateur puis insérez les tables dans la base de données scripts. Vérifiez que vous avez bien un utilisateur anonymous avec un mot de passe anonymous et qu'il peut lire les bases de données exemples en mode SELECT. On testera les commandes MySql suivantes :


      use scripts
     
      select * from scripts.elf order by iden limit 10 ;
     
      select iden,age,sexe
             from elf
             where sexe=0 and age>30
             order by sexe,age desc
             limit 5 ;
     
      SELECT etud, AVG(age) FROM elf GROUP BY etud ;
     
      SELECT ROUND(100*COUNT(sexe)/ (SELECT count(iden) FROM elf) ) AS frq ,
             "%", IF(sexe=0,"hommes","femmes") AS  sexe
             FROM elf GROUP BY sexe ORDER BY frq DESC ;
     
     
     

Solution :  

 

2. Affichages MySql filtrés et numérotés

Pour la base de données ELF, on voudrait obtenir un affichage numéroté des personnes, des hommes ou des femmes, avec un filtre explicite sur l'age. Tester les différentes solutions en RPPR. On essaiera de programmer dans tous ces langages un sous-programme affNumFlt(sexe,age) qui fournit les personnes avec le "bon" code-sexe et avec un age supérieur à celui indiqué. On pourra dans un premier temps se limiter à une solution en Ruby.

Fournir ensuite une interface graphique pour résoudre le même problème en Python avec easygui. On pourra s'inspirer de la solution Web de la page affnumflt.php. On utilisera d'abord MySql puis sqlite3 via elf_sqlite3.bin.

Solution :  

 

3. Persistance, sérialisation et format XML en PPPR

Définir en PPPR une classe d'objets personne avec les données nom, pren (prénom) et naiss (année de naissance). On définira «le plus naturellement possible» les getters et setters et on ajoutera une méthode age (calcul à la volée, basé sur l'année courante et l'année de naissance).

Ecrire en PPPR la création des personnes Jean Moulin, né en 1899, Pierre et Marie Curie, nés respectivement en 1859 et 1867. Afficher ces personnes puis sauvegardez-les au format JSON, YAML et XML (on ne créera que des éléments XML et aucun attribut). Ecrire ensuite en PPPR des fonctions ou des méthodes toDB() et fromDB() qui permettent de d'importer ou d'exporter dans une base de données des objets-personnes. On pourra s'inspirer de oo_pers.php. dont le code source est ici qui utilise oo_inc.php.

Solution :  

 

4. Installation et utilisation de Sqlite3

A l'exercice 8 de la série 1 on avait utilisé sqlite3 comme moteur de base de données pour le tutoriel Django. Comment fait-on pour consulter la base et les tables créées ? Quelle différence avec MySql ? Quel intérêt pour du prototypage en développement Web ? Quelles sont les tables créées dans le tuteur Django ?

Application : que contient le fichier binaire elf_sqlite3.bin ?

Solution :  

 

5. Autres formats de sérialisation

Y a-t-il d'autres formats de sérialisation que JSON et YAML ? Pourquoi ?

Solution :  

 

6. ORM pour ELF

Comment fait-on pour utiliser l'ORM pour la table ELF en PPPR ?

Solution :  

 

7. Formats de graphes

On voudrait stocker un graphe simple non orienté, non pondéré dont les sommets sont nommés. Quel format de stockage proposez-vous ? Reprendre avec les graphes orientés, pondérés, valués, les multigraphes... Et si on veut les afficher graphiquement, avec des ronds, des flèches, comme ci-dessous à gauche ? Essayer ensuite de reproduire rapidement le graphe de droite. Est-ce adapté aux diagrammes UML, schémas MCD, MCT et autres descriptions de base de données ?

                    graph.png                    graphrp.png

Solution :  

 

8. Formats de données pour analyses statistiques

Les données qu'on utilise dans des analyses statistiques sont en général rectangulaires : toutes les lignes ont le même nombre de mots et les données associées à une colonne sont homogènes. Quel format de stockage proposez-vous ?

Les langages Perl, PHP, Ruby, Python sont-ils adaptés pour réaliser des analyses statistiques, par exemple pour réaliser un test de Student ? Quel langage de scripts est un «bon» langage pour réaliser des analyses statistiques  ? Et pour tracer des beanplots ou des boxplots ?

Solution :  

 

 

Code-source php de cette page ; code javascript utilisé. Retour à la page principale du cours.

 

 

retour gH    Retour à la page principale de   (gH)