Bases de données relationnelles Théorie, conception, mise en œuvre avec MySQL Objectifs Etre capable de • Créer d’une base de données. • Créer des tables • Exploiter les informations d’une base de données, en utilisant les requêtes SQL Un peu de vocabulaire Une base de données est un ensemble de données structurées. Une base est constituée d’au moins une table Un peu de vocabulaire Chaque table est composée d’au moins un enregistrement Chaque enregistrement, d’au moins un champ Exemple de table noliv 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 titre Les chouans Germinal L'assommoir La bête humaine Les misérables La peste Les lettres persanes Bel ami Les lettres de mon moulin César Marius Fanny Les fleurs du mal Paroles Les raisins de la colère Une composante d’un n-uplet est une clé primaire lorsque cette composante est différente pour chaque nuplet de la table considérée. auteur Balzac Zola Zola Zola Hugo Camus Maupassant Maupassant Daudet Pagnol Pagnol Pagnol Baudelaire Prévert Steinbeck genre Roman Roman Roman Roman Roman Roman Roman Roman Roman Roman Roman Roman poésie poésie Roman prix 8 7.5 9.5 7 10.5 11.2 14 7.6 10 10 6.5 7.2 13 12 13.5 Les informations doivent avoir la forme de groupes de valeurs (appelés nuplets) pour pouvoir être stockés dans la base. Architecture d’un serveur de base de données Serveur avec une adresse IP fixe Postes clients Internet disque Architecture d’un site WEB Dynamique Serveur avec une adresse IP fixe avec Base de données Postes clients Internet disque Travaux Pratiques Gestion du Centre de documentation et d’information du Lycée Scénario : Pendant ce deux casquettes : Administrateur/programmeur de la base de données travail dirigé, vous allez avoir Documentaliste Travaux Pratiques Mettre la casquette de l’administrateur PREMIERE PARTIE 1 ) Installation et Présentation du serveur Mysql et de son environnement (phpMyAdmin ) 2) Création de la base de données CDI 3) Création des tables livre, personne et emprunt. nopers : est une clef primaire. Nolivre est une clef primaire Dans la table emprunt : nopers et nolivre sont des clefs étrangères personne nopers : int nom : varchar(30) prenom : varchar(30) classe : varchar(10) livre nolivre : int titre : varchar(40) auteur : varchar(30) genre : varchar(30) prix : float emprunt nopers : int nolivre : int sortie : date retour : date Travaux Pratiques Mettre la casquette de l’administrateur PREMIERE PARTIE En utilisant le Concepteur de l’outil d’administration, vérifier les relations entre les tables. Travaux Pratiques Mettre la casquette de la documentaliste Saisir les données de la table livre noliv 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 titre Les chouans Germinal L'assommoir La bête humaine Les misérables La peste Les lettres persanes Bel ami Les lettres de mon moulin César Marius Fanny Les fleurs du mal Paroles Les raisins de la colère auteur Balzac Zola Zola Zola Hugo Camus Maupassant Maupassant Daudet Pagnol Pagnol Pagnol Baudelaire Prévert Steinbeck genre Roman Roman Roman Roman Roman Roman Roman Roman Roman Roman Roman Roman poésie poésie Roman prix 8 7.5 9.5 7 10.5 11.2 14 7.6 10 10 6.5 7.2 13 12 13.5 Travaux Pratiques Mettre la casquette de la documentaliste Saisir les données de la table personne nopers 1 2 3 4 5 6 7 8 9 10 nom Durand Brieusel Riois Denayville Planchon Pène Bert Gonzales Martin Jourda prenom Jean-Pierre Chantal Lucas Hélène André Gérôme Jean-Pierre Alain François Véronique Classe 1TS 1TS 2SEC 2TS 2TS 2SEC 1TPRO 1TPRO 2TS 2TPRO Travaux Pratiques La documentaliste a enregistré les prêts suivants: nopers noliv sortie retour 4 14 01/02/2011 1 3 03/03/2011 30/03/2011 7 9 05/03/2011 21/03/2011 2 11 18/03/2011 3 3 30/03/2011 3 4 30/03/2011 8 7 31/03/2011 8 1 02/04/2011 15/04/2011 18/04/2011 Donner le nom de l’élève qui a emprunté le livre de Maruis de Pagnol. Donner les titres des livres empruntés par l’élève 8, son nom et sa classe. Les opérations possibles sur une relation : PROJECTION livre noliv 1 2 3 4 5 titre Les chouans Germinal L'assommoir La bête humaine Les misérables auteur Balzac Zola Zola Zola Hugo genre prix Roman Roman Roman Roman Roman 8 7.5 9.5 7 10.5 Projection : On SELECT ………,,,,,,,…… FROM livre projette la table livre sur les colonnes titre et auteur. titre auteur Les chouans Germinal L'assommoir La bête humaine Les misérables Balzac Zola Zola Zola Hugo 13 Les opérations possibles sur une relation : SELECTION livre noliv 1 2 3 4 5 titre Les chouans Germinal L'assommoir La bête humaine Les misérables auteur Balzac Zola Zola Zola Hugo genre prix Roman Roman Roman Roman Roman 8 7.5 9.5 7 10.5 SELECTION: On ne sélectionne que les tuples dont l’attribut auteur est égale à ‘Zola’. SELECT………… FROM …………….. WHERE ……………………… titre auteur Germinal L'assommoir La bête humaine Zola Zola Zola 14 JOINTURE livre noli v 1 2 3 4 5 titre Les chouans Germinal L'assommoir La bête humaine Les misérables auteur Balzac Zola Zola Zola Hugo genre Roman Roman Roman Roman Roman prix 8 7.5 9.5 7 10.5 nope rs 1 2 3 nopers noliv sortie retour 3 5 2011-0101 0000-00-00 1 3 2011-0106 0000-00-00 2 1 2012-0203 2012-03-03 nom Durand Brieusel Riois prenom Jean-Pierre Chantal Lucas Classe 1TS 1TS 2SEC SELECT …………………………………………………………………………………………………….. FROM …………………, …………………………………………., …………………………… WHERE …………………………………… = "0000-00-00" AND ……………………………………. = …………………………………………… AND ……………………………………….. = ……………………………………………… nom Classe titre sortie Riois 2SEC Les misérables 2011-01-01 Durand 1TS L'assommoir 2011-01-06 15 JOINTURE livre noli v 1 2 3 4 5 titre Les chouans Germinal L'assommoir La bête humaine Les misérables auteur Balzac Zola Zola Zola Hugo genre Roman Roman Roman Roman Roman prix 8 7.5 9.5 7 10.5 nope rs 1 2 3 nopers noliv sortie retour 3 5 2011-0101 0000-00-00 1 3 2011-0106 0000-00-00 2 1 2012-0203 2012-03-03 nom Durand Brieusel Riois prenom Jean-Pierre Chantal Lucas Classe 1TS 1TS 2SEC SELECT personne.nom, personne.Classe, livre.titre, emprunt.sortie FROM `emprunt` , `personne` , livre WHERE emprunt.retour = "0000-00-00" AND emprunt.nopers = personne.nopers AND emprunt.noliv = livre.noliv nom Classe titre sortie Riois 2SEC Les misérables 2011-01-01 Durand 1TS L'assommoir 2011-01-06 16 Travaux Pratiques Mettre la casquette de l’administrateur DEUXIEME PARTIE: Initiation au langage S.Q.L En utilisant l’éditeur des requêtes SQL, Tester les requêtes S.Q.L pour : 1) Afficher la table livre, afficher la table personne, afficher la table emprunt. 2) Rechercher tous les livres écrits par Zola. 3) Rechercher tous les livres écrits par Zola et dont le prix est inférieur à 10 Euros. 4) Rechercher tous les livres dont l'auteur n'est ni Balzac ni Zola. 5) Calculer le prix total des livres 6) Afficher le nombre de romans 7) Afficher la liste des livres empruntés, ainsi que les coordonnées des emprunteurs. Création d’un client (Apache/PHP) pour un serveur de BD MysQL Système d’exploitation (OS) Serveur WEB Postes clients Internet Port = 80 Moteur PHP Serveur BD Port=3306 disque Système d’exploitation (OS) Navigateur Script en PHP Base données CDI Travaux Pratiques Mettre la casquette de l’administrateur Programmation du poste Documentaliste (version V0.0) Le langage PHP propose des fonctions pour communiquer avec un serveur de Base de Données MySQL. mysql_connect($server,$user,$psw) mysql_select_db($base) mysql_close([$id]) mysql_query($requete) Travaux Pratiques Mettre la casquette de l’administrateur Connexion au serveur : if( $id = mysql_connect(‘’localhost’’,’’root’’,’’’’) ) { if(mysql_select_db(‘’CDI’’) ) { echo ‘’Succès de connexion.’’; /* code du script … */ } else { die(‘’Echec de connexion à la base.’’); } mysql_close($id); } else { die(‘’Echec de connexion au serveur de base de données.’’); } mysql_fetch_row($result) : retourne une ligne de résultat (un tuple) sous la forme d’un tableau. Les éléments du tableau étant les valeurs des attributs de la ligne. Retourne FALSE s’il n’y a plus aucune ligne. Exemple 1 : $requet = ‘’SELECT * FROM personne’’; if($result = mysql_query($requet)) { while($ligne = mysql_fetch_row($result)) { $id = $ligne[0]; $nom = $ligne[1]; $prenom = $ligne[2]; $classe=$ligne[3]; echo ‘’$id - $nom, $prenom,$classe <br>’’; } } else { echo ‘’Erreur de requête de base de données.’’;