PCSI BDD 1 Bases de données DONNÉES, GESTION DE DONNÉES 1 Données, gestion de données 1.1 Généralités 1. Exemple Commande sur Amazon: Utilisateur Données Manipulation Définition 1 Une base de données est un ensemble structuré d informations permettant de répondre à un besoin spécifique 2. Histoire Début de l informatique: Très vite (Années 1960): Tendance actuelle: gestion de grosses quantités de données: 3. Comment organiser les données? Les données sont organisées en tables cf un carnet d adresses Avec quelles méthodes? Années 80: En ce moment 1
PCSI BDD 1 4. les SGBD actuellement DONNÉES, GESTION DE DONNÉES Il y a de nombreux SGBD: Ce sont des logiciels complexes, résultats de dizaines d années de recherche et de développement. Nous nous focaliserons ici sur les plus répandus d entre ces systèmes, les systèmes relationnels. Logiciels commerciaux: ORACLE Sous produits gratuits MySQL, SQLlite. 5. Les métiers Le constructeur du SGBD L administrateur de la base de données Concepteur et programmeurs d applications 6. But du cours Etudier les bases mathématiques de l algèbre relationnelle Apprendre à utiliser SQL (On utilisera MySQL et PHPMyadmin) 1.2 Les principes d un SGBD Au fil des ans, trois grands principes ont émergé qui ont façonné le domaine de la gestion de données: Abstraction Un système de gestion de bases de données sert de médiateur entre des individus et des machines. Doit pouvoir être utilisé par n importe quel individu, il doit organiser et présenter les données de façon intuitive et permettre de les manipuler sans avoir à considérer des détails d implémentation. Indépendance trois niveaux, physique, logique et externe, que l on essaie de rendre le plus indépendants possible. Au niveau externe, les utilisateurs qui partagent la base de données. Au niveau logique, l organisation unique des données. Au niveau physique, l organisation sur disque Le but est de pouvoir modifier un niveau sans modifier les autres niveaux.) Universalité: Ces systèmes doivent traiter de n importe quel type de bdd (entreprise, organisation) pour tout type d applications. 2
PCSI BDD 1 1.3 L architecture DONNÉES, GESTION DE DONNÉES les architectures les plus répandues de systèmes de gestion de données. 1. Architecture client/serveur. La base de données est gérée sur un serveur. L utilisateur (le plus souvent un programme) est le client qui effectue des demandes auprès du serveur. Plusieurs clients peuvent accéder simultanément au serveur. Avantages: Inconvénients: 2. Architecture trois tiers (tier=niveau) le plus fréquent, pour gagner en flexibilité et en sécurité, on ajoute souvent un intermédiaire entre le client et le serveur contenant la base de donnée. On obtient donc une architecture à trois niveaux. Niveau utilisateur: interface des ordinateurs clients. Niveau applicatif: logiciel traduisant toutes les requêtes utilisateur en requêtes SQL optimisées pour ensuite les transmettre au SGBD. Cet intermédiaire permet aussi, pour certains clients, de limiter l accès à une partie de la base de donnée. Un exemple: le logiciel Pronote, installé sur les serveurs du lycée, ne vous permet pas d accéder aux notes de vos camarades. Niveau base de données: partie contenant le gestionnaire de base de données et les données exécutant les requêtes transmises par le niveau applicatif. Maintenant les grandes bases de données sont stockées dans des grappes de machines gérées par des spécialistes. la plaine Saint-Denis accueille la première concentration de data centers en Europe.http://www.lemonde. fr/planete/article/2011/07/07/ les-data-centers-de-vraies-usines-electriques 3
PCSI BDD 2 MISE EN PLACE 2 Mise en place Un site intéressant http://sqlzoo.net Un didacticiel intéressant qui manipule de grandes tables et qui contient des QCM. 1. Philosophie et histoire Un système de gestion de bases de données doit proposer un langage, pour exprimer des requêtes, facilement utilisable par des êtres humains. modèle relationnel proposé par Ted Codd, un chercheur d IBM, dans les années 1970. Codd a eu l idée d adapter la Logique des mathématiciens pour définir un modèle de gestion de données, le modèle relationnel. 2. Modélisation d une base de données Une base de données relationnelle est un ensemble de tables que l on peut représenter sous forme de tableaux bi-dimensionnels dont les titres des colonnes sont des attributs, notés A 1, A 2,..., A n l ensemble des valeurs possibles d un attribut A constitue le domaine de l attribut, noté Dom(A) (similaire au type d une variable); chaque ligne est un n uplet ou tuple, c est un élément de Dom(A 1 ) Dom(A 2 )... Dom(A n ) Un schéma relationnel ou une relation R est défini par: un ensemble noté S fini et fixé d attributs et de leur domaine les n uplets de valeurs, appelés enregistrements de la table; Remarque: les enregistrements d une table sont deux à deux distincts Notations: Si R est une relation associée au schéma S, Si A est un attribut de S, e un enregistrement de R, on note e.at la valeur de l attribut At de l enregistrement e. 3. Exemples (a) La base cinema Pour la relation FILMS le schéma est: F ILMS = (Titre: varchar, Réalisateur: varchar, Acteur: varchar, Sortie:year) Pour la relation SEANCES le schéma est: SEAN CES = (Titre: varchar, Salle: varchar, CodePostal: varchar, Heure: int, Durée: int) SEANCES FILMS Titre Réalisateur Acteur Sortie :year(4) Titre Salle CodePostal Heure Durée varchar(5) :int(6) :int(6) Si B est un attribut, on dit que B S si B est un attribut de S Si X est une collection d attributs: X = (B 1, B 2,..., B p ), on dit que X S si B 1, B 2,... et B p sont des attributs de S. 4
PCSI BDD 2 MISE EN PLACE (b) La base bibliotheque Pour la relation livres1 le schéma est: livres1 Pour la relation adherents le schéma est: adherents 4. Notion de clés Pour repérer un enregistrement dans l ensemble des enregistrements d une table, il est nécessaire de choisir un attribut qui identifie de manière unique cet enregistrement. Exemples: (a) base bibliotheque table adherents table LIV RES1 (b) base cinema table F ILMS table SEAN CES Définition 2 Un attribut qui permet d identifier de manière unique un enregistrement est nommé cle. On appelle clé primaire une clé constituée d un seul attribut. 5
PCSI BDD 2 MISE EN PLACE Souvent la clef primaire est un entier Si C est clé primaire pour R, la donnée de e.c suffit pour identifier complètement l enregistrement e de la table. Remarque: EN SQL, on peut imposer qu un attribut soit considéré comme une clé primaire de la table. (Convention: on souligne cet attribut dans le schéma de la table) Index Le plus souvent, on adjoint à une table une colonne appelée index Attribut entier à qui on peut demander de s auto-incrémenter qui peut jouer le rôle de clef primaire. qui est utilisé pour accélérer des requêtes 6
PCSI BDD 3 3 Algèbre relationnelle ALGÈBRE RELATIONNELLE Si on a une base de données, une table (relation) de la base peut être considérée comme un ensemble de n uplets sur lequel on peut appliquer les opérations de la théorie des ensembles. Le calcul relationnel s appuie sur la logique mathématique, il utilise les symboles logiques (et, ou, non,, ) et il utilise les relations comme support. Respecter les règles de la logique mathématique Si la relation R fait intervenir p attributs A 1, A 2,..., A p, l ensemble des enregistrements de cette relation est un sous-ensemble de l espace-produit Dom(A 1 ) Dom(A 2 )... Dom(A p ). 3.1 Projection 1. Définition R est une relation de schéma S, R est une relation associée à ce schéma, X un attribut de S la projection de R selon l attribut X, notée π X (R) est l ensemble {e.x, e R}, c est-à-dire l ensemble des valeurs de l attribut X pour tous les enregistrements de la table. 2. Exemple sur la base cinema π Titre (F ILMS) renvoie l ensemble des titres de la relation F ILMS traduction SQL SELECT Titre FROM FILMS Remarque: donne les titres avec répétitions solution: SELECT DISTINCT Titre FROM FILMS π Acteurs (F ILMS) renvoie l ensemble des acteurs de la relation F ILMS SQL SELECT Acteur FROM FILMS 3. Exemple2 Que renvoie π T itre,duree (SEANCES): une amélioration pour n avoir que des résultats différents 4. Exemple3 Quelle projection pour SELECT Titre, Salle FROM SEANCES 5. Exemple sur la base bibliotheque (a) Que renvoie π titre,auteur (LIV RES1)? (b) La liste des éditeurs de la table livres1 3.2 Sélection 1. Définition R est une relation de schéma S, R est une relation associée à ce schéma, X est un attribut de S et x dom(x) la sélection de R selon X = x, notée σ X=x (R) est l ensemble {e R e.x = x} c est-à-dire l ensemble des enregistrements e de R tels que e.x = x ou encore tels que l attribut X prend la valeur x. 2. Exemple sur la base cinema (a) Exemple1: films où l acteur est Humphrey Bogart σ Acteur=Humphrey Bogart (F ILMS) 7
PCSI BDD 3 SELECT * FROM FILMS WHERE Acteur= Humphrey Bogart (b) Exemple2: σ sortie 2000 (F ILMS) (c) Exemple3: SELECT * FROM SEANCES WHERE duree<=120 AND sortie>=2000 (d) Exemple4: Films où le réalisateur n est pas Hitchcock SELECT DISTINCT Titre FROM FILMS WHERE NOT(realisateur= Hitchcock ) ALGÈBRE RELATIONNELLE Respecter les règles de la logique mathématique 3.3 Combinaison de sélections et de projections Ces opérations se composent comme des fonctions définies des des ensembles) La question qui se pose: les opérations commutent-elles? Exemple1 je veux le titre des films qui passent à 20h à Saint-Denis ou dans le 18ème. J utilise la table SEANCES, je note s ses enregistrements La question en langage ensembliste: Méthode 1. On sélectionne les enregistrements pour lesquels 2. Puis on ne prend que les titres: projection après coup Algèbre relationnelle SQL Question Aurais-je pu travailler dans l autre sens? Exemple2 Titre et année de sortie des films où a joué Humphrey Bogart Exemple3 Les titres et durées des films qui durent moins de 2 heures. 8
PCSI BDD 3 REMARQUES: 1. On peut faire des requêtes pour rechercher sur des mots incomplets On utilise le mot-clef LIKE % Exemples: ALGÈBRE RELATIONNELLE On recherche les films qui ont un acteur nommé Bronson, je ne connais plus son prénom On recherche les films dont le titre contient sept On recherche les films dont le titre contient sept et où joue un acteur nommé Bronson La table bibliotheque 1. Dans la table Livres1 (a) Les titres des livres dont le titre contient la chaîne en (b) les différents auteurs qui apparaissent (c) les différents éditeurs qui apparaissent (d) les livres parus avant 2000 dont l éditeur n est pas Hetzel 9
PCSI BDD 3 (e) les livres non empruntés ALGÈBRE RELATIONNELLE (f) les livres empruntés non rendus 2. Dans la table adherents (a) les noms différents (b) les villes différentes 10
PCSI BDD 3 3.4 Fonctions d agrégation ALGÈBRE RELATIONNELLE On peut avoir besoin de rassembler les données selon certains critères, de compter les enregistrements qui vérifient certaines propriétés, de faire des moyennes... 1. Exemple (a) Dans la table FILMS trouver le film le plus ancien (b) Dans la table SEANCES le titre du film le plus long regrouper les films par durée, regrouper les films par ville et compter. 2. fonctions d agrégation Il y a 5 fonctions d agrégation (a) Comptage COUNT(A2) GROUP BY(A1) On compte les différentes valeurs de l attribut A2 pour chaque valeur différente de A1 SELECT A1,COUNT(A2) FROM TABLE GROUP BY A1 (b) Maximum MAX(A2),GROUP BY(A1) Le maximum des valeurs prises par A2 selon les valeurs de A1 SELECT A1,MAX(A2) FROM TABLE GROUP BY A1 (c) Minimum MIN(A2),GROUP BY(A1) Le minimum des valeurs prises par A2 selon les valeurs de A1 SELECT A1,MIN(A2) FROM TABLE GROUP BY A1 (d) moyenne AVG(A2),GROUP BY (A1) SELECT A1,AVG(A2) FROM TABLE GROUP BY A1 (e) Somme SUM (A2),GROUP BY (A1) SELECT A1,SUM(A2) FROM TABLE GROUP BY A1 Remarques: (a) Si on veut par exemple la valeur moyenne d un attribut sur toute la table SELECT AVG(A2) FROM table (b) Si on veut en plus imposer une condition sur le regroupement HAVING Condition 3. Exemple base cinema (a) la date de sortie du film le plus ancien (b) regrouper les réalisateurs et le nombre des films qui apparaissent dans la table FILMS Qu joue le rôle de A1? de A2? SELECT Realisateur, COUNT(Titre) FROM FILMS GROUP BY Realisateur 11
PCSI BDD 3 ALGÈBRE RELATIONNELLE mieux On crée une table nouvelle (c) Trouver la durée maximale des films (d) Trouver le titre du film le plus long de la table SEANCES 4. Exemple base bibliotheque (a) le minimum, le maximum, la moyenne du nombre pages de tous les livres de la table LIVRES1 (b) le minimum, le maximum, la moyenne du nombre pages de tous les livres de la table LIVRES1 associés à un auteur On ordonne selon les moyennes décroissantes 12
PCSI BDD 3 (c) Dans la table adhérents repérer les adhérents qui ont même prénom ALGÈBRE RELATIONNELLE 3.5 Tri 1. Pour trier des résultats ORDER BY nom DESC ou ORDER BY nom ASC Exemples TRier les films par longueur décroissante SELECT DISTINCT Titre, duree FROM SEANCES ORDER By duree DESC; table adherents les noms et prénoms des adhérents rangés par âge. 3.6 Renommage Il peut être pénible d emporter des colonnes définies de manière complexe à partir d autres colonnes. On peut renommer les attributs. Le mot clef en SQL est AS Dans la table SEANCES, par salle les films de longueur maximale: faire apparaître dans la réponse à titre d attribut le mot duree maximale SELECT Salle, max(duree)as duree maximale FROM SEANCES GROUP BY duree; 13
PCSI BDD 4 TRAVAIL SUR PLUSIEURS TABLES 4 Travail sur plusieurs tables 4.1 Opérateurs ensemblistes entre relations de même schéma Soient R 1 et R 2 deux relations qui ont même schéma. R 1 R 2 désigne la relation issue de l union des deux tables Traduction SQL SELECT* FROM R1 UNION SELECT* FROM R2 Exemple: les tables LIVRES1 et LIVRES2 R 1 R 2 désigne la relation issue de l intersection des deux tables Traduction SQL SELECT* FROM R1 INTERSECT SELECT* FROM R2 Exemple: les tables LIVRES1 et LIVRES2 R 2 R 1 désigne la relation issue de la différence des deux tables (les enregistrements qui sont dans R 2 et pas dans R 1 ) Traduction SQL SELECT* FROM R2 EXCEPT SELECT* FROM R1 4.2 Produit cartésien Comme en maths Si j ai deux tables R et R, R R = {(e, e ), e R, e R } Pb des lignes signifiantes 14
PCSI BDD 4 TRAVAIL SUR PLUSIEURS TABLES 4.3 Jointure L opérateur de jointure sert à recoller deux relations R et R en en gardant ce qui a du sens. Pour cela il faut un critère Dans le cas FILMS,SEANCES, le critère est que Films.titre=SEANCES.titre Description algèbre relationnelle On a R(S) et R (S ) deux tables (différentes) d attributs respectifs (A, B, C) et (A, B, C ), ayant deux attributs A et A de même domaine. On considère σ A=A (R R ) = {(e, e ) R R e.a = e.a } Notation σ A=A (R R ) = R A=A R. Dans la table obtenue les attributs A et A sont redondants: On projette selon les attributs que l on veut conserver π A,B,C,B,C (σ A=A (R R )) = π A,B,C,B,C (R A=A R ) Par exemple, Par exemple, π T itre,realisateur,acteur,salle,heure,duree (σ A=A (R R )) Description SQL 1. Sur la base cinema SELECT * FROM FILMS JOIN SEANCES ON FILMS.Titre=SEANCES.Titre qui donne les lignes signifiantes du produit des tables avec des colonnes redondantes et SELECT FILMS.titre,Realisateur,Acteur,Annee, Salle, Heure, Duree FROM FILMS JOIN SEANCES ON FILMS.Titre=SEANCES.Titre; qui donne les lignes signifiantes du produit des tables en supprimant les données redondantes. 2. Cas général SELECT * FROM R JOIN R ON R.A=R.A Ensuite on complète avec des projections, des sélections, des fonctions d agrégation. Syntaxe SELECT------------------- ce que je veux récupérer FROM TABLE1 de la première table INNER JOIN TABLE 2 de la seconde table ON TABLE1.A=TABLE2.A sur quels attributs se fait la jointure WHERE Critères de recherche ORDER BY tri éventuel 15
PCSI BDD 4 TRAVAIL SUR PLUSIEURS TABLES Méthode Pour traduire une requête en opérations de l algèbre relationnelle (et en SQL), il faut { identifier sur quelle(s) relation(s) on travaille distinguer parmi ces relations celles qui jouent un rôle pour la re Puis (a) Traduire les critères présents sous forme de sélection (b) Si nécessaire, réaliser des opérations ensemblistes pour combiner les sélections (jointure, union,..) (c) Faire des projections pour ne garder que les infos utiles 4.4 Exemples 1. Sur la base cinema (a) Représentation des deux tables mettant en évidence l attribut qui peut servir à la jointure: SEANCES FILMS Titre Réalisateur Acteur Sortie year(4) Titre Salle CodePostal Heure Durée varchar(5) int(6) int(6) (b) Le Titre, les salles, année des films dont le nom contient sept Parfois C est une écriture trop longue, on renomme les tables( on leur donne un alias temporaire: pour cela on utilise AS) (c) la moyenne des durées des films par réalisateur les films distincts, leur réalisateur et leur durée avec une jointure. 16
PCSI BDD 4 TRAVAIL SUR PLUSIEURS TABLES la durée moyenne en se servant de la table récupérée (d) le film le plus long de la base de données son titre, son réalisateur 2. Avec la base bibliothèque Quel est l opérateur de jointure? (a) les livres de la table livres1 (titre, auteur, éditeur) empruntés (nom, prénom et âge des emprunteurs) (b) les nom, prenom, ville des emprunteurs, le nombre de livres qu ils ont empruntés ordonnés par ordre de nombre de livres empruntés. (c) les livres de la table livres1 (titre, auteur, éditeur) empruntés et non rendus (nom, prénom et âge des emprunteurs) 17
PCSI BDD 4 TRAVAIL SUR PLUSIEURS TABLES 4.5 Jointures internes dans une table. 1. Les titres des films où joue Humphrey Bogart? 2. On veut les titres des films où jouent Humphrey Borgart et Peter Lore. On se sert de la question précédente et on fait une jointure entre la table FILMS et la table obtenue à la question précédente. Le langage impose de renommer cette dernière table Tester le code SELECT FILMS. T i t r e FROM FILMS INNER JOIN (SELECT T i t r e FROM FILMS WHERE Acteur LIKE % Bogart ) AS FILMS1 ON FILMS. T i t r e=films1. T i t r e WHERE FILMS. Acteur = Peter Lore ; Le choix de l ordre dans lequel on fait les opérations a un impact sur la rapidité de réponse de la requête 18