HAL Id: mem_00000130
https://memsic.ccsd.cnrs.fr/mem_00000130
Submitted on 18 May 2004
HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.
Représentation de schémas de bases de données hétérogènes sous forme de métaschémas XML
Amar Zerdazi
To cite this version:
Amar Zerdazi. Représentation de schémas de bases de données hétérogènes sous forme de métaschémas XML. domain_shs.info.comm. 2003. �mem_00000130�
!!"" ## $$
%
%&&
'' ''(('' &&
) *+,
") )-
* " . .
!"!"## $$ %% "" ## && ''
() $ " * ) + " " +
'
Résumé
/ 0 1 ) 2 1
) - -) 3 ) 4 * 5
.)) 1) ) )! )1 - ) . 1 ) - 6 .
) # - -
) ) 4 0 # ) -
) 7 - 3 -) )4
* ! # 8 / 0 ) - 0
) -) -) ) .) ) .)) 10
.) 9 4 : ) - 5
)1 # ) -)
- : ) ; 3 4 .) )
- ) .) 1 ) 5 ) ) 4
Mots clés
< ) .)) 10 ! ) ) ! )1 ! 1 1 9=*! .) 9 4
Abstract
* 1 / # 1 - .
4 * . . 1 /! . 1 - : . 1
! . # - 1 .
. 4 . # / . - .
>. - 4
# . - ! > # / - / # 1 1
- . 1 . . 9 . 4
. : 2 - - 1 # / 1 >
- - ! > . : 1 . 4 . .
:- . . 1 . . 4
Keywords
? 1 ! ! 1 ! 9=* 1 1 ! . 9 4
&
! ! "
# # !
" $%&' $
$ # !
" # (
) * )+% ) , ----
- !
) & %.) &/ 0)12 $
--- !
$ !
3 ! $& . .4 $%)+')
5 !
! ! " " " " " "
# $ % & $
4 4 : @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44444444@ @ ' 4'4 ) A @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44444444444 ' 4&4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444
&
# '% () & *
'4 4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444 B '4'4 )1 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4 C '4'4 4 ); )1 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44 C '4'4'4 - @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4 C '4'4&4 $ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44 '4'4 4 " @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44 '4&4 A D+ E@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ '4 4 A 9/0 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444 % '4F4 A ,= E"@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ '4B4 < @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44 '4C4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ '
# +% ) $+
&4 4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444
&4'4 -- . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44
&4&4 )1 ) 9 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444 F
&4 4 *) 01 .) <* .) 9 44 '
&4 4 4 - @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4 '
&4 4 4 4 *) <*@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ '
&4 4 4'4 *) ) @ @ @ @ @ @ @ @ @ @ @ @ @ @ '
&4 4'4 - / )1 )@ @ @ @ @ @ @ 4 '&
&4 4'4 4 - ) - 44@ @ @ @ @ @ @ @ @ @ @ @ @ @ 44 '&
&4 4'4'4 - ) ) 10 @ @ @ @ @ @ @ @ @ '
&4 4'4'4 4 ) ) 10 - @ 444@ @ @ @ @ @ @ @ @ @ @ @ 444 '
&4 4'4'4 4 ) ) 10 - : 44@ @ @ @ @ @ @ @ @ @ @ @ 444 'F
&4 4'4&4 - )1 ) .) # @ @ 'C
&4 4'4&4 4 *) /- 11 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44 'C
&4 4'4&4'4 /- 11 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4 '
&4 4'4&4&4 ")) /- 11 /- - : @ @ @ @ @ 4 '
&4 4&4 - / @ @ @ @ @ @ @ @ @ @ @ 4 '%
&4 4&4 4 - ) 2) @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4@ 44 '%
&4 4&4'4 # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ &
&4F4 ") - @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44 &
&4B4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ &
F
# , % ( & +*
4 4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444 &B 4'4 ) : @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44 &B 4&4 G # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444 &
4&4 4 1 =D<* .)) 10 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4 &
4&4'4 ") -) ) @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44 &
4&4&4 ) .) 9 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444 &
4 4 -) @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4 4 4 4 , ) ) @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
4 4 4 4 +: <* .)) 10 @ @ @ @ @ @ @ @ @ @ @ @ 444
4 4 4'4 D .) ) @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4 '
4F4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ &
# * % # ( - & ,,
F4 4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ F F4'4 - # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44 F
! ( . . . & ,/
0( . . . && *1
2 & **
,4 4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4 FB ,4'4 ,-- ) 1 1 9 = . * 9=* @ @ @ @ 4444 FB ,4& =-) 1 1 9=* @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444@ @ @ F
,4&4 4 = @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444 F ,4&4'4 /- ) @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 44 B
,4&4'4 4 /- ) 44 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444 B
,4&4'4'4 /- ) ) #)44@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ B ,4 4 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 444 B
B
! ! " " 3 3 " " 4 4 " "
5 & $& 6 Architecture du système……….. 14
'& 6 Transfert d’information via XML ……… 15
+& 6 Extrait d’un simple document XML……… 17
,& 6 DTD du document XML………... 18
*& 6 Schéma XML du document XML………... 19
7& 6 MCD de la gestion de commandes………... 21
/& 6 MCD de la gestion de commandes avec les nouvelles contraintes………..……….. 24
8& 6 Graphe de la gestion de commandes………... 26
9& 6 Métaschéma XML de la BD gestion de commandes………. 33
$1& 6 Représentation graphique du type complexe dbGestion………... 34
$$& 6 Modèle UML de l’extracteur………... 37
$'& 6 Construction d’un complexType représentant une table……… 39
$+& 6 Algorithme d’extraction du schéma de la BD ……….. 40
$,& 6 Classe DomDocuement et DomNode de la bibliothèque DOM de Java………. 41
$*& 6 Génération des métaschémas XML……….. 42
C
$&$ # 2
$&' : ( ; <
$&+ :(
1.1 Contexte
, A . ) 1 # . 1 -
-) ) / 0 ) - # ) --
H , 'I4 )- - 1 0 1 ) -
- 0 ! - ! ) ) 5 .)) 1) ) ) ) ! 5
) ) ! : ) !
- ) -) ! ) 4 )
# ! - 0! . ! 4 -
- ) ) 0
- / 0 ) 1
) ) 2) ) -
-- 1) ! 1) 1 !
-- ! ) 0 ! 4
* - / 0 ! ) )-
) ! ; 3 )1 )- . 1) 1 -.
) 4 ) - # 3 ) )- . J
# - ) )- ) 0 . 10 4
5 - - 0 1 ) : ) ) ! ) )
- )! ) ) - 0 HK," 'I4
.)) 1) ) )! 5 ! )- -./ ) 4
/ 0 . 10 1 10 ) 3
! ) 3 3 0 )
-- 5 3 # H, *% I4 / 0 .)) 10
.0 - 5 ) / 0 . 10 L ;5; / 0
1 1 - 1 1 ! 0 !
=D<* ) 4
1.2 Problématique et objectifs
- - # )1 )
) 1 - 5 ) 4 + !
- - :L -- ! - - - : !
) - 1 ! # )1
3 - ) 4
, ! ) -) - # ; -
) - # .)) 10 ) !
) A ! ) 9 ! 4 4 ) -) 3 -
) ) / 0 2 1 4 - !
- # ) .) 5 ) 1 )
) 4
# : . . )# -- !
)1 ) .)) 10 # 9 : . . -
7 -- . 9 1) ) -- - A
%
- : - - 1 # # . .
M 4
)1 5 )) ) -) - ;- A )# -- 5 # N
*)# -- O A - : .) )
) 4
*) 01 - 1 O .) 5 -
) .) 4
*) O - ) 5 ) - ) .) 4
- O-) ) .) )1 4
$ 3 1 1 ; 4
* 1 *+,! ) - - 0 - - !
: -) ) .) )
.) 9 4 , ! ) .) 9
.) ) 5 ) ) 4 ) ) # 1 6 5
: ) .) ) - 5 ) ) 4
-- . ) . 1) ) 9 - 1) )#
.) ) 1) ) ) .) 9 4
) .) : ) - ) )
# ! # ) .) 9 N
; +: ) .) : ) 4
; * - -0 .) ) 5 - 1 / 0
=D<* - 4
; E- .) 4
; -). ) /- )
-). : ) ; 3 4
; - -0 ! /- ) 4
; ) # - .) )
- # )1 # # : - - -
)# <*4
1.3 Plan
) ) 8 # N
. - ' N () P . - -) - ) . )1
) .)) 10 4 - # ) ) -
- 4 + ! # : - A . . )1
<*4 - -- . 4 , . - !
1 - - : A -- . !
# 1 #) 4
. - & N = P
. - ! -) -- . )1 4 ,-0 -)
. / 0 ! ) 01
.) <* .) 9 4 . 01 ) ) ) - : -
-- 4
. - N ( P G # )1 -)
-- . 4 ) - / / 0 -
-) 4 + ! 0 - . - -
) ) : - 4
. - F N # ( - P . - / ) -) )
. - -) ) )# - - # 4
( ( ) )
'&$
'&' : )
'&+ : < 0
'&, : < (
'&* : < # "
'&7 ! (
'&/ # (
' 2.1 Introduction
1 :- ) . 1 - M : 1
- 0 .)) 1) ) ) -) 2 1 4
* ! -) . - ) -- . )1
) .)) 10 ! -0 # -) ) - - - -.
- )1 4 , -) . - ! ) / .0
) - # 1 . -- . 4
2.2 Processus d’intégration
) -) O A ) ! #
- - ))4 O )1 ) ! ! )- -) !
- ) - -) )- Q -) )4
- - -- . ) - - )1 .)
) - -. ! - - HRE %%IN
); )1 N .) 0 ) !
- N . . - ; .) !
)1 N ) .) 1 5 - .) !
- ; .) 01 )1 !
" N .) 4
2.2.1 Pré-intégration
-. : : )) !
! ). ! 4 - .) ! 01 :
)) 4
-); )1 ) 5 - # - # ) ) :- )
- .) ) - .)) 1) ) ) 0 ) )4
2.2.2 Comparaison
.) : # ) . )! O) - #
5 )) : 4
" -- : ) - - )
O -) )) # !
)) :- ) - -- H ,"%BI4
# : ) ) 5 -. - ! -- . #
- )) HS % I!
- ) )) 5 1 H$, % I!
). N - - - ) 5 :- <* *<, !
) ; 3 - 5 4
&
2.2.3 Fusion
) # - ) .) -); )1
. . - )) - ! - )1
- - - 3 )4 ! 0 ; 1) ) ! 5
.) )1 )5 - N
T* .) )# 0 !
T* - ; .) ) ) - !
T* 01 )1 - - 5 ). : 0 ) ) 4
2.2.4 Restructuration
-. # - Q )1 #
) .) 4 -- . ) ! /- ) )) !
- ! -) # #
) ! -- - ) ) 1
H<E % I4
- - )1 )) )# --) # - A . . 4
-) ; # : - ) - ) ) :
) . 1 ) .)) 10 - M 4
" -- ! ! ) ) 5 -. -); )1 4
2.3 Projet GEMO (Ex Verso)
- A D+ E HK+" 'I! - A K+"=E! )1
) ) M 4 A - A )
- 0 : - ) : / 0 1 ) :
)# -- # -- - ) 4 O / 0 -
# 5 ) - : : ) :4
U : . . - A 5 # N
Médiation entre données XML
* )1 ) ) 9 ! - - #
- 1 .) )
- # # 3 .)) 10
9 4 * - -- 1 # - # 3 )
1 # .) ) ) * * 9
# 1 4
* 1 . 1 - ) ; ) 5 )
- - .) )
.)) 10 9 4 1 - 9
-) )! - - - -- - )
1) ) - -) . HK+" 'I4
Médiation pour le Web sémantique
A M ) # M ) )
5 -). - . --). - )
1 ! . . ! # H , 'I4 1
) ) M # - - # )
) . . 4 - ! - 1 5 ) . M #)
) - - 0 ) ) ) ) 0
-- )# ;. - - 5 ) . 4
Ouverture vers les services du Web
+ -- . /- -Q ) ! D+ E O ) 5 )1
)1 # M ) O) . 1 ) 9 4
) # # ) - -- - 0 -
- # 3 )4 * ! # :- - 0 )
9 -- 5 # M 4
Entrepôts thématiques de données du Web
)# -- -- . : 1) ) - -) 8
) # ) - . ) -Q .) .
- 5 - M ! 1 ) #
1 ) 4 - 0 :-) ) , # 9 5 )
HK+" 'I4
! D+ E )# -- , # 9 .0 # M -
-Q ) .) 4
,$ - & ' -& ' % ) )
. %/
F 2.4 Projet Xylème
, 1 ! 9/0 H9S &I ; - " , )) - ' -
)# -- - 5 - - /- K 4 9/0 # 5 )
-Q : 5 0 1 ) . ! - 2 ) 9
M 4 + -Q ) ) 5
- M - #) ! # . 1 )1 4
= # 1) ) . 1 1
) ! - :- - 1 1 9 4
A - A - : - ) : M
- 4 * ! - 1
, - N
• # 01 ) M - ) 4
• 1 ) 5 # # 1 6 5 1 1 3 V
: M & H9S &I4
• = # )# ) < .0 ! R :!44 4
< 1 A ) ) ; ) ! - -
.)- - . 1 8 - / 0
W- ; : X - 0 ) ) 4
, . ! -Q 9 9/0 Y = # 10 2 1 ! 0 5
; ).)) 10 4
) 2 1 - - . 1 - /) - 9/=
2 9 1 - 9/ :'
: ) : )4
. 1 # 9/ & :
) ) 5 # ) 4
$ ! - - ! - #
4 ! - # Z! - # A
- : ;- # )4 9U ! 1 1 3 9
- ) ) / 0 W- ; : X 5 -) 3
) ) 4 - ) - 0 4
,$ &0 )1 & ' / ' & ' ) ) % 2
" " #* /
3 $ &0 4 " 4 * 4 *
* % * /
5$ &0' ) " * / 6 )
&0 # 7 ) 4 * 8 8 9 :
) 0 " /
B
# 1 . - ) 1 ) . .
! - )5 /- 3 - )- :
.)) 10 - ) )
) -) - 4
5 1 0 -)
# )1 ! 9/0 Y = # - # .) .
)) 4 ! ! .) .
4
* # - - - : ! -) )
- 1 ) V ) 5 )1 -- 4
9/0 Y = # )) 6 . # 8 5 )
) -- -Q )1 ; #
- )4
2.5 Projet CASTOR
,= E" H ,= &I - A E- = -- 1 A ( -
- - 1 - 0 A
) 4 - - ) - /-
A R# H , &IL 5 . -) )- R# !
- ) - : -) N D = 4
) 1 ) -) ) O A
) 4 - ) ) 0 ) ! -
- # - : 4
,= E" ) . -- 1! )# ) 4 + -.
)# -- ! 0 A )# 0 # ! # - 1) 5
/ . ) )) H ,= &I4
C 2.6 Bilan
- . J - A # : . . ! / .) )
- 4 -- Z
- - : A . -- . ! - - 0 )
) - . 4
PPrriinncciippee//OObbjjeeccttiiffss PoPoiinnttss ffoorrttss PoPoiinnttss ffaaiibblleess
GEGEMMOO
- Concevoir un système qui repose sur
l’intégration virtuelle de données.
- Concevoir et valider des solutions (originales) à la gestion de données complexe dans les systèmes distribués.
- Amélioration de la recherche sur le Web.
- Echange de données sur le Web (sources d’informations et services)
- Systèmes distribués à grande échelle (nombreuses sources de données,
nombreux clients)
- Les applications deviennent de plus en plus complexes (systèmes virtuels, services de gestion de contenu personnels).
- Problème de médiation de données (disparité entre la compréhension des données par l’utilisateur et le schéma de la base).
XyXyllèèmmee
- Nouvelle génération de moteur de recherche.
- Gestion des évolutions (historique de données).
- Hébergement des données et des applications.
- Acquisition des documents à partir du Web ou en local.
- Intégration sémantique de données à travers des vues.
- Architecture distribuée.
- Basé sur le standard XML du W3C.
- Passage à l’échelle (taille, contenu hétérogène, accès multiple).
- Gestion des changements (acquisition des données, gestion des versions, requêtes temporelles).
CACASSTTOORR
- Mettre des BD relationnelles et objets dans des documents XML et annuaires LDAP.
- Projet open source.
- Performance du système de gestion d’objet.
- Evolution très rapide du modèle objet.
- Etape supplémentaire d’intégration par la traduction et la mémorisation des sources de données en objets.
2.7 Conclusion
* ) / 0 ) ; ! )1 ) .)) 10
- - ) - ) 1) 4
)- . 3 / 0 W -- 1 X4 --
-); -) ) 4
* : ! -- . - - -) ) 5
) ) ! 5 )
- ) - ) - : ) ; 3 4
%
) )
+&$
+&' 4 +&+
+&, ( ) !
+&* (
+&7 # (
' 3.1 Introduction
5 1 - )1 ! -. )
-- ) -); )1 4 :- ) . - '4'4 ! -. - /
.) 5 )1 : ) 4
. - ! -) - ! - - -- . )1 ! A
1 -- 4 + ! ) ) # : -
01 .) <* 5 .) 9 ! -
A 4
3.2 Notre approche
-- . # 5 - - : - 0 .)) 1) ) )
) 4 ) - - -) .) <* - )
.) 9 /- .) ! A ( !
A 4 : ) - 5 )1 #
) -) - : )
; 3 4 ) .) ) - ; .)
1 ) 5 ) ) 4
) .) - - -0 .) 5
- 1 / 0 =D<* - 4 # 1 .
) .) A - -
) 4
, - 0 ) )1 ) ) )) ! .
-) N
5 $& > - " 0 # /
XSD1
<…>
XSD2
<…>
XSD3
<…>
Catalogues systèmes des SGBD
Métaschémas XML (structure logique) Moteur d’extraction
des fichiers XSD
: Interrogation des bases de données via des requêtes SQL.
: Résultats des requêtes.
: Génération des métaschémas XML (fichiers d’extension .xsd).
: Lien sémantique entre métaschémas.
Légende :
'
- # ! .) - ) - - - !
Q . :- ) ; ! -)
: 0 4
; # ( "0! N : ) .) 9 !
# 1 ) /- =D<* ! A ( ! A
/ 0 )1 4
; ( ) 2 N - G / 0 4 ,
! 1 1 / 0 3 =U
) - ) ) .) 9 4
1) ) ) .) 9 ! : -
01 :- . - &4 4
; N - -) ) -)4 1 . 9=*
- - * * ) - 1 -. #
- - - - -) ) : 4
* ! . /- .) <* . 9=* -)
1 A - - # 4
5 - W ) ) .) X -
-) # L A - A *+,
) 5 # 0 - ) 01 - 1
) .) 5 4
3.3 Intégration basée sur XML
) ) .) ) ) )) # 1 ' !
9 ) .) ! . 9=*
!
BD_1 SGBDR
BD_2 SGBDOO
BD_3 Entrepôt
XML
BD_4 LDAP
Légende :
: Echange par des métaschémas XML.
: Evolution du schéma de la BD par un métaschéma XML.
5 '& > ! & '/
''
9 1 1 - - 5 -
# ) ! ! ! ) 01 - )
! # 1 4
# . 1 1 9 -) - - )5
-) /- ) 4 ! 9=* -- .
* * HM &I- -) - - ! Q
8 - - # -- Z 9 4 , !
.) 9=* * * 01 # 3 - ) -
9 4 - * * - )5 -) )
) Z) 1 1 9=* 4 * *
- A 01 - J -)
) - /- 1 - ) ! - ) -)
)) ! 4 4 = - ! * *
- - ) 01 9 - .) 1 -
. 10 # 1 1 # 9 4
+ ! /- -) - - A . 5 * * 5
. . # : ) 1) ) 9
H ?, &I4
; , 1 . :- ! - #
- /- 1 ) L
; - ) ) ) A !
.) 1 -) ! - 1 1
) ) )# -- .) 9=*4
; , - / : 9 - -) .) 9 ; 3 ! -
) ) - ) ! - 2 .)
- :; # :; 3 9 1
- 1 1 3 9 9U 4
) .) 9 - - -0 .) ) 5
- 1 / 0 =D<* - 4 . A
- - ) 4
-). - ) - ) -) ) !
-) 9 # * * )
# .) 9 - 4 ) :
# 0 * * # 1 .) 9 4
1 # -) : - 9 N 1 -)
) ) #). )) 1 4
'&
<?xml version="1.0" encoding="UFT-8"?>
<bulletin-meteo ident=“b201“>
<note>© <I>InfoMétéo</I>, </note>
<date>25 mars 2001</data>
<heure>08:00</heure>
<vue-satellite type="gif" src=http://www.zzz.com/photos/im9245.gif/>
< !—Localisation géographique -->
<localisation>
<zone>
<ville>Toulouse</ville>
<departement>31</departement>
<region>Midi-Pyrénées</region>
<pays>France</pays>
</zone>
<altitude unite"m">187</altitude>
</localisation>
< !—Bloc de mesures -->
<mesures>
<ciel>variable</ciel>
<température unite="celsius">16</temperature>
<vent>
<direction>SW</direction>
<vitesse unité="m/s">6</vitesse>
</vent>
<pression unite="mb">1025</pression>
<humidite unite="%">80</humidite>
<visibilite>10</visibilite>
<index-uv>1</index-uv>
</measures>
</bulletin-meteo>
5 +& > 4 ) & '/
'
1 : - * * - # 9 1 &
) 1 - - * * 4
1 - ) /- )) [\+ + + @ 4
) /- )) )) ; -
) ;)) N ) ) - W ! X4
W ] X -- Z 5 0 1 . : : :
# 4 ;)) ! )) )) # ; !
- ! ) W ^ X4
W _ X 1 )) 1 - )) - )-) !
W ` X 1 )-) 4 ) - .0 0
/- )) ; 4 " - - -)
-) )-) : - ) : )) 4
1: <!DOCTYPE bulletin-meteo [
2: <!ELEMENT bulletin-meteo (note?, date, heure, vue-satellite?, localisation, mesures)>
3: <!ATTLIST bulletin-meteo ident ID #REQUIRED>
4: <!ELEMENT note (#PCDATA | I *>
5: <!ELEMENT I (#PCDATA)>
6: <!ELEMENT date (#PCDATA)>
7: <!ELEMENT heure (#PCDATA)>
8: <!ELEMENT vue-satellite EMPTY>
9: <!ATTLIST vue-satellite type CDATA #REQYUIRED 10: src CDATA #IMPLIED>
11: <!ELEMENT localisation (zone, altitude)>
12: <!ELEMENT zone (ville, departement, region, pays)>
13: <!ELEMENT mesures (ciel, temperature, vent, pression, humidite, visibilite, index-uv?)>
14: <!ELEMENT ville (#PCDATA)>
15: <!ELEMENT departement (#PCDATA)>
16: <!ELEMENT region (#PCDATA)>
17: <!ELEMENT pays (#PCDATA)>
18: <!ELEMENT altitude (#PCDATA)>
19: <!ATTLIST altitude unite CDATA #REQUIRED>
20: <!ELEMENT ciel (#PCDATA)>
21: <!ELEMENT temperature (#PCDATA)>
22: <!ATTLIST temperature unite CDATA #REQUIRED>
23: <!ELEMENT vent (direction, vitesse)>
24: <!ELEMENT pression (#PCDATA)>
25: <!ATTLIST pression unite CDATA #REQUIRED>
26: <!ELEMENT humidite (#PCDATA)>
27: <!ELEMENT humidite unite CDATA #REQUIRED)>
28: <!ELEMENT visibilite (#PCDATA)>
29: <!ELEMENT index-uv (#PCDATA)>
39: <!ELEMENT direction (#PCDATA)>
31: <!ELEMENT vitesse (#PCDATA)>
32: <!ATTLIST vitesse unite CDATA #REQUIRED>
33: ]>
5 ,& > ! & '/
'F
1 &0 1 ! - ) [\, = @ 4 +
-) ! /- ) # - ) .) .
)5 /- )) )4
1 B0 1 ! -) ) )) )
-) )) 4 ) /- )) -)
) : a *, , N . * ! - ) )-
)) ) 4 #) * *!
- /- ) -) - # 3 :- )4
- )) # . ! - - . / FNF -
: - . Z 0 # V )
4
R 5 -) ! # ) * * - ) - 5
9 4 , # : - -) ) ! # )A5 # 4 *
1 # ) - ) - 1 1 .) 9 4
1 F -) : .) 9 - 5 * * 1 !
--) 1 1 F -
:- 4
<?xml version="1.0" encoding="UFT-8"?>
<xsd:schema xmlns="http://www.w3.org/2000/10/XMLSchema">
<xsd:element name="bulletin_météo">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="note" minOccurs="0"/>
<xsd:element ref="date" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="heure" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="vue-satellite" minOccurs="0"/>
<xsd:element ref="localisation" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="mesures"/>
</xsd:sequence>
<xsd:attribute name="ident" type="xsd:ID" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ciel" type="xsd:string"/>
<xsd:element name="date" type="xsd:date"/>
<xsd:element name="direction" type="xsd:string"/>
<xsd:element name="département" type="xsd:string"/>
<xsd:element name="heure" type="xsd:time"/>
<xsd:element name="humidité"/>
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="unité" type="xsd:string"
use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:schema>
5 *& > " & ' & '/
'B
• * )) G : : # )
: - - ! ! )- ! 4 ! /- ))
W - X ) )) 5 /-
) ! /- ) - 3 /- -) ) : N 1!: N ! : N !
4 /- W X ) .) 4 * : - !
) /- )) . )) 5 /- )
-) ) 4 - 5 9 5 .)
#) ! - : - ! : )) -0
4
• * G - 0 G ! /- ))
W - : X : N - : /- 0 :- -
)) # - ) : N ! 4 1 )
) )4 ) :- E !
:E -) W X ) * *4
# ) )) 3 - #
-- Z )) ) 4 )
: N - )1 /- ) -) 5 #
! # - ) ! 1 4
= : - - # .) )
) - . -) * *! - : / : - -
# ! - - - ) - --
.) 9 0 ) ) 4 ! : -
- ) ) 0 /- )! - /-
) ) ) # /-
)) 9 ! / -) )# - :
- - 1 ! 1 ' 4 ) /- - )1 3
- -) 4 - )
/- ) ) /- )) 9
# -)- ) -
A -) .) 9 4
'C 3.4 Définition des règles de transformation d’un schéma de BD
en un schéma XML
- 01 - .)
) /- 9=*4 01 - -
/ 4 - 0 - )
) -4 - / -
)1 ) ) # )1 .) L
- ! ) ) : - 0 -
4
3.4.1 Traduction de la partie statique
-) )- 0 - ) * 4 . )
) - . ) - 7
01 - .) )
.) 9=*4
3.4.1.1 Définition des tables de la BD
( $ % . <* -- 1 / 0 =D<*
- /- - : 9=* <xsd:complexType> -) -4 /-
9=* 3 ) A 4
3.4.1.2 Définition des attributs non clé d’une table
( '% . )) <xsd:element> /-
/- 9=* ) 4 ) <xsd:string> 5 /-
- : - ! ) ) # # 4 * ! /-
) #) ) 5 - /- 9=* L /- ) #) )- /-
4
) ! # - ) - 3 ) 4
4 ) $
produit
idprod libelle prix_unitaire commande
idcom date
contenir quantité
1,n 0,n
5 7& > /
'
1 ; ) : 01 -) ) 4
) 4!0) ) -) ) )- table-
- ) - ) -4
/- 4
-) ! : !
minOccurs maxOccurs ) - #
: # : 4
Soit le modèle relationnel de la BD constitué des tables :
COMMANDE [idCom, date]
CONTENIR [#idCom, #idProd, quantite]
PRODUIT [idProd, libelle, prix_unitaire]
Dans le modèle ci-dessus, les attributs qui sont soulignés représentent la clé primaire et ceux qui sont précédés par le caractère dièse représentent une clé étrangère.
) : ) ) - COMMANDE
PRODUIT! ) -) ) - 1 9=* ;
N
<xsd:complexType name="tableCommande">
<xsd:sequence>
<xsd:element name="date" type="xsd:date" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:complexType name="tableCommande">
<xsd:sequence>
<xsd:element name="date" type="xsd:date" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<... />
</xsd:complexType>
<xsd:complexType name="tableProduit">
<xsd:sequence>
<xsd:element name="libelle" type="xsd:string"
minOccurs="1" maxOccurs="1"/>
<xsd:element name="prix_unitaire" type="xsd:float"
minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<... />
</xsd:complexType>
'%
3.4.2 Traduction de la partie dynamique
3.4.2 Traduction de la partie dynamique des contraintes d’intégrité 3.4.2.1 Contrainte induite par les clés primaires
* ! # ! - /- )1 ) )) -
# ) - -- 5 ) - - Q / .
) 1 b) -4 , ! 01 1) ) ; N
( +& % . - )- -
/- - : - 5 4
* /- - : <xsd:complexType name="tableCommande">! - 5 N
) commande4
required 1 -) 1 4
- # -) N ) 9=* /- - !
- idCom -) 1 4
( +& % * /- - : <xsd :complexeType name= "dbGestion">
-) - : /- 0 5 )
[: N cd d /- cd d E cd d
:E cd de
5 -- ! )- ) N
)- ) -) ) )- ID
1 /- )4
:- xpath - /) ) -0 ) - )4
! )) : <xsd:selection> 1 1 9= 4
<xsd:attribute name="idCom" type="xsd:positiveInteger" use="required"/>
<xsd:key name="IDCommande">
<xsd:selector xpath=".//commande" />
<xsd:field xpath="./@idCom" />
</xsd:key>
&
:0 :- xpath ) # )) <xsd:field>
-) ) 3 1
<xsd:attribute> - : /- 4
= - )- 5 ) - #
5 L - : - TVA taux
# - F4F! &4 ! &&4& 5 -)
/- - : - ) - -) ) - - 4
3.4.2.2 Contrainte induite par les associations (clés étrangères)
Deux cas sont possibles en fonction des cardinalités indiquées de part et d’autre de l’association.
3.4.2.2.1 Cas des clés étrangères simples [cardinalité (0,1) ou (1,1)]
) - # 5 1 )1 W - X
; <) < = : - 4 ) ! -) 1 )1 -
) ! - 7 ) # -
)- ) # - )4
( ,& % = - , ) - - < ! <
-) )) 10 )
- - /
4 ) $ = -- ./- .0 # * 1
! 7 ) # )) :- ) 4
; ( ?
; ( &
, $ ) % 0) 0) % & ) %
) /
produit
idprod
… commande
idcom …
contenir …
1,n
5 /& > /
&
) - W X! A
<xsd:keyref>4
: keyref - ) )) 5 ) : 3
.) 4
)) 10 - ) *"+$ #
:- )) 10 4
)) [: N2 / e -) ) 2 /
# /)4
) -) ) - )) 10 4
-) A Q )-
0 4
3.4.2.2.2 Cas des clés étrangères complexes [cardinalité (0,n) ou (1,n)]
* - # ) ! - - # )1 ) 4
: - ! 1 ! - ) )
# # 1 B N
; ( ?
; ( &
( ,& % # - :- ) ) -)) )
/- - : -) W (3 X - -
-)- ) - 3 - ) -
: )4 + ) W (3 X
- 1 : : ) 4 * : - ! . ; #
- Q - - - # 1
# - Q - -- - ) - ) -- # 4
<
<xxssdd::eelleemmeenntt nnaammee==""ccoommmmaannddee"" ttyyppee==""ttaabblleeCCoommmmaannddee"" mmiinnOOccccuurrss==""00"" mmaaxxOOccccuurrss==""uunnbboouunnddeedd"">>
<xsd:key name="IDCommande">
<xsd:selector xpath=".//commande" />
<xsd:field xpath="./@idCom" />
</xsd:key>
<xsd:keyref name="IDREFCommande" refer="IDCommande">
<xsd:selector xpath=".//produit"/>
<xsd:field xpath="./@idCom"/>
</xsd:keyref>
</xsd:element>
&'
4 ) $ 0 ! contenir commande
produit -) ) - &0 4
* /- - : <xsd:complexType name="tableContenir"> -)
)1 W (3 X! )) 10 ) - N
) -) ) - )) 10
- 4
-) A Q ) :
-
K J ) :)) <xsd:field> )-
- ) : 4 . ) )
) 10 4 9=* ; -0 CONTENIR [#idCom, #idProd,
quantite] 0 1 ) 4
= ) ) /- - : - !
1 -. 1 )1 ) :- ) 7 )
) 4
+: : - 1 4 * !
- - ! -- - -
0 L ! / - 2- - ) 1 )!
- 3 ) ! / )A5 - !
) 4
<
<xxssdd::eelleemmeenntt nnaammee==""ccoonntteenniirr"" ttyyppee==""ttaabblleeCCoonntteenniirr"" mmiinnOOccccuurrss==""00"" mmaaxxOOccccuurrss==""uunnbboouunnddeedd"">>
<xsd:key name="IDContenir">
<xsd:selector xpath=".//contenir"/>
<xsd:field xpath="./@idCom"/>
<xsd:field xpath="./@idProd"/>
</xsd:key>
c o m m a n d e p r o d u it
c o n te n ir q u a n tité
5 8& > )" /
&&
3.4.2.3 Contrainte induite par les contraintes d’intégrité de cohérence de valeurs (triggers programmés par le DBA)
11 - - 5 - ) -
- .) 1 / # 4
) ) 11 /- - : -)
-4
G # ) - ) - 4
+ * 1 ! 11 )VerifProd
produit ) . O O 5 A - 4
) O - 1 )- A # # 4
K 11 VerifProd =D<* 1 4
create or replace function VerifProd() returns opaque as ' begin
if NEW.libelle is null then
raise exception \'Libellé produit doit être renseigné !\';
end if;
end;
'language 'plpgsql';
create trigger VerifProd
before insert or update on produit
for each row execute procedure VerifProd();
K J 11 ) - )
1 ! /- OPAQUE /- ) )4 ! 11 -- 5
) .)4
3.4.2.3.1 Définition du type trigger
( *& %* - - ! # ) /- 11 /-
=U -) /- 9=*4 # /-
N
<xsd:complexType name="triggerType" >
<xsd:sequence>
<xsd:element name="event" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="statement" type="xsd:string" minOccurs="1" maxOccurs="3"/>
<xsd:element name="action" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
&
) 4!0) 11 ) triggerType
) - : /- - ) 2) 4
:) )#) N # ! -0! )#) ! -))
# - # N BEFORE | AFTER | INSTEAD4
) )#) N 5 ) . 11 !
! 5 A ! -- INSERT | UPDATE | DELETE
action 1) ) - -- ) - 11 1
- :) 4
) # /- .0 9=* - -)
=U 4 .0 : 1 1 9=* 3 - )
3 ) # /- ) .) 9 4
3.4.2.3.2 Utilisation du type trigger
( *& % ,-0 - # /- . -) 9=*
<*! : / . ) 11 ! /- 4
4 ) $
3.4.2.3.3 Référencement du type trigger dans un type complexe
( *& % + /- 11 ) ))
) -) - 9=* -
<* - 11 4
<xsd:element name="VerifProd" type="triggerType">
<xsd:sequence>
<event>before</event>
<statement>insert</statement>
<statement>update</statement>
<action>if NEW.libelle is null then
raise exception \'Libelle produit doit être renseigné !\';
end if;
</action>
</xsd:sequence>
</xsd:element>
<xsd:complexType name="tableProduit">
<xsd:sequence>
<xsd:element name="libelle" type="xsd:string"/>
<xsd:element ref="VerifProd" type="triggerType"/>
</xsd:sequence>
<xsd:attribute name="idProd" type="xsd:positiveInteger" use="required"/>
</xsd:complexType>
&F
)) ref - )) ) /- 11 5 :) /-
- : 11 4
, ! 11 - )1 - : <* .)
) ) 5 - : - -4
3.4.3 Traduction de la partie dynamique de traitements 3.4.3.1 Les procédures stockées
( 7% : - 0 ) - 11
) /- ! /- / - )) /-
- : 4 5 :) ) - /-
- : 9=* - ) - 0 - 4 + -
# - - 7 # . Z )
5 ) - ) 4
- ) 2) :- 8 - 1) <*4
4 ) $
: - # -) : - ) 2) - 1
/ 0 4 D - ) -- - -
idProd 4
. - ) 2) ) - ) 4!0) 4 /-
procType 3 - - - 01 -) ) 4
proname - ) 5 : - 1 / 0 4
/- string . - ) # 4
)) 0 - - ) - ) 2) !
<body> ) - ; 3 4
<xsd:complexType name="del_Prod" type="procType">
<xsd:sequence>
<proname>nb_produit</proname>
<proarg>1</proarg>
<body>create or replace function del_prod(int) returns int as '
delete from produit where idProd = $1; ' language 'sql';
</body>
</xsd:sequence>
</xsd:complexType>
&B 3.4.3.2 Les vues
( /% # -) : -
) - # 5 - - # - 4
-) ! - - ) 2) ! 5 :)
) /- - : 9=* -) -4
4 ) $
: - # :- ). : - -) - <*4
Q # : ) ) 5 4
# ) <*4
# <* 3 - ) 2) ! -
) /- - : - /- viewType4
# <* - 3 =U ! -
. 9=*! # ) -) 0 - - - 4 +
- - # # ) )) 9=* )
-) 4 - 0 - select! :- )
<xsd:element name="select" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
- - from4
- - ) )) 9=*where4
3.5 Récapitulatif
,-0 # ) 01 .) )
.) 9 ! # ! ) 0 4
<xsd:complexType name="verif_Commande" type="viewType">
<xsd:sequence>
<select>contenir.idCom</select>
<from>contenir</from>
<where>contenir.quantite<100</where>
</xsd:sequence>
</xsd:complexType>
&C
R
Rèègglleess ddee ttrraannssffoorrmmaattiioonn
E
Exxeemmppllee rrééssuullttaattss ddee llaa ttrraannssffoorrmmaattiioonn E Elléémmeennttss X XMMLL ScSchheemmaa
AAttttrriibbuuttss d deess é élléémmeennttss XXMMLL SScchheemmaa
T
Trraadduuccttiioonn dede lala paparrttieie s
sttaattiiqquuee ! ! " #
!
" #
$%
#!
! # & "# $%
$ !
! " #
$ % &
'
$ '( $! !
! " #
'
' (
% !
" "
" "
) * "
* "
+
* "
,
%!-
" "
. (
" "
/ ) / )
/ /
/ /
/ 0 % 1
234 5 " ! 6237
7 /
,
TTrr
aadd
uucc
ttii
oonn
dd
ee
llaa
pp
aarr
ttii
ee
ddyy
nnaa
mm
iiqq
uuee
ddee
ss
ccoo
nntt
rraa
iinn
ttee
ss
dd’’
iinn
ttéé
ggrr
iitt
éé
%''
%&$ ! !
" "
/
/ **
' #
)
8 (
/ 8 /
/ " / "
/
8 9 :
3
; ( < 7 3
" " 3 , 37 /
,
TTrr
aadd
uucc
ttii
oonn
dd
ee
llaa
pp
aarr
ttii
ee
ddyy
nnaa
mm
iiqq
uuee
dd
ee
ttrr
aaii
ttee
mm
eenn
ttss
( *
) 8
) ;
/ /
/ /
/; , / = = / ; ,
&
? * N, . - ! # - /) -) : xsd # . ))
.) 9 4 -) : . - # : )
# - ) ! )) xsd:schema! 5 )) )
/ : .) 4
K . 9=* WgestCommande.xsd » -) * 1
# 1 B 1 01 -) ) 4
<?xml version="1.0" encoding=”UTF-8” ?>
<!-- edited with XMLSPY v5 rel. 4 (http://www.xmlspy.com) by iut (linc) -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation>
databaseName: db_gestCommande databaseType: Relational
Other informations </xsd:documentation>
</xsd:annotation>
<!-- définition of constraint (restriction of type) -->
<xsd:simpleType name="lib">
<xsd:restriction base="xsd:string">
<xsd:minLength value="32"/>
</xsd:restriction>
</xsd:simpleType>
<!--definition of procedure -->
<xsd:complexType name="del_Prod" type="procType">>
<xsd:sequence>
<proname>nb_produit</proname>
<proarg>1<proarg>
<body>create or replace function del_prod(int) returns int as ' delete from produit where idProd = $1; '
language 'sql';
</body>
</xsd:sequence>
</xsd:complexType>
<!--definition of view -->
<xsd:complexType name="verify_commande" type="viewType">>
<xsd:sequence>
<select>contenir.idCom</select>
<from>contenir<from>
<where>contenir.quantite<100</where>
</xsd:sequence>
</xsd:complexType>
<!--definition of trigger -->
<xsd:element name="VerifProd" type="triggerVerifProd">
<xsd:sequence>
<event>before</event>
<statement>insert</statement>
<statement>update</statement>
<action>if NEW.libelle is null then
raise exception \'Libelle produit doit être renseigné !\';
end if;
</action>
</xsd:sequence>
</xsd:element>
…
&%
" gestCommande.xsd)
<!-- complexType of commande -->
<xsd:complexType name="tableCommande">
<xsd:sequence>
<xsd:element name="date" type="xsd:date"/>
</xsd:sequence>
<xsd:attribute name="idCom" type="xsd:positiveInteger" use="required"/>
</xsd:complexType>
<!-- complexType of produit -->
<xsd:complexType name="tableProduit">
<xsd:sequence>
<xsd:element name="libelle" type="xsd:string" minOccurs="0"/>
<xsd:element ref="VerifProd" type="triggerVerifProd"/>
</xsd:sequence>
<xsd:attribute name="idProd" type="xsd:positiveInteger" use="required"/>
</xsd:complexType>
<!-- complexType of contenir -->
<xsd:complexType name="tableContenir">
<xsd:sequence>
<xsd:element name="quantite" type="xsd:double" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="idCom" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="idProd" type="xsd:positiveInteger" use="required"/>
</xsd:complexType>
<!-- complexType of database -->
<xsd:element name="gestion" type="dbGestion"/>
<xsd:complexType name="dbGestion">
<xsd:sequence>
<xsd:element name="commande" type="tableCommande" minOccurs="0" maxOccurs="unbounded">
<xsd:key name="IDCommande">
<xsd:selector xpath=".//commande"/>
<xsd:field xpath="./@idCom"/>
</xsd:key>
<xsd:keyref name="IDFREFCommande" refer="IDCommande">
<xsd:selector xpath=".//contenir"/>
<xsd:field xpath="./@idCom"/>
</xsd:keyref>
</xsd:element>
<xsd:element name="contenir" type="tableContenir" maxOccurs="unbounded">
<xsd:key name="IDContenir">
<xsd:selector xpath=".//contenir"/>
<xsd:field xpath="./@idCom"/>
<xsd:field xpath="./@idProd"/>
</xsd:key>
</xsd:element>
<xsd:element name="produit" type="tableProduit" minOccurs="0" maxOccurs="unbounded">
<xsd:key name="IDProduit">
<xsd:selector xpath=".//Produit"/>
<xsd:field xpath="./@idProd"/>
</xsd:key>
<xsd:keyref name="IDFREFProduit" refer="IDProduit">
<xsd:selector xpath=".//Contenir"/>
<xsd:field xpath="./@idProd"/>
</xsd:keyref>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
5 9& " & ' @ /
1 # -) - 1 -. # 9 =-/
/- - : dbGestion 4
3.6 Conclusion
, . - ! # - ! . 1) ) -
-- . 4 # A ))1 . : 9
-) .) 9 - ) ) .)
) ! 01 . # - 4 *
- . . - ! -) ) : ) 01
G # R# 4
5 $1& ? ) )" * 0) ) 4 dbGestion.
( (
,&$
,&' ( 3 () 2
,&+ @ -
,&, (
,&* # (
' 4.1 Introduction
* -) ) . - ! # :- ) 01 - :
) .) ) 4 ) 5
-) - /- 4 -) )1 G #
- 0 ) -. ! # ) :
- / 0 4
4.2 Modélisation UML de l’extracteur
- - ) : ! 1 4 ,
- 0 # ! -) ) - -
1 9 4
D 6 5 * 5 ). ! - # : !
# )1 - ) 2) 4 /-
1 /- =D<* 1) ! ) 1) ) )
. 4
* 3 ! ) ! # - ) 2) 5
)- V - 0 * # 1 )1 4
= # ! 1
N -- 5 ! ) -
) ) 10 ! .) 11 ) 5 4
! ) ) N !
11 4
: 1) ) ! ) ) /4
-) : 1 ! )- - - 4 +
- 0 3 1 1 =U ). - #
:) 4 ) :# ) )
) -) ) 3 - 3 4
1 ) )
1 4
&
uses_result
associated
< belongs
+typeConstraint : String Constraint
+extractTables() +extractViews() +extractProcedures() +dbName : String +dbmsType : String
#owner : String
#localization : String Database
+extractAttributes() +extractConsraints() +tableName : String +attributesNumber : Integer +tupleNumber : Long
Table +viewName : String
+definition : String View
+main() +name : String
Application
+generateQuery() +body : String
Query
+triggerName : String +typeEvenement : String +body : String
Trigger
+attributeName : String +typeAttribute : String
Attribute 1
*
1
* 1
* 1
*
1 0..1 +procName : String
+body : String Procedure
1..*
1 1
*
5 $$& # ' 4 /
4.3 Mise en œuvre
)# -- -- R# 1 1 . - - ) -
- ) 1 / 0 ) =D<*! 1 5
3 =U - ) .) 9 - 5 0 4
1 . - -. N
1 =D<* .)) 10 4
") -) ) 4
) .) 9 4
4.3.1 Interrogation des SGBD hétérogènes
) =D<* / 0 1 - -- 5
- 1 / 0 # 1 4 1
) ) 4 * !
3 =U 1) ) - # 1 - /-
) 4 -. .) ) . #
. - &4' 4
4.3.2 Récupération des résultats
) ) -)) -. -) ) 1 =D<* .)) 10
-) ) 9=*4 " --
: ) - ) ! ;5;
! /- ! - ) 2) !
# 11 4 - 0 . 1
) 5 =D<* 5 4 , : -
1 / 0 =D<* 1 0 E 4 -
) -) - /- ! # : 7
# . . ! - ) 3 =D<*4
4.3.3 Construction du métaschéma XML
,-0 # : 5 - .) ) !
5 . - . 9=*4 5
.0 R# ! , *E -
9 .) . ) ) ! : - , R#
- - 5 .) 9=* 4 , ) - A
R,9 ! ) - / 9 4 + !
A 01 ) 0 . - #
&4' 4
# ) : -
A - - ) .) 9 /- - : - 5
) 4