SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
XML to Relational Conversion
                   using Theory of Regular Tree Grammar

                        Murali Mani, Dongwon Lee
                         VLDB Conference 2002


                             Vincent Berthier


                             23 octobre 2012




Vincent Berthier           XML to Relational Conversion   23 octobre 2012   1 / 15
Sommaire




1   Introduction
       Motivation & Contexte
       Le Problème

2   Travail réalisé
      Des grammaires régulières
      Algorithme
      Création des tables
      Quelques plus

3   Conclusion
      Des problèmes
      Questions



      Vincent Berthier     XML to Relational Conversion   23 octobre 2012   2 / 15
Introduction   Motivation & Contexte




Avec l’arrivée d’XPath et de XQuery en 1999, les bases de données
XML se développent.
Une question légitime apparaît alors : peut-on passer d’une base XML
à une base relationnelle ?
Certaines choses faites en XML ne peuvent pas forcément l’être en
relationnel...




Vincent Berthier      XML to Relational Conversion            23 octobre 2012   3 / 15
Introduction   Le Problème


Les Unions XML dans du relationnel



   En XML : Élèves → Étudiants | AuditeurLibre
   En relationnel ?


                                 Table : Élèves
                       id   Étudiant ou AuditeurLibre
                        1          21 256 728
                        2        Patrick Dupont




    Vincent Berthier        XML to Relational Conversion   23 octobre 2012   4 / 15
Travail réalisé   Des grammaires régulières


Une grammaire de base


  N                       = {Formation, Nom, Note, Eval, Etudiant, Personne
                            AuditeurLibre, NumEtudiant, Prenom, Niveau, Coeff , Email, Tel}
  T                       = {formation, nom, note, eval, etudiant, personne
                            auditeurLibre, numEtudiant, prenom, Niveau, Coeff , email, tel}
  S                       = {Formation}
  P:           Formation → formation(Nom, Formation∗, AuditeurLibre∗)
               Formation → formation(Nom, Formation∗, Etudiant∗, Note|Eval)
                 Etudiant → etudiant(NumEtudiant, Personne)
           AuditeurLibre → auditeurLibre(Personne)
                 Personne → personne(Nom, (Email|Tel))
                     Note → note(Niveau, Coeff )
                      Eval → eval( ); Nom → nom( )
                   Niveau → niveau( ); Coeff → coeff ( )
                    Email → email( ); Tel → tel( )



       Vincent Berthier            XML to Relational Conversion                  23 octobre 2012   5 / 15
Travail réalisé   Des grammaires régulières


Un exemple de graphe



                                  formation


nom                      formation                 etudiant                                 note


        nom         auditeurLibre           num             personne               niveau          credits


        nom                 tel                        nom              email



      Vincent Berthier               XML to Relational Conversion                    23 octobre 2012   6 / 15
Travail réalisé   Des grammaires régulières


Normal Form 1 (NF1)

                          Respecte la première restriction
                       {X → aX2 ; Y → aY2 } ∈ P ⇒ X = Y




    Vincent Berthier           XML to Relational Conversion                  23 octobre 2012   7 / 15
Travail réalisé   Des grammaires régulières


Normal Form 1 (NF1)

                           Respecte la première restriction
                        {X → aX2 ; Y → aY2 } ∈ P ⇒ X = Y

        P:                 Formation → formation((Nom, Formation∗, AuditeurLibre∗)
                                          |(Nom, Formation∗, Etudiant∗, Note|Eval))
                            Etudiant → etudiant(NumEtudiant, Personne)
                        AuditeurLibre → auditeurLibre(Personne)
                            Personne → personne(Nom, (Email|Tel))
                                Note → note(Niveau, Coeff )
                                Eval → eval( ); Nom → nom( )
                              Niveau → niveau( ); Credits → coeff ( )
                               Email → email( ); Tel → tel( )


Utilisée pour vérifier par exemple la validité d’un document par rapport à
un schéma.
     Vincent Berthier              XML to Relational Conversion                  23 octobre 2012   7 / 15
Travail réalisé   Des grammaires régulières


Normal Form 2 (NF2)

        Enfreint la première restriction...mais fait disparaître les unions.

Avant

            P:                Formation → formation((Nom, Formation∗, AuditeurLibre∗)
                                            |(Nom, Formation∗, Etudiant∗, Note|Eval))
                               Personne → personne(Nom, (Email|Tel))



Après

          P:               Formation → formation(Nom, AuditeurLibre∗, Formation∗)
                           Formation → formation(Nom, Formation∗, Etudiant∗, Note)
                           Formation → formation(Nom, Formation∗, Etudiant∗, Eval )
                           Personne → personne(Nom, Email )
                           Personne → personne(Nom, Tel )
        Vincent Berthier               XML to Relational Conversion                 23 octobre 2012   8 / 15
Travail réalisé   Algorithme


Inlining

Un principe simple : représenter un élément par l’ensemble des feuilles de
son sous-graphe, en omettant les collections.

  Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note)
                              Formation


               Nom      Formation        Etudiant           Note


                                                   Niveau          Credits

                             Formation = {}


     Vincent Berthier       XML to Relational Conversion             23 octobre 2012   9 / 15
Travail réalisé   Algorithme


Inlining

Un principe simple : représenter un élément par l’ensemble des feuilles de
son sous-graphe, en omettant les collections.

  Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note)
                              Formation


               Nom      Formation        Etudiant           Note


                                                   Niveau          Credits

                              Formation = {}


     Vincent Berthier       XML to Relational Conversion             23 octobre 2012   9 / 15
Travail réalisé   Algorithme


Inlining

Un principe simple : représenter un élément par l’ensemble des feuilles de
son sous-graphe, en omettant les collections.

  Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note)
                              Formation


               Nom      Formation        Etudiant           Note


                                                   Niveau          Credits

                           Formation = {Nom}


     Vincent Berthier       XML to Relational Conversion             23 octobre 2012   9 / 15
Travail réalisé   Algorithme


Inlining

Un principe simple : représenter un élément par l’ensemble des feuilles de
son sous-graphe, en omettant les collections.

  Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note)
                              Formation


               Nom      Formation        Etudiant           Note


                                                   Niveau          Credits

                           Formation = {Nom}


     Vincent Berthier       XML to Relational Conversion             23 octobre 2012   9 / 15
Travail réalisé   Algorithme


Inlining

Un principe simple : représenter un élément par l’ensemble des feuilles de
son sous-graphe, en omettant les collections.

  Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note)
                              Formation


               Nom      Formation        Etudiant           Note


                                                   Niveau          Credits

                           Formation = {Nom}


     Vincent Berthier       XML to Relational Conversion             23 octobre 2012   9 / 15
Travail réalisé   Algorithme


Inlining

Un principe simple : représenter un élément par l’ensemble des feuilles de
son sous-graphe, en omettant les collections.

  Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note)
                                Formation


               Nom       Formation         Etudiant           Note


                                                     Niveau          Credits

                        Formation = {Nom, Note.Niveau}


     Vincent Berthier         XML to Relational Conversion             23 octobre 2012   9 / 15
Travail réalisé   Algorithme


Inlining

Un principe simple : représenter un élément par l’ensemble des feuilles de
son sous-graphe, en omettant les collections.

  Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note)
                              Formation


               Nom      Formation        Etudiant           Note


                                                   Niveau          Credits

                Formation = {Nom, Note.Niveau, Note.Credits}


     Vincent Berthier        XML to Relational Conversion            23 octobre 2012   9 / 15
Travail réalisé   Création des tables


  Résultat d’inlining

                                                                     On obtient :
A partir des règles de la grammaire :                                           formation1(Nom)
                                                                                formation2(Nom, Note.Niveau,
   Formation →formation(Nom, Formation∗, AuditeurLibre∗)
                                                                                Note.Credits)
   Formation →formation(Nom, Formation∗, Etudiant∗, Note)
                                                                                formation3(Nom, Note.Eval)
   Formation →formation(Nom, Formation∗, Etudiant∗, Eval)
                                                                                etudiant1(NumEtudiant, Nom,
    Etudiant →etudiant(NumEtudiant, Personne)                                   Email)
AuditeurLibre →auditeurLibre(Personne)                                          etudiant2(NumEtudiant, Nom,
    Personne →personne(Nom, Email)                                              Tel)
    Personne →personne(Nom, Tel)                                                auditeurLibre1(Nom, Email)
                                                                                auditeurLibre2(Nom, Tel)

                        Mais il manque...le mapping des collections...




          Vincent Berthier              XML to Relational Conversion                   23 octobre 2012     10 / 15
Travail réalisé   Création des tables


Introduction des collections



                Des formations d’un côté, des élèves de l’autre...


  formation1(Nom)                                 etudiant1(NumEtudiant, P.Nom, P.Email)
  formation2(Nom, N.Niveau, N.Credits)            etudiant2(NumEtudiant, P.Nom, P.Tel)
  formation3(Nom, Eval)                           auditeurLibre1(P.Nom, P.Email)
                                                  auditeurLibre2(P.Nom, P.Tel)




     Vincent Berthier          XML to Relational Conversion            23 octobre 2012   11 / 15
Travail réalisé   Création des tables


Introduction des collections



                Des formations d’un côté, des élèves de l’autre...


  formation1(Nom)                                       etudiant1(NumEtudiant, P.Nom, P.Email)
  formation2(Nom, N.Niveau, N.Credits)            ×     etudiant2(NumEtudiant, P.Nom, P.Tel)
  formation3(Nom, Eval)                                 auditeurLibre1(P.Nom, P.Email)
                                                        auditeurLibre2(P.Nom, P.Tel)



                        Une seule solution : un “produit cartésien”
                            En respectant les règles de la grammaire bien sûr.




     Vincent Berthier                XML to Relational Conversion                23 octobre 2012   11 / 15
Travail réalisé   Création des tables


Introduction des collections



                             Avec des clés étrangères

    formation1auditeurLibre1formation1(nom, auditeurLibre1,
    formation1auditeurLibre1formation1)
    formation1auditeurLibre1formation2(nom, auditeurLibre1,
    formation1auditeurLibre1formation2)
    formation1auditeurLibre1formation3(nom, auditeurLibre1,
    formation1auditeurLibre1formation3)
    formation1auditeurLibre2formation1(nom, auditeurLibre2,
    formation1auditeurLibre1formation1)
    etc.




     Vincent Berthier           XML to Relational Conversion           23 octobre 2012   11 / 15
Travail réalisé   Création des tables


Un problème de taille

Qui dit produit cartésien, dit explosion du nombre de tables. On peut
essayer de factoriser... mais au prix du “nullable”. Par exemple :

                        Table : Étudiant + AuditeurLibre → Élèves
                         Nom    NumEtudiant               P.Email           P.Tel
                                   null                     null             null


                                       Table : Formation
          Nom           Formation      N.Niveau          N.Credits           Eval      Élèves
                           null          null              null              null       null



     Vincent Berthier               XML to Relational Conversion                    23 octobre 2012   12 / 15
Travail réalisé   Quelques plus


Ils ont aussi fait...




    Les attributs
    IDREF, IDREFS
    Les récursions
    Contraintes sémantiques




     Vincent Berthier    XML to Relational Conversion      23 octobre 2012   13 / 15
Conclusion   Des problèmes


Quelques “problèmes”



   Passage rapide sur la création des tables
          Des règles précises sont données pour les contraintes sémantiques
          Mais tout est laissé à l’imagination du lecteur lorsqu’il s’agit de choisir
          comment organiser les tables...
   Analyse légère
          On convertit une base de données en XML
          On reconvertit le fichier XML avec ce que nous proposons
          On vérifie qu’on retrouve bien ce qu’on avait
          Conclusion : ça marche !




    Vincent Berthier           XML to Relational Conversion      23 octobre 2012   14 / 15
Conclusion   Questions


A vous ?




                          Des questions ?




    Vincent Berthier   XML to Relational Conversion   23 octobre 2012   15 / 15
Algorithme d’inlining

inline : currEl , currSet, attSet ⇒ ResultSet
     Assign the set of attributes in A(currEl ) except IDREF and IDREFS
     attributes to attSet. Let the element type definition of currEl be given
     by M(currEl ) = (r1 |r2 |...|rn ). Set ResultSet = φ
     For each ri , we do the following
           Set currSet = attSet
           Let the elements which occur in ri with occurence constraints [1, 1]
           after simplification be {e1 , e2 , ..., en }. For each ei do the following.
                  If M(ei ) ∈ τ then currSet = currSet × ei
                              ˆ
                  Else currSet = currSet × inline(ei , φ, φ)
           If currSet = φ, currSet = currEl
           ResultSet = ResultSet ∪ currSet.
     Return ResultSet


     Vincent Berthier             XML to Relational Conversion      23 octobre 2012     16 / 15

Más contenido relacionado

Destacado

Chomskyan linguistics lec 3
Chomskyan linguistics lec 3Chomskyan linguistics lec 3
Chomskyan linguistics lec 3Hina Honey
 
Structuralism presentation
Structuralism presentationStructuralism presentation
Structuralism presentationNaMra SyEd
 
Nativism in Antebellum America (AP US History)
Nativism in Antebellum America (AP US History)Nativism in Antebellum America (AP US History)
Nativism in Antebellum America (AP US History)Tom Richey
 
Comparing and contrasting first and second language acquisition john
Comparing and contrasting first and second language acquisition johnComparing and contrasting first and second language acquisition john
Comparing and contrasting first and second language acquisition johnLaura Palacio
 
Comparing and contrasting first and second language acquisition - Wissam Ali ...
Comparing and contrasting first and second language acquisition - Wissam Ali ...Comparing and contrasting first and second language acquisition - Wissam Ali ...
Comparing and contrasting first and second language acquisition - Wissam Ali ...wissam999
 
The Age Factor in Second Language Acquisition
The Age Factor in Second Language AcquisitionThe Age Factor in Second Language Acquisition
The Age Factor in Second Language AcquisitionJeanette Carrasquillo
 
Behaviorism and-mentalism-and-language
Behaviorism and-mentalism-and-languageBehaviorism and-mentalism-and-language
Behaviorism and-mentalism-and-languageSarah Saadna
 
Differences in first and second language learning
Differences in first and second language learningDifferences in first and second language learning
Differences in first and second language learningAlan Bessette
 
Theories of second language acquisition
Theories of second language acquisitionTheories of second language acquisition
Theories of second language acquisitiondeera zahrin
 
Holmberg Moore Peters
Holmberg Moore PetersHolmberg Moore Peters
Holmberg Moore Petersguest2c679db
 
B. F. Skinner's Operant Conditioning
B. F. Skinner's Operant ConditioningB. F. Skinner's Operant Conditioning
B. F. Skinner's Operant ConditioningMalyn Singson
 
Article hilaire nov 2007
Article hilaire nov 2007Article hilaire nov 2007
Article hilaire nov 2007blessedkkr
 
L1 and L2 acquisition
L1 and L2 acquisitionL1 and L2 acquisition
L1 and L2 acquisitionjalomi112
 
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...Emilie Robert
 
Microprocesadores Grupo 3
Microprocesadores Grupo 3Microprocesadores Grupo 3
Microprocesadores Grupo 3WillemVanH
 

Destacado (18)

Chomskyan linguistics lec 3
Chomskyan linguistics lec 3Chomskyan linguistics lec 3
Chomskyan linguistics lec 3
 
Structuralism presentation
Structuralism presentationStructuralism presentation
Structuralism presentation
 
Nativism in Antebellum America (AP US History)
Nativism in Antebellum America (AP US History)Nativism in Antebellum America (AP US History)
Nativism in Antebellum America (AP US History)
 
Comparing and contrasting first and second language acquisition john
Comparing and contrasting first and second language acquisition johnComparing and contrasting first and second language acquisition john
Comparing and contrasting first and second language acquisition john
 
Comparing and contrasting first and second language acquisition - Wissam Ali ...
Comparing and contrasting first and second language acquisition - Wissam Ali ...Comparing and contrasting first and second language acquisition - Wissam Ali ...
Comparing and contrasting first and second language acquisition - Wissam Ali ...
 
The Age Factor in Second Language Acquisition
The Age Factor in Second Language AcquisitionThe Age Factor in Second Language Acquisition
The Age Factor in Second Language Acquisition
 
Behaviorism and-mentalism-and-language
Behaviorism and-mentalism-and-languageBehaviorism and-mentalism-and-language
Behaviorism and-mentalism-and-language
 
Structuralism
StructuralismStructuralism
Structuralism
 
Differences in first and second language learning
Differences in first and second language learningDifferences in first and second language learning
Differences in first and second language learning
 
Theories of second language acquisition
Theories of second language acquisitionTheories of second language acquisition
Theories of second language acquisition
 
Holmberg Moore Peters
Holmberg Moore PetersHolmberg Moore Peters
Holmberg Moore Peters
 
B. F. Skinner's Operant Conditioning
B. F. Skinner's Operant ConditioningB. F. Skinner's Operant Conditioning
B. F. Skinner's Operant Conditioning
 
Article hilaire nov 2007
Article hilaire nov 2007Article hilaire nov 2007
Article hilaire nov 2007
 
L1 and L2 acquisition
L1 and L2 acquisitionL1 and L2 acquisition
L1 and L2 acquisition
 
Gala sla 2016
Gala sla 2016Gala sla 2016
Gala sla 2016
 
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
Quand la mise en oeuvre présente des défis... Une synthèse réaliste des polit...
 
Autopartes 2011
Autopartes 2011Autopartes 2011
Autopartes 2011
 
Microprocesadores Grupo 3
Microprocesadores Grupo 3Microprocesadores Grupo 3
Microprocesadores Grupo 3
 

XML to Relational Conversion using Theory of Regular Tree Grammar

  • 1. XML to Relational Conversion using Theory of Regular Tree Grammar Murali Mani, Dongwon Lee VLDB Conference 2002 Vincent Berthier 23 octobre 2012 Vincent Berthier XML to Relational Conversion 23 octobre 2012 1 / 15
  • 2. Sommaire 1 Introduction Motivation & Contexte Le Problème 2 Travail réalisé Des grammaires régulières Algorithme Création des tables Quelques plus 3 Conclusion Des problèmes Questions Vincent Berthier XML to Relational Conversion 23 octobre 2012 2 / 15
  • 3. Introduction Motivation & Contexte Avec l’arrivée d’XPath et de XQuery en 1999, les bases de données XML se développent. Une question légitime apparaît alors : peut-on passer d’une base XML à une base relationnelle ? Certaines choses faites en XML ne peuvent pas forcément l’être en relationnel... Vincent Berthier XML to Relational Conversion 23 octobre 2012 3 / 15
  • 4. Introduction Le Problème Les Unions XML dans du relationnel En XML : Élèves → Étudiants | AuditeurLibre En relationnel ? Table : Élèves id Étudiant ou AuditeurLibre 1 21 256 728 2 Patrick Dupont Vincent Berthier XML to Relational Conversion 23 octobre 2012 4 / 15
  • 5. Travail réalisé Des grammaires régulières Une grammaire de base N = {Formation, Nom, Note, Eval, Etudiant, Personne AuditeurLibre, NumEtudiant, Prenom, Niveau, Coeff , Email, Tel} T = {formation, nom, note, eval, etudiant, personne auditeurLibre, numEtudiant, prenom, Niveau, Coeff , email, tel} S = {Formation} P: Formation → formation(Nom, Formation∗, AuditeurLibre∗) Formation → formation(Nom, Formation∗, Etudiant∗, Note|Eval) Etudiant → etudiant(NumEtudiant, Personne) AuditeurLibre → auditeurLibre(Personne) Personne → personne(Nom, (Email|Tel)) Note → note(Niveau, Coeff ) Eval → eval( ); Nom → nom( ) Niveau → niveau( ); Coeff → coeff ( ) Email → email( ); Tel → tel( ) Vincent Berthier XML to Relational Conversion 23 octobre 2012 5 / 15
  • 6. Travail réalisé Des grammaires régulières Un exemple de graphe formation nom formation etudiant note nom auditeurLibre num personne niveau credits nom tel nom email Vincent Berthier XML to Relational Conversion 23 octobre 2012 6 / 15
  • 7. Travail réalisé Des grammaires régulières Normal Form 1 (NF1) Respecte la première restriction {X → aX2 ; Y → aY2 } ∈ P ⇒ X = Y Vincent Berthier XML to Relational Conversion 23 octobre 2012 7 / 15
  • 8. Travail réalisé Des grammaires régulières Normal Form 1 (NF1) Respecte la première restriction {X → aX2 ; Y → aY2 } ∈ P ⇒ X = Y P: Formation → formation((Nom, Formation∗, AuditeurLibre∗) |(Nom, Formation∗, Etudiant∗, Note|Eval)) Etudiant → etudiant(NumEtudiant, Personne) AuditeurLibre → auditeurLibre(Personne) Personne → personne(Nom, (Email|Tel)) Note → note(Niveau, Coeff ) Eval → eval( ); Nom → nom( ) Niveau → niveau( ); Credits → coeff ( ) Email → email( ); Tel → tel( ) Utilisée pour vérifier par exemple la validité d’un document par rapport à un schéma. Vincent Berthier XML to Relational Conversion 23 octobre 2012 7 / 15
  • 9. Travail réalisé Des grammaires régulières Normal Form 2 (NF2) Enfreint la première restriction...mais fait disparaître les unions. Avant P: Formation → formation((Nom, Formation∗, AuditeurLibre∗) |(Nom, Formation∗, Etudiant∗, Note|Eval)) Personne → personne(Nom, (Email|Tel)) Après P: Formation → formation(Nom, AuditeurLibre∗, Formation∗) Formation → formation(Nom, Formation∗, Etudiant∗, Note) Formation → formation(Nom, Formation∗, Etudiant∗, Eval ) Personne → personne(Nom, Email ) Personne → personne(Nom, Tel ) Vincent Berthier XML to Relational Conversion 23 octobre 2012 8 / 15
  • 10. Travail réalisé Algorithme Inlining Un principe simple : représenter un élément par l’ensemble des feuilles de son sous-graphe, en omettant les collections. Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note) Formation Nom Formation Etudiant Note Niveau Credits Formation = {} Vincent Berthier XML to Relational Conversion 23 octobre 2012 9 / 15
  • 11. Travail réalisé Algorithme Inlining Un principe simple : représenter un élément par l’ensemble des feuilles de son sous-graphe, en omettant les collections. Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note) Formation Nom Formation Etudiant Note Niveau Credits Formation = {} Vincent Berthier XML to Relational Conversion 23 octobre 2012 9 / 15
  • 12. Travail réalisé Algorithme Inlining Un principe simple : représenter un élément par l’ensemble des feuilles de son sous-graphe, en omettant les collections. Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note) Formation Nom Formation Etudiant Note Niveau Credits Formation = {Nom} Vincent Berthier XML to Relational Conversion 23 octobre 2012 9 / 15
  • 13. Travail réalisé Algorithme Inlining Un principe simple : représenter un élément par l’ensemble des feuilles de son sous-graphe, en omettant les collections. Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note) Formation Nom Formation Etudiant Note Niveau Credits Formation = {Nom} Vincent Berthier XML to Relational Conversion 23 octobre 2012 9 / 15
  • 14. Travail réalisé Algorithme Inlining Un principe simple : représenter un élément par l’ensemble des feuilles de son sous-graphe, en omettant les collections. Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note) Formation Nom Formation Etudiant Note Niveau Credits Formation = {Nom} Vincent Berthier XML to Relational Conversion 23 octobre 2012 9 / 15
  • 15. Travail réalisé Algorithme Inlining Un principe simple : représenter un élément par l’ensemble des feuilles de son sous-graphe, en omettant les collections. Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note) Formation Nom Formation Etudiant Note Niveau Credits Formation = {Nom, Note.Niveau} Vincent Berthier XML to Relational Conversion 23 octobre 2012 9 / 15
  • 16. Travail réalisé Algorithme Inlining Un principe simple : représenter un élément par l’ensemble des feuilles de son sous-graphe, en omettant les collections. Exemple : Formation → formation(Nom, Formation∗, Etudiant∗, Note) Formation Nom Formation Etudiant Note Niveau Credits Formation = {Nom, Note.Niveau, Note.Credits} Vincent Berthier XML to Relational Conversion 23 octobre 2012 9 / 15
  • 17. Travail réalisé Création des tables Résultat d’inlining On obtient : A partir des règles de la grammaire : formation1(Nom) formation2(Nom, Note.Niveau, Formation →formation(Nom, Formation∗, AuditeurLibre∗) Note.Credits) Formation →formation(Nom, Formation∗, Etudiant∗, Note) formation3(Nom, Note.Eval) Formation →formation(Nom, Formation∗, Etudiant∗, Eval) etudiant1(NumEtudiant, Nom, Etudiant →etudiant(NumEtudiant, Personne) Email) AuditeurLibre →auditeurLibre(Personne) etudiant2(NumEtudiant, Nom, Personne →personne(Nom, Email) Tel) Personne →personne(Nom, Tel) auditeurLibre1(Nom, Email) auditeurLibre2(Nom, Tel) Mais il manque...le mapping des collections... Vincent Berthier XML to Relational Conversion 23 octobre 2012 10 / 15
  • 18. Travail réalisé Création des tables Introduction des collections Des formations d’un côté, des élèves de l’autre... formation1(Nom) etudiant1(NumEtudiant, P.Nom, P.Email) formation2(Nom, N.Niveau, N.Credits) etudiant2(NumEtudiant, P.Nom, P.Tel) formation3(Nom, Eval) auditeurLibre1(P.Nom, P.Email) auditeurLibre2(P.Nom, P.Tel) Vincent Berthier XML to Relational Conversion 23 octobre 2012 11 / 15
  • 19. Travail réalisé Création des tables Introduction des collections Des formations d’un côté, des élèves de l’autre... formation1(Nom) etudiant1(NumEtudiant, P.Nom, P.Email) formation2(Nom, N.Niveau, N.Credits) × etudiant2(NumEtudiant, P.Nom, P.Tel) formation3(Nom, Eval) auditeurLibre1(P.Nom, P.Email) auditeurLibre2(P.Nom, P.Tel) Une seule solution : un “produit cartésien” En respectant les règles de la grammaire bien sûr. Vincent Berthier XML to Relational Conversion 23 octobre 2012 11 / 15
  • 20. Travail réalisé Création des tables Introduction des collections Avec des clés étrangères formation1auditeurLibre1formation1(nom, auditeurLibre1, formation1auditeurLibre1formation1) formation1auditeurLibre1formation2(nom, auditeurLibre1, formation1auditeurLibre1formation2) formation1auditeurLibre1formation3(nom, auditeurLibre1, formation1auditeurLibre1formation3) formation1auditeurLibre2formation1(nom, auditeurLibre2, formation1auditeurLibre1formation1) etc. Vincent Berthier XML to Relational Conversion 23 octobre 2012 11 / 15
  • 21. Travail réalisé Création des tables Un problème de taille Qui dit produit cartésien, dit explosion du nombre de tables. On peut essayer de factoriser... mais au prix du “nullable”. Par exemple : Table : Étudiant + AuditeurLibre → Élèves Nom NumEtudiant P.Email P.Tel null null null Table : Formation Nom Formation N.Niveau N.Credits Eval Élèves null null null null null Vincent Berthier XML to Relational Conversion 23 octobre 2012 12 / 15
  • 22. Travail réalisé Quelques plus Ils ont aussi fait... Les attributs IDREF, IDREFS Les récursions Contraintes sémantiques Vincent Berthier XML to Relational Conversion 23 octobre 2012 13 / 15
  • 23. Conclusion Des problèmes Quelques “problèmes” Passage rapide sur la création des tables Des règles précises sont données pour les contraintes sémantiques Mais tout est laissé à l’imagination du lecteur lorsqu’il s’agit de choisir comment organiser les tables... Analyse légère On convertit une base de données en XML On reconvertit le fichier XML avec ce que nous proposons On vérifie qu’on retrouve bien ce qu’on avait Conclusion : ça marche ! Vincent Berthier XML to Relational Conversion 23 octobre 2012 14 / 15
  • 24. Conclusion Questions A vous ? Des questions ? Vincent Berthier XML to Relational Conversion 23 octobre 2012 15 / 15
  • 25. Algorithme d’inlining inline : currEl , currSet, attSet ⇒ ResultSet Assign the set of attributes in A(currEl ) except IDREF and IDREFS attributes to attSet. Let the element type definition of currEl be given by M(currEl ) = (r1 |r2 |...|rn ). Set ResultSet = φ For each ri , we do the following Set currSet = attSet Let the elements which occur in ri with occurence constraints [1, 1] after simplification be {e1 , e2 , ..., en }. For each ei do the following. If M(ei ) ∈ τ then currSet = currSet × ei ˆ Else currSet = currSet × inline(ei , φ, φ) If currSet = φ, currSet = currEl ResultSet = ResultSet ∪ currSet. Return ResultSet Vincent Berthier XML to Relational Conversion 23 octobre 2012 16 / 15