IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

XML et base de donnée


Sujet :

XML/XSL et SOAP

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut XML et base de donnée
    salut tout le monde cvp je veut savoir comment présenter le modèle conceptuel suivant avec un fichier xml et le dtd

  2. #2
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut
    En XML, on pourrait avoir une arborescence de ce genre :

    Code de (Victor BRITO)

    <?xml version="1.0" charset="utf-8"?>
    <vehicules>
    <vehicule>
    <immatriculation></immatriculation>
    <marque></marque>
    <type></type>
    <proprietaire>
    <prenom></prenom>
    <nom></nom>
    </proprietaire>
    <reparation>
    <numo></numo>
    <entree></entree>
    <sortie></sortie>
    <mecanicien>
    <numeca></numeca>
    <prenom></prenom>
    <nom></nom>
    </mecanicien>
    </reparation>
    </vehicule>
    <!-- Un autre nœud vehicule -->
    <vehicule></vehicule>
    </vehicules>

    mais pour cette exemple est ce que cette réponse est correcte

  3. #3
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    La modélisation XML est délicate : passer d'un modèle relationnel à un modèle arborescent revient à fixer des accès plus fréquents que d'autres.

    Le problème peut être pris selon différentes approches :

    * la plus simple consiste faire un simple rateau de chaque entité et d'utiliser les attributs id pour mémoriser les clés étrangères
    * une entité peut être prise pour racine puis les autres entités sont déclinées de proche en proche
    * un combiné des deux approches permet d'avoir une combinatoire importante

    Pour le cas des voitures et des réparations, il n'est pas malin de partir des voitures car on répète les propriétaires à chacun de leur voiture : les redondances sont toujours dangereuses en mise à jour. Il y a aussi les mécaniciens qu'on imagine bien devoir être gérés indépendamment des voitures et des propriétaires : une clé étrangère sur eux s'impose au niveau de la réparation mais ils doivent être mémorisés au niveau de la racine.

    Le problème demeure de savoir quelles requêtes seront effectivement demandées pour savoir si tout cela sera efficace ou non...

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut
    ok voici 4 requête que je cherche à réaliser

    -Rechercher les mécaniciens ayant travaillé sur la réparation 123
    -Rechercher le nombre total d'heures de travail de chaque réparation
    -Rechercher les marques des véhicules sur lesquels a travaillé Terieur Alain
    -Rechercher le mécanicien ayant effectué le plus d'heures de travail du 10/07/2007 au 12/07/2007, bornes comprises

    je prend comme exemple la liste suivante :


  5. #5
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Comme les requêtes sont orientées mécaniciens, je pense qu'il vaut mieux faire deux sous-arborescences : les mécaniciens et leurs réparations; les propriétaires et leurs voitures

  6. #6
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    Oui il faut mieux commencer par séparer par mécaniciens pour remonter jusqu'au propriétaire

  7. #7
    Membre éclairé
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Par défaut
    Le plus simple, IMHO, serait de mettre l'énoncé sous une forme normale 2NF ou 3NF d'abord puis de transformer chaque tableau en collection d'éléments XML de même type et d'utiliser des "id" en tant que clé pour créer des liens entre les éléments.

  8. #8
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Je suis d'accord pour dire que c'est plus évolutif de recréer pour chaque entité une arborescence en rateau puis de mettre toutes les clés étrangères sous forme d'attributs id.

    Mais je trouve dommage de perdre ainsi l'intérêt de l'arborescence en elle-même et les performances de parcours ne seront pas très bonnes s'il commence à y avoir beaucoup d'éléments. Voilà pourquoi je laisserais les réparations sous les mécaniciens et les véhicules sous les propriétaires

  9. #9
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut
    est si je commence par réparation ?
    est ce que c'est correcte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE vehicules SYSTEM "vehicules.dtd">
    <reparations>
      <reparation>
       <numo>123</numo>
        <vehicule>
         <marque>Peugeot</marque>
              <type>406</type>
              <immatriculation>1234 CX 80</immatriculation>
       </vehicule>
       <proprietaire>
              <nom>Dupont</nom>
              <prenom>Georges</prenom>
       </proprietaire>
       <mecanicien> 
            <numeca></numeca> 
            <prenom></prenom> 
            <nom></nom> 
          </mecanicien> 
     
       <date_entree></date_entree>
       <date_date_sortie></date_date_sortie>
     </reparation>
     <!-- Un autre nœud vehicule --> 
    <reparation></reparation>
    <reparations>

  10. #10
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Il n' y a pas de bon "début"... car il y aura vraiment trop de redondances.

    Je proposerais quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <garage>
     <mecaniciens>
      <mecanicien>
       <nom>...</nom>
       ...
       <reparations>
        <reparation vehicule="idveh123" .../>
       </reparations>
      <mecanicien>
     </mecaniciens>
     <proprietaires>
      <proprietaire>
       <nom>...</nom>
       ...
       <vehicules>
        <vehicule id="idveh123" ...>
         ...
        </vehicule>
        <vehicule id="idveh456" ...>
         ...
        </vehicule>
       </vehicules>
      </proprietaire>
      ...
     </proprietaires>
    </garage>

  11. #11
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    concernant l'utilisation d'id ou d'une arborescence (avec forcement beaucoup de répétition) la question est qui génère le fichier xml?
    Si tu a un applicatif qui à partir d'une base de donnée génère le fichier xml, et que tu n'as pas de soucis avec la taille du fichier il faut mieux utiliser la notion d'arborescence car tu n'as pas de risque que les données véhicule par exemple change pour un même véhicule.
    SI le créateur du fichier c'est toi alors il faut mieux utiliser les id ce qui évite a avoir à modifier à plein d'endroit ton fichier xml si ton véhicule change de type par exemple

  12. #12
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut
    Citation Envoyé par fraoustin Voir le message
    concernant l'utilisation d'id ou d'une arborescence (avec forcement beaucoup de répétition) la question est qui génère le fichier xml?
    Si tu a un applicatif qui à partir d'une base de donnée génère le fichier xml, et que tu n'as pas de soucis avec la taille du fichier il faut mieux utiliser la notion d'arborescence car tu n'as pas de risque que les données véhicule par exemple change pour un même véhicule.
    SI le créateur du fichier c'est toi alors il faut mieux utiliser les id ce qui évite a avoir à modifier à plein d'endroit ton fichier xml si ton véhicule change de type par exemple
    non je suis le créateur du fichier XML ,pour la base de donnée c'est une petit base qui va pas dépasser les 20 enregistrement et les donnée ne change pas

    alors qui ce que vous dites?

  13. #13
    Membre éclairé
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Par défaut
    Ma petite pierre à l'édifice. Je pense avoir évité les redondances du mieux que j'ai pû.
    Et encore que, j'ai longtemps hésité si je donnais une réponse après le MP que j'ai recu...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <garage>
      <proprios>
       <proprio id="" nom="" ...>
         <possede vehicule=""/>
         <possede vehicule=""/>
         <!-- etc -->
       </proprio>
      <!-- etc -->
      </proprios>
      <vehicules>
        <vehicule id="" immat="" type="" marque="" ... />
        <!-- etc -->
      </vehicules>
      <mecanos>
        <mecano id="" nom="" ... />
        <!-- etc -->
      </mecanos>
      <reparations>
        <reparation id="" date_entree="" date_sortie="">
          <concerne vehicule=""/>
          <par mecano="" nbh="" />
        </reparation>
        <!-- etc -->
      </reparations>
    </garage>

  14. #14
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut
    Citation Envoyé par Kurisu Voir le message
    Ma petite pierre à l'édifice. Je pense avoir évité les redondances du mieux que j'ai pû.
    Et encore que, j'ai longtemps hésité si je donnais une réponse après le MP que j'ai recu...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <garage>
      <proprios>
       <proprio id="" nom="" ...>
         <possede vehicule=""/>
         <possede vehicule=""/>
         <!-- etc -->
       </proprio>
      <!-- etc -->
      </proprios>
      <vehicules>
        <vehicule id="" immat="" type="" marque="" ... />
        <!-- etc -->
      </vehicules>
      <mecanos>
        <mecano id="" nom="" ... />
        <!-- etc -->
      </mecanos>
      <reparations>
        <reparation id="" date_entree="" date_sortie="">
          <concerne vehicule=""/>
          <par mecano="" nbh="" />
        </reparation>
        <!-- etc -->
      </reparations>
    </garage>

    merci pour votre réponse et votre participation à cette discussion

  15. #15
    Membre éclairé
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Par défaut
    En fait...

    j'enleverais plutôt le <possede vehicule="..." /> de <proprio> pour le remplacer par un attribut proprio=".." dans <vehicule>, car un vehicule a rarement plus d'un proprio et que ce sera plus rapide à retrouver le proprio d'une voiture en reparation... notamment pour la facture...

    Le problème, c'est que ca fait ressembler la base XML à une base relationelle... (je me sers moins des inclusions d'éléments que propose XML...).

Discussions similaires

  1. xml et base de donnée : faut-il passer obligatoirement par XML
    Par monphp dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 25/04/2007, 01h41
  2. [PHP] utiliser XML comme base de donnée pour un forum ?
    Par wystan dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 27/01/2007, 10h08
  3. [Structure] xml et base de donnée
    Par ons dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 22/01/2007, 16h01
  4. xml ou base de donnée?
    Par Zeusviper dans le forum Décisions SGBD
    Réponses: 21
    Dernier message: 16/06/2006, 11h01
  5. Manipulation de XML sur base de données
    Par psyche dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 02/11/2004, 14h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo