Outils pour utilisateurs

Outils du site


td_histoire_numerique:exercice_3

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
td_histoire_numerique:exercice_3 [2015/09/29 19:05]
Francesco Beretta [Installation de la base de données pour l'exercice]
td_histoire_numerique:exercice_3 [2016/01/04 19:04]
Francesco Beretta [Titre]
Ligne 4: Ligne 4:
 ====== Installation de la base de données pour l'​exercice ====== ====== Installation de la base de données pour l'​exercice ======
  
-  * {{:td_histoire_numerique:​td2015_20190926.zip|Télécharger le fichier}} qui contient la sauvegarde ​de la base de données +[[td_histoire_numerique:​Installation ​de la base de données|Instructions pour l'installation ​de la base de données]]
-  * Créer un dossier appelé BD_TD2015 et un sous-dossier appelé '​sauvegardes'​ +
-  * Déplacer le fichier téléchargé vers le dossier '​sauvegardes'​ et le décompresser (dézipper) +
-  * Démarrer le logiciel **pgAdmin3** (à ne pas confondre avec l'​application web phpPgAdmin) +
-    * Pour les utilisateurs de Windows, il se trouve dans le dossier C:​\Bitnami\wappstack-5.5.29-1\postgresql\bin et normalement on peut le lancer depuis le menu des applications +
-    * Pour les utilisateurs de MacOS il faut le télécharger depuis [[http://​www.pgadmin.org/​download/​macosx.php|cette page]] en prenant la version qui correspond à votre système d'​exploitation,​ si possible la plus récente.  +
-  * Pour tous, une fois pgAdmin3 installé, il faut paramétrer la connexion [on fera l'exercice en classe]:  +
-      * Dans le menu Fichier > Ajouter un serveur +
-      * Nom du serveur '​postgresql_9_4'​ +
-      * Hôte: localhost +
-      * port TCP : 5432 +
-      * base maintenance:​ postgres +
-      * nom utilisateur:​ postgres +
-      * Mot de passe: le votre et l'​enregistrer +
-  * Une fois la connexion au serveur ouverte et le mot de passé '​avalé',​ créer une nouvelle ​base de données ​appelée '​TD2015'​. Dans l'​onglet Définition mettre '​codage'​ à UTF8, laisser le reste des paramètres par défaut. +
-  * Ouvrir la nouvelle base de données (double-click) +
-  * Restaurer les sauvegardes depuis le dossier dézippé:​ +
-    * click droit sur la base de données TD2015 et choisir dans le menu contextuel '​**Restaurer**'​ +
-    * chercher le dossier téléchargé et dézippé, ouvrir le fichier **base.backup** +
-    * clicker le bouton '​Restauration'​ +
-    * Si vous lisez à la fin du log: "Le process a retourné le code de sortie 0." c'est réussi (0 = OK ; 1 = erreur)+
  
- 
-Si tout s'est bien passé la base est installée. Sélectionnez la base TD2015 et rafraichissez (bouton avec les flèches rouges et vertes) 
  
 \\ \\
Ligne 65: Ligne 43:
 Il y a différentes manières d'​aborder la question de la modélisation des données historiques. L'​approche présentée ici est issue de l'​expérience du projet [[http://​symogih.org|symogih.org]]. Il y a différentes manières d'​aborder la question de la modélisation des données historiques. L'​approche présentée ici est issue de l'​expérience du projet [[http://​symogih.org|symogih.org]].
  
 +On trouvera une explication détaillée de la méthode dans [[https://​halshs.archives-ouvertes.fr/​halshs-00677658|cet article]] et dans **{{:​td_histoire_numerique:​mcd_article_modifie.pdf|ce document}} ** les modèles conceptuels qui seront présentés au cours.
  
-On trouvera une explication détaillée ​de la méthode dans [[https://halshs.archives-ouvertes.fr/​halshs-00677658|cet article]] et dans **{{:​td_histoire_numerique:​mcd_article_modifie.pdf|ce ​document}}** les modèles conceptuels qui seront présentés au cours.+Le <​html><​span style="​color:​red;​font-weight:​bold;">​modèle conceptuel ​de la base de données générique<​/span><​/html> mis à disposition se trouve ​dans **{{:​td_histoire_numerique:​mcd_base_td_histoire_numerique.pdf|ce ​fichier}} **. Il faut le télécharger et le garder sous la main.
  
  
 \\ \\
- +===== Production des données ​=====
-==== Prise en main de la base de données ​du cours ====+
  
  
 \\ \\
-\\ + 
-<​code>​ +==== Transformation des textes encodés en XML ==== 
-truncate table objets.objet ​restart identity cascade+ 
 +  * Créer dans la base de données un objet digital qui correspond au texte qu'on est en train d'​encoder. 
 +  * Lui donner un nom et ajouter un descriptif du texte encodé 
 +  * Copier le texte encodé en entier et le coller dans le champs '​texte'​ de l'​objet en question 
 +  * Sauvegarder 
 + 
 +  * Ouvrir une boîte de dialogue SQL 
 +  * Exécuter la requête suivante, qui utilise la fonction vues.transformation_xml([argument]) tout en mettant en argument de la fonction le numéro d'​identifiant de l'​objet digital qui contient le texte à transformer 
 + <code html>​SELECT vues.transformation_xml(3)</​code> 
 +  * Si le texte a été encodé correctement (balises ouvertes et fermées, encodées selon les indications du wiki, etc.), le texte est réécrit en XML et copie dans le champs '​texte_xml'​ de la table objet
 +  * Sinon, apparaît un message d'​erreur qui indique, dans les premières lignes du message, l'​élément qui pose problème et qu'il faudra corriger dans le texte encodé d'​origine. 
 +  * La suite du message contient la suite des erreurs provoquées par cette première erreur: celle-ci corrigée, tout rentre dans l'​ordre 
 + 
 +===== Requêtes SQL / XPath ===== 
 + 
 +Une fois les textes transformés en XML avec la fonction indiquée ci-dessous, on peut intérroger la base de données et extraire des informations. 
 + 
 +Pour ce faire, on utilise la langage SQL en le combinant avec le langage XPATH que PostgreSQL implémente également à condition que le champs sur lequel porte la requête soit de type '​XML'​. 
 + 
 + 
 +Pour apprendre la syntaxe des requêtes SQL, voir la manuel PostreSQL, chapitres 2 et 7. Pour apprendre celle du XPATH, un excellent {{:​td_histoire_numerique:​obpe6630_xpath4.pdf|tutoriel}} rédigé par Wieslaw Zielonka est [[http://​www.liafa.jussieu.fr/​~zielonka/​Enseignement/​BDAvances/​2013/​XML/​xpath4.pdf|disponible sur internet]] 
 + 
 + 
 +Pour exécuter les requêtes ci-dessous:​ 
 + 
 +   * ouvrir la base de données avec pgAdminIII, sélectionner le dossier rouge '​schémas'​ dans l'​arboréscence,​ puis ouvrir la boît de dialoque '​SQL':​ bouton loupe. 
 +   * copier la requête dans l'​Editeur SQL 
 +   * exécuter la requête avec le bouton vert en forme de flèche 
 +   * le résultat s'​affichera dans le panneau de sortie en bas 
 + 
 + 
 +Pour exporter le résultat:​ 
 + 
 +  * sous CSV = dans le menu '​Fichier'​ sélectionner '​Exporter...',​ choisir un nom de fichier et un emplacement (attention à mettre le suffixe .csv après le nom) 
 +  * pour visualiser directement le résultat avec un navigateur, sélectionner dans le menu '​Fichier'​ la commande '​Rapport rapide',​ choisir de nouveau un fichier de sortie (tout en bas), ne rien toucher aux autres paramètres et appuyer sur OK 
 +  * le résultat apparaîtra immédiatement dans votre navigateur web 
 + 
 +Provisoire:​ 
 +<code sql> 
 +SELECT ??? 
 +FROM ???
 </​code>​ </​code>​
  
 +====== Documentation ======
 +
 +
 +
 +===== Code SQL =====
 +
 +Dans cette section on trouvera le code des principales fonctions SQL/PLpgSQL utilisées dans la base de données
 +L
 +=== Fonction vues.transformation_xml(integer) ===
 +
 +Cette fonction transforme le texte codé avec le système des accolades en un document XML.
 +
 +
 +<code sql>
 +-- Function: vues.transformation_xml(integer)
 +
 +-- DROP FUNCTION vues.transformation_xml(integer);​
 +
 +CREATE OR REPLACE FUNCTION vues.transformation_xml(integer)
 +  RETURNS character varying AS
 +$BODY$ ​
 +WITH tw0 AS 
 +(
 +  -- transforme les entités XML
 +  SELECT REPLACE(REPLACE(REPLACE(texte,'&','&​amp;'​),'<','&​lt;'​),'>','&​gt;'​) txt
 +  FROM objets.objet
 +  WHERE pk_objet = $1
 +),
 +tw1 AS
 +(
 +  -- transforme les accolades en chevrons
 +  SELECT REPLACE(REPLACE(REPLACE(txt,'​{/','</'​),'​{','<'​),'​}','>'​) txt
 +  FROM tw0
 +),
 +tw2 AS
 +(
 +  -- traite le cas de balises à deux caractères qui contiennent le type après l'id de l'​objet:​ ajoute l'​attribut "​type"​
 +  SELECT REGEXP_REPLACE(txt,'​(<​\w{2})([\d\|]+)([a-z]{2})(_?​)([\d|\|]*)(>​)','​\1\2\4\5 type="​\3"​\6','​g'​) AS txt
 +  FROM tw1
 +),
 +tw3 AS
 +(
 +  -- traite le cas de balises à deux caractères suivies d'un 0: élimine l'​attribut "​ref"​ tout en gardant l'​attribut @type
 +  SELECT REGEXP_REPLACE(txt,'​(<​\w{2})(0)(_?​)([\d|\|]*)([\s"​=\w]*)(>​)','​\1\3\4\5\6','​g'​) AS txt
 +  FROM tw2
 +),
 +tw4 AS
 +(
 +  -- traite le cas de balises à deux caractères suivies ou non d'un id possédant un '​_':​ ajoute l'​attribut @ana
 +  SELECT REGEXP_REPLACE(txt,'​(<​\w{2})([\d|\|]*)(_)([\d\|]*)([\s"​=\w]*)(>​)','​\1\2\5 ana="​\4"​\6','​g'​) AS txt
 +  FROM tw3
 +),
 +tw5 AS
 +(
 +  -- traite le cas de balises à deux caractères suivies d'un id : ajoute l'​attribut @ref
 +  SELECT REGEXP_REPLACE(txt,'​(<​\w{2})([\d\|]+)([\s"​=\w|]*)(>​)','​\1 ref="​\2"​ \3\4','​g'​) AS txt
 +  FROM tw4
 +),
 +tw6 AS
 +(
 +  -- traite le cas de balises seg et eud possédant un '​_':​ ajoute l'​attribut @ana
 +  SELECT REGEXP_REPLACE(txt,'​(<​)(seg|eud)(_)([\d|\|]*)(>​)','​\1\2 ana="​\4"​\5','​g'​) AS txt
 +  FROM tw5
 +),
 +tw7 AS
 +(
 +  -- traite le cas des dates avec un paramètre d'​incertitude en ajoutant l'​attribut @cert
 +  SELECT REGEXP_REPLACE(txt,'​(<​)(dat)([0-9]+)(r|p)(_?​)([a-z]{2})(>​)','​\1\2\3\5\6 cert="​\4"​\7','​g'​) AS txt
 +  FROM tw6
 +),
 +tw8 AS
 +(
 +  -- traite le cas des dates avec un type en ajoutant l'​attribut @type
 +  SELECT REGEXP_REPLACE(txt,'​(<​)(dat)([0-9]+)(_)([a-z]{2})','​\1\2\3 type="​\5"','​g'​) AS txt
 +  FROM tw7
 +),
 +tw9 AS
 +(
 +  -- traite le cas des dates en ajoutant l'​attribut @when
 +  SELECT REGEXP_REPLACE(txt,'​(<​)(dat)([0-9]+)','​\1\2 when="​\3"','​g'​) AS txt
 +  FROM tw8
 +)
 + ​UPDATE objets.objet
 +   SET texte_xml = (concat('<​root>',​REGEXP_REPLACE(txt,​ '​\|',​ ' ' , '​g'​),'</​root>'​))::​xml
 +FROM tw9
 +WHERE pk_objet = $1;
 +
 +SELECT '​Effectué'::​varchar AS resultat;
 +
 +
 +$BODY$
 +  LANGUAGE sql VOLATILE
 +  COST 100;
 +ALTER FUNCTION vues.transformation_xml(integer)
 +  OWNER TO postgres;
 +
 +</​code>​
td_histoire_numerique/exercice_3.txt · Dernière modification: 2016/01/04 22:04 par Francesco Beretta