Chapitre 5 : BD relationnelles et XML Introduction Ouvrir les BD au

Chapitre 5 : BD relationnelles et XML
67
1. Introduction
Ouvrir les BD au Web
Mettre les données des BD sur le Web (passerelles d’accès aux BD)
exportation de données (vers HTML)
BD comme repository d’un intranet
Couplage HTML-bases de données
• Serveur HTTP dynamique
Basé sur CGI
Serveur Web dédié aux BD : Oracle WebDB, VersantWeb, etc.
Serveur de pages dynamiques
Les langages de haut niveau permettant de définir des actions à faire exécuter sur le serveur
• ASP (MS Active Server Page)
• JSP (Java Server Page)
• PHP (Hypertext Preprocessor)
Accès base de données
Limitations du couplage HTML-BD
• Solutions propriétaires
Excepté JSP
• Pas de protocole pour publier les données
SQL n’est pas conçu pour le Web
• Pas de format d’échange de données standard :
HTML est un format de présentation
Mélange présentation et contenu
Pas de structure, pas de sémantique, pas de contrainte d’intégrité
Perd la structure (schéma) provenant de la BD
Le contenu doit être abstrait et indépendant du stockage et de la présentation
Permet l’intégration uniforme de données hétérogènes
• Provenant de différentes sources de données
Permet des applications dynamiques
• La présentation peut être différente selon le médium, le temps, la requête ou le profil de
l’utilisateur
Chapitre 5 : BD relationnelles et XML
68
XML est une bonne solution pour l’échange de données
Standard du W3C
Décrit le contenu, pas la présentation
• Structure, type, schéma, requêtes, etc.
Fournit l’indépendance des données au stockage et à la présentation
2. Passage BDR/XML
Exemple : gestion des commandes des clients.
Client (Nclient, nom, prenom, adresse)
Commande (Ncmde, Nclient, date)
Produit (Nproduit, Catégorie, prix)
détails-commande (Ncmde, Nproduit, Quantité)
=> Un schéma avec clés primaires et clés étrangères
Nclient
nom
prenom
adresse
01234
razak
ali
Constantine
01235
soltane
hamza
Annaba
Table : client
Nproduit
Catégorie
prix
500
ZZZT
200,00
501
YYYB
100,00
502
AAAB
400,00
Table : Produit
Ncmde
date
012
20-02-2010
013
15-12-2010
014
10-01-2011
Table : commande
Ncmde
Nproduit
Quantité
012
500
300
012
501
200
013
502
400
014
503
100
Table : détails-commande
Réprésentation XML: avec éléments
Trois niveaux d’éléments dans l’arbre : table, lignes, attributs
<?xml version=’1.0’ encoding=’ISO-8859-1?>
<Clients>
<Client>
<Nclient>01234</Nclient>
<nom>razak</nom>
<prenom>Ali</prenom>
<adresse>Constantine</adresse>
Chapitre 5 : BD relationnelles et XML
69
</Client>
</Clients>
Tous représentés par des éléments
Réprésentation XML: avec attributs
Deux niveaux d’éléments tables et lignes :
<?xml version=’1.0’ encoding=’ISO-8859-1?>
<Clients>
<Client Nclient=’01234
nom=’razak
lieu=’Ali
Adresse=’Constantine
/>
</Clients>
Attributs relationnels attributs XML
La représentation avec attributs est plus proche du relationnel car :
Absence d’ordre sur les attributs en XML comme en relationnel.
On ne peut pas avoir deux fois un attribut avec le même nom.
On peut, avec une DTD, donner la liste des valeurs acceptées pour un attribut.
De plus, moins volumineux
Représentation des associations 1 à plusieurs
L’équivalent du relationnel en XML
<?xml version=’1.0’ encoding=’ISO-8859-1?>
<Clients>
<Client Nclient=’01234
nom=’razak
prenom=’Ali
Adresse=’Constantine’/>
<Commande Ncmde=’012
Nclient=’01234
date=’ 20-02-2010’ />
<Commande Ncmde=’013
Nclient=’01234
date=’15-12-2010’ />
</Clients>
Relationnel vs XML
En relationnel :
On associe les lignes par le système clé primaire/clé étrangère
On fait le rapprochement par un calcul (la jointure) assez coûteux
Intérêt : simple, raisonnablement efficace, évite les redondances
En XML
Le modèle est plus puissant
Même représentation possible
Toujours aussi coûteux
On peut exploiter une représentation imbriquée
Représentation imbriquée
On exploite le fait qu’une activité est relative à une seule station
Chapitre 5 : BD relationnelles et XML
70
<?xml version=’1.0’ encoding=’ISO-8859-1?>
<Clients>
<Client Nclient=’01234
nom=’razak
prenom=’Ali
Adresse=’Constantine’>
<Commande Ncmde=’012
date=’ 20-02-2010’ />
<Commande Ncmde=’013
date=’15-12-2010’ />
<Client>
</Clients>
Associations plusieurs à plusieurs
Beaucoup moins évident à gérer. Exemple avec l’association Commande/Produit
Une commande peut contenir plusieurs produits
Un produit peut passer dans plusieurs commandes
En relationnel, on crée une table intermédiaire (détails-commande)
détails-commande (Ncmde, Nproduit, Quantité)
Exemple
<?xml version=’1.0’ encoding=’ISO-8859-1?>
<Commande Ncmde=’012 Nclient=’01234date=’20-02-2010’>
<detailscommande Nproduit=’500Quantité=’300’/>
<detailscommande Nproduit=’501Quantité=’200’/>
</Commande>
<Commande Ncmde=’013 Nclient=’01234date=’ 15-12-2010’>
<detailscommande Nproduit=’502Quantité=’400’/>
</Commande>
<Produit Nproduit=’500Catégorie=’ZZZT
Prix=’ 200,00/>
Solution ultime
On choisit une racine (par exemple les Clients) et on imbrique tout
Les commandes sont des éléments dans le Client
Les détailscommandes sont des éléments dans les commandes
On introduit une certaine redondance : les produits apparaissent plusieurs fois
Exemple
<?xml version=’1.0’ encoding=’ISO-8859-1?>
<Clients>
<Client Nclient=’01234’
nom=’razakprenom=’Ali Adresse= ‘Constantine’>
<Commande Ncmde=’012 date=’20-02-2010’>
<detailscommande Nproduit=’500Quantité=300’/>
</Commande>
<Commande Ncmde=’013 date=’ 15-12-2010’>
<detailscommande Nproduit=’502Quantité=’400’/>
</Commande>
</Client>
<Client Nclient=’01235’
Chapitre 5 : BD relationnelles et XML
71
nom=’soltaneprenom=’hamza Adresse= ‘Annaba’>
<Commande Ncmde=’014 date=’10-01-2011’>
<detailscommande Nproduit=’503Quantité=’100’/>
</Commande>
</Client>
<Praoduit Nproduit= ‘500’ catégorie=’ZZZT’ prix=’200,00’ />
<Praoduit Nproduit= ‘501’ catégorie=’YYYB’ prix=’100,00’ />
……………………………………………….
</Clients)
Déclaration de la DTD
En général on exporte une base de données pour fournir une « vue » XML à d’autres utilisateurs.
Il faut donc fournir une description de la structure XML.
On suppose que :
Les colonnes sont représentées par des attributs XML;
Le chemin d’accès principal est le Client ;
Pour chaque client on trouve, imbriqués, les commandes d’un client, et dans chaque
commande les détails des produits commandés;
Les produits on sont représentées par des éléments indépendants, avec un lien de
navigation.
Exemple général :
<!ELEMENT Clients (Client*, Produit*)>
<!ELEMENT Client (commande*)>
<!ELEMENT commande (détailscommande*)>
<!ELEMENT détailscommande EMPTY>
<!ELEMENT Produit EMPTY>
<!ATTLIST Client
Nclient ID #REQUIRED
nom #REQUIRED
prenom CDATA #REQUIRED
Adresse CDATA #REQUIRED >
<!ATTLIST commande
Ncdme ID #REQUIRED
date CDATA #REQUIRED >
<!ATTLIST Produit
Nproduit ID #REQUIRED
Catégorie CDATA #REQUIRED
prix CDATA #REQUIRED>
On déclare une référence depuis details-commande vers produit.
<!ATTLIST detailscommande
Nproduit IDREF #REQUIRED
Quantité CDATA #REQUIRED>
3. L’utilitaire XSQL d’ORACLE
Oracle propose un XML Development Kit avec : DOM, SAX, processeur XSLT et nombreux
utilitaires (en java).
XSQL est un SQL mis à la sauce XML. Il permet :
De se connecter à la base
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !