Examen Partiel - Bases de Données - Valeur C Module: Web et Données Durée: 2h30 heures, 9 Avril 2002



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

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

BD et XML : Exercices

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données avancées Introduction

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

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

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

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Master I Génie Logiciel

Bases de données relationnelles

BASE DE DONNÉES XML NATIVE

Master d Informatique Corrigé du partiel novembre 2010

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

Le langage SQL Rappels

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

Cours Bases de données 2ème année IUT

A QUOI SERVENT LES BASES DE DONNÉES?

Introduction aux Bases de Données 2004/2005

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Master Technologies numériques appliquées à l'histoire Deuxième année

INTRODUCTION AU DATA MINING

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

BASE DE DONNÉES XML NATIVE

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

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Année Universitaire 2009/2010 Session 2 de Printemps

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

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Panorama des Bases de Données

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

Langage SQL : créer et interroger une base

Gestion de stock pour un magasin

Le Langage SQL version Oracle

CREATION WEB DYNAMIQUE

L ABC de l acquisition de petites entreprises

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

AMENDMENT TO BILL 32 AMENDEMENT AU PROJET DE LOI 32

16H Cours / 18H TD / 20H TP

Mysql avec EasyPhp. 1 er mars 2006

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

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

Développement de base de données Microsoft SQL Server Durée : 5 jours Référence : DPSQL12. Contenu

SQL Server et Active Directory

Manuel Viadeis CRM Connecteur intégration L100 étendue.

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

PHP 4 PARTIE : BASE DE DONNEES

Les Entrepôts de Données

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Guide d'installation rapide TFM-560X YO.13

Paginer les données côté serveur, mettre en cache côté client

Modernisation et développement d applications IBM i Technologies, outils et nouveautés 2012/2013. Volubis.fr

Historisation des données

Cours 4 : Agrégats et GROUP BY

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

PROJET 1 : BASE DE DONNÉES REPARTIES

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

Attaques applicatives

Cours Bases de données 2ème année IUT

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

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

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

Programmation d application Bases de données avec Java

SQL Historique

Algorithmique & programmation

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Développement Web - Object Relational Mapping and Hibernate

NFE204 Bases de données avancées

Information utiles. webpage : Google+ : digiusto/

.NET - Classe de Log

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Nouveautés CRM 2015 & Migration. By Tanguy Touzard MVP CRM

<?xml version="1.0" encoding="iso " standalone="yes"?>

France SMS+ MT Premium Description

Panorama des Bases de Données

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

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

May Lopez PETIT COUTEAU SUISSE CRÉATIF. May Lopez Petit couteau suisse créatif

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

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

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

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

Présentation Windows Azure Hadoop Big Data - BI

Corrigés détaillés des exercices

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

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Bases de Données Avancées

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

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

I. COORDONNÉES PERSONNELLES / PERSONAL DATA

Transcription:

9/4/2002 Conservatoire National des Arts et Métiers Paris 1 1. XML et DTD (4 points) Examen Partiel - Bases de Données - Valeur C Module: Web et Données Durée: 2h30 heures, 9 Avril 2002 Voici une table relationnelle avec des résultats du deuxième tour des éléctions présidentielles de quatre bureaux de vote. Votes dept ville bureau candidat voix 94 Cachan 1 Toto 3398 94 Cachan 1 Dupont 6589 94 Cachan 2 Toto 5645 94 Cachan 2 Dupont 4090 94 L Hay 1 Toto 2067 94 L Hay 1 Dupont 4089 92 Bagneux 1 Toto 4723 92 Bagneux 1 Dupont 5167 Cette table a été traduite en XML (document Imbrique.xml): <?xml version="1.0"?> <Ville nom="cachan" dept="94"> <Candidat nom="toto" voix="3398"/><candidat nom="dupont" voix="6589"/> <Bureau num="2"> <Candidat nom="toto" voix="5645"/><candidat nom="dupont" voix="4090"/> <Ville nom="l Hay" dept="94"> <Candidat nom="toto" voix="2067"/><candidat nom="dupont" voix="4089"/> <Ville nom="bagneux" dept="92"> <Candidat nom="toto" voix="4723"/><candidat nom="dupont" voix="5167"/> 1. Donnez la DTD du document précédent (Imbrique.xml). <!ELEMENT Votes (Ville)*> <!ELEMENT Ville (Bureau)*> <!ATTLIST Ville nom CDATA #REQUIRED dept CDATA #REQUIRED> <!ELEMENT Bureau (Candidat)*> <!ATTLIST Bureau num CDATA #REQUIRED> <!ELEMENT Candidat EMPTY> <!ATTLIST Candidat nom CDATA #REQUIRED voix CDATA #REQUIRED> 2. Exprimez dans la DTD la contrainte que les deux seuls candidats possibles sont Toto et Dupont. <!ATTLIST Candidat nom (Toto Dupont) #REQUIRED>

9/4/2002 Conservatoire National des Arts et Métiers Paris 2 3. Est-ce qu il est possible de spécifier dans la DTD que l ensemble des attributs (dept,ville,bureau,candidat) forme un clé. NON 2. XPath (7 points) 1. Traduisez les requêtes SQL suivantes (sur la table Votes) en requêtes XPath (sur le document Imbrique.xml): (a) select distinct bureau from Votes /Votes/Ville/Bureau[not[@num=preceding::Bureau/@num]/@num (b) select voix from Votes where ville= Cachan and candidat= Dupont /Votes/Ville[@nom= Cachan ]/Bureau/Candidat[@nom= Dupont ]/@voix (c) select ville from Votes where candidat="toto" and voix > 5000 /Votes/Ville[Bureau/Candidat[@nom= Toto and @voix>5000]]/@nom 2. Traduisez les expressions XPath suivantes (sur le document Imbrique.xml) en requêtes SQL (sur la table Votes) : (a) /Votes/Ville/Bureau/Candidat[@voix >../Candidat/@voix]/@nom select A.candidat from Votes A, Votes B where A.voix > B.voix and A.ville=B.ville and A.bureau=B.bureau ou select A.candidat from Votes A where A.voix > any (select B.voix from Votes B where A.ville=B.ville and A.bureau=B.bureau) (b) //Candidat[not(@nom=preceding::Candidat/@nom)]/@nom select distinct candidat from Votes

9/4/2002 Conservatoire National des Arts et Métiers Paris 3 (c) /Votes/Ville[sum(Bureau/Candidat[@nom= Dupont ]/@voix) > 8000]/@nom La fonction XPath sum(p) calcule la somme des valeurs retournées par l expression p. select ville from Votes where candidat= Dupont group by ville having sum(voix) > 8000; 3. XSLT (4 points) Voici un programme XSLT : <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output method="xml" indent="yes"/> <xsl:template match="votes"> <xsl:for-each select="ville/bureau/candidat"> <Vote dept="{../../@dept}" ville="{../../@nom}" bureau="{../@num}" candidat="{@nom}" voix="{@voix}"/> </xsl:for-each> </xsl:template> </xsl:stylesheet> 1. Quelle est le résultat si on applique ce programme au document Imbrique.xml? <Vote dept= 94 ville= Cachan bureau= 1 candidat= Toto voix= 3398 /> <Vote dept= 94 ville= Cachan bureau= 1 candidat= Dupont voix= 6589 /> <Vote dept= 94 ville= Cachan bureau= 2 candidat= Toto voix= 5645 /> <Vote dept= 94 ville= Cachan bureau= 2 candidat= Dupont voix= 4090 /> <Vote dept= 94 ville="l Hay" bureau= 1 candidat= Toto voix= 2067 /> <Vote dept= 94 ville="l Hay" bureau= 1 candidat= Dupont voix= 4089 /> <Vote dept= 92 ville= Bagneux bureau= 1 candidat= Toto voix= 4723 /> <Vote dept= 92 ville= Bagneux bureau= 1 candidat= Dupont voix= 5167 /> 2. Écrivez un programme XSLT qui calcule la somme des voix pour chacun des candidats (à partir du document Imbrique.xml). Le résultat de la transformation donnera le document suivant : <?xml version="1.0"?> <Candidat nom="toto">15833</candidat> <Candidat nom="dupont">19935</candidat> <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output method="xml" indent="yes"/>

9/4/2002 Conservatoire National des Arts et Métiers Paris 4 <xsl:template match="votes"> <xsl:for-each select="ville/bureau/candidat[not(@nom=preceding::candidat/@nom)]"> <Candidat nom="{@nom}"> <xsl:value-of select="sum(//candidat[@nom=current()/@nom]/@voix)"/> </Candidat> </xsl:for-each> </xsl:template> </xsl:stylesheet> 4. XQuery (5 points) 1. Donnez les résultats des deux requêtes XQuery suivantes sur le document Imbrique.xml: (a) for $a in //Bureau, $x in $a/candidat, $y in $a/candidat[not(@nom = $x/@nom)] if ($x/@voix > $y/@voix) then ($a/../@nom, $a/@num, $x/@nom) else ($a/../@nom, $a/@num, $y/@nom) Pour chaque bureau de vote : le nom de la ville, le numéro du bureau et le nom du candidat gagnant : (Cachan,1,Dupont) (Cachan,1,Dupont) (Cachan,2,Toto) (Cachan,2,Toto) (L Hay,1,Dupont) (L Hay,1,Dupont) (Bagneux,1,Dupont) (Bagneux,1,Dupont) Programme XSLT équivalent: (b) { for $a in distinct(//candidat/@nom) <Client nom={ $a } voix={ sum(//candidat[@nom=$a]/@voix) } /> } Pour chaque candidat: son nom et la somme des voix 2. Donnez la requête XQuery qui retourne le nom du vainqueur des élections. avec deux candidats: let $a in distinct(//candidat/@nom) $b in distinct(//candidat/@nom) where $a <> $b if sum(//candidat[@nom=$a]/@voix) > sum(//candidat[@nom=$b]/@voix) then $a else $b

9/4/2002 Conservatoire National des Arts et Métiers Paris 5 avec plus que deux candidats: for $a in distinct(//candidat/@nom) if every $b in //Candidat[@nom <> $a] satisfies sum(//candidat[@nom=$a]/@voix) < sum(//candidat[@nom=$b/@nom]/@voix) then $a