Hoja de repaso: 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).

Pon a prueba tus conocimientos

Pon a prueba tus conocimientos sobre Introduction aux bases de données XML semi-structurees con 18 preguntas de opción múltiple con correcciones detalladas.

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 ?

Realiza el cuestionario →

Repasa con tarjetas de memoria

Memoriza los conceptos clave de Introduction aux bases de données XML semi-structurees con 18 tarjetas de memoria interactivas.

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.

Ver tarjetas de memoria →

Similar courses

Crea tus propias hojas de repaso

Importa tu curso y la IA genera hojas, cuestionarios y tarjetas de memoria en 30 segundos.

Generador de hojas