RÉVISION/SYNTHÈSE BASES DE DONNÉES



Documents pareils
Le langage SQL Rappels

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Langage SQL : créer et interroger une base

1 Introduction et installation

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

Bases de données relationnelles

Le Langage SQL version Oracle

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

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

TP Bases de données réparties

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

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

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

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

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

MODE OPERATOIRE OPENOFFICE BASE

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

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

ENSEIGNEMENT SUPÉRIEUR PRÉPA MPSI PRÉPA PCSI PRÉPA MP PRÉPA PSI PRÉPA ECE STS MUC

16H Cours / 18H TD / 20H TP

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

Cours 4 : Agrégats et GROUP BY

Les bases de données

SQL Historique

Cours: Les Jointures 1

Bienvenue au lycée Hoche! Journée Portes Ouvertes CPGE Samedi 25 janvier 2014

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

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

Optimisation SQL. Quelques règles de bases

Systèmes de Gestion de Bases de Données

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

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

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

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

Objectifs du TP : Initiation à Access

INTRODUCTION AU DATA MINING

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

Base de données relationnelle et requêtes SQL

Programmes des classes préparatoires aux Grandes Ecoles

Vincent Augusto

Intégration et probabilités TD1 Espaces mesurés

Année Universitaire 2009/2010 Session 2 de Printemps

Dossier I Découverte de Base d Open Office

1. Base de données SQLite

BTS/CGO P10 SYSTEME INFORMATION Année

Intégration et probabilités TD1 Espaces mesurés Corrigé

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

Bases de données Outils de gestion

Résultats de l'enquête

SOMMAIRE. 1 - Principes Généraux Nombre de Places Inscription (modalités et frais de dossier) 4

Bases de Données. Plan

I4 : Bases de Données

Avertissement : ceci est un corrigé indicatif qui n engage que son auteur

SOMMAIRE. Travailler avec les requêtes... 3

Le Langage De Description De Données(LDD)

FileMaker 13. Guide de référence SQL

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

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

CREATION WEB DYNAMIQUE

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

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

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

MySQL / SQL EXEMPLES

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

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

Évaluation et optimisation de requêtes

Préparez la rentrée!

Limites finies en un point

IENAC. Vous voulez devenir INGENIEUR ENAC? 3 statuts, 2 sites, 1 seul diplôme. En partenariat avec

Bases de données. PTSI Lycée Eiffel. 28 février 2014

Bases de données avancées Introduction

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

Seconde Généralités sur les fonctions Exercices. Notion de fonction.

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

FICHE DE RENSEIGNEMENTS

TP 8: LES OPERATEURS ENSEMBLISTES

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Probabilités. Une urne contient 3 billes vertes et 5 billes rouges toutes indiscernables au toucher.

La présente publication est protégée par les droits d auteur. Tous droits réservés.

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

Présentation Windows Azure Hadoop Big Data - BI

données en connaissance et en actions?

Introduction aux Bases de Données 2004/2005

Bases de données élémentaires Maude Manouvrier

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

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

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

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

Après un Bac technologique STI Systèmes d information et numérique

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

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

Après un Bac technologique STI Energie et environnement

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

Transcription:

RÉVISION/SYNTHÈSE BASES DE DONNÉES CORRIGE - CONCEPTION D UNE BASE DE DONNÉES 1 Base de donnée Élève 1.1 Cahier des charges Dans un lycée proposant des formations cpge, les enseignants souhaitent pouvoir suivre le parcours des élèves avec une base de données. Le lycée dispose de 2 classes de MPSI, 1 MP, 1 MP*, 1 PC,1 PC*, 2 PCSI, 1 PSI, 1 TSI1, 1 TSI2 et une ATS ; Les élèves sont dans une classe en 1ère année (ex PCSI), puis passent dans une classe de 2ème année (par ex PSI) ; Les élèves peuvent être boursiers certaines années ; Certains élèves arrivent directement dans une classe de 2ème année après avoir fait une première année ailleurs ; Des élèves souhaitant re-tenter le concours (5/2) peuvent refaire une deuxième année ; A fin de statistiques, les nouveaux élèves renseignent leur moyenne au bac ainsi que leur lycée d origine ; Les élèves passent des concours blanc et des vrais (CCP, CS, Mines-pont,...), on souhaite conserver la moyenne qu ils ont obtenus ; En fonction de leur résultats aux concours ou sur l évaluation de leur dossier, il poursuivent leurs études dans une école d ingénieur ou se réoriente dans un cycle universitaire. 1.2 Analyse du cahier des charges Q1. A partir du cahier des charges, proposer des types d entités à stocker dans la base de données. Eleve, Classe, Ecole, Lycee, Concours Q2. Quelles sont les types d attributs (ou caractéristiques) que l on stockera pour les types d entités choisis. Un bon attribut doit être constant et en nombre identique pour toutes les occurrences d entités. Un bon attribut doit être constant et en nombre identique pour toutes les occurrences d entités. Elève(nom, prénom, sexe, adresse, email, téléphone, lycée, moyenne au bac) Classe (nom, niveau) Ecole (acronyme,nom, ville) Lycée (nom, ville) Concours (nom) Q3. Rechercher à partir du cahier des charges des associations entre les types d entités. Éventuellement, ajouter leur des attributs. Page 1 sur??

Un élève EST dans une classe ->attribut de l association : année, boursier Un élève PASSE un concours ->attribut de l association : moyenne, année et le mois (car il peut passer 2 concours blanc la même année) Un élève INTEGRE une école -> attribut de l association : année Remarque : les cas de poursuites d études en université seront traités par la création dune entité "université" dans le type d entité Ecole. Q4. Dans chaque type d entité, recherche un candidat potentiel pour servir de clé parmi les attributs ou des sous ensemble d attribut, ou en créer un artificiel. Eleve(email) mais il est préférable de créer un attribut i d _l v e Classe (nom, niveau) mais il est préférable de créer un attribut i d _c l a s s e Ecole (nom, ville) mais il est préférable de créer un attribut i d _c o l e Lycée (nom, ville) mais il est préférable de créer un attribut i d _l y c e Concours (nom) mais il est préférable de créer un attribut i d _c onc o ur s On crée des attributs numériques pour permettre des indexations plus efficaces et des réponses plus rapides de la base de données. Q5. Représenter le schéma entité association de votre base. Q6. Compléter votre schéma en plaçant les cardinalités autour des associations. Page 2 sur??

1.3 Algèbre relationnelle 1.3.1 Sélection et Projection Soit la relation PERSONNE : Q7. Donnez les résultats des requêtes suivantes : Requête 1 : σ Ag e >=35 (P E RSO N N E ) Requête 2 : Π Ag e (P E RSO N N E ) Requête 3 : Π Ag e (σ N om= Se r g e (P E RSO N N E )) Q8. Exprimez les requêtes suivantes en algèbre relationnelle : Page 3 sur??

les personnes (nom, âge, ville) qui habitent Paris. les personnes (nom, ville) qui ont moins de 30 ans. les villes dans la relation PERSONNE. les noms des personnes habitant à Paris 1.3.2 Jointure Soient R et S les relations : où les attributs A, B, C sont définis sur les domaines des lettres de l alphabet. Q9. Donnez les résultats des requêtes suivantes : Requête 1 : R S (jointure naturelle) Requête 2 : σ A=C (ρ B /B R S (équi-jointure). Requête 3 : R < S ou Π R (R S) (semi-jointure). Q10. Est-ce que les équations suivantes sont vraies : Requête 1 : Π A,B (R S) = R Requête 2 : R S = ΠA,R.B,C (σ R.B =S.B (R S))) Page 4 sur??

La première est fausse car La seconde est vraie mais risque d avoir un nom de colonne (R.B) qui sera différent. 1.4 Requête SQL 1.4.1 Extraire des informations dans une table Un extrait de cette base est donnée plus bas dans le sujet. Pour toutes les questions qui vont suivre, vous essaierez d écrire la requête la plus simple pour obtenir les informations demandées. Q11. Donner le nom et le prénom de tous les élèves passés par notre lycée. SELECT nom, prenom FROM ELEVE ; Q12. Donner le nom des villes des lycée d où proviennent les élèves. SELECT DISTINCT ville FROM LYCEE ; Q13. Quels sont les élèves dont on connaît le numéro de téléphone SELECT prenom, nom, telephone FROM ELEVE WHERE telephone!='' Q14. Donner la liste des lycées triés par ordre alphabétique de ville, puis de nom. Page 5 sur??

SELECT nom,ville FROM LYCEE ORDER BY ville, nom Q15. Donner le prénom, le nom et la moyenne au bac de tous les élèves passés par notre lycée trié par note (de la plus haute à la lus basse), puis par nom croissant. SELECT prenom, nom, note_moyenne_bac AS 'moyenn au bac' FROM ELEVE ORDER BY note_moyenne_bac DESC, nom ASC; Q16. Donner le nom, le prénom des garçons passés par notre lycée trié par ordre alphabétique de nom, puis de prénom. SELECT nom, prenom FROM ELEVE WHERE sexe=0 ORDER BY nom, prenom; (ordre croissant par défaut) Q17. Donner le nom des filles ayant obtenue une mention bien au bac. SELECT prenom,nom, note_moyenne_bac FROM ELEVE WHERE sexe =1 AND note_moyenne_bac BETWEEN 14 and 15.99 En sqlite, between comprend les deux bornes Q18. Quels sont les lycées situés dans les villes de Troyes, Paris et Toulouse triés par ville. SELECT nom, ville FROM LYCEE WHERE ville IN ('Troyes', ' Paris ', 'Toulouse') ORDER BY ville Q19. Donner le nom (l acronyme) et la ville des écoles dont le nom contient le mot "Mines". SELECT acronyme, ville FROM ECOLE WHERE nom LIKE '%Mines%' ; Page 6 sur??

Q20. Donner le nom et le téléphone des élèves dont le numéro de téléphone renseigné contient moins de 10 chiffres. SELECT nom, telephone FROM ELEVE WHERE ' %' AND telephone!='' ; telephone NOT LIKE Attention car une personne qui n a pas de téléphone n a pas la valeur NULL mais une chaîne vide. Q21. Combien y a-t-il d élèves qui n ont pas donné le numéro de téléphone? SELECT COUNT(id_eleve) FROM ELEVE WHERE telephone ='' 1.4.2 Extraire des informations dans plusieurs tables Q22. Afficher la liste des élèves (nom, prénom, email) avec leur lycée d origine. SELECT E.prenom, E.nom, E.adresse, E.email, L.nom AS "Lycee d'origine" FROM ELEVE E JOIN LYCEE L ON L.id_lycee=E.id_lycee ; Q23. Refaire la même chose mais avec une jointure naturelle. SELECT E.prenom, E.nom, E.adresse, E.email, L.nom as "Lycee d'origine" FROM ELEVE NATURAL JOIN LYCEE ; Il faut qu il y ait un attribut strictement commun dans les deux tables sinon ça ne donne rien. Q24. Donner la liste des élèves venant du lycée Eiffel. Version ancienne SELECT E.prenom, E.nom, L.ville FROM ELEVE E, LYCEE L WHERE L.id_lycee=E.id_lycee AND L.nom='Eiel' ; *********************************************************** Page 7 sur??

* Meilleure version SELECT E.prenom, E.nom, L.ville FROM ELEVE E JOIN LYCEE L ON L.id_lycee=E.id_lycee WHERE L.nom='Eiel' ; ou en plus sympa SELECT E.prenom, E.nom, L.ville FROM ELEVE E JOIN LYCEE L USING (id_lycee) WHERE L.nom='Eiel' ***************************************************** Mauvaise facon de faire : SELECT prenom, nom FROM ELEVE WHERE id_lycee in (SELECT id_lycee from LYCEE WHERE nom='eiel') ; Q25. On veut avoir la liste des élèves à la rentrée 2013 triés par classe. SELECT E.prenom ' ' E.nom AS 'Eleve', C.nom FROM ELEVE E JOIN ELEVE_CLASSE EC ON E.id_eleve=EC.id_eleve JOIN CLASSE C ON C.id_classe=EC.id_classe WHERE EC.annee =2013 ORDER BY C.nom, E.nom On utilise le symbole pour concaténer le nom et le prénom dans une seule colonne. Q26. Donner la liste des élèves ayant fait une 3/2 puis une 5/2 dans notre lycée. SELECT L.nom as 'Lycee', COUNT(*) AS 'Nombre' FROM ELEVE E JOIN LYCEE L ON L.id_lycee=E.id_lycee GROUP BY L.nom HAVING COUNT(*)>=3 Q27. Donner la liste des élèves ayant fait leur première année de cpge dans un autre lycée. SELECT E.prenom ' ' E.nom AS '3/2 et 5/2' FROM ELEVE E JOIN ELEVE_CLASSE EC ON EC.id_eleve =E.id_eleve JOIN CLASSE C ON C.id_classe=EC.id_classe WHERE C.niveau=2 GROUP BY E.id_eleve Page 8 sur??

Charlemagne PT PC Révision BDD Page 9 sur??

2 Exercices de révision de première année supplémentaires 2.1 Chimie et bases de données On va ici travailler sur la base periodic.sqlite. La table utilisée ici est periodic. Elle constituée des champs s y m b o l e, T f u s i o n, ma s s e _v o l umi q ue, numr o _a t omi q ue, ma s s e a t omi q ue. Q28. Afficher les éléments dont la température de fusion est > 3000. Q29. Afficher les éléments dont le symbole commence par N. (il y en a 7) select symbole from periodic where nom like ' N%' Q30. Afficher le nombre d éléments dont la température de fusion est > 2000. select count (*) from periodic where Tfusion >2000 Q31. Quelle est la masse volumique moyenne des éléments dont le numéro atomique est compris dans l intervalle [10, 20]? select avg ( masse_volumique ) from periodic where numero_atomique between 10 and 20 On va créer une nouvelle table nommée molecule contenant des molécules constituées de 2 sortes d éléments différents : le schéma relationnel sera le suivant MOLECULE[NumeroId : integer, nom : text, symbole1 : text, nb1 : integer, symbole2 : text, nb2 : integer ]. Pour l eau on aura par exemple le n-uplet : (1, "eau", "H", 2, "O", 1) Q32. Faire afficher les noms des molécules qui contiennent de l hydrogène. Page 10 sur??

select nom from molecule where symbole1 = 'H ' or symbole2 = 'H' Q33. Faire afficher la masse des molécules de la table molecule (ex : 18 pour l eau) -- double jointure select m. nb1 * p. masse_atomique +m. nb2 *p2. masse_atomique from molecule m join periodic p join periodic p2 on m. symbole1 =p. symbole and m. symbole2 =p2. symbole 2.2 Une base de données géographiques La base de données communes-regions-departements.db, consitituée de trois tables appelées communes, departements et regions. COMMUNES[NumeroId : integer, nom : text, pop : integer, dep : integer] DEPARTEMENTS[id : integer, nom : text, reg : integer ] REGIONS[id : integer, nom : text ] Q34. Donner les 4 communes (nom et population) dont le nom commence par Ca et se finit par han. SELECT nom, pop FROM communes WHERE nom LIKE 'Ca%han' Q35. Donner la liste des villes de plus de 100000 habitants, ainsi que leur population par ordre décroissant. SELECT nom, pop FROM communes WHERE pop >100000 ORDER BY pop DESC Q36. Donner la population totale vivant dans des villes de moins de 1000 habitants (environ 9M) SELECT SUM (pop ) FROM communes WHERE pop <=1000 Page 11 sur??

Q37. Donner la liste des villes de plus de 100000 habitants, ainsi que le nom de leur département. SELECT c. nom, c. pop, d. nom FROM communes c JOIN departements d ON c. dep =d. i d WHERE pop >100000 ORDER BY pop DESC Q38. Donner la population totale de chaque département, et les classer du moins peuplé (Lozère, 77082) au plus peuplé (Ch Nord, 2576773) SELECT d. nom, SUM (c. pop )AS pop_departement FROM communes c JOIN departements d ON c. dep =d. i d GROUP BY d. nom ORDER BY pop_departement Q39. Donner la liste de toutes les communes, avec pour chacune son département, sa région et sa population. SELECT c. nom, d. nom, r. nom, c. pop FROM communes c JOIN departements d JOIN regions r ON c. dep =d. i d AND r. i d =d. reg Q40. Donner les départements qui ont le plus de communes, puis limiter l affichage aux 3 premiers (Pas-de-Calais, 895 Aisne, 816, Somme, 783) grâce à LIMIT SELECT d. nom, COUNT (c. nom )AS nb_communes FROM communes c JOIN departements d ON c. dep =d. i d GROUP BY d. nom ORDER BY nb_communes DESC LIMIT 0,3 Bibliographie Sujet réalisé à partir de documents de LAHMAR Mohamed publiés sur le site de l UPSTI. Page 12 sur??