BD et XML : Exercices



Documents pareils
Design et implémentation d un logiciel de validation et de génération de configurations réseaux

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

Processus 2D-Doc. Version : 1.1 Date : 16/11/2012 Pôle Convergence AGENCE NATIONALE DES TITRES SECURISÉS. Processus 2D-Doc.

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

AdressePostale 1.2 Description d une adresse postale 16/01/2004

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

Master d Informatique Corrigé du partiel novembre 2010

1 Modélisation d une base de données pour une société de bourse

XML et Bases de données. Les bases de données XML natives.

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Consolidation d un modèle conceptuel de données de Master Data Management

IFT3030 Base de données. Chapitre 1 Introduction

A QUOI SERVENT LES BASES DE DONNÉES?

Systèmes d information et bases de données (niveau 1)

Le langage SQL Rappels

Web Application Models

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Langage SQL : créer et interroger une base

Document Object Model (DOM)

Data Mining. Vincent Augusto École Nationale Supérieure des Mines de Saint-Étienne. Data Mining. V. Augusto.

Cours: Les Jointures 1

Information utiles. webpage : Google+ : digiusto/

Les bases de données

Bases de données avancées Introduction

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

... /5. Bases de Données I (J. Wijsen) 23 janvier 2009 NOM + PRENOM : Orientation + Année : Cet examen contient 11 questions.

Structure fonctionnelle d un SGBD

Bases de données et sites WEB Licence d informatique LI345

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Lancement de la simulation SIMBA

16H Cours / 18H TD / 20H TP

Systèmes de Gestion de Bases de Données

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Qu'est-ce que XML? XML : Extensible Markup Language. Exemple de document SGML SGML

Bases de Données Relationnelles. Le Modèle Relationnel

Bases de Données. Plan

Les Utilisateurs dans SharePoint

Bases de données relationnelles

Bases de Données OLAP

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Le langage UML : Les cas d utilisation

2.4 Représentation graphique, tableau de Karnaugh

La base de données XML exist. A. Belaïd

Bases de données - Modèle relationnel

Construire une application marketing Facebook sur la plateforme Windows Azure

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

TD n 10 : Ma première Base de Données

Le Langage De Description De Données(LDD)

ech-0148 Motifs d annonce Entreprises - taxes de domaine

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

CREATION WEB DYNAMIQUE

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

Bases de données élémentaires Maude Manouvrier

SQL Server et Active Directory

1 Introduction et installation

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

PHP 5. La base de données MySql. A. Belaïd 1

BASE DE DONNÉES XML NATIVE

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Les Entrepôts de Données

Bases de Données relationnelles et leurs systèmes de Gestion

A QUOI SERVENT LES BASES DE DONNÉES?

Sécurité des applications web. Daniel Boteanu

CHAPITRE 1. Introduction aux bases de données

IT203 : Systèmes de gestion de bases de données. A. Zemmari zemmari@labri.fr

BES WEBDEVELOPER ACTIVITÉ RÔLE

Groupe 11 TABLE DES MATIERES

Domaine Name System. Auteur: Congduc Pham, Université Lyon 1. Figure 1: Schéma des salles TP11 et TD4

TP2 : Client d une BDD SqlServer

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Domain Name System. F. Nolot

Raja Bases de données distribuées A Lire - Tutoriel

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Développement Web - Object Relational Mapping and Hibernate

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

L ARBORESCENCE. Qu est-ce qu un dossier? L arborescence?

Introduction au Système de Gestion de Base de Données et aux Base de Données

Évaluation et optimisation de requêtes

Programmation des Applications Réparties. Parsers XML DOM et SAX

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Introduction aux Bases de Données

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

SQL Parser XML Xquery : Approche de détection des injections SQL

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Réseaux. 1 Généralités. E. Jeandel

Auto-évaluation SQL. Document: f0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Windows serveur 2012 : Active Directory

Java DataBaseConnectivity

Utiliser Access ou Excel pour gérer vos données

BASE DE DONNÉES XML NATIVE

Transcription:

BD et XML : Exercices 1 Stockage XML Voici un arbre XML : A B E C F C F C F D C C D D D 1.1 Stockage générique Exercice 1.1.1 : Définissez un schéma de stockage relationnel générique (sans prendre en compte la DTD du document) et qui permet de stocker ce document (en préservant l ordre des noeuds du document) dans une seule table. Nodes(id,pos,eltype,parid) Exercice 1.1.2 : Donnez les requêtes relationnelles (SQL, algèbre ou calcul) qui retournent les identifiants de tous les noeuds qu on obtient par les expressions XPath suivantes : 1. //C : tous les noeuds C select distinct C.id from Nodes C where C.eltype= C 2. //D : tous les noeuds D select distinct D.id from Nodes D where D.eltype= D Exercice page: 1

3. /A/* : enfants de A select distinct X.id from Nodes A, Nodes X where A.eltype= A and X.parid=A.id 4. /A/*/D : petits-enfants D de A select distinct D.id from Nodes A, Nodes X, Nodes D where A.eltype= A and D.eltype= D and X.parid=A.id and D.parid=X.id 5. /A/*/C[not(D)] : petits-enfants C de A qui n ont pas d enfant D select distinct C.id from Nodes A, Nodes X, Nodes C where A.eltype= A and C.eltype= C and X.parid=A.id and C.parid=X.id and C.id not in (select D.parid from Nodes D where D.eltype= D ) 6. //C/preceding-sibling::* : tous les frères de gauche de noeuds C select distinct C.id from Nodes C, Nodes X where C.eltype= C and X.parid = C.parid and X.pos < C.pos Exercice page: 2

7. //C/preceding-sibling::*[1] : le premier frère de gauche de noeuds C select distinct C.id from Nodes C, Nodes X where C.eltype= C and X.parid = C.parid and X.pos = C.pos - 1 8. A//* : tous les descendants de A (on connaît la profondeur de l arbre) select distinct X.id from Nodes A, Nodes X where A.eltype= A and (X.parid = A.id or X parid in (select Y.id from Nodes Y where Y.parid = A.id or Y.parid in (select Z.id from Nodes Z where Z.parid = A.id))) Exercice 1.1.3 : Donnez le schéma relationnel qu on obtient en appliquant le schéma de stockage Monet (on veut à nouveau maintenir l ordre des noeuds). 1. A.B(par,pos,id) 2. A.E(par,pos,id) 3. A.B.C(par,pos,id) 4. A.B.C.D(par,pos,id) 5. A.B.F(par,pos,id) 6. A.E.D(par,pos,id) 7. A.E.C(par,pos,id) 8. A.E.C.D(par,pos,id) Exercice 1.1.4 : Donnez des requêtes relationnelles (SQL, algèbre ou calcul) qui retournent les identifiants de tous les noeuds qu on obtient par les expressions XPath suivantes : 1. //C Exercice page: 3

(select distinct id from A.B.C) union (select distinct id from A.E.C) 2. /A/*[position()=1] (select distinct id from A.B where pos=1) union (select distinct id from A.E where pos=1) 3. /A/*/C[not(D)] (select distinct id from A.B.C where id not in (select par from A.B.C.D)) union (select distinct id from A.E.C where id not in (select par from A.E.C.D)) 4. /A/*/F[not(D)] select distinct id from A.B.F Exercice 1.1.5 : Comment est-ce qu on pourrait modifier ce schéma pour éviter les unions? Créer une table séparée pour les éléments partagés : C et D 1.2 Stockage spécifique à une DTD Exercice 1.2.1 : Définissez une DTD pour l arbre précédent. <!ELEMENT A (B,E)> <!ELEMENT B (C,F)*> <!ELEMENT C D?> <!ELEMENT D EMPTY> <!ELEMENT E (D,C*)> <!ELEMENT F EMPTY> Exercice page: 4

Exercice 1.2.2 : Donnez un schéma relationnel qui prend en compte la DTD du document et on supposant que tous les éléments racine sont de type A. Le schéma doit (1) minimiser le nombre de tables et d attributs et (2) éviter des redondances dans les données. Les valeurs NULL sont acceptées. Basic inlining (sans valeurs NULL) : 1. A(idA, idb, ide, ided) 2. C(idC, par, pos, idd) 3. F(idF, par, pos) Exercice 1.2.3 : Donnez les requête relationnelles (SQL, algèbre ou calcul) qui retournent les identifiants de tous les noeuds qu on obtient par les expressions XPath suivantes. Essayez de donner pour chaque requête une version optimisée qui prend en compte la DTD et suppose que tous les documents interrogés sont valides : 1. //C select distinct idc from C 2. //E select distinct ide from A 3. //D (select distinct ided from A) union (select distinct idd from C ) 4. /A/*[position()=1] (select distinct idb from AB where pos=1) union (select distinct ide from AE where pos=1) 5. /A/*/C[not(D)] Exercice page: 5

select distinct idc from C where idd IS NULL 6. /A/*/F[not(D)] select distinct idf from F Exercice 1.2.4 : Comment est-ce qu on pourrait modifier ce schéma pour améliorer les performances? En introduisant de la redondance par l a création de tables supplémentaires qui évitent les unions. 2 Grammaires XML 2.1 DTD et grammaires d arbres Voici une DTD dtd et un grammaire d arbre G : dtd : <!ELEMENT dossiers (dossier*, personne*) > <!ELEMENT dossier (consultation)* > <!ELEMENT consultation (symptome+, prescription?) > <!ELEMENT symptome (#PCDATA) > <!ELEMENT prescription (medicament)* > <!ELEMENT medicament (#PCDATA) > <!ELEMENT personne (nom, prenom, tel?) > <!ELEMENT nom (#PCDATA) > <!ELEMENT prenom (#PCDATA) > <!ELEMENT tel (#PCDATA) > G : Dossiers -> dossiers (Dossier*, Patient*, Medecin*) Dossier -> dossier (Consultation*) Patient -> personne (Nom, Prenom) Medecin -> personne (Nom, Prenom, Tel) Consultation -> consultation (Symptome+, Prescription?) Nom -> nom Pcdata Prenom -> prenom Pcdata Tel -> tel Pcdata Symptome -> symptome Pcdata Exercice page: 6

Prescription -> prescription (Medicament+) Medicament -> medicament Pcdata Exercice 2.1.1 : Est-ce que la DTD dtd valide tous les documents validés par la grammaire G : sat(g) sat(dtd)? oui Exercice 2.1.2 : Est-ce que la grammaire G valide tous les documents validés par la DTD dtd : sat(dtd) sat(g)? non Exercice 2.1.3 : Donnez un exemple de document qui est validé par la DTD dtd mais pas la grammaire G. <dossiers> <personne> <nom>...</nom> <prenom>...</prenom> <tel>...</tel> </personne> <personne> <nom>...</nom> <prenom>...</prenom> </personne> </dossier> Exercice 2.1.4 : Pourquoi la grammaire G 2 ne peut pas être traduite en DTD? Il n est pas possible de spécifier dans une DTD que le document contient d abord tous les éléments personne sans numéro de téléphone. 2.2 Schémas XML et Grammaires d arbres <?xml version="1.0" encoding="iso-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="shiporder"> <xs:complextype> <xs:sequence> <xs:element name="orderperson" type="xs:string"/> <xs:element name="shipto"> <xs:complextype> <xs:sequence> Exercice page: 7

<xs:element name="name" type="xs:string"/> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> <xs:element name="item" maxoccurs="unbounded"> <xs:complextype> <xs:sequence> <xs:element name="title" type="xs:string"/> <xs:element name="note" type="xs:string" minoccurs="0"/> <xs:element name="quantity" type="xs:positiveinteger"/> <xs:element name="price" type="xs:decimal"/> </xs:sequence> </xs:complextype> </xs:element> </xs:sequence> <xs:attribute name="orderid" type="xs:string" use="required"/> </xs:complextype> </xs:element> </xs:schema> Exercice 2.2.1 : Traduisez ce schéma en grammaire d arbres. Root -> shiporder OrderPers ShipTo Item* ShipTo -> shipto Name Addr City Countr Item -> item Title Note? Quant Price OrderPers -> orderperson xs:string Name -> name xs:string Addr -> address xs:string City -> city xs:string Countr -> country xs:string Title -> title xs:string Note -> note xs:string Quant -> quantity xs:positiveinteger Price -> price xs:decimal L attribut orderid n est pas défini dans la grammaire. 2.3 Opérations sur les grammaires Voici deux grammaires d arbres G1 et G2 avec le même type racine Annu : Exercice page: 8

Grammaire G 1 : Grammaire G 2 : Annu annuaire Pers + Pers etudiant CoorEtud Pers enseignant CoorEns CoorEtu coord Nom Num Adr? CoorEns coord Nom Adr Tel? Nom nom String Num num String Adr adresse String Tel telephone String Annu annuaire Pers + Pers etudiant CoorPer Pers enseignant CoorPer CoorPer coord Nom Adr? Nom nom String Adr adresse String Exercice 2.3.1 : Est-ce que tous les documents XML validés par la grammaire G2 sont aussi validés par G1 : sat(g2) sat(g1)? Non : les étudiants dans les documents validés par G 1 doivent avoir un numéro (élément Num), ce qui est interdit pour les documents validés par G 2. Exercice 2.3.2 : Est-ce qu il est possible de traduire la grammaire G1 en DTD? Non, car les éléments coord ont des types différents pour les étudiants et les enseignants. Exercice 2.3.3 : Traduisez la grammaire G2 en DTD XML. <!ELEMENT annuaire (etudiant enseignant)+ > <!ELEMENT etudiant (coord) > <!ELEMENT enseignant (coord) > <!ELEMENT coord (nom, adresse?) > <!ELEMENT nom #PCDATA > <!ELEMENT adresse #PCDATA > Exercice 2.3.4 : Donnez un exemple de document XML qui est validé par les deux grammaires G1 et G2. <annuaire> <enseignant> <coord> <nom>amann</nom> <adresse>lip6</adresse> </coord> </enseignant> </annuaire> Exercice page: 9

Exercice 2.3.5 : Donnez l intersection G1 G2 des grammaire G1 et G2 telle que sat(g1 G2) = sat(g1) sat(g2). Grammaire G1 G2 : Annu annuaire Pers + Pers enseignant CoorPer CoorPer coord Nom Adr Nom nom String Adr adresse String Exercice 2.3.6 : Donnez l union G1 G2 des grammaire G1 et G2 telle que sat(g1 G2) = sat(g1) sat(g2). Grammaire G1 G2 : Annu annuaire (Pers1 + Pers2 + ) Pers1 etudiant CoorEtud Pers1 enseignant CoorEns Pers2 etudiant CoorPer Pers2 enseignant CoorPer CoorEtu coord Nom Num Adr? CoorEns coord Nom Adr Tel? CoorPer coord Nom Adr? Nom nom String Num num String Adr adresse String Tel telephone String Exercice 2.3.7 : (plus difficile) Donnez la différence G1 G2 des grammaire G1 et G2 telle que sat(g1 G2) = sat(g1) sat(g2). Grammaire G1 G2 : Annu annuaire (Etu (Etu Ens) + ) (Ens* EnsTel Ens*) Etu etudiant CoorEtud Ens enseignant CoorEns EnsTel enseignant CoorEnsTel CoorEtu coord Nom Num Adr? CoorEns coord Nom Adr Tel? CoorEnsTel coord Nom Adr Tel Nom nom String Num num String Adr adresse String Tel telephone String Exercice page: 10