LI345 - EXAMEN DU 4 JUIN 2010



Documents pareils
1 Position du problème

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

A QUOI SERVENT LES BASES DE DONNÉES?

Pratique et administration des systèmes

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)

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

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

Utilisation d Hyperplanning 2011

Application web de gestion de comptes en banques

CREATION WEB DYNAMIQUE

I4 : Bases de Données

Bases de données relationnelles

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

Mysql avec EasyPhp. 1 er mars 2006

A QUOI SERVENT LES BASES DE DONNÉES?

Introduction à JDBC. Accès aux bases de données en Java

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

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

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

Stockage du fichier dans une table mysql:

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Encryptions, compression et partitionnement des données

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

Notes de cours : bases de données distribuées et repliquées

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Rappel sur les bases de données

Les bases de données

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

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

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

Gestion des utilisateurs et de leurs droits

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

1. Base de données SQLite

Objectifs du TP : Initiation à Access

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

I. MySQL : Serveur et SGBD

Olivier Mondet

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

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

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

PHP 4 PARTIE : BASE DE DONNEES

Devoir Data WareHouse

Les BASES de DONNEES dans WampServer

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

Langage SQL : créer et interroger une base

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

OpenPaaS Le réseau social d'entreprise

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

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

BIRT (Business Intelligence and Reporting Tools)

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Compétences Business Objects

DMP1 DSFT des Interfaces DMP des LPS Annexe : complément de spécification sur l impression des documents à remettre au patient

Java DataBaseConnectivity

DOM - Document Object Model

Création et Gestion des tables

TP3 : Creation de tables 1 seance

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

PDO : PHP Data Object 1/13

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

UML et les Bases de Données

Compte-rendu de projet de Système de gestion de base de données

Tutorial sur SQL Server 2000

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

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

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

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

Installation d'un serveur FTP géré par une base de données MySQL

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

Master CCI. Compétences Complémentaires en Informatique. Livret de l étudiant

TP Contraintes - Triggers

Recherche dans un tableau

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)

Jexcel. V1.1.4 Manuel d'utilisation. modifié le 16 nov. 2004

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

NF26 Data warehouse et Outils Décisionnels Printemps 2010

SUPPORT DE COURS / PHP PARTIE 3

Bases de Données Avancées

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

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

BES WEBDEVELOPER ACTIVITÉ RÔLE

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

PROJET 1 : BASE DE DONNÉES REPARTIES

Bases de données avancées

contact@nqicorp.com - Web :

Initiation à html et à la création d'un site web

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

PHP. PHP et bases de données

Module BDR Master d Informatique (SAR)

les techniques d'extraction, les formulaires et intégration dans un site WEB

1/ Présentation de SQL Server :

Information utiles. webpage : Google+ : digiusto/

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

Transcription:

Nom : Prénom : page 1 Transactions Université Pierre et Marie Curie - Paris 6 - UFR 919 - Licence d'informatique LI345 - EXAMEN DU 4 JUIN 2010 Durée : 2h ---documents autorisés On note Li(X) : lecture de X par la transaction Ti, Ei(X) : écriture de X par la transaction Ti, Vi : validation de la transaction Ti. On considère les deux exécutions suivantes : 1. E2(A), E1(B), L3(A), E2(B), E1(C), L2(C), E1(A), V1, V2, V3 2. E1(A), E2(B), E3(C), L1(B), E1(C), L3(A), V1, V2, V3 Question 1. Ces deux exécutions provoquent-elles un interblocage, si on considère un SGBD utilisant du verrouillage deux phases strict (les verrous d une transaction sont relâchés au moment de la validation)? Justifiez vos réponses (la justification compte pour la moitié des points) Exécution 1 : 3pts Exécution 2 : Question 2. Ces deux exécutions provoquent-elle un interblocage si on considère un SGBD dans lequel le contrôle de concurrence se fait par clichés multi-version? Justifiez vos réponses. Exécution 1 : Exécution 2 : Question 3. On considère les instructions suivantes : a) set A=A+1 b) set B=B+2 c) set A=A+B d) set B=10 Une instruction traitée par une transaction Ti est désignée par la lettre de l instruction suivie du numéro i de la transaction. Par exemple, a1 représente l instruction a traitée par la transaction T1. Les séquences suivantes produisent-elles un interblocage? 1. T1a, T2b, T1c, T2d 2. T1C, T2a, T2d, T1b Exécution 1 : Exécution 2 :

Lettres initiales du Prénom et du Nom: page 2 SQL3 : Modélisation 2 Pts On veut définir en SQL3 le schéma d une base de données touristique. On veut définir un type Ville, qui a un nom, des restaurants et des musées. Un restaurant a un nom, une adresse et une liste de 3 menus. Les types Musée et Menu sont définis de la manière suivante : Create type Musee as object( Nom varchar(20), JourFermeture varchar(15) ) ; Create type Menu as object ( Nom varchar (20), Prix Number (2) ) ; Question 1. Définir le type Restaurant Question 2. Définir le type Ville Question 3. Définir la table permettant de stocker toutes ces données.

Lettres initiales du Prénom et du Nom: page 3 SQL3 : Mise à jour et interrogation On considère le schéma relationnel objet suivant : CREATE TYPE Personne as object( Nom Varchar2(20), Sexe Varchar2(1), Age Number(2)) ; CREATE TYPE EnsPersonnes as table of Ref Personne; CREATE TYPE Visite AS OBJECT ( Nom varchar2(20), Duree Number(2)); CREATE TYPE EnsVisites as table of Visite ; CREATE TYPE Destination as object ( Pays varchar2(20), Lieux EnsVisites); CREATE TYPE Tour as object ( Identifiant Varchar2 (20), Programme Destination, Inscrits EnsPersonnes); 4 Pts CREATE TABLE LesTours OF Tour NESTED TABLE inscrits STORE AS tabinscrits, NESTED TABLE programme.lieux STORE AS tablieux ; CREATE TABLE LesPersonnes OF Personne; INSERT INTO LesPersonnes values Personne( Robinson, M, 32) ; Question.1 Donner l instruction permettant d insérer le tour Toscane2010, qui a pour destination l Italie, et qui comporte une visite à Florence pour une durée de 3 jours, et une à Pise pour une durée de 2 jours. Question 2. Donner l instruction inscrivant la personne s appelant Robinson au tour Toscane2010. Question 3 Donner l expression en SQL3 des requêtes suivantes : 1. Personnes voyageant en Italie et visitant Pise

Lettres initiales du Prénom et du Nom: page 4 2. Quels sont les lieux touristiques en Italie où il est prévu une visite de plus de 2 jours? XML-DTD-XSLT 6 pts L entreprise Leepsis déménage. Chaque employé de cette entreprise a un numéro d ancien bureau et un numéro de nouveau bureau. Par exemple, l employé Dupont a pour ancien bureau le numéro K126 et pour nouveau bureau le numéro J32. Si deux employés sont dans le même nouveau bureau alors on dit qu ils sont collègues de bureau. Les informations du déménagement sont stockées dans un document XML. Chaque employé a un identifiant et un nom, ainsi qu éventuellement un numéro d ancien bureau, un numéro de nouveau bureau, ainsi que des meubles. Si un employé partage le bureau avec un collègue alors, pour éviter de stocker inutilement de l information, il n y a qu un seul des deux employés qui possède le numéro du nouveau bureau. Par exemple, dans le document XML Leepsis.xml ci-après, l employé Wang et l employé Martin sont collègues de bureau (ils possèdent tous les deux un attribut collegue faisant référence à la personne avec laquelle ils partageront le nouveau bureau), mais l employé Martin ne contient pas le numéro du nouveau bureau. Voici le fichier Leepsis.xml qui contient les informations du déménagement de l entreprise Leepsis. <?xml version="1.0"?> <!DOCTYPE demenagement SYSTEM "demenagement.dtd"> <demenagement> <personne id='p1'> <nom>dupont</nom> <ancienb>k126</ancienb> <nouveaub>j32</nouveaub> <meuble>armoire</meuble> <meuble>chaise</meuble> </personne> <personne id='p2' collegue='p3'> <nom>wang</nom> <ancienb>k325</ancienb> <nouveaub>j18</nouveaub> <meuble>armoire</meuble> </personne> <personne id='p3' collegue='p2'> <nom>martin</nom> <ancienb>k229</ancienb> <meuble>lampe</meuble> </personne> </demenagement>

Lettres initiales du Prénom et du Nom: page 5 1. Compléter la DTD demenagement.dtd ci-après pour qu elle respecte les contraintes données dans l énoncé et qu elle valide le document Leepsis.xml <!ELEMENT demenagement...> <!ELEMENT personne...> <!ATTLIST personne...> <!ELEMENT nom...> <!ELEMENT ancienb...> <!ELEMENT nouveaub...> <!ELEMENT meuble...> 2. Compléter la feuille XSL suivante pour qu elle transforme un document XML (qui suit la DTD demenagement.dtd) en un autre document XML qui suit la même DTD, mais qui contient seulement les personnes qui ont dans leurs meubles une armoire. Remarque : on ne s inquiétera pas du fait que certains collègues de bureau ne sont éventuellement plus présents dans le document. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="..."> </xsl:stylesheet> 3. Compléter la feuille XSL suivante pour qu elle transforme un document XML (qui suit la DTD demenagement.dtd) en un document HTML qui affiche le nombre de personnes qui déménagent ainsi que le nombre de meubles à déménager, et en particulier le nombre d armoires. Par exemple, pour le document Leepsis.xml, le résultat attendu est : <HTML> <p>nombre de personnes : 3</p> <p>nombre de meubles : 4, dont 2 armoires</p> </HTML>

Lettres initiales du Prénom et du Nom: page 6 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match= "/"> </xsl:stylesheet> 4. Compléter la feuille XSL suivante pour qu elle transforme un document XML (qui suit la DTD demenagement.dtd) en un document HTML qui affiche un tableau HTML associant le nom d une personne et la liste de ces meubles. Par exemple, pour le document Leepsis.xml, le résultat attendu est : <HTML> <H1>Liste des personnes et leurs meubles</h1> <TABLE> </TABLE> </HTML> <TR><TH>Nom</TH><TH>Meubles</TH></TR> <TR><TD>Dupont</TD><TD> armoire chaise </TD></TR> <TR><TD>Wang</TD><TD> armoire </TD></TR> <TR><TD>Martin</TD><TD> lampe </TD></TR> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match= "..."> <xsl:template match="...">

Lettres initiales du Prénom et du Nom: page 7 </xsl:stylesheet> 5. Complétez la feuille XSL suivante pour qu elle transforme un document XML (qui suit la DTD demenagement.dtd) en un document XML contenant la liste des nouveaux bureaux et pour chaque bureau la liste des noms des personnes dans ce bureau. Par exemple, pour le document Leepsis.xml, le document obtenu est : <?xml version="1.0" encoding="utf-8"?> <bureaux> <bureau id="j32"> </bureau> <personne>dupont</personne> <bureau id="j18"> </bureau> </bureaux> <personne>wang</personne> <personne>martin</personne> Afin d obtenir ce résultat, vous pourrez vous aider de l élément xsl:variable qui permet de déclarer une variable. Sa syntaxe est : <xsl:variable name='nom' select='expression'/> où nom est le nom de la variable et expression est sa valeur. Pour utiliser cette variable dans une expression Xpath, il suffit d ajouter un $ devant le nom de la variable. Pour vous aider, les deux premiers templates de la feuille de style suivante ont déjà été complétés. En particulier, un exemple d utilisation de xsl:variable est donné. Complétez le troisième template. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match= "/"> <bureaux> <xsl:apply-templates select='//nouveaub'/> </bureaux> <xsl:template match= "nouveaub"> <xsl:variable name='numerob' select='text()'/> <bureau> <xsl:attribute name='id'> <xsl:value-of select="$numerob"/> </xsl:attribute> <xsl:apply-templates select="//personne[nouveaub=$numerob]"/> </bureau> <xsl:template match= "personne">

Lettres initiales du Prénom et du Nom: page 8 </xsl:stylesheet> PHP 5 Pts On considère un réseau social, dont les informations sont stockées dans la base RéseauSocial, contenant plusieurs tables, parmi lesquelles les tables suivantes (les clés des tables sont soulignées): Utilisateur(idu, nom, profil): informations sur les membres idu: identifiant unique de l'utilisateur nom: nom en clair profil: auto-description Amis(idu1, idu2, daterel): relations d'amitié entre les membres idu1, idu2: identifiants des utilisateurs qui sont des amis daterel: date à laquelle ils sont devenus amis Communauté(idg, idu, dateg): informations sur l'appartenance des utilsateurs aux groupes idg, idu: identifiants de l'utilisateur et du groupe auquel il appartient dateg: date à laquelle l'utilisateur a adhéré au groupe

Les requêtes sur la base de données sont exécutées en utilisant la fonction DB_execSQL($req, $serv) étudiée en TD, ou $req est la requête à exécuter, $serv est l'identifiant de la connexion. On suppose que l'exécution des requêtes se fait sans erreur. Question 1(1pt). Chaque groupe contient au moins un utilisateur. Donnez la fonction listemembres($id, $serv) qui retourne, sous forme de tableau, la liste des identifiants des utilisateurs du groupe identifié par $id. Si le groupe n'existe pas la fonction retourne NULL. Question 2(1pt). Un utilisateur peut appartenir à plusieurs groupes. Écrivez la fonction listegroupes($id, $serv) qui fait appel à la fonction listemembre et qui retourne un tableau associatif, où à chaque identifiant d'un groupe auquel appartient l'utilisateur identifié par $id, on associe le tableau de la liste des identifiants de tous les utilisateurs de ce groupe. Si l'utilisateur $id n'existe pas, la fonction retourne NULL. Question 3(1pt). Écrivez la fonction testappartenance($id, $listegroupes) qui retourne true si l'utilisateur $id appartient à au moins un des groupes dans le tableau associatif $listegroupes semblable au tableau retourné à la question 2. Dans le cas contraire la fonction retourne false. examli345mai2010.doc

Nom: Prenom : n :... page 10 Question 4(2pts). Écrivez une fonction rechercheamis($id, $serv) qui affiche sous forme de tableau HTML (avec une seule colonne), la liste des profils de tous les utilisateurs s'appelant 'Toto' (et différents de $id), qui ne sont pas déjà des amis de $id et qui appartiennent à un groupe auquel appartient $id. Indication: vous pouvez utiliser la fonction sql_num_rows($resultat), qui retourne le nombre de lignes contenues dans $resultat ($resultat est retourné par DB_exec_SQL). examli345mai2010.doc