Année Universitaire 2009/2010 Session 2 de Printemps



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

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

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

Présentation du module Base de données spatio-temporelles

Implémentation des SGBD

Cours Bases de données

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

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

Le langage SQL Rappels

Cours Langage C/C++ Programmation modulaire

Gestion des transactions et accès concurrents dans les bases de données relationnelles

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

1 Introduction et installation

Module BDR Master d Informatique (SAR)

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

Bases de Données. Plan

Systèmes de Gestion de Bases de Données (SGBD) relationnels Maude Manouvrier

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

Introduction aux Bases de Données

INTRODUCTION : Données structurées et accès simplifié

Langage SQL : créer et interroger une base

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Bases de données avancées Concurrence d'accès et reprise

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

Les bases de données

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

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

Réplication des données

Conception de circuits numériques et architecture des ordinateurs

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Chapitre 10. Architectures des systèmes de gestion de bases de données

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

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

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

AGRÉGATION «ÉCONOMIE ET GESTION»

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

CESI Bases de données

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

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

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

Le Network File System de Sun (NFS)

16H Cours / 18H TD / 20H TP

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

Télécom Nancy Année

.../5. Gestion de Bases de Données (J. Wijsen) 27 janvier 2011 NOM + PRENOM : Orientation + Année : Cet examen contient 8 questions. Durée : 2 heures.

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

Chapitre 1 : Introduction aux bases de données

//////////////////////////////////////////////////////////////////// Administration bases de données

PROJET 1 : BASE DE DONNÉES REPARTIES

UE 8 Systèmes d information de gestion Le programme

2. RAPPEL DES TECHNIQUES DE CALCUL DANS R

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Annexe : La Programmation Informatique

Bases de données avancées Introduction

chapitre 4 Nombres de Catalan

<Insert Picture Here> Solaris pour la base de donnés Oracle

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

(VM(t i ),Q(t i+j ),VM(t i+j ))

Gestion de données réparties. Cours 1

Systèmes d informations nouvelles générations. Répartition, Parallèlisation, hétérogénéité dans les SGBD. Exemple d application d un futur proche

Éléments d'architecture des ordinateurs

Bases de données Cours 1 : Généralités sur les bases de données

Ecole Polytechnique de Louvain INGI Fichiers et bases de données

Recherche dans un tableau

UE8 Systèmes d information de gestion Corrigé indicatif

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

TP Bases de données réparties

ÉTUDE DE CAS. Durée : 5 heures Coefficient : 5 CAS FEFORT ÉLÉMENTS DE CORRECTION

UE Programmation Impérative Licence 2ème Année

Business Intelligence avec SQL Server 2012

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

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

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

Réalisation d'un seeder BitTorrent en CPC Stage de TRE sous la direction de J. Chroboczek et G. Kerneis

Cours de Base de Données Cours n.12

Introduction aux Bases de Données Relationnelles Conclusion - 1

Le Langage SQL version Oracle

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

1. Introduction Création d'une requête...2

Les bases de données Page 1 / 8

Données Réparties. Thibault BERNARD.

Bases de données relationnelles

Systèmes de Gestion de Bases de Données

Bases de données cours 1

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

Couples de variables aléatoires discrètes

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

Entraînement à l épreuve de QCM 40 mn

Introduction aux Bases de Données

TP Contraintes - Triggers

3. La SGA ou System global Area

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

Guide d'installation. Release Management pour Visual Studio 2013

Cours Informatique Master STEP

Projet gestion d'objets dupliqués

Transcription:

Année Universitaire 2009/2010 Session 2 de Printemps DISVE Licence PARCOURS : CSB4 & CSB6 UE : INF 159, Bases de données Épreuve : INF 159 EX Date : Mardi 22 juin 2010 Heure : 8 heures 30 Durée : 1 heure 30 Documents : non autorisés Épreuve de M. Alain Griffault SUJET + CORRIGE Avertissement Le barème total est de 23 points car le sujet est assez long. Le barème de chaque question est (approximativement) proportionnel à sa diculté. L'espace pour répondre est susant (sauf si vous l'utilisez comme brouillon, ce qui est fortement déconseillé). Exercice 1 (SQL et normalisation (16 points)) Un informaticien souhaite utiliser un SGBD relationnel pour la gestion de ses chiers source. Chaque chier peut avoir plusieurs versions, chacune de ces versions étant utilisée pour une bibliothèque ou bien pour une application (que l'on regroupe sous le terme logiciel). Il compile ses applications avec les bibliothèques nécessaires sur plusieurs plate-formes an d'obtenir des binaires exécutables sur diérents processeurs. L'informaticien s'impose des règles pour simplier sa gestion. Les informations stockées sont celles de la relation Codes (Fichier, Version, Logiciel, Processeur, Binaire) et respectent les dépendances fonctionnelles : {Version, Fichier} {Logiciel} : chaque version d'un chier n'est utilisée que dans un seul logiciel. {Logiciel, Processeur} {Binaire} qui indique qu'un logiciel (bibliothèque ou application) sur un processeur donné n'est utilisé que dans un seul binaire. {Binaire} {Processeur} qui indique qu'un binaire ne peut s'exécuter que sur un seul type de processeur. Fichier Version Logiciel Processeur Binaire c1.c V1 A1 i386 B1-i386 Voici un exemple de tuples possibles dans Codes. c2.c V3 A1 SPARC B1-SPARC c3.c V2 L1 i386 B1-i386 c3.c V2 L1 SPARC B1-SPARC Question 1.1 (1 point) Après en avoir donné une écriture algébrique, écrire une requête SQL qui caractérise les Binaire utilisant une version V43 pour le logiciel L16. R = π[binaire](σ[version = V43 Logiciel = L16](Codes)) -- les binaires utilisant une version 'V43' pour le logiciel 'L16' SELECT Binaire Codes WHERE Version = 'V43' Logiciel = 'L16'; Question 1.2 (1 point) Après en avoir donné une écriture algébrique, écrire une requête SQL qui caractérise les Binaire utilisant au moins deux Logiciel diérents, et tels que deux chiers aient les mêmes Version. R = π[c1.binaire](σ[ C1.Binaire = C2.Binaire C1.Version = C2.Version C1.Logiciel C2.Logiciel ](α[codes :C1] α[codes :C2])) SELECT DISTINCT C1.Binaire 1/ 5

, Codes AS C2 WHERE C1.Binaire = C2.Binaire C1.Version = C2.Version C1.Logiciel <> C2.Logiciel; SELECT DISTINCT Binaire WHERE EXISTS (SELECT * Codes AS C2 WHERE C1.Binaire = C2.Binaire C1.Version = C2.Version C1.Logiciel <> C2.Logiciel); SELECT DISTINCT Binaire WHERE NOT (Logiciel = ALL (SELECT Logiciel Codes AS C2 WHERE C1.Binaire = C2.Binaire C1.Version = C2.Version)); SELECT DISTINCT Binaire, COUNT(Logiciel) (SELECT DISTINCT Binaire, Version, Logiciel Codes) AS R GROUP BY Binaire, Version HAVING COUNT(Logiciel) > 1; Question 1.3 (1 point) Écrire une requête SQL qui caractérise les Fichier compilés sur un même Processeur dans au moins deux Version diérentes. SELECT DISTINCT C1.Fichier, Codes AS C2 WHERE C1.Fichier = C2.Fichier C1.Processeur = C2.Processeur C1.Version <> C2.Version; WHERE EXISTS (SELECT * Codes AS C2 WHERE C1.Fichier = C2.Fichier C1.Processeur = C2.Processeur C1.Version <> C2.Version); WHERE NOT (Version = ALL (SELECT Version Codes AS C2 WHERE C1.Fichier = C2.Fichier C1.Processeur = C2.Processeur));, COUNT(Version) (, Processeur, Version Codes) AS R GROUP BY Fichier, Processeur HAVING COUNT(Version) > 1; Question 1.4 (1 point) Écrire une requête SQL qui caractérise les Logiciel compilés dans au plus 5 Binaire diérents. 2/ 5

SELECT DISTINCT Logiciel, COUNT(Binaire) (SELECT DISTINCT Logiciel, Binaire Codes) AS R HAVING COUNT(Binaire) < 6; Question 1.5 (2 points) Écrire une requête SQL qui caractérise les Fichier utilisés dans un Logiciel compilé dans moins de 2 Binaire diérents, et n'étant pas utilisés dans un Logiciel compilé dans plus de 9 Binaire diérents. (SELECT DISTINCT Logiciel, COUNT(Binaire) (SELECT DISTINCT Logiciel, Binaire Codes) AS R HAVING COUNT(Binaire) < 2) AS TMP1 NATURAL JOIN Codes (SELECT DISTINCT Logiciel, COUNT(Binaire) (SELECT DISTINCT Logiciel, Binaire Codes) AS R HAVING COUNT(Binaire) > 9) AS TMP2 NATURAL JOIN Codes; Question 1.6 (2 points) Traduisez l'expression algébrique suivante : R = π[version,logiciel,processeur](codes) π[c1.version,c1.logiciel,c1.processeur](σ[ C1.Version C2.Version C1.Logiciel = C2.Logiciel C1.Processeur = C2.Processeur ](α[codes :C1] α[codes :C2])) en une requête SQL, puis expliquez ce qu'elle calcule. SELECT DISTINCT Version, Logiciel, Processeur Codes SELECT C1.Version, C1.Logiciel, C1.Processeur, Codes AS C2 WHERE C1.Version <> C2.Version C1.Logiciel = C2.Logiciel C1.Processeur = C2.Processeur; SELECT DISTINCT Version, Logiciel, Processeur (SELECT * Codes AS C2 WHERE C1.Version <> C2.Version C1.Logiciel = C2.Logiciel C1.Processeur = C2.Processeur); La requête SQL caractérise les couples (Logiciel,Processeur) spéciques à une Version. Question 1.7 (2 points) Écrire une requête SQL qui caractérise les Fichier utilisés dans tous les Binaire. 3/ 5

Codes SELECT Fichier ( SELECT * ( Codes) AS PiR1, (SELECT DISTINCT Binaire Codes) AS R2 SELECT Fichier, Binaire Codes ) AS NonEntierR1; Codes AS P1 (SELECT DISTINCT Binaire Codes AS P2 (SELECT DISTINCT Binaire Codes AS P11 WHERE P11.Fichier = P1.Fichier P11.Binaire = P2.Binaire)); Les questions suivantes portent sur la normalisation de la relation Codes. Question 1.8 (1 point) Donnez toutes les clefs candidates de la relation Codes. Les dépendances fonctionnelles donnent : C 1 = {Fichier, Version, Binaire} et C 2 = {Fichier, Version, Processeur Question 1.9 (1 point) Même si l'on suppose qu'il n'y a aucun doublon dans Codes, justiez pourquoi la relation Codes n'est pas en troisième forme normale. Une seule des explications suivantes est susante (liste non exhaustive). Non 2NF : La clef {Fichier, Version, Binaire} contient {Binaire} qui détermine {Processeur}. Non 2NF : La clef {Fichier, Version, Binaire} contient {Fichier, Version} qui détermine {Logiciel}. Question 1.10 (2 points) Appliquez un algorithme (ou une technique) de normalisation pour obtenir une décomposition, sans perte d'information et sans perte de dépendance fonctionnelle, de la relation Codes en un ensemble de relations en troisième forme normale. Vous n'écrirez sur la copie que les nouvelles relations et les dépendances fonctionnelles qui sont à la base des projections eectuées. Décomposition en 3NF : 1. {Fichier, Version} {Logiciel} donne Sources (Fichier, Version, Logiciel) 3NF et BCNF. 2. {Logiciel, Processeur} {Binaire} donne Executables (Logiciel, Processeur, Binaire) 3NF et non BCNF. Question 1.11 (2 points) Après avoir précisé si votre décomposition est en BCNF ou bien seulement en 3NF, répondez à la question qui vous concerne. Votre décomposition est en BCNF : Indiquez la dépendance fonctionnelle que vous avez perdue. Votre décomposition est seulement en 3NF : Indiquez le problème de redondance qui subsiste. Décomposition en BCNF : 1. {Logiciel, Processeur} {Binaire} qui indique qu'un logiciel (bibliothèque ou application) sur un processeur donné n'est utilisé que dans un seul binaire. Votre décomposition est seulement en 3NF : 4/ 5

1. L'information (Binaire, Processeur) est dupliquée. Exercice 2 (Évitement de l'interblocage (4 points)) La sérialisation des transactions est souvent obtenue à l'aide de verrous. Un verrou est un triplet (état du verrou (L,S ou X), liste des détenteurs du verrou, liste des demandes). Un exemple classique d'interblocage lors d'un verrouillage strict avec deux types de verrous est : Transaction A temps Transaction B Verrou(tuple) t0 (L,, ) dem(select(tuple)) t1.1 (L,, {lecture(a)}) select(tuple) t1.2 (S, {A}, ) t2.1 dem(select(tuple)) (S, {A}, {lecture(b)}) t2.2 select(tuple) (S, {A, B}, ) dem(update(tuple)) t3.1 (S, {A, B}, {ecriture(a)}) t4.1 dem(update(tuple)) (S, {A, B}, {ecriture(a), ecriture(b)}).... L'évitement consiste à adapter le protocole à deux phases en mémorisant pour chaque transaction une estampille qui est sa date de création. Cette estampille sert pour soit tuer une transaction, soit s'auto-détruire. Deux versions lorsque (T i, e i ) demande un verrou sur tuple j détenu par (T k, e k ). Wait-Die : si e i < e k, T i attend, sinon T i meurt. Wound-Wait : si e i < e k, T i blesse T k, sinon T i attend. Dans les deux cas, la transaction tuée redémarre plus tard en gardant son estampille d'origine. Question 2.1 (4 points) Compléter le tableau suivant en utilisant la version Wait-Die de l'évitement. Les transactions doivent se terminer par un COMMIT après leur update réussi. Transaction A temps Transaction B Verrou(tuple) t0 (L,, ) dem(select(tuple)) t1.1 (L,, {lecture(a, t1)}) select(tuple) t1.2 (S, {(A, t1)}, ) t2.1 dem(select(tuple)) (S, {(A, t1)}, {lecture(b, t2)}) t2.2 select(tuple) (S, {(A, t1), (B, t2)}, ) dem(update(tuple)) t3.1 (S, {(A, t1), (B, t2)}, {ecriture(a, t1)}) t4.1 dem(update(tuple)) (S, {(A, t1), (B, t2)}, {ecriture(a, t1), ecriture(b, t2)}) t4.2 dem(rollback) (S, {(A, t1), (B, t2)}, {ecriture(a, t1), ecriture(b, t2), rollback(b, t2)} t4.3 rollback (S, {(A, t1)}, {ecriture(a, t1)}) update(tuple) t3.2 (X, {(A, t1)}, ) dem(commit) t5.1 (X, {(A, t1)}, {commit(a, t1)}) commit t5.2 (L,, ) t6.1 dem(select(tuple)) (L,, {lecture(b, t2)}) t6.2 select(tuple) (S, {(B, t2)}, ) t7.1 dem(update(tuple)) (S, {(B, t2)}, {ecriture(b, t2)}) t7.2 (update(tuple)) (X, {(B, t2)}, ) t8.1 dem(commit) (X, {(B, t2)}, {commit(b, t2)}) t8.2 (commit) (L,, ) t9 (L,, ) Exercice 3 (Transactions (3 points)) Question 3.1 (1 point) Donner les dénitions de état cohérent et de état correct dans un SGBD relationnel. Pages 49 et 50 du polycopié. Question 3.2 (2 points) Donner les dénitions de unité logique de travail et de transaction dans un SGBD relationnel. Expliquer pourquoi une transaction est une unité logique de travail. Page 50 du polycopié. 5/ 5