Bases de données et XML le modèle hiérarchique vs modèle relationnel modèle hiérarchique structure de base : l arborescence. ancien modèle de bases de données (n est plus très utilisé dans les SGBD) ; ce modèle entraine de la redondance. XML est basée sur la structure arborescente ; avantage : format ouvert, document lisible... traitements rapides modèle relationnel structure de base : la relation (sous-ensembles de produits cartésiens). information sans redondance nombreux logiciels SGBDR, logiciels puissants (types, langage d interrogation, de présentation...) mais formats fermés (informations liées au logiciel), logiciels complexes, traitements lourds... Modèle hiérarchique pour les Bases de Données Une base de données est une forêt constituée d arbres dont les nœuds sont des entités (segments). Une entité (segment) est une suite d attributs. Un arbre possède une racine, N fils-segments qui ont eux mêmes M fils-segments, etc... Il n y a qu un lien entre deux segments ; celui-ci est géré par le système (transparent pour l utilisateur). Le schéma est un arbre constitué d entités reliées par des liens hiérarchiques. Attention : un arbre du modèle hiérarchique de bases de données n utilise pas les mêmes nœuds qu un arbre XML.
Modèle hiérarchique : relation hiérarchique Exemple : soit un modèle conceptuel des données ayant une relation hiérarchique. NoFilm titre 1:1 réalisation réalisateurs NoRéalisateur nom C est le cas qui est bien adapté à ce modèle (puisqu il est hiérarchique). Il n y aura pas de redondance. Modèle hiérarchique : relation hiérarchique Dans le modèle hiérarchique réalisateurs NoRéalisateur nom NoFilm titre
Modèle hiérarchique : relation hiérarchique Exemples de données : R01, Kubrick Stanley F004, 2001 l odyssée de l espace, 2h19, USA F017, Shining, 2h26, USA F009, Full metal jacket, 1h56, USA R04, Truffaut François F028, Jules et Jim, 1h45, France F035, Les 400 coups, 1h35, France F087, La mariée était en noir, 1h47, France... Modèle hiérarchique : relation maillée Exemple : soit un modèle conceptuel des données ayant une relation maillée. NoFilm titre générique acteurs NoActeur nom
Modèle hiérarchique : relation maillée Dans le modèle hiérarchique, nous avons deux possibilités : Nous pouvons prendre le film pour racine (à gauche) ou l acteur pour racine (à droite). acteurs acteurs Dans les deux cas, il y aura redondance. Modèle hiérarchique : relation maillée Exemples de données ( en racine, première possibilité) : F028, Jules et Jim, 1h45, France A071, Moreau, Jeanne A026, Werner, Oskar A187, Serre, Henri F087, La mariée était en noir, 1h47, France A071, Moreau, Jeanne A211, Bouquet, Michel A182, Brialy, Jean-Claude F035, Les 400 coups, 1h35, France A073, Léaud, Jean-Pierre A108, Maurier, Claire A071, Moreau, Jeanne A182, Brialy, Jean-Claude
Modèle hiérarchique : relation maillée Exemples de données (acteurs en racine, deuxième possibilité) : A071, Moreau, Jeanne F028, Jules et Jim, 1h45 F087, La mariée était en noir, 1h47, France F035, Les 400 coups, 1h35, France F069, Les valseuses, 1h57, France A182, Brialy, Jean-Claude F087, La mariée était en noir, 1h47, France F035, Les 400 coups, 1h35, France F134, Le beau Serge, 1h38, France A073, Léaud, Jean-Pierre F677, Pierrot le fou, 1h55, France F035, Les 400 coups, 1h35, France F031, Les mauvaises fréquentations, 0h42, France Modèle hiérarchique : relation maillée Exemple : soit un modèle conceptuel des données ayant une relation maillée. NoFilm titre diffusion jour heure salles NoSalle nom La relation diffusion est une fausse relation binaire. La concaténation (NoFilm, NoSalle) n est pas un identifiant si un film peut être diffusé plusieurs jours dans la même salle... et pire s il peut être diffusé plusieurs fois le même jour.
Modèle hiérarchique : relation maillée Il faudrait utiliser une relation ternaire. séances NoSéance jour heure NoFilm diffusion salles NoSalle titre nom Les cardinalités sur la branche séances-diffusion est car, à un horaire donné, il peut y avoir plusieurs dans des salles différentes. L identifiant de la relation diffusion est la concaténation NoFilm, NoSalle, Jour, Heure. Si on repère la contrainte d intégrité fonctionnelle, on peut réduire l identifiant à NoSalle, Jour, Heure. Modèle hiérarchique : relation maillée Dans le modèle hiérarchique, nous avons plusieurs possibilités : Nous pouvons prendre le film pour racine, ou la salle. En prenant le film pour racine, nous avons trois possibilités. salles salles séances salles séances séances La 2ème possibilité ne factorise pas les salles et donc introduit beaucoup de redondance. La 3ème possibilité ne permet pas de relier la séance et la salle et, donc, n est pas une solution intéressante.
Modèle hiérarchique : relation maillée En prenant la salle pour racine, nous avons trois autres possibilités. salles salles salles séances séances séances La 3ème possibilité ne permet pas de relier la séance et le film et, donc, n est pas une solution intéressante. Prendre la séance pour racine introduirait le maximum de redondance. Modèle hiérarchique : relation maillée Exemples de données (salle en racine, première possibilité) : S01, Kino F074, L année du dragon, 1h40, USA Mer, 12h Mer, 20h30... F087, Wallace et Gromit, 1h37, USA Mer, 16h Jeu, 18h30... S03, Mélies F087, Wallace et Gromit, 1h37, USA Mer, 20h30 Jeu, 18h F021, Jiburo, 1h29, Japon ven, 18h...
Modèle hiérarchique : relation maillée Exemples de données (salle en racine, deuxième possibilité) : S01, Kino F074, L année du dragon, 1h40, USA, Mer, 12h F074, L année du dragon, 1h40, USA, Mer, 20h30...... F087, Wallace et Gromit, 1h37, USA, Mer, 16h F087, Wallace et Gromit, 1h37, USA, Jeu, 18h30... S03, Mélies F087, Wallace et Gromit, 1h37, USA, Mer, 20h30 F087, Wallace et Gromit, 1h37, USA, Jeu, 18h... F021, Jiburo, 1h29, Japon, Ven, 18h... Modèle hiérarchique : passage du modèle conceptuel au modèle logique On en déduit les règles suivantes b 1:1 a r b devient ar
Modèle hiérarchique : passage du modèle conceptuel au modèle logique b a a r b devient ar Il faut choisir une des deux tables en racine selon la logique du problème à traiter. ou Mais les données contiendront des redondances. br Modèle hiérarchique : passage du modèle conceptuel au modèle logique Dans le cas d une fausse relation binaire (avec date, heure...) ou d une relation ternaire. c b c b a a r b devient ar ou cr ou... Il faut choisir une table en racine selon la logique du problème à traiter ou selon la proportion de redondance que le choix provoque.
Modèle hiérarchique : exemple Mais que se passe-t-il pour un ensemble d entités? Règles de gestion d un parc informatique : Un ordinateur est équipé d un type de processeur (marque, modèle, fréquence) et d un écran (marque, modèle, taille). Sur chaque ordinateur, sont installés des logiciels (libellé, memoire requise). Enfin les informaticiens utilisent les ordinateurs durant des périodes à mémoriser. On ne mémorise pas les logiciels utilisés. Processeurs Utilisateurs NoUtilisateur Nom 0:n utilise début fin relié à 0:n 1:1 Ordinateurs NoSérieOrdi RAM CapacitéDD 1:1 NoTypeProcesseur Marque Modèle Fréquence équipé de installation date 0:n Ecrans NoTypeEcran Marque Modèle Taille Logiciels NoLogiciel Libellé MemRequise La relation utilise est une fausse relation binaire
Modèle hiérarchique : exemple En privilégiant les utilisateurs utilisateurs ordinateurs processeurs écrans utilisations logiciels installations Modèle hiérarchique : exemple Exemples de données : Alain, 27 rue Jean Jaures, Lille Mesange, TSB, Pentium, 1GO, Acer 17/10/2007, 9h05, 17/10/2007, 16h49 18/10/2007, 10h04, 18/10/2007, 19h51 22/10/2007, 14h01, 22/10/2007, 19h54 postgresql, bases de données, 60MO latex, éditeur, 10MO Hercule, TSB, Pentium, 1.5GO, Acer 14/10/2007, 9h25, 14/10/2007, 16h01 19/10/2007, 10h18, 19/10/2007, 18h47 access, bases de données, 200 MO latex, éditeur, 10MO Fabien, 60 rue Louise Michel, Lille...
Modèle hiérarchique : exemple En privilégiant les processeurs processeurs ordinateurs écrans utilisateurs logiciels installations utilisations Modèle hiérarchique : exemple Pentium, 1GO Mesange, TSB, Acer Alain, 27 rue Jean Jaures, Lille 17/10/2007, 9h05, 17/10/2007, 16h49 18/10/2007, 10h04, 18/10/2007, 19h51 22/10/2007, 14h01, 22/10/2007, 19h54 Fabien, 60 rue Louise Michel, Lille 12/11/2007, 8h45, 12/11/2007, 16h49 18/10/2007, 8h04, 18/10/2007, 9h51 22/10/2007, 14h01, 22/10/2007, 19h54 postgresql, bases de données, 60MO latex, éditeur, 10MO Sarcelle, TSB, Acer Alain, 27 rue Jean Jaures, Lille...
Modèle hiérarchique : exemple En privilégiant les logiciels installés logiciels ordinateurs processeurs écrans utilisateurs installations utilisations Modèle hiérarchique : exemple Ce choix est peu judicieux. Comme il s agit des logiciels installés, on reproduira les mêmes informations pour chaque logiciel! postgresql, bases de données, 60MO Mesange, TSB, Pentium, 1GO, Acer Alain, 27 rue Jean Jaures, Lille 17/10/2007, 9h05, 17/10/2007, 16h49... latex, éditeur, 10MO Mesange, TSB, Pentium, 1GO, Acer Alain, 27 rue Jean Jaures, Lille 17/10/2007, 9h05, 17/10/2007, 16h49...
Bases de données et XML XML est un langage ouvert. On peut imaginer utiliser ce langage pour afficher le contenu d une base de données. Dans ce cas, il faut alimenter le document selon une DTD appropriée à la base. Mais la redondance n est pas un handicap. On peut aussi imaginer utiliser ce langage pour communiquer une base de données, indépendamment de tout logiciel de gestion de bases de données. Le langage XML s appuie sur des structures arborescentes. DTD et modèle hiérarchique En confondant la notion d œuvres et celle d éditions, on pourrait accepter le schéma conceptuel suivant. auteurs NoAuteur nom éditeurs NoEditeur NomEditeur Ville Pays écrit 1:1 édité par œuvres NoŒuvre titre
DTD et modèle hiérarchique Dans le modèle hiérarchique, on pourrait adopter le schéma suivant. editeurs œuvres auteurs DTD et modèle hiérarchique Mais si on veut privilégier l œuvre, on peut choisir l œuvre en racine de l arbre. Ce choix impliquera une redondance des informations concernant l éditeur. œuvres editeurs auteurs
DTD et modèle hiérarchique La DTD correspondant au premier cas serait <!ELEMENT catalogues (catalogue+)> <!ELEMENT catalogue (NomEditeur,ville,pays,œuvre+)> <!ELEMENT NomEditeur (#PCDATA)> <!ELEMENT ville (#PCDATA)> <!ELEMENT pays (#PCDATA)> <!ELEMENT œuvre (titre,auteur+)> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (#PCDATA)> dont un document valide pourrait être <catalogues> <catalogue> <NomEditeur> Dunod </NomEditeur> <ville> Paris </ville> <pays> France </pays> <œuvre> <titre> Merise et UML </titre> <auteur> J. Gabay </auteur> </œuvre> <œuvre> <titre> La conduite des projets... </titre> <auteur> J. Gabay </auteur> <auteur> B. Gebre </auteur> </œuvre> </catalogue>
<catalogue> <NomEditeur> O Reilly </NomEditeur> <ville> Amsterdam </ville> <pays> Hollande </pays> <œuvre> <titre> introduction à UML </titre> <auteur> S. Si Albir </auteur> </œuvre> </catalogue> </catalogues> DTD et modèle hiérarchique La DTD correspondant au deuxième cas serait <!ELEMENT œuvres (œuvre+)> <!ELEMENT œuvre (titre,auteur+,editeur)> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (#PCDATA)> <!ELEMENT editeur (NomEditeur,ville,pays)> <!ELEMENT NomEditeur (#PCDATA)> <!ELEMENT ville (#PCDATA)> <!ELEMENT pays (#PCDATA)>
dont un document valide pourrait être <œuvres> <œuvre> <titre> Merise et UML </titre> <auteur> J. Gabay </auteur> <editeur> <NomEditeur> Dunod </NomEditeur> <ville> Paris </ville> <pays> France </pays> </editeur> </œuvre> <œuvre> <titre> La conduite des projets... </titre> <auteur> J. Gabay </auteur> <auteur> B. Gebre </auteur> <editeur> <NomEditeur> Dunod </NomEditeur> <ville> Paris </ville> <pays> France </pays> </editeur> </œuvre> </œuvres>
XML et références Pour éviter la redondance, XML permet de faire des références. On peut alors reproduire les associations du modèle relationnel. Le schéma conceptuel suivant éditeurs NoEditeur œuvres NomEditeur Ville édité par 1:1 NoŒuvre titre Pays XML et références peut se présenter par la DTD <!ELEMENT catalogues (œuvre editeur)*> <!ELEMENT œuvre (titre)> <!ATTLIST œuvre noœuvre ID #required > <!ELEMENT titre (#PCDATA)> <!ELEMENT editeur (NomEditeur,ville,pays)> <!ATTLIST editeur noediteur ID #required > <!ELEMENT NomEditeur (#PCDATA)> <!ELEMENT ville (#PCDATA)> <!ELEMENT pays (#PCDATA)> <!ATTLIST œuvre refediteur IDREF #required >
dont un document valide pourrait être <catalogues> <œuvre noœuvre= O001 refediteur= E03 > <titre> Merise et UML </titre> </œuvre> <œuvre noœuvre= O002 refediteur= E03 > <titre> La conduite des projets </titre> </œuvre>... <editeur noediteur= E03 > <NomEditeur> Dunod </NomEditeur> <ville> Paris </ville> <pays> France </pays> </editeur> </catalogues> Lorsque les cardinalités sont 0 : 1, on peut utiliser une référence IDREF facultative #implied. L identifiant lui devrait toujours être #required. XML et références Pour les relations maillées, nous avons plusieurs possibilités. Nous pouvons utiliser des attributs-références dans les tables des éléments-références dans les tables un élément contenant les deux références Le schéma conceptuel suivant œuvres auteurs NoŒuvre Titre écrit NoAuteur nom
XML et références pourrait se présenter par la DTD (1ère possibilité) <!ELEMENT catalogues (œuvre auteur)*> <!ELEMENT œuvre (titre)> <!ATTLIST œuvre noœuvre ID #required > <!ATTLIST œuvre refauteur IDREFS #required > <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (nom)> <!ATTLIST auteur noauteur ID #required > <!ATTLIST auteur refœuvre IDREFS #required > <!ELEMENT nom (#PCDATA)> dont un document valide pourrait être <catalogues> <œuvre noœuvre= O001 refauteur= A03 > <titre> Merise et UML </titre> </œuvre> <œuvre noœuvre= O002 refauteur= A03 A07 > <titre> La conduite des projets </titre> </œuvre>... <auteur noauteur= A03 refœuvre= O001 O002 O005 O017 > <nom> J.Gabay </nom> </auteur> <auteur noauteur= A07 refœuvre= O002 O024 O054 > <nom> B.Gebre </nom> </auteur> </catalogues> On peut accéder aux éléments dans les deux sens. Mais on ne peut pas accepter beaucoup de références.
XML et références Pour que le document reste lisible avec un nombre important de références, on peut créer un élément pour les références. Le schéma conceptuel pourrait se présenter par la DTD (2ème possibilité) <!ELEMENT catalogues (œuvre auteur lienœuvre)*> <!ELEMENT œuvre (titre)> <!ATTLIST œuvre noœuvre ID #required > <!ATTLIST œuvre refauteur IDREFS #required > <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (nom, lienœuvre+)> <!ATTLIST auteur noauteur ID #required > <!ELEMENT nom (#PCDATA)> <!ELEMENT lienœuvre empty> <!ATTLIST lienœuvre refœuvre IDREF #required > dont un document valide pourrait être <catalogues> <œuvre noœuvre= O002 refauteur= A03 A07 > <titre> La conduite des projets </titre> </œuvre>... <auteur noauteur= A03 > <nom> J.Gabay </nom> <lienœuvre refœuvre= O001 /> <lienœuvre refœuvre= O002 /> <lienœuvre refœuvre= O005 /> <lienœuvre refœuvre= O017 /> </auteur> </catalogues> On peut accéder aux éléments dans les deux sens et on peut écrire plus clairement de nombreuses références.
XML et références Mais on peut aussi simuler exactement le modèle relationnel. Le schéma conceptuel pourrait se présenter par la DTD (3ème possibilité) <!ELEMENT catalogues (œuvre auteur ecrit)*> <!ELEMENT œuvre (titre)> <!ATTLIST œuvre noœuvre ID #required > <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (nom)> <!ATTLIST auteur noauteur ID #required > <!ELEMENT nom (#PCDATA)> <!ELEMENT ecrit empty> <!ATTLIST ecrit refauteur IDREF #required > <!ATTLIST ecrit refœuvre IDREF #required > dont un document valide pourrait être <catalogues> <œuvre noœuvre= O002 > <titre> La conduite des projets </titre> </œuvre>... <auteur noauteur= A03 > <nom> J.Gabay </nom> </auteur> <auteur noauteur= A07 > <nom> B.Gebre </nom> </auteur>... <ecrit refauteur= A03 refœuvre= O002 / > <ecrit refauteur= A07 refœuvre= O002 / >... </catalogues>