Scheda di revisione: Introduction aux bases de données XML semi-structurees

📋 Plan du Cours

  1. Bases de données semi-structurees
  2. XML pour échange et stockage
  3. Langages de requêtes XPath et XQuery
  4. Bases de données XML natives
  5. Règles de base et syntaxes XQuery
  6. Clauses FLWOR : for let where order return
  7. Fonctions, opérateurs et types de comparaison
  8. Mise à jour XQuery Update Facility
  9. Exemples concrets de requêtes XQuery

📖 1. Bases de données semi-structurees

🔑 Notions clés & Définitions

  • Base de données semi-structuree : Une base de données semi-structuree stocke des données de façon flexible et hiérarchique, sans imposer un schéma relationnel rigide.
  • Organisation hiérarchique en arborescence : Une organisation hiérarchique en arborescence imbrique les données dans des nœuds, formant une structure de type arbre.
  • Schéma flexible et évolutif : Un schéma flexible et évolutif permet de modifier la structure sans migration lourde, contrairement aux bases relationnelles classiques.
  • Données auto-descriptives : Des données auto-descriptives portent leur propre description via des balises, ce qui facilite la compréhension de la structure.
  • XML : XML est un format de données à balises utilisé pour représenter et échanger des structures, notamment dans les systèmes web et d’intégration.

📝 Points essentiels

  • Une BD semi-structuree est flexible, hiérarchique, et ne dépend pas d’un schéma rigide prédéfini comme en relationnel classique.
  • Les données sont organisées en arborescence, avec des nœuds imbriqués qui reflètent la structure hiérarchique.
  • Chaque document peut avoir sa propre structure, ce qui évite d’imposer une même forme à toutes les données.
  • L’auto-description vient des balises (ex. XML) qui décrivent la structure directement dans les données.
  • XML sert à l’échange de données (AJAX, SOAP, web services, EAI) et aussi au stockage via des BD XML natives.
  • Une BD XML native conserve la hiérarchie naturelle du document XML plutôt que de la transformer en tables relationnelles dès l’entrée en base.

💡 Astuce mémo

Flexible→hiérarchique→auto-descriptif : le schéma bouge, l’arbre reste, les balises expliquent tout.

📖 2. XML pour échange et stockage

🔑 Notions clés & Définitions

  • XML : XML est un format de données structuré utilisé pour représenter et échanger des informations sous forme de documents.
  • AJAX : AJAX est une technique d’échange côté navigateur qui s’appuie sur des requêtes pour récupérer des données sans recharger toute la page.
  • SOAP : SOAP est un protocole d’échange structuré qui transporte des messages, souvent en s’appuyant sur des contenus XML.
  • Base de données XML native : Une base de données XML native stocke et gère des documents XML dans leur format d’origine, sans conversion vers un modèle relationnel ou objet.
  • XQuery : XQuery est un langage de requête pour interroger et transformer des documents XML, en s’appuyant sur la structure arborescente.

📝 Points essentiels

  • XML sert à l’échange (AJAX, SOAP) et au stockage (bases de données XML natives).
  • Une base de données XML native conserve la hiérarchie naturelle du document XML.
  • Une base de données XML native doit fournir des fonctionnalités de type indexation, interrogation, transactions et sécurité.
  • XPath sert à naviguer dans l’arbre XML, tandis que XQuery sert à interroger et transformer les données.
  • XQuery est présenté comme l’équivalent de SQL pour les bases de données XML.
  • XPath est un sous-ensemble de XQuery, et toute expression XPath est valide en XQuery.

💡 Astuce mémo

Pense à SQL↔XQuery (interroger+transformer) et XPath↔navigation (dans l’arbre).

📖 3. Langages de requêtes XPath et XQuery

🔑 Notions clés & Définitions

  • XPath : XPath est un langage de navigation qui permet de sélectionner des nœuds dans un document XML à l’aide de chemins et de prédicats.
  • XQuery : XQuery est un langage expressif pour interroger et transformer des données XML, en combinant navigation XPath et constructions de type programmation.
  • BaseX : BaseX est un système de base de données XML native open source qui stocke, gère et interroge des documents XML.
  • eXist-db : eXist-db est un système de base de données XML native open source conçu pour stocker et interroger des données XML.
  • MarkLogic : MarkLogic est un système commercial de base de données XML native qui offre stockage, gestion et interrogation de données XML.

📝 Points essentiels

  • Les bases de données XML natives stockent et interrogent le XML sans conversion vers un format relationnel.
  • Une base XML native conserve la hiérarchie naturelle du document, ce qui évite des jointures complexes nécessaires en modèle relationnel.
  • Une base XML native fournit des fonctionnalités SGBD comme indexation, transactions et sécurité.
  • XQuery sert à extraire des informations, effectuer des calculs à partir des données extraites et reconstruire des fragments ou documents XML.
  • XQuery s’appuie sur des variables, boucles, conditions et fonctions, ce qui complète la simplicité de XPath.
  • En XQuery, les variables sont préfixées par (ex.(ex.x, livre,livre, prix).

💡 Astuce mémo

XPath = chemin; XQuery = chemin + programme (variables/conditions)

📖 4. Bases de données XML natives

🔑 Notions clés & Définitions

  • XQuery : Langage de requêtes pour interroger et manipuler des données XML, avec des expressions produisant du contenu XML.
  • FLWOR : Construction de requête XQuery composée de For, Let, Where, Order by et Return pour générer des résultats XML.
  • Clause FOR : Clause FLWOR qui parcourt une séquence et déclenche une exécution du Return à chaque itération.
  • Clause LET : Clause FLWOR qui assigne une variable à une valeur sans créer plusieurs itérations du Return.
  • Clause WHERE : Clause FLWOR qui conserve uniquement les itérations dont la condition est vraie.

📝 Points essentiels

  • FOR itère sur une séquence de fragments XML et produit une nouvelle exécution du Return à chaque élément.
  • Avec FOR xatx at i, $i donne l’indice de position du nœud courant dans la séquence.
  • La fonction data() supprime les balises et renvoie le contenu textuel d’un nœud.
  • FOR peut combiner plusieurs expressions dans un produit cartésien, générant toutes les paires possibles.
  • LET produit un seul résultat même si l’expression contient plusieurs éléments, contrairement à FOR.
  • WHERE applique un filtre : seules les itérations satisfaisant la condition restent dans les résultats finalisés par Return.

💡 Astuce mémo

FOR = “Fait tourner” le Return à chaque élément ; LET = “Une seule fois” pour une valeur.

📖 5. Règles de base et syntaxes XQuery

🔑 Notions clés & Définitions

  • Clause ORDER BY : La clause ORDER BY trie les résultats selon une expression, avec un sens de tri optionnel.
  • Clause RETURN : La clause RETURN décrit le résultat produit par la requête, pouvant être du XML, du texte ou une séquence.
  • Expressions conditionnelles IF THEN ELSE : Les expressions IF THEN ELSE choisissent entre deux expressions selon une condition booléenne.
  • Expressions quantifiées SOME et EVERY : Les expressions SOME et EVERY évaluent une condition sur des éléments et renvoient un booléen xs:boolean.
  • Construction de nœuds XML dynamiques : Les accolades { } permettent d’insérer du code XQuery dans du XML pour construire des nœuds dynamiques.

📝 Points essentiels

  • ORDER BY s’écrit order by expression [ascending|descending] pour trier selon l’expression choisie.
  • for lin//livreorderbyl in //livre order by l/prix descending return $l/titre renvoie les titres triés du plus cher au moins cher.
  • RETURN peut produire du XML, du texte ou une séquence, et chaque itération renvoie un seul fragment XML.
  • for xindoc(books.xml)/bookstore/bookreturnx in doc('books.xml')/bookstore/book return x/titre construit une sortie basée sur chaque nœud $x.
  • IF (condition) THEN expression1 ELSE expression2 sélectionne l’expression à évaluer selon le test.
  • some $x in ... satisfies condition renvoie true si au moins un élément satisfait la condition, sinon false (xs:boolean).

💡 Astuce mémo

ORDER BY = Ordonner, RETURN = Réaliser le résultat, IF = Choix, SOME/EVERY = Un ou Tous, { } = XML vivant.

📖 6. Clauses FLWOR : for let where order return

🔑 Notions clés & Définitions

  • FLWOR : FLWOR est une structure de requête XQuery composée de clauses For, Let, Where, Order et Return pour produire un résultat.
  • Clause For : La clause For parcourt une séquence et lie une variable à chaque élément pour générer des combinaisons.
  • Clause Let : La clause Let calcule une valeur une fois et l’associe à une variable réutilisable dans les clauses suivantes.
  • Clause Where : La clause Where filtre les tuples en ne gardant que ceux qui satisfont une condition booléenne.
  • Clause Order : La clause Order trie les résultats selon un critère avant la construction finale.

📝 Points essentiels

  • FLWOR signifie For-Let-Where-Order-Return et seules les clauses FOR et RETURN sont obligatoires, le reste est optionnel.
  • La clause For peut utiliser at pour obtenir l’indice de position, par exemple for xatx at i in ... où $i est la position.
  • La clause Return construit la sortie à partir des variables liées par For et Let.
  • La clause Where s’écrit avec une condition (souvent booléenne) et sert à éliminer les résultats non conformes.
  • La clause Order trie les éléments avant l’évaluation finale de la clause Return, ce qui change l’ordre du résultat.
  • La clause Let évite de recalculer une expression en stockant son résultat dans une variable réutilisée ensuite.

💡 Astuce mémo

FOR = parcours, LET = mémorise, WHERE = filtre, ORDER = trie, RETURN = fabrique le résultat.

📖 7. Fonctions, opérateurs et types de comparaison

🔑 Notions clés & Définitions

  • Fonction utilisateur XQuery : Fonction définie avec declare function pour réutiliser une logique de calcul dans une requête XQuery.
  • Préfixe local: : Convention de nommage pour les fonctions utilisateurs, utilisée comme espace de noms dans les déclarations et appels.
  • Paramètres typés : Paramètres de fonction déclarés avec un type XML Schema, ce qui contraint les valeurs passées à la fonction.
  • Mise à jour XQuery 3.0 : Ensemble d’opérations de modification de documents XML disponibles en XQuery 3.0 via une Update Facility.
  • Opérateurs de comparaison : Opérateurs qui comparent des valeurs en XQuery, avec des comportements différents selon qu’on compare des atomes ou des séquences.

📝 Points essentiels

  • declare function local:nom($p as type) as typeRetour { corps } définit une fonction avec types pour paramètres et résultat.
  • local:prixTTC(prixasxs:decimal,prix as xs:decimal, tva as xs:decimal) calcule prix(1+prix * (1 + tva) et retourne un xs:decimal.
  • count() compte les nœuds, sum() additionne, avg() calcule la moyenne, distinct-values() renvoie les valeurs uniques.
  • contains(x,mot)veˊrifielapreˊsencedelachaı^nemotdansx, 'mot') vérifie la présence de la chaîne 'mot' dans x.
  • eq, ne, lt, gt comparent des valeurs atomiques, tandis que = et != comparent des séquences (existentiel).
  • insert node ... into doc('bib.xml')/chemin ajoute un nœud dans le document cible indiqué par doc().

💡 Astuce mémo

Atomique: eq/ne/lt/gt ; Séquence: =/!= (existentiel)

📖 8. Mise à jour XQuery Update Facility

🔑 Notions clés & Définitions

  • XQuery Update Facility : Mécanisme de XQuery destiné à modifier des données XML plutôt qu’à seulement les interroger ou les transformer.
  • Insertion dynamique { } : Syntaxe XQuery qui permet d’injecter le résultat d’expressions directement dans le contenu XML renvoyé par la requête.
  • FLWOR : Structure de requête XQuery composée de clauses comme for, where et return pour parcourir, filtrer et produire un résultat.
  • distinct-values() : Fonction XQuery qui renvoie l’ensemble des valeurs distinctes d’une expression, utile pour éviter les doublons.

📝 Points essentiels

  • L’examen attend surtout la maîtrise des requêtes d’interrogation/transformations, pas une procédure de mise à jour détaillée dans cette section.
  • Pour une requête simple, un XPath seul suffit, par exemple doc('f.xml')//element.
  • Pour les requêtes filtrées et transformées, utiliser FLWOR avec for + where + return.
  • Pour les statistiques, utiliser LET pour stocker une collection puis appliquer des fonctions d’agrégation comme count, sum et avg.
  • Dans un return, écrire des balises XML avec { } permet d’insérer des valeurs calculées par XQuery.
  • Pour une jointure XML, écrire plusieurs FOR sur des documents différents puis relier via une condition dans WHERE sur des identifiants (ex. l/@id=l/@id = c/@livreId).

💡 Astuce mémo

XPath seul = simple ; FLWOR = filtrer/transformer ; LET = stats ; { } = injection ; distinct-values() = anti-doublons.

📖 9. Exemples concrets de requêtes XQuery

🔑 Notions clés & Définitions

  • distinct-values() : Fonction XQuery qui renvoie les valeurs distinctes d’une expression, ce qui élimine les doublons dans le résultat.
  • FLWOR : Mot-clés XQuery pour construire une requête enchaînant itérations, affectations, filtrage, tri et construction du résultat.
  • FOR : Clause FLWOR qui itère sur une séquence et produit potentiellement plusieurs résultats.
  • LET : Clause FLWOR qui assigne une valeur (ou une séquence) à une variable, sans multiplier les itérations.
  • WHERE : Clause FLWOR qui filtre les items produits par les clauses précédentes selon une condition.

📝 Points essentiels

  • Utilise WHERE avec distinct-values() pour éliminer les doublons, ce qui correspond à l’idée de DISTINCT en SQL.
  • FLWOR suit l’enchaînement FOR (itérer) puis LET (assigner) puis WHERE (filtrer) puis ORDER (trier) puis RETURN (résultat).
  • FOR parcourt une séquence et peut générer plusieurs itérations, alors que LET ne fait qu’une affectation pour la suite de la requête.
  • Pour filtrer des livres avec un prix strictement supérieur à 30, la condition se place dans WHERE et le résultat se renvoie via RETURN.
  • Dans XQuery, les accolades { } dans le XML du RETURN sont obligatoires pour intégrer du code XQuery dans le résultat.

💡 Astuce mémo

FLWOR = Filtrer (WHERE) + Construire (RETURN) ; FOR multiplie, LET assigne une seule fois.

📊 Tableaux de synthèse

Comparaison SQL / XPath / XQuery

CritèreSQLXPath / XQuery
Modèle de donnéesTables (lignes/colonnes)Arbre (nœuds)
SchémaFixe et rigideFlexible
Rôle principalRequêtes relationnellesNavigation dans XML (XPath) ; Interrogation + transformation XML (XQuery)
ExempleSELECT titre FROM livre WHERE prix > 30//livre[prix>30]/titre (XPath) ; for lin//livrewherel in //livre where l/prix>30 return $l/titre (XQuery)

Comparaison BD relationnelle vs BD XML native

CritèreBD relationnelleBD XML native
StructureTables (lignes/colonnes)Documents XML hiérarchiques
SchémaRigide, prédéfiniFlexible, évolutif
Données hiérarchiquesJointures complexes nécessairesConserve la hiérarchie naturelle
Langage de requêteSQLXQuery, XPath
ExemplesMySQL, PostgreSQL, OracleBaseX, eXist-db, MarkLogic

⚠️ Pièges & confusions fréquents

  1. Confondre = et eq : = compare des séquences avec sémantique existentielle, alors que eq compare des valeurs atomiques et peut produire une erreur si plusieurs nœuds.
  2. Croire que XPath et XQuery sont équivalents : XPath ne fait que naviguer, tandis que XQuery sert à interroger et transformer (XQuery = SQL pour XML).
  3. Inverser FOR et LET : FOR crée plusieurs itérations (N résultats possibles), LET assigne une valeur sans itérer (1 résultat).
  4. Oublier les accolades { } dans le XML du RETURN : elles indiquent du code XQuery dynamique à insérer dans le résultat.
  5. Penser qu’une BD XML native convertit le XML en tables : elle stocke et interroge le XML dans son format d’origine, sans conversion vers un modèle relationnel.
  6. Se tromper sur le rôle de WHERE : WHERE filtre les itérations, alors que ORDER BY trie et RETURN construit le résultat final.
  7. Confondre l’accès document doc() avec la navigation XPath : doc() sert à accéder au document, la sélection se fait ensuite via des chemins XPath/predicats.

✅ Checklist Examen

  1. Définir une base de données semi-structuree et citer ses 4 caractéristiques : flexible et hiérarchique, sans schéma rigide, auto-descriptive (balises), organisation en arborescence.
  2. Expliquer à quoi sert XML dans ce chapitre : échange (AJAX, SOAP, web services, EAI) et stockage (BD XML natives).
  3. Donner la différence clé entre BD XML native et BD relationnelle : conservation de la hiérarchie naturelle et absence de conversion en tables.
  4. Expliquer la différence entre XPath et XQuery : XPath = navigation dans l’arbre, XQuery = interrogation + transformation, et XPath est un sous-ensemble de XQuery.
  5. Savoir écrire une requête XQuery de filtrage avec FLWOR : for + where + return pour sélectionner des nœuds (ex. livres/prix > 30).
  6. Maîtriser FOR vs LET : FOR itère (et peut utiliser at pour l’indice), LET assigne une variable sans créer plusieurs itérations.
  7. Maîtriser WHERE : filtrer avec une condition booléenne (ex. contains($x/titre,'XML') ou inégalités) pour ne garder que les itérations valides.
  8. Maîtriser ORDER BY : trier avec order by expression [ascending|descending] avant le RETURN (ex. prix descending).
  9. Maîtriser RETURN : spécifier le résultat (XML, texte ou séquence) et comprendre que chaque itération retourne un fragment XML.
  10. Savoir utiliser les expressions conditionnelles IF THEN ELSE et les expressions quantifiées SOME/EVERY (retour xs:boolean).
  11. Connaître les fonctions clés et leurs rôles : count(), sum(), avg(), contains(), distinct-values().
  12. Distinguer opérateurs de comparaison : eq/ne/lt/gt pour atomes vs =/!= pour séquences (existentiel), et savoir donner l’exemple d’erreur avec eq si plusieurs nœuds.
  13. Savoir reconnaître et utiliser les constructions XQuery dynamiques : { } dans le XML du RETURN et data() pour supprimer les balises et renvoyer le contenu textuel.
  14. Connaître les opérations de mise à jour XQuery 3.0 : insert node, delete node, replace value of node, replace node, rename node (niveau syntaxe).

Metti alla prova le tue conoscenze

Metti alla prova le tue conoscenze su Introduction aux bases de données XML semi-structurees con 18 domande a scelta multipla con correzioni dettagliate.

1. Quelle expression conditionnelle choisit entre deux résultats selon un test booléen ?

2. Quelle fonction XQuery renvoie les valeurs uniques d’une expression ?

Fai il quiz →

Ripassa con le flashcard

Memorizza i concetti chiave di Introduction aux bases de données XML semi-structurees con 18 flashcard interattive.

Bases de données semi-structurees — définition ?

Stockent des données hiérarchiques et flexibles, sans schéma rigide.

Organisation hiérarchique — rôle ?

Représente les données sous forme d'arbre imbriqué.

Schéma flexible — avantage ?

Permet de modifier la structure sans migration lourde.

Vedi le flashcard →

Similar courses

Crea le tue schede di revisione

Importa il tuo corso e l'AI genera schede, quiz e flashcard in 30 secondi.

Generatore di schede