L3 informatique Conception et utilisation des bases de données Examen nal - janvier 2006

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

TP Contraintes - Triggers

Introduction aux bases de données. Généralités sur les bases de données. Fonctions d'un SGBD. Définitions. Indépendance par rapport aux traitements

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

SQL Historique

Langage SQL : créer et interroger une base

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

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

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

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

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

Les bases de données

TP3 : Creation de tables 1 seance

Le Langage De Description De Données(LDD)

Olivier Mondet

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

Intégrité des données

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Mysql. Les requêtes préparées Prepared statements

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

Bases de données relationnelles

CREATION WEB DYNAMIQUE

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

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

Compétences Business Objects

Le Langage SQL version Oracle

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

BTS/CGO P10 SYSTEME INFORMATION Année

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

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

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

Année Universitaire 2009/2010 Session 2 de Printemps

Le langage SQL (première partie) c Olivier Caron

1. Base de données SQLite

Gestion de base de données

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

Auto-évaluation Oracle: cours de base

Bases de Données. Plan

1 Position du problème

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

16H Cours / 18H TD / 20H TP

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

FileMaker 13. Guide de référence SQL

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

Partie 0 : Gestion des tablespace et des utilisateurs... 3

INTRODUCTION AU DATA MINING

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

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

BASES DE DONNEES TP POSTGRESQL

Intégrité sémantique dans les bases de données relationnelles

Le langage SQL Rappels

Création et Gestion des tables

Pratique et administration des systèmes

Bases de données et sites WEB

Cours SQL. Base du langage SQL et des bases de données

OpenPaaS Le réseau social d'entreprise

Encryptions, compression et partitionnement des données

Optimisation SQL. Quelques règles de bases

Hala Skaf-Molli. Nancy-Université 14 mai 2007

Bases de Données Avancées

I4 : Bases de Données

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

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

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

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

Historisation des données

Corrigés détaillés des exercices

Introduction aux Bases de Données 2004/2005

Application web de gestion de comptes en banques

Administration des bases de données. Jean-Yves Antoine

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

MySQL / SQL EXEMPLES

Les BASES de DONNEES dans WampServer

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

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

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)

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

Bases de données avancées

1 Introduction et installation

Systèmes de Gestion de Bases de Données

Pour les débutants. langage de définition des données

Gestion des utilisateurs et de leurs droits

Partie II Cours 3 (suite) : Sécurité de bases de données

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

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

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Bases de données Cours 4 : Le langage SQL pour ORACLE

Cours: Administration d'une Base de Données

Transcription:

L3 informatique 2005-06 Conception et utilisation des bases de données Examen nal - janvier 2006 Durée de l'épreuve : 2 heures L'usage des polycopiés du cours est autorisé. Tous les autres documents, sous quelque forme que ce soit (papier, électronique ou autre) sont interdits, y compris les énoncés et corrigés des exercices des TD. Éteignez vos portables. Le barême est donné entre crochets au début de chaque question. 1 [6 pts] On reprend la base utilisée dans le cours et dans les TP : EMP(matr, nome, poste, datemb, sup, salaire, commission, dept) DEPT(dept, nomd, lieu) PROJET(codeP, nomp) PARTICIPATION(matr, codep, fonctionp) On rappelle que sup est le matricule du supérieur de l'employé. Vous allez donner les ordres SQL pour obtenir les informations suivantes. Pour chaque question ne donnez plusieurs ordres SQL que si vous ne savez pas répondre en donnant un seul ordre SQL. Essayez de donner des ordres SQL respectant la norme SQL2 et portables sur le plus nombre de SGBDs. (a) Matricules des employés dont au moins un subordonné participe à un projet. Précision : Jacques est le subordonné de Paul si et seulement si Paul est le supérieur de Jacques. (b) Noms des départements qui n'ont aucun employé qui a le poste de comptable. (c) Noms des départements, suivis du total des salaires des employés qui travaillent dans ce département pour tous les départements dont le total des salaires est inférieur strictement à 30000 euros. Si le département n'a pas d'employés, il sera aché 0 à la suite du nom du département. (d) Noms des employés qui participent à au moins tous les projets auxquels participe l'employé de nom Dupond. Pour cette requête vous donnerez d'abord la solution sous la forme d'une suite d'opérations de l'algèbre relationnelle, avant de donner l'ordre SQL. 2 [2 pts] Vous êtes administrateur de la base de données des employés utilisée dans l'exercice précédent. Vous souhaitez enregistrer les noms des utilisateurs qui modient les salaires des employés, et la date où la modication a été faite (seulement ces 2 informations). Décrivez tout ce que vous allez faire pour cela. Écrivez le code dont vous aurez besoin ; le code nécessaire à la création éventuelle de tables ne vous est pas demandé. 3 [2 pts] (a) Dessinez un B-arbre d'ordre 1 (au moins 1, et au plus 2 clés par page) après l'insertion des nombres suivants : 78, 56, 45, 80, 36, 89, 40, 12, 8. (b) Dessinez le même arbre après la suppression du nombre 40.

4 [4 pts] Soit la relation suivante qui respecte la 1NF : R(A, B, C, D, E, F). Soient les dépendances suivantes : A, B, C D, F C F D E Passez cette relation en forme normale la plus élevée. Montrez, pour chaque passage à une forme normale suivante, qu'il n'y a pas de perte de dépendance. Pour chaque forme normale, expliquez le but et la méthode de modication de la base, en plus du résultat. Si une forme normale est déjà respectée et ne nécessite donc aucune modication de votre base, expliquez pourquoi. 5 [6 pts] Pour cette question, utilisez la base donnée dans le sujet en exercice 1. En SQL : (a) Créez une table CLIENT avec les attributs numéro, nom, prénom et contact, le contact étant l'employé qui est le correspondant privilégié du client dans l'entreprise. Utilisez des types d'attributs pertinents et posez les contraintes adéquates. (b) Supprimez tous les employés du département d'informatique. (c) Augmentez de 10 % le salaire de tous les employés des projets Logiciels libres et Applicatifs clients qui gagnent moins de 1000 euros, commission comprise. Attention : la colonne commission peut avoir des cases vides ; en ce cas vous considérerez que l'employé n'a pas de commission.

1 Maîtrise Informatique 2005-06 Langage SQL Correction des exercices de l'examen de janvier 2006 (a) select distinct superieur.matr from emp superieur join emp sub on sub.sup = superieur.matr where sub.matr in (select matr from participation) (b) select nomd from dept where dept not in (select dept from emp where poste = 'COMPTABLE') (c) select nomd, nvl(sum(sal), 0) Total from dept left outer join emp on dept.dept = emp.dept group by nomd having nvl(sum(sal), 0) < 30000 (d) Algèbre relationnelle : 2 Il faut A Div(codeP) B où B = ((Participation J{matr} Emp) / nome ='Dupond' )[codep] et A = Participation J{matr} Emp [nome, codep] select nome from emp where not exists (select codep from participation P where matr = (select matr from emp where nome = 'DUPOND') and not exists (select null from participation where matr = emp.matr and codep = P.codeP)) (a) Créer une table pour contenir les informations (2 colonnes nom et date- Modif) : create table modifsalaire (utilisateur varchar(30) not null, datemodif date not null (b) Créer un trigger qui est déclenché quand une ligne est modiée.***seulement le salaire**** CREATE OR REPLACE TRIGGER modifsalaire AFTER UPDATE OF sal ON emp FOR EACH ROW insert into modifsalaire(utilisateur, datemodif) values(user, sysdate)

3 4 (a) 56 12;40 80 8 36 45 78 89 (b) 56 12 80 8 36;45 78 89 *** Simplification des DF : A, B, C -> D C -> F D -> E *** Clés candidates? A, B, C *** 2NF? Non. R(A*, B*, C*, D, E, F) devient R1(A*, B*, C*, D, E) R2(C*, F) 2NF OK. Pas de perte. *** 3NF? Non. R1(A*, B*, C*, D, E) devient R11(A*, B*, C*, D) R12(D*, E) plus R2(C*, F) 3NF OK. Pas de perte. *** BCNF OK? Oui. *** 4NF OK?

Oui. *** 5NF OK? Oui. *** Résultat : R1(A*, B*, C*, D) R2(D*, E) R3(C*, F) 5 CREATE TABLE CLIENT ( numero INTEGER PRIMARY KEY, nom VARCHAR(30) NOT NULL, prenom VARCHAR(30), contact INTEGER CONSTRAINT CLIENT_REF_EMP REFERENCES EMP(matr) Supprimez tous les employés du département d'informatique. DELETE FROM TABLE EMP WHERE dept IN ( SELECT dept FROM DEPT WHERE nomd = 'Informatique' Augmentez de 10 % le salaire... UPDATE EMP SET salaire = salaire + 0.1 * salaire WHERE salaire + nvl(commission, 0) < 1000 AND matr IN ( SELECT matr FROM PARTICIPATION NATURAL JOIN PROJET WHERE PROJET.nomP = 'Logiciels libres' OR PROJET.nomP = 'Applicatifs clients'