Bases de données (1/4) Stéphane Gonnord Bases de données (1/4) Problématique Des exemples Un cahier des charges Introduction SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Stéphane Gonnord Le langage SQL Modèle relationnel Des maths un peu fumeuses [email protected] www.mp933.fr Lycée du parc - Lyon Vendredi 11 et 18 avril 2014 Lycée du parc Algèbre relationnelle Plan Bases de données (1/4) Stéphane Gonnord Problématique Problématique Des exemples Un cahier des charges Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle Les villes, départements et régions Bases de données (1/4) Stéphane Gonnord I I Ville(Lyon, Rhône, 484344) ; Département(Rhône, 69, Rhône-Alpes) ; Région(Rhône-Alpes). Comment relier tout cela ? Et si un département change de nom ? Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? I Quelques questions : I I I I I I Quelles sont les villes de plus de 100000 habitants ? Combien y a-t-il de communes en France ? Quelle est la population vivant dans les villes française ? Quelles sont les villes de la Loire ? Combien de départements/villes/habitants en région Poitou-Charentes ? ... Le langage SQL Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle Base de notes de colles Bases de données (1/4) Stéphane Gonnord I Colleurs et collés : nom, prénom, identifiant. I Comment relier tout cela ; qu’est-ce qu’une colle ? I Quelques questions : I I I I Quelles sont les notes de l’élève Ducobu ? Et la moyenne ? Quelles ont été les colles avec une note ≤ 5 ? Quels colleurs ont donné des notes ≥ 17 ? Problèmes supplémentaires : I I Doit pouvoir être consultée par différentes personnes. Doit pouvoir être modifiée par différentes personnes ; pas les mêmes ! Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle Bases de données (1/4) Un annuaire Stéphane Gonnord I I I I « Ensemble » de personnes... nom, prénom, téléphone, numéro sécu. Problématique Des exemples Un cahier des charges Comment stocker ces données (en mémoire et sur le disque dur) ? Quelques valeurs/lignes/enregistrements : SGBDR, SQL : WTF ? Gonnord Moynot Garcia ... Modèle relationnel Stéphane Olivier Antonio 068655**** 06******** 06******** 1711179**** 1***** 1***** Quelques questions : I I I Quelles sont les personnes ayant comme prénom “Olivier” ? Quel est le nom des personnes nées en 1971 ? Qui a un nom commençant par un ’G’ ? Architecture Ça ressemble à quoi ? Le langage SQL Des maths un peu fumeuses Algèbre relationnelle Cahier des charges Bases de données (1/4) Stéphane Gonnord I Ne pas tripatouiller soi-même des fichiers. I Ne pas s’occuper de la façon dont sont stockées les informations... ni où. I Pouvoir collecter/fournir des informations sans programmer. Avoir un langage de description de requêtes. Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle I Avoir une bonne puissance d’expressivité, gérer des entités et des relations entre elles. I Autoriser des accès de différents clients. I Garantir une certaine pérennité des données. Systèmes de Gestion de Base de Données Bases de données (1/4) Stéphane Gonnord Problématique Des exemples I I Un utilisateur ; des données. Et entre les deux ? Quelques scénarios : Un cahier des charges SGBDR, SQL : WTF ? Architecture I I I I I I I Alice va cherche un livre dans sa bibliothèque. Alice demande à Bob d’aller chercher un livre dans sa bibliothèque. Au téléphone ! Alice va chercher sur google les pages contenant «Bob» et «coléoptère». Alice fait une requête SQLite depuis sqliteman Alice fait une requête SQL depuis Python + sqlite3 Le SGBD est toujours entre l’utilisateur et les données ! Ça ressemble à quoi ? Le langage SQL Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle Bases de données (1/4) Architecture « client-serveur » Stéphane Gonnord I Accès direct utilisateur/base de donnée. I Architecture légère. Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? client cré eu Le langage SQL ne rela Modèle relationnel tion Des maths un peu fumeuses Algèbre relationnelle effectue une recherche fie di mo client des eur val client s serveur de base de données Bases de données (1/4) Architecture « trois tiers » Stéphane Gonnord I Tiers applicatif : intermédiaire. I Rôle de gendarme/filtre/traducteur. Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL client Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle client serveur applicatif client serveur de base de données Via sqliteman Bases de données (1/4) Stéphane Gonnord Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle Via la librairie sqlite3 Bases de données (1/4) Stéphane Gonnord Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle Une base de données taupinale Bases de données (1/4) Stéphane Gonnord Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle Villes, départements et régions Bases de données (1/4) Stéphane Gonnord I Schéma relationnel : Problématique communes(id integer, dep integer, nom text, pop integer) I Nom des villes de plus de 100000 habitants ? Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL SELECT nom FROM communes WHERE pop>=100000; Modèle relationnel Des maths un peu fumeuses 41, dont deux « Saint-Denis » SELECT DISTINCT nom FROM communes WHERE pop>=100000; I Population vivant dans des villes française ? SELECT COUNT(pop) FROM communes; 36705... pas bézef ! ! SELECT SUM(pop) FROM communes; 64612967 : mieux ! Algèbre relationnelle Bases de données (1/4) Premières jointures Stéphane Gonnord I Autres tables : departements(id integer, reg integer, nom text) regions(id integer, nom text) I Quels sont les noms des villes de la Loire ? SELECT communes.nom FROM communes JOIN departements ON communes.dep = departements.id WHERE departements.nom = ’Loire’; Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL Modèle relationnel I Combien de départements/villes/habitants en région Poitou-Charentes ? SELECT COUNT(*) FROM regions JOIN departements ON regions.id = departements.reg WHERE regions.nom = ’Poitou-Charentes’; SELECT COUNT(*) FROM regions JOIN departements JOIN communes ON regions.id = departements.reg AND communes.dep = departements.id WHERE regions.nom = ’Poitou-Charentes’; SELECT SUM(pop) FROM regions JOIN departements JOIN communes ON regions.id = departements.reg AND communes.dep = departements.id WHERE regions.nom = ’Poitou-Charentes’; Des maths un peu fumeuses Algèbre relationnelle Bases de données (1/4) Colleurs et collés Stéphane Gonnord I Schéma relationnel : Problématique Des exemples colleurs(idc integer, nom tet, prenom text) eleve(idc integer, nom tet, prenom text) SGBDR, SQL : WTF ? colle(idc integer, ide integer, date text, note integer) Un cahier des charges Architecture Ça ressemble à quoi ? I Quelles sont les notes de l’élève Ducobu ? Et la moyenne ? Le langage SQL Modèle relationnel SELECT note FROM colles JOIN eleves ON colles.ide = eleves.ide WHERE nom=’Ducobu’; Des maths un peu fumeuses Algèbre relationnelle SELECT AVG(note) from ... I Quels colleurs ont donné des notes ≥ 17 ? SELECT DISTINCT colleurs.nom from colles JOIN colleurs ON colles.idc = colleurs.idc WHERE colles.note>=18; Annuaire basique Bases de données (1/4) Stéphane Gonnord I Schéma relationnel : Problématique Des exemples personnes(nom text, prenom text, tel text, num_secu text) Un cahier des charges I Quelles sont les personnes ayant comme prénom “Olivier” ? SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? SELECT * FROM personnes WHERE prenom = ’Olivier’ Le langage SQL Modèle relationnel Des maths un peu fumeuses I Quel est le nom des personnes nées en 1971 ? Plus dur, Algèbre relationnelle n’est-ce pas ? nom_secu = list(curseur.execute( """SELECT nom, secu FROM personnes""")) res = [nom for (nom, secu) in nom_secu if secu[1:3]=’71’] I Qui a un nom commençant par un ’G’ ? Idem Algèbre relationnelle Bases de données (1/4) Stéphane Gonnord I I Cadre mathématique pour être (faire ?) plus sérieux/rigoureux. Un vocabulaire spécifique de description de données (tuples). Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? I I Une série d’opérateurs permettant de décrire formellement les requêtes. À moins que ce ne soit l’inverse :-) Attendu du programme : faire le lien entre : I I I une requête en langage courant ; sa traduction en algèbre relationnelle ; sa traduction en langage SQL. Le langage SQL Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle Des maths fumeuses Bases de données (1/4) Stéphane Gonnord I Un schéma relationnel : S=((nom,texte),(prenom,texte),(classe,entier)) I Trois attributs, avec leur domaine (type). I Une valeur (ligne/ un enregistrement) : (nom:’Gonnord’, prenom:’Stéphane’, classe:841) Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL Modèle relationnel I Une relation (table) : ensemble de valeurs Des maths un peu fumeuses Algèbre relationnelle R(S) = { (nom:’Gonnord’, prenom:’Stéphane’, classe:842) (nom:’Garcia’, prenom:’Antonio’, classe:841) (nom:’Moynot’, prenom:’Olivier’, classe:842) (nom:’Gonnord’, prenom:’Stéphane’, classe:841) } (conception mauvaise ; pourquoi ?) Opérateurs de l’algèbre relationnelle Bases de données (1/4) Stéphane Gonnord I I Quel est le nom des département dont l’identifiant est 10 ou 11 ? Sélection σCond selon une condition (valeur d’un champ, non, et, ou). Problématique Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? I Union, intersection de deux tables. Inutile ? Le langage SQL Modèle relationnel I Projection πX d’une table selon un (des) attribut(s) X . Des maths un peu fumeuses Algèbre relationnelle πNom (σId =10 ou Id =11 (departements)) I Soit, en SQL : SELECT nom FROM departements WHERE id in (10, 11) Ou encore : SELECT nom FROM departements WHERE id=10 OR id=11 Bases de données (1/4) C’est fini Stéphane Gonnord Problématique Merci de votre attention ! Des exemples Un cahier des charges SGBDR, SQL : WTF ? Architecture Ça ressemble à quoi ? Le langage SQL Modèle relationnel Des maths un peu fumeuses Algèbre relationnelle