The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by , 2018-12-22 07:55:52

TP1-bases-de-donnees-enonce

TP1-bases-de-donnees-enonce

TP : Bases de données

TP : Bases de données

Ce TP a pour but de vous apprendre à utiliser les bases de données via une interface graphique.
Par la suite, on verra également comment faire cela grâce à Python (et oui, encore lui... il sait tout
faire, sauf le café et apprendre à votre place)

I Complément du cours : architecture Trois-Tiers

Cette partie sera à lire plus tard (elle fait partie du programme et c’est pourquoi je l’ai mise ICI au
début pour que vous ne l’oubliez pas)

Les architectures physiques des systèmes de gestion des données peuvent être décrites de la
manière suivante :
Une première architecture est celle des systèmes client/serveur + troisième tiers (ici tiers veut dire
couche ou intervenant) :
• La base de données est gérée sur un serveur (SGBD + fichiers physiques de la BD).

• L’application tourne sur une autre machine, le client .

• De plus en plus, cette architecture se complique avec l’introduction d’un troisième tiers : une
machine qui gère l’interface, typiquement un navigateur Web sur une tablette ou un PC portable.
On a alors l’architecture trois - tiers . Exemple d’architecture 3 tiers : BD des notes du lycée

• application et serveur de BD : PRONOTE

• clients avec accès à l’interface : profs, élèves, administration.
Nous pouvons noter différentes évolutions générées par des améliorations dans les matériels

disponibles :
• l’accroissement des performances, notamment fondées sur les mémoires vives de plus en plus

vastes

• l’utilisation de plus en plus de parallélisme massif dans des grappes de machines pour traiter
d’énormes volumes de données. On parle parfois de big data (un métier d’avenir)

• pour simplifier la gestion de données, on tend à la déporter dans les nuages (le cloud computing
), c’est-à-dire à mettre ses données dans des grappes de machines gérées par des spécialistes

II Quel logiciel utiliser et comment ?

Il y a deux principaux modes pour travailler avec des bases de données en SQL : mySQl et SQLite.
La différence entre les deux est que :
• mySQL est un serveur qui permet ensuite de travailler sur une base de données fixée. Il est donc

nécessaire de lancer le serveur avant de connecter le serveur à la base de données et travailler
dessus via une interface graphique par exemple( encore un autre logiciel).

TP : Bases de données

• SQLite : le fichier contenant la base de données contient aussi les informations nécessaires pour
travailler dessus. Il n’y a donc pas à ouvrir de serveur. On se contente d’ouvrir via l’interface
graphique le fichier contenant la base de données.

C’est la raison pour laquelle nous utiliserons plutôt SQLite (même si certaines fonctionnalités
avancées de SQL ne sont pas implémentées).

On dispose de deux interfaces graphiques bien pratiques pour travailler sur une base SQLite :

• DBeaver : s’installe directement après téléchargement de l’application, permet également de
travailler avec beaucoup d’autres types de bases de données, en SQLite, il suffit d’établir une
connexion (ici juste une ouverture de fichier) en renseignant le fichier qu’on veut ouvrir : Database

-> new connection-> SQlite , next -> dans le champ path, en utilisant browse, chercher le fichier

contenant la base de données -> next ->finish (au besoin vous pouvez tester la connexion avant
de finir pour voir si le fichier est bien trouvé)

• SQLite manager dans Firefox : on installe d’abord firefox s’il n’est pas déjà présent, puis dans les
add-on, on cherche SqLite manager pour l’installer. Une fois ceci fait, on ouvre firefox :
outils -> sqlite manager ou avoir une icône d’accès direct. Icône ouvrir pour aller chercher la
base de données qu’on veut ouvrir.

• Il existe bien d’autre moyen, notamment l’un utilisant python

III Travail sur une base de données

Ouvrir la base de données appelée apprentissage.sqlite.

• Sous DBeaver, apparaissent à gauche, les différentes tables déjà présentes dans la base de don-
nées et à droite plusieurs fenêtres : l’une contenant script qui permet de taper les commandes
SQL pour effectuer les opérations, une fenêtre en bas qui fait apparaître les résultats des diverses
manipulations.

• Sous Firefox - sqlite manager, on voit apparaître à gauche la liste des tables et à droite différents
onglets nous permettant de voir la structure de la base (les relations), de voir ce que contient
chaque table (utile uniquement si la table est petite), d’interroger la base de données via une
requête SQL (ce que vous devez absolument maitriser) et de voir la configuration générale dont
on ne se souciera pas ici.)

Pour l’onglet ’parcourir et rechercher’, si vous voulez modifier l’ordre ligne pour les classer suivant

une colonne précise, il suffit de cliquer sur le sommet de la colonne (mais ceci n’est que visuel

et ne remplace pas une sélection si on veut exploiter le résultat via l’ordinateur) : La commande

§ORDER BY permet de trier les lignes dans un résultat d’une requête SQL. ) ¤

1 SELECT colonne1, colonne2 FROM table ORDER BY colonne1 ¥

¦

Remarque 3.1. Il faut régulièrement synchroniser le travail effectué entre la base de données et
la sauvegarde sur le disque dur via la flèche tournante verte en haut à gauche dans sqlitemanager
(via la double flèche jaune en haut de l’arborescence ous DBeaver).
Dans la plupart des logiciels les commentaires en langage SQL sont précédés d’un dièse et vont
jusqu’à la fin de la ligne

TP : Bases de données

III.1 Premières commandes

Question 1. Pour déterminer parmi les emprunteurs ceux dont le prénom est Marie, on tape dans

l’onglet Script (SQLITE-apprentissage.sqlite)

§ ¤
¥
1 SELECT * FROM Emprunteurs WHERE prénom='Marie'

¦

on valide. (par exemple ici :’executer les commandes Sql’, ou encore, suivant les logiciels, CTRL-Enter

ou avec l’icône en forme d’éclair (pour exécuter juste cette ligne ou la page surmontée de l’éclair pour

exécuter le script tout entier.)

Question 2. Déterminer parmi les emprunteurs ceux dont le nom est Castel.

Question 3. Afficher le numéro de téléphone (et uniquement ça) des emprunteurs dont le nom est

Castel.

Question 4. Pour afficher les livres associés à leur auteur, on tape la commande : ¤
¥
§ ¤
¥
1 SELECT * FROM Auteurs JOIN Livres ON Auteurs.id=Livres.auteur
¤
¦
¥
Comparer au résultat obtenu avec ¤
¥
§

1 SELECT * FROM Auteurs, Livres WHERE Auteurs.id=Livres.auteur

¦

Selectionner à la suite en s’inspirant de cela, les livres dont l’auteur est Flaubert.

Question 5. Pour sélectionner les titres dont le type est Roman, on a deux possibilités :

La commande de jointure spécifique à SQL

§

1 SELECT titre
2 FROM Genre JOIN Livres ON Genre.id=Livres.genre
3 WHERE Genre.genre='Roman'

¦

La commande utilisant un produit cartésien de deux tables :

§

1 SELECT titre FROM Genre, Livres
2 WHERE Genre.id=Livres.genre AND Genre.genre='Roman'

¦

Question 6. Avec les mêmes idées, chercher les personnes n’ayant pas encore rendu leur livre. Pour

repérer un champ Ch vide, on utilise la commande : Ch is NULL (autrement dit on remplace ch par

le nom du champ qui nous intéresse)

Question 7. Déterminer tous les employés dont le nom commence par F (L’opérateur de compara-

ison est LIKE et le symbole % placé dans une chaîne de caractères est un passe-partout qui signi-
fie n’importe quelle chaîne) donc un nom qui se terminerait par ’d’ on mettrait la commandeLIKE
%d et LIKE %g % pour ceux qui contiennent un g ) .

TP : Bases de données

III.2 Renommage

Question 8. On peut renommer les attribut pour rendre la commande plus courte : ¤
¥
§Pour déterminer les Employés de Strasbourg :

1 SELECT nom,prénom
2 FROM Employés AS E JOIN Sites As S ON S.id=E.Site
3 WHERE S.ville='Strasbourg'

¦

Question 9. Déterminer les Emprunteurs ayant emprunté Madame Bovary en renommant la table
des emprunteurs avec E et celle des emprunts avec ES

III.3 Quelques fonctions d’agrégat

§Question 10. Pour obtenir le nom des personnes touchant le salaire le plus élevé, on tape : ¤
¥
1 SELECT Nom FROM Employés
2 WHERE Salaire=(SELECT Max(Salaire) FROM Employés )

¦

Vous devez obtenir : Martin et Faroux

Question 11. Déterminer la moyenne des salaires des employés poste A. Même question pour les
postes B .
Vous devez obtenir 4460 pour les postes A et 2347,5 pour les postes B .
mais on peut faire les deux calculs directement et trier grâce à la commande GROUP BY (La com-
mande GROUP BY est utilisée en SQL pour grouper plusieurs résultats et utiliser une fonction de
totaux sur un groupe de résultat.)

Question 12. Déterminer les Employés et les salaires de personnes ayant moins de 3000 euros de
salaires.

Question 13. Déterminer les Employés dont le salaire est inférieur à la moyenne des salaires. ¤
¥
Pour afficher le nombre de personnes de chaque catégorie :

§

1 SELECT Poste, COUNT(Poste) FROM Employés GROUP BY Poste

¦

Question 14. Déterminer les livres qui ont été empruntés exactement deux fois (et afficher le nombre

d’emprunts). Pour ce faire, après avoir faire un groupement des emprunts suivant les livres, on

§calcul le nombre de ces emprunts. ¤
¥
1 SELECT quoi, COUNT(quoi)
2 FROM Emprunts GROUP BY quoi HAVING(COUNT(quoi)=2)

¦

§et si on veut afficher le titre de l’ouvrage : ¤
¥
1 SELECT titre, COUNT(quoi)
2 FROM ( SELECT * FROM Emprunts AS E JOIN LIvres AS L ON E.quoi=L.id)
3 GROUP BY quoi HAVING(count(quoi)=2)

¦

TP : Bases de données

III.4 Mise à jour

Question 15. Ajouter les livres correspondants à votre programme .... est ce que vous vous en sou-
venez ?
Vous remarquerez qu’il faut rafraichir les tables avec la double flèche verte pour voir apparaître les
changements.

Question 16. Créer une table qui indique quels sites disposent de quel livre. Rentrer les données
correspondant à la situation suivante (ATTENTION, ceci n’est pas la table que l’on doit créer car les
oeuvres et les villes sont déjà présentes dans d’autres tables et il faut juste y faire référence.)
Vous pouvez être plus efficace en faisant des copier-coller de la ligne de commande plutôt que de
créer les lignes une à une.

titre Ville
L’immoraliste Paris
Quatre-vingt-treize Paris
Quatre-vingt-treize Marseille
Paris
Sylvie Paris
Madame Bovary Lyon
Quatre-vingt-treize Bordeaux
Lyon
Aphorismes Lyon
Aphorismes Mérignac
Bordeaux
Salambô
Aphorismes
Madame Bovary

Question 17. Déterminer tous les livres disponibles dans le département 33. Rappelez-vous com-
ment obtenir des résultats distinct pour ne pas avoir de redondance de titre.


Click to View FlipBook Version