Formation ISN II Les bases de données 1/3 Mercredi 10 juillet 2013 Corinne RAINGUEZ – Lycée du Grand Nouméa corinne.rainguez@ac-noumea.nc
Contenus des interventions Mercredi 10 juillet Initiation aux bases de données et SQL Application pratique avec ACCESS 2003 Mercredi 24 juillet Bases de données, suite Eléments de HTML et PHP pour MySQL Application pratique avec wamp Mercredi 7 aout Eléments théoriques complémentaires Application pratique récapitulative, évaluation 2
Déroulement de la séance du jour Alternance de contenus théoriques et d’applications pratiques à partir d’une BDD exemple. 13H30 – 16H30 3
Les bases de données en quelques mots Les bases de données (BDD) ont été créées pour faciliter la gestion qualitative et quantitative des données. Les SGBD (Access, MySql, Oracle) sont des applications informatiques permettant de créer et de gérer des BDD. Les BDD relationnelles sont les plus répandues, et on utilise des SGBDR pour les implémenter. Le langage SQL est le langage commun à tous les SGBDR, ce qui permet de concevoir des BDD relativement indépendamment des systèmes utilisés. 4
Quelques définitions essentielles Une BDD est un ensemble volumineux, structuré et minimalement redondant de données reliées entre elles, stockées sur supports numériques centralisés ou distribués, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables par un ou plusieurs utilisateurs travaillant potentiellement en parallèle. Exemple d'application : gestion d'une compagnie aérienne.
Un SGBD est un logiciel qui prend en charge la structuration, le stockage, la mise à jour et la maintenance d'une base de données. Il est l'unique interface entre les informaticiens et les données (définition des données, programmation des applications), ainsi qu'entre les utilisateurs et les données (consultation et mise à jour). Exemples : Access est une SGBD relationnel Microsoft qui offre une interface conviviale permettant de concevoir rapidement des applications de petite envergure ou de réaliser des prototypes à moindre frais. MySQL est un SGDB relationnel libre très utilisé pour la réalisation de sites web dynamiques.
Présentation de la base de données Astérix Le schéma relationnel de la base astérix.xls 7
Modèle logique 8
Règles de lecture du schéma relationnel, exemples Tables VILLAGE, HABITANT Table FABRIQUER Table TROPHEE 9
Mots clés associés Clé primaire Clé étrangère, secondaire Règle de gestion Dépendance fonctionnelle 10
Pas de dépendance entre attribut non clé (3FN) Formes normales Clé + atomicité(1FN) Clé composée (2FN) Pas de dépendance entre attribut non clé (3FN) => Pas de redondance, pas de perte d’information, pas de perte de dépendance. 11
Intégrité référentielle Enregistrement, tuple, occurrence Attribut, champ
SQL : STRUCTURED QUERY LANGUAGE Présentation de SQL SQL : STRUCTURED QUERY LANGUAGE SQL comprend : un langage d’interrogation des données (LID) un langage de définition des données (LDD) 13
un langage de manipulation des données (LMD) un langage de contrôle des accès à la base (LCD) Il peut être utilisé directement grâce un SGBDR (Access, SQLite, SQL Server, Oracle…) ou alors intégré dans un langage hôte (C#, PHP, VBScript...). 14
I- Le Langage d’interrogation de données (LID) Pour sélectionner certaines colonnes d’une table (projection) sélectionner certaines lignes d’une table - à partir de leur contenu (sélection) combiner des informations venant de plusieurs tables (jointure) 15
Utilisation d’Access 2003 Ouvrir la BDD « Astérix et Obélix isn » à partir de l’application Access.
Pour créer une requête (mode création)
Sélectionner la(es) table(s) à utiliser Double-cliquer sur les champs à afficher
Deux options, complémentaires, avec ACCESS, pour créer une requête Le mode QBE (tableau) Le mode SQL
I-1 la projection R1 : Liste de tous les habitants ?
2 2 1 1 22 3
Résultat de la requête : 23
…trié par ordre alphabétique… Par défaut : ASC Sinon, préciser <nom-du-champ> DESC
R2 : Liste des provinces et de leur gouverneur ?
26
Résultat de la requête : 27
R3 : Liste des constituants principaux des potions ?
29
Résultat de la requête :
R4 : Liste des différents constituants principaux des potions
Résultat de la requête :
R5 : Toutes les informations sur les potions ?
Le signe * équivaut ici à afficher toutes les informations contenues dans la table
Exercice - Rédiger les requêtes suivantes 1 - Quelles sont les qualités rencontrées dans le village d’Astérix ? 2 - Nom des resserres et leur superficie ? 3 – Renseignements concernant les provinces ? 4 – Libellés des potions ? 5 – Liste des villages par ordre alphabétique
I-2 la sélection R6 : Liste des trophées rapportant 4 points ?
Résultat de la requête :
R7 : Les noms des habitants de plus de quarante ans
Résultat de la requête :
R8 : Les noms des habitants ayant entre quarante et cinquante ans
Résultat de la requête :
SELECT Habitant.Nom, Habitant.Age FROM Habitant Avec BETWEEN SELECT Habitant.Nom, Habitant.Age FROM Habitant WHERE (((Habitant.Age) Between 40 And 50)); Résultat de la requête :
Les opérateurs utilisés dans les clauses SELECT et WHERE
R10 : Liste des habitants dont le nom contient un u
R11 : Liste des villages des provinces 1 et 2
R12 : Liste des potions dont on ne connait pas la formule
Exercice 2 - Rédiger les requêtes suivantes : 1- Donner les noms des trophées de type « Bouclier » 2 - Combien y a-t-il de huttes dans les villages d’Aquilona et de Gergovie ? 3 - Quelles sont les quantités, rangées par ordre décroissant, des potions absorbées par l’habitant n°3 ? 4 - Quel est le constituant principal de la potion zen ? 5 - Quelles sont les catégories de trophées rangées dans les resserres 1, 2 et 3 ?
I-3 la jointure R13 : Liste des habitants : nom, age et qualité
Tables à joindre Champs de jointure
R14 : Liste des villages, avec leur province et le nom du gouverneur
R15 : Nom du village où vit Astérix
Exercice - Rédiger les requêtes suivantes : 1 - Nom et qualité des habitants ayant stocké leur trophée dans la resserre n°3, par ordre croissant des catégories de trophées ? 2 – Noms et âge des habitants ayant déjà fabriqué une potion anti-douleur ? 3 – Qualités des habitants dont le nom commence par B ? 4 – Noms des habitants gouvernés par « Yenapus » et « Garovirus » ? 5 – Liste des trophées gagnés par Astérix ?
Les fonctions d’agrégat SQL dispose d'une famille de fonctions appelées les fonctions d'agrégats qui s'appliquent à un ensemble de valeurs d'une colonne. Ces fonctions permettent d'obtenir des informations relatives à un ensemble de données. Count (attribut) dénombre les occurrences d'un attribut Avg (attribut) calcule la moyenne des valeurs d'un attribut Sum (attribut) calcule la somme des valeurs d'un attribut Min (attribut) détermine la plus petite valeur d'un attribut Max (attribut) détermine la plus grande valeur d'un attribut Toutes ces fonctions d'agrégats ignorent les valeurs nulles mais peuvent avoir des valeurs qui se répètent; pour préciser qu'il faut tenir compte de toutes les valeurs ou seulement de celles qui sont distinctes, il faut préciser ALL ou DISTINCT (par défaut, c'est ALL).
R16 : Compter le nombre de resserres
R17 : Afficher la moyenne d’age des habitants
R18 : Calculer la superficie totale occupée par les resserres
R19 : Quel est l'âge le moins élevé parmi ceux des habitants ?
Les sous-requêtes R20 : Liste des habitants qui ont bu de la potion magique
Autres exemples : Liste des noms des habitants ayant absorbé une potion magique SELECT Nom FROM HABITANT WHERE NumHab IN (SELECT NumHab FROM ABSORBER WHERE NumPotion IN (SELECT NumPotion FROM Potion WHERE LibPotion LIKE 'Potion magique%')) ;
Liste des noms des habitants ayant absorbé la potion anti douleur SELECT Nom FROM HABITANT WHERE NumHab IN (SELECT NumHab FROM ABSORBER WHERE NumPotion = (SELECT NumPotion FROM Potion WHERE LibPotion = 'Potion anti douleur')) Nom de l'habitant le plus vieux WHERE Age = (SELECT MAX(Age) FROM HABITANT)
Exercice - Rédiger les requêtes suivantes : 1 – Quel est le nombre de fois où une potion a été absorbée ? 2 – Quel est le nom des habitants qui habitent dans le même village qu’Astérix ? 3 – Afficher le nom et la qualité de la personne la plus jeune de tous les villages. 4 – Quelle est jusqu’ici la quantité totale de potion absorbée ? 5 – Quel est le nombre de trophées de type Bouclier remportés jusqu’ici ?
La clause GROUP BY Elle permet de constituer des sous-ensembles d’occurrences dans une relation. Noter que tous les attributs cités dans le SELECT (sauf les fonctions d’agrégat) doivent se retrouver dans le GROUP BY. Exemple : Combien y a-t-il d’habitants pour chacune des qualités ? SELECT Qualité.NumQualité, Count(Habitant.NumHab) AS CompteDeNumHab FROM Qualité INNER JOIN Habitant ON Qualité.NumQualité = Habitant.NumQualité GROUP BY Qualité.NumQualité;
La clause HAVING C’est l’équivalent de la clause WHERE pour un GROUP BY. Cela sert de critère de sélection pour les groupes. La condition de HAVING s’applique à chacun des sous-ensembles et élimine ceux qui ne le satisfont pas. Exemple (d’abord sans HAVING) : afficher le nombre de villages par province SELECT Province.NumProvince, Count(Village.NumVillage) AS Nombredevillages FROM Province INNER JOIN Village ON Province.NumProvince=Village.NumProvince GROUP BY Province.NumProvince;
Même question que la précédente en ne retenant que les provinces qui contiennent plus de 2 villages. SELECT Province.NumProvince, Count(Village.NumVillage) AS Nombredevillages FROM Province INNER JOIN Village ON Province.NumProvince=Village.NumProvince GROUP BY Province.NumProvince HAVING Count(Village.NumVillage)>2; Remarque : la clause HAVING doit suivre la clause GROUP BY et doit s’appliquer à un ensemble de données sur lequel on a pratiqué une opération.
Exercice - Rédiger les requêtes suivantes : 1 – Nombre de fois où chaque potion a été absorbée. 2 – Nom des potions qui ont été absorbées plus de deux fois. 3 – Nom des habitants qui ont fabriqué plus d’une fois de la potion. 4 – Nom et qualité des habitants qui ont gagné plus de deux trophées, classés par âge décroissant. 5 – Noms des resserres qui contiennent moins de 2 trophées.
Les opérateurs ensemblistes Ils combinent le résultat de deux requêtes pour en faire un seul (les deux SELECT doivent avoir le même nombre d’attributs projetés er ceux-ci doivent être de même type). L’union Exemple : donner le nom des habitants de plus de 65 ans ou ayant absorbé au moins une fois la potion numéro 4.
SELECT Nom FROM HABITANT WHERE Age > 65 UNION FROM HABITANT H, ABSORBER A WHERE NumPotion = 4 AND H.NumHab = A.NumHab ; Remarque : l’opérateur UNION élimine les doublons. Si l’on veut les garder, il faut ajouter ALL.
L’intersection On ne garde que les lignes communes aux deux requêtes. Exemple : donner le numéro des habitants ayant bu de la potion numéro 1 et de la potion numéro 5.
SELECT NumHab FROM ABSORBER WHERE NumPotion = 1 INTERSECT WHERE NumPotion = 5 ;
Autre solution : SELECT DISTINCT NumHab FROM Absorber WHERE numPotion = 1 AND NumHab IN (SELECT NumHab FROM Absorber WHERE NumPotion = 5);
La différence On soustrait le résultat de la deuxième requête au résultat de la première. Exemple : donner les noms des habitants ayant bu de la potion numéro 1 mais pas de la potion numéro 5.
SELECT NumHab FROM Absorber WHERE NumPotion = 1 EXCEPT WHERE NumPotion = 5 ; Ou AND NumHab NOT IN (SELECT NumHab FROM Absorber WHERE NumPotion = 5);
Documents présentés Logiciels utilisés Voir sur le site du pôle science Logiciels utilisés Access 2003 (SGBD) PowerPoint (présentation) 86
Sources Pour aller plus loin Base de données proposée par Valérie Descours, professeur d’informatique au Lycée Mermoz, dans l’académie de Montpellier. Pour aller plus loin Vidéo conférences en ligne sur les bases de données sur le site de l’université de Stanford (Jennifer Widom). http://online.stanford.edu/db-win13 87
Position dans le programme BO du 13/10/2011 http://www.education.gouv.fr/pid25535/bulletin_officiel.html?cid_bo=57572 Persistance de l'information Les données, notamment personnelles, sont susceptibles d'être mémorisées pour de longues périodes sans maîtrise par les personnes concernées. Prendre conscience de la persistance de l'information sur les espaces numériques interconnectés. Comprendre les principes généraux permettant de se comporter de façon responsable par rapport au droit des personnes dans les espaces numériques. La persistance de l'information se manifeste tout particulièrement au sein des disques durs mais aussi des mémoires caches. Elle interagit avec le droit à la vie privée et fait naître une revendication du « droit à l'oubli ».
Structuration et organisation de l'information On manipule de grandes quantités d'informations. Il est nécessaire de les organiser. …Classer des informations, notamment sous forme d'une arborescence. On peut ici étudier le système d'organisation de fichiers en dossiers. Un ensemble de documents unis par des liens hypertextes fournit un exemple de classement de type graphe.