Publication de données relationnelles en XML
Transcription
Publication de données relationnelles en XML
Objectifs XPATH, XQUERY Publication XML de données relationnelles XML Vues XML SQL données BD relationnelles 1 2 Deux problèmes Format canonique HOTELS • Exporter une relation dans un format canonique : simple • Exporter une base de données (ensemble de relations) dans un format prédéfini – Ressemble à du stockage XML dans un SGBDR (sans maj) – complexe 3 B. Defude - INT Evry - 2003 Nom Catégorie Adresse prix Napoléon 3 Paris 600 Gare 2 Evry 300 <row> <nom>Napoleon</nom> <categorie>3</categorie> <adresse>Paris</adresse> <prix>600</prix> </row> <row> <nom>Gare</nom> <categorie>2</categorie> <adresse>Evry</adresse> <prix>300</prix> </row> 4 1 Exporter dans un format prédéfini Format canonique (2) • Intéressant pour publication de données sur le web ou intégration de données • Supporté dans SQLSERVER2000 (SELECT ... FOR XML), DB2 ou ORACLE9i XML SQL Utility • Spécification du mapping – Besoin d’un langage – Pas de standard (un par vendeur) – À stabiliser • Deux grandes approches – Relation universelle – Schéma annoté 5 Exemple Acteur(idact, nom, prénom) <1, ‘Depardieu’, ‘gérard’> <2, ‘Clavier’, ‘christian’> Film(idfilm, titre, année) <11, ‘Astérix’, 2001> <12, ‘Vatel’, 2000> Distribution(idfilm, idact) <11,1> <11, 2>, <12, 1> Relation universelle <Acteur> <Nom>Depardieu</Nom> <Prenom>Gérard</Prenom> <Film annee="2001">Astérix</Film> <Film annee="2000">Vatel</Film> </Acteur> <Acteur> <Nom>Clavier</Nom> <Prenom>Christian</Prenom> <Film annee="2001">Astérix</Film> </Acteur> ... 7 B. Defude - INT Evry - 2003 6 A.nom, A.prenom, F.titre, F.année Depardieu, Gérard, Astérix, 2001 Depardieu, Gérard, Vatel, 2000 <SQL_stmt> Select A.nom, A.prenom, F.titre, F.annee From Acteur A, Film F, Distribution D <Acteur> Where A.idact=D.idact and D.idfilm=F.idfilm <Nom>Depardieu</Nom> </SQL_stmt> <Prenom>Gérard</Prenom> <Film annee="2001">Astérix</Film> + template annoté par les <Film annee="2000">Vatel</Film> colonnes de la relation universelle </Acteur> <element_node Acteur> <Acteur> <element_node Nom> <Nom>Clavier</Nom> <text_node> <Prenom>Christian</Prenom> <Column name="A.nom"/> <Film annee="2001">Astérix</Film> </text_node> </Acteur> ... ... 8 2 Relation universelle (2) Schéma annoté • Spécification du schéma de sortie souhaité annoté par la provenance des données • Support des vendeurs : – IBM DB2 XML extender – SqlServer2000 Universal XML • Peut être complexe selon la nature des transformations souhaitées 9 Schéma annoté en SqlServer2000 <xs:element name="Acteur" sql:relation="Acteur"> <xs:complexType><xs:sequence> <xs:element name="nom" type="xs:string" sql:field="nom"/> <xs:element name="prenom" type="xs:string" sql:field="prenom"/> <xs:element ref="Film" sql:relationship="ActDist" sql:relationship="DistFilm"/> </xs:sequence></xs:complexType> </xs:element> <xs:element name="Film" sql:relation="Film" sql:field="titre"> <xs:attribute name="annee" type="xs:dateTime" sql:field="annee"/> </xs:element> 11 B. Defude - INT Evry - 2003 <xs:element name="Acteur"> <xs:complexType> <xs:sequence> <xs:element name="nom" type="xs:string"/> <xs:element name="prenom" type="xs:string"/> <xs:element ref="Film"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Film"> <xs:attribute name="annee" type="xs:dateTime"/> </xs:element> 10 Schéma annoté SqlServer (2) <xs:annotation> <xs:appinfo> <sql:relationship name=ActDist parent=Acteur parent-key=idact child=Distribution child-key=idact </sql:relationship> <xs:annotation> </xs:appinfo> <xs:appinfo> </xs:annotation> <sql:relationship name=DistFilm parent=Distribution parent-key=idfilm child=Film child-key=idfilm </sql:relationship> </xs:appinfo> 12 </xs:annotation> 3 Bilan Schéma annoté Bibliographie • G. Gardarin; XML des bases de données aux services web, 2002, Dunod • M. Fernandez, M. Benedikt, J. Freire, A. Sahuguet; XML and Data Management, Tutorial WWW2002 Conference, Hawai • D. Chamberlin; Xquery: An XML Query Language, IBM Systems Journal, Vol41, No4, 2002 • Variations selon les vendeurs – SqlServer 2000 et IBM DB2 • Plus flexible que la relation universelle • Limitations sur les expressions SQL (pas d’unions, ...) • Encore à améliorer! 13 B. Defude - INT Evry - 2003 14 4