Base de données relationnelle et requêtes SQL

Slides:



Advertisements
Présentations similaires
REFERENTIEL DE LA SERIE STG
Advertisements

Support.ebsco.com Guide dUtilisation Création dune collection locale.
Access Frédéric Gava (MCF)
1 Georgeta Bădău CRÉATION ET GESTION DUN BLOG AVEC LA PLATE-FORME LEWEBPEDAGOGIQUE.COM Séance no.4.
Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
Formation Didapages C.A.H.M Avant de débuter un livre Avoir une bonne idée de ce que lon veut créer. Enregistrer mes fichiers selon ce qui.
Le publipostage La fonction de fusion permet de créer des documents identiques dans les grandes lignes que l’on personnalise automatiquement à chaque destinataires.
! 1 CREATION D'UNE MAQUETTE EXPORT / IMPORT
Tutorial dutilisation du forum du BDS By Youl. 1- Linscription 2- Parcourir le forum Catégorie Sujet Message 3- Poster un message 4- Utilisation avancée.
La fonction Style Permet de créer des types de texte, par exemple
Assistance à distance Parfois on se sent bien seul face à un problème informatique surtout si on n’est qu’un simple utilisateur. Lorsqu'un problème survient.
Introduction générale
Quest-ce quun lien ?. Exemple à partir du site du ministère de léducation nationale A la page daccueil, vous y trouvez du texte et … des liens vers dautres.
La pharmacovigilance. Cette fenêtre permet de modifier le fichier qui contient l'essentiel des pathologies et médicaments afin de piloter lensemble.
Guide dutilisation CINAHL. Via le catalogue Ariane de lUniversité Laval ( ) cliquez sur «Bases de données».
de trousses de lecture à la
12 novembre 2012 Grégory Petit
Initiation aux bases de données et à la programmation événementielle
Requêtes SQL & Paniers Anne-Marie Cubat.
Rédaction dun article sur le site internet du CRCACK Lien administration :
Recherche à la médiathèque.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
Initiation au système d’information et aux bases de données
Initiation au système d’information et aux bases de données
GERER UN BLOG MANUEL DAIDE A LUTILISATION DE BLOGGER Josiane Goettelmann Mai 2011.
Développement d’applications web
Cours de programmation
Base de données relationnelle et requêtes SQL
Créer une animation simple Gif avec ImageReady.
FAIRE SON RAPPORT MENSUEL EN LIGNE ET PRENDRE DU BON TEMPS Lion Roland Pelletier District U-3.
Autodesk® Revit® Building 9
Recherche avancée multi-champs EBSCOhost
La création de sinistre, la sélection à des fins de consultation, modification ou impression sont accessibles grâce à la barre de menu à gauche de l'écran.
Guide dutilisation Catalogue virtuel du Centre de documentation.
Laini Hyacinthe 2 e NSSE Access Les requêtes Laini Hyacinthe 2 e NSSE Plan 1.Quelques définitionsQuelques définitions 2.À quoi servent les requêtesÀ
Guide d'utilisation de Microsoft Weft Il s'agit de convertir un ou des fichiers Police de caractères (font) généralement de type.ttf en un ou des fichiers.eot.
28 novembre 2012 Grégory Petit
Publispostage Menu Outils / Lettres et publipostage
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
SQL Partie 3 : (LID : Langage d'interrogation de données)
Excel (Partie 2).
Dans la barre des messages, cliquez sur Activer la modification,
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Initiation aux bases de données
Centre de RessourcesRechercheravecInternet Aide. Centre de Ressources Rechercher avec Internet 1.Les différentes fonctions du navigateur 1.Les différentes.
Réalisé par VISAGE JONATHAN (aidé par SLUYS DIDRIC) 2 NSSE.
Comment trouver un document dans la base de données du CDI
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II PRO-1024.
LOGICIEL DOCUMENTAIRE PMB
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Diffusion Nationale TOULOUSE – Décembre 2008 STS Web Services libres Gérer les services libres.
DOSSIER G10 – La base de données Relationnelle
Mai 2006TICE 2ième Semestre - TD101 TICE 2 ième Semestre L1 Psychologie TD – Filtrage et mise en forme conditionnelle.
Comment trouver un document dans la base de données du CDI
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
IUFM D’AIX-EN-PROVENCE
Pour mieux vieillir ensemble EndNote 102 Gérer et bonifier une bibliothèque Par Marie-Marthe Gagnon Bibliothécaire Mars 2015.
Initiation aux bases de données et à la programmation événementielle
1 Initiation aux bases de données et à la programmation événementielle Cours N°8 : Gestion de la cohérence avec des zones de liste déroulantes. Souheib.
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Tutoriel V_Stage Cliquez pour continuer.
De Arnault Chazareix :
Pourquoi ne faut-il pas jeter son ordinateur par la fenêtre ?
Ajouter plusieurs fichiers sur la même section. Pour l’instant ces fichiers ne sont affectés à aucun groupe. Ils portent juste le nom que vous leur avez.
1 Tableur Excel. 2 Introduction Un tableur est un logiciel permettant de manipuler des données numériques et d'effectuer automatiquement des calculs sur.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
La création des données d’exemplaire pour un exemplarisateur.
BCDIBCDI 1)Qu’ est-ce que bcdi Bcdi est un logiciel de recherche documentaire ( qui contient des notices) c’est un catalogue des documents du cdi. On utilise.
Transcription de la présentation:

Base de données relationnelle et requêtes SQL 1e partie Anne-Marie Cubat

Une question pour commencer : que voyez-vous? Cela reste flou … Les plans de « Prison Break »? Non, cherchons ailleurs! http://amcubat.be/docpmb/

Et de plus près, c’est plus clair ? http://amcubat.be/docpmb/

Vous aviez bien deviné, c’était le schéma de PMB Pour les bibliothécaires : un coup d’œil en coulisses ! Comprendre les tables et leurs relations est une étape indispensable pour qui veut rédiger une requête SQL. N.B. SQL = Standard Query Language ( a query : une requête, une interrogation) Langage standardisé pour interroger une base de données Cela permet de personnaliser la gestion pour: obtenir des états « personnalisables » - préciser les tables et les champs à afficher - spécifier les critères de sélection et de tri des données - obtenir des statistiques (achats, prêts, lecteurs …) - affiner la présentation (publipostage éventuel) gérer les données par lot grâce aux « paniers » - sélectionner les données afin de constituer des paniers de notices, d’exemplaires, de bulletins ou de lecteurs - agir globalement sur le contenu de ces paniers http://amcubat.be/docpmb/

Pour les bibliothécaires : un coup d’œil en coulisses ! Les actions ou états « personnalisables » de PMB sont encodés ou importés dans l’onglet « administration » sont exécutés en général dans l’onglet « éditions » afin de pouvoir transférer les données vers un tableur http://amcubat.be/docpmb/

Pour les bibliothécaires : un coup d’œil en coulisses ! Les paniers de PMB sont gérés dans l’onglet « catalogue » s’il s’agit de paniers de notices, de bulletins ou d’exemplaires dans l’onglet « circulation » s’il s’agit de paniers de lecteurs Le sous-menu est identique dans tous les cas : gestion des paniers et des procédures, collecte, pointage, actions http://amcubat.be/docpmb/

1. L’accès aux coulisses : PhpMyAdmin Un clic droit sur l’icône de EasyPhp vous mène à ce sous-menu. Choisir « administration » Sélectionner l’option « Gestion BDD» Sélectionner une base de données, p.ex. « bibli » Sélectionner une table, p.ex. « indexint » http://amcubat.be/docpmb/

1. PhpMyAdmin et la structure d’une table « Indexint » contient les indexations décimales. Cliquer sur « afficher » pour voir le contenu http://amcubat.be/docpmb/

Les champs de la table « indexint » 1. PhpMyAdmin et la structure d’une table Les champs de la table « indexint » indexint_id : c’est la clé primaire de la table « indexint ». C’est un numéro unique d’identification créé par auto-incrémentation Les numéros supprimés (1 - 2 - 5 -7) ne seront pas réutilisés. indexint_name : indexation décimale choisie par le bibliothécaire Les valeurs peuvent être encodées dans un ordre quelconque. indexint_comment : commentaire, explication http://amcubat.be/docpmb/

Les champs de la table « indexint » 1. PhpMyAdmin et la structure d’une table Les champs de la table « indexint » index_indexint : un champ d’indexation. Les tables importantes contiennent un ou plusieurs champs d’indexation qui permettent de localiser plus vite l’information recherchée. On voit ici que index_indexint est une concaténation de 2 autres champs : indexint_name et indexint_comment sont regroupés. En outre, le contenu est déjà transformé : conversion en minuscules, disparition des accents et des « mots vides » (par ex. le, la, un, une, en, …) Les infos importantes sont regroupées dans la table « notices_global_index », ce qui accélère les recherches demandées le plus souvent par l’utilisateur. Au lieu de parcourir plusieurs tables, on cherche par priorité dans celle-là. N’oubliez pas de réindexer les tables après une mise à jour de PMB ! http://amcubat.be/docpmb/

Notre première requête SQL ! 1. PhpMyAdmin et la structure d’une table Notre première requête SQL ! SELECT indexint_name AS ’Cote’, indexint_comment AS ’Commentaire’ FROM indexint ORDER BY indexint_name SELECTIONNER liste de champs A PARTIR DE liste de tables TRIER PAR Pour connaître les noms des tables et des champs, on emploie PhpMyAdmin. http://amcubat.be/docpmb/

Notre première requête SQL ! 1. PhpMyAdmin et la structure d’une table Notre première requête SQL ! Et voilà le résultat Pourquoi SELECT AS plutôt que SELECT ? Le « AS + un titre » (entre apostrophes) peut être omis. Si on n’emploie pas le AS, le titre de la colonne sera par défaut le nom du champ, ce qui est moins clair. Comparez : Le titre « Cote » est plus explicite que le titre « indexint_name » ! http://amcubat.be/docpmb/

Quelques notions importantes 2.1 Les relations entre les tables Quelques notions importantes Les données sont regroupées par entité logique dans une seule table pour éviter de répéter la même information. On aura donc une seule table de notices, d’auteurs, d’exemplaires, de lecteurs… L’intégrité des données est garantie par ce principe d’unicité. En cas de modification, il ne faudra changer l’information qu’à un seul endroit. Les risques d’erreur seraient plus nombreux si les données étaient répétées dans plusieurs tables. Chaque enregistrement doit pouvoir être identifié de manière univoque. Or vu l’homonymie potentielle entre les lecteurs, les auteurs ou les titres, les risques d’équivoque sont nombreux. C’est pourquoi chaque clé primaire est unique dans la table. Cette clé (id) permet d’identifier à coup sûr l’élément recherché. Chaque nom de table doit être unique dans la base de données. Chaque nom de champ doit être unique dans la table. Les noms des tables ou des champs devraient être explicites. C’est le cas dans PMB ! Les noms des tables / champs sont significatifs. http://amcubat.be/docpmb/

Je parlerai donc uniquement des 2 autres types : 2.1 Les relations entre les tables Pour exploiter vraiment une base de données relationnelle, il faut créer un système performant de liaisons entre les tables. On distingue 3 types de relation : la relation « un - un » la relation « un – plusieurs » la relation « plusieurs – plusieurs » Le premier type, la relation « un – un », est assez rare. Cela implique que l’on scinde un ensemble de données entre 2 tables : à un enregistrement de la table A correspond un et un seul enregistrement de la table B. C’est parfois nécessaire pour accélérer le traitement d’un grand nombre de données. Je parlerai donc uniquement des 2 autres types : la relation « un – plusieurs » la relation « plusieurs – plusieurs » Au départ, je me limite à une relation entre 2 tables au maximum. Nous verrons plus tard comment relier un nombre plus élevé de tables. http://amcubat.be/docpmb/

2.2 La relation « un – plusieurs » Le schéma de PMB montre le lien entre les tables « indexint » et « notices » N.B. Vous disposez de ce schéma. Le fichier s’appelle « scheme.gif ». Il se trouve dans le dossier pmb\doc\noyau\ http://amcubat.be/docpmb/

2.2 La relation « un – plusieurs » Dans la table « indexint » indexint_id est la clé primaire qui identifie chaque enregistrement de manière univoque Dans la table « notices » indexint est la clé secondaire (clé étrangère) qui renvoie à la clé primaire de la table indexint http://amcubat.be/docpmb/

Comment relier ces tables dans une requête ? 2.2 La relation « un – plusieurs » Comment relier ces tables dans une requête ? Par exemple pour afficher la liste des livres en anglais. N.B. Indexation décimale 850 : littérature en anglais (dans cet exemple) SELECT indexint_name AS ’Cote Dewey’, indexint_comment AS ’Signification’, tit1 AS ‘Titre’ FROM notices, indexint WHERE indexint_name = ‘850’ AND indexint = indexint_id ORDER BY tit1 SELECTIONNER liste de champs A PARTIR DE liste de tables A CONDITION QUE condition 1 ET condition 2 TRIER PAR N.B. Pour clarifier les choses, j’ai écrit les instructions SQL en majuscules. Ce n’est pas obligatoire. http://amcubat.be/docpmb/

Comment afficher la liste des livres en anglais ? 2.2 La relation « un – plusieurs » Comment afficher la liste des livres en anglais ? SELECT indexint_name AS ’Cote Dewey’, indexint_comment AS ’Signification’, tit1 AS ‘Titre’ FROM notices, indexint WHERE indexint_name = ‘850’ AND indexint = indexint_id ORDER BY tit1 Dans la table « notices », il n’y a pas de tri. Les notices apparaissent dans l’ordre où elles ont été cataloguées, donc l’ordre de notice_id. Résultat de la requête Les colonnes ont un titre explicite. Les notices apparaissent dans l’ordre alphabétique du titre. http://amcubat.be/docpmb/

Cet exemple illustre la relation « un – plusieurs ». Si on part d’une des indexations, 0, 1 ou plusieurs liaisons vers la table « notices ». Si on part d’une des notices, 1 seule liaison vers la table « indexint ». (ou 0 si le champ indexint est provisoirement vide) La relation peut s’établir car un champ de la table « notices » est prévu à cet effet : le champ « indexint ». Cette clé secondaire fait référence à la clé primaire de la table « indexint », c’est-à-dire « indexint_id ». http://amcubat.be/docpmb/

2.2 La relation « un – plusieurs » Remarque importante La clé secondaire ne se trouve pas nécessairement dans une des 2 tables concernées, une relation « un – plusieurs » entre 2 tables peut être établie dans une 3e table intermédiaire afin d’optimiser le fonctionnement de PMB. Exemple Bulletins – Dépouillements d’articles : Un bulletin peut comprendre 0, 1 ou plusieurs articles dépouillés. Mais chaque notice d’article ne fait référence qu’à un seul bulletin. Techniquement, il pourrait y avoir une clé secondaire dans les notices d’articles, puisque chaque notice d’article ne renvoie qu’à un seul bulletin, mais ce serait fort lent. Pour accélérer les recherches et l’affichage des bulletins et des dépouillements, il y a une 3e table, « analysis », qui contient des liens déjà triés entre les bulletins et les notices des articles dépouillés. Nous en reparlerons plus tard. http://amcubat.be/docpmb/

2.2 La relation « un – plusieurs » Autres exemples de la relation « un – plusieurs » Notices - Titres de série : Une série peut comprendre 0, 1 ou plusieurs notices. Mais chaque notice ne fait référence qu’à un seul titre de série. Notices - Exemplaires : Une notice peut correspondre à 0, 1 ou plusieurs exemplaires. Mais chaque exemplaire ne fait référence qu’à une seule notice. Toutefois, la relation « un – plusieurs » ne convient pas toujours. Nous allons voir pourquoi et comment gérer les liaisons dans ce cas. http://amcubat.be/docpmb/

2.3 La relation « plusieurs – plusieurs » Le schéma de PMB montre que la liaison entre les notices et les auteurs se fait en passant par une table intermédiaire : la table « responsabilité ». N.B. Par contre, la relation entre les notices et les titres de séries est de type « un – plusieurs », comme expliqué précédemment. Le champ « tparent_id » (dans la table « notices ») contient la clé secondaire, qui renvoie à « serie_id » (la clé primaire de la table « series »). http://amcubat.be/docpmb/

2.3 La relation « plusieurs – plusieurs » Pourquoi employer une table intermédiaire? Car la relation entre notices et auteurs est de type « plusieurs – plusieurs. Un auteur a pu rédiger 0, 1 ou plusieurs oeuvres. Il peut être auteur principal dans un cas, autre auteur ou auteur secondaire dans un autre. Et une notice peut faire référence à 0, 1 ou plusieurs auteurs. Auteur principal : M. Swan Auteur principal : J. Seidl – Autre auteur : M. Swan Auteur principal : Fr. Uhlman Auteurs secondaires : L. Lack (traducteur) – A. Koestler (préfacier) http://amcubat.be/docpmb/

3 tables : auteurs, notices et responsabilité 2.3 La relation « plusieurs – plusieurs » 3 tables : auteurs, notices et responsabilité Fonction 070 : auteur 080 : préfacier 730 : traducteur Type de responsabilité 0 : auteur principal 1 : autre auteur 2 : auteur secondaire Pour gérer la relation « plusieurs – plusieurs », on crée une table intermédiaire, dans ce cas-ci les responsabilités. On crée une relation entre les clés primaires des auteurs et des notices, et on y ajoute des codes ( fonction et type de responsabilité de l’auteur). Chaque enregistrement (= ensemble de données : auteur + notice + fonction) est unique, c’est la clé primaire de cette table. http://amcubat.be/docpmb/

Comment relier ces tables dans une requête ? 2.3 La relation « plusieurs – plusieurs » Comment relier ces tables dans une requête ? Par exemple pour afficher la liste des œuvres d’un auteur. SELECT author_name AS ‘Auteur’, author_rejete AS ‘Prénom’, tit1 AS ‘Titre’ FROM notices, authors, responsability WHERE author_name = ’Uhlman’ AND author_rejete= ’Fred’ AND responsability_author = author_id AND responsability_notice= notice_id ORDER BY tit1 SELECTIONNER liste de champs A PARTIR DE liste de tables A CONDITION QUE condition 1 ET condition 2 ET condition 3 ET condition 4 TRIER PAR http://amcubat.be/docpmb/

Comment afficher la liste des œuvres d’un auteur ? 2.3 La relation « plusieurs – plusieurs » Comment afficher la liste des œuvres d’un auteur ? SELECT author_name AS ‘Auteur’, author_rejete AS ‘Prénom’, tit1 AS ‘Titre’ FROM notices, authors, responsability WHERE author_name = ’Uhlman’ AND author_rejete= ’Fred’ AND responsability_author = author_id AND responsability_notice= notice_id ORDER BY tit1 Résultat de la requête Il y a 2 types de conditions après « where »: - le filtre = les critères de recherche : dans ce cas-ci, nom et prénom de l’auteur (conditions 1 et 2). - les critères de relation, pour établir des liaisons adéquates entre les tables (conditions 3 et 4). N.B. La notice « L’ami retrouvé » figure 3 fois, car il y a dans cette base 3 éditions différentes de ce livre. http://amcubat.be/docpmb/

Comment éviter l’affichage de doublons ? 2.3 La relation « plusieurs – plusieurs » Comment éviter l’affichage de doublons ? SELECT author_name AS ‘Auteur’, author_rejete AS ‘Prénom’, tit1 AS ‘Titre’ FROM notices, authors, responsability WHERE author_name = ’Uhlman’ AND author_rejete= ’Fred’ AND responsability_author = author_id AND responsability_notice= notice_id GROUP BY tit1 ORDER BY SELECT author_name AS ‘Auteur’, author_rejete AS ‘Prénom’, tit1 AS ‘Titre’ FROM notices, authors, responsability WHERE author_name = ’Uhlman’ AND author_rejete= ’Fred’ AND responsability_author = author_id AND responsability_notice= notice_id ORDER BY tit1 Si nous avons plusieurs notices pour 3 ou 4 œuvres du même auteur, la liste risque de s’allonger inutilement. Or dans ce cas-ci, nous ne nous intéressons pas au nombre de notices différentes, nous voulons seulement la liste des titres. Solution : l’instruction GROUP BY Cette instruction permet de regrouper plusieurs lignes de résultat en une seule. On précise le critère de regroupement; dans ce cas, il s’agit du titre de l’œuvre. Chaque titre ne figure qu’une seule fois. Cette instruction est souvent employée dans les requêtes de statistiques, pour obtenir des sous-totaux. http://amcubat.be/docpmb/

Comment rendre cette requête interactive ? 2.3 La relation « plusieurs – plusieurs » Comment rendre cette requête interactive ? Cette procédure n’est pas pratique, car elle n’affiche que les œuvres de Fred Uhlman. Et il faudrait la modifier et la sauver chaque fois qu’on veut voir les notices liées à un autre auteur. Il faut donc prévoir la possibilité pour l’utilisateur de répondre à une question toute simple : « Nom de l’auteur? » SELECT author_name AS ‘Auteur’, author_rejete AS ‘Prénom’, tit1 AS ‘Titre’ FROM notices, authors, responsability WHERE author_name = ’!!nom_auteur!!’ AND responsability_author = author_id AND responsability_notice= notice_id ORDER BY tit1 SELECT author_name AS ‘Auteur’, author_rejete AS ‘Prénom’, tit1 AS ‘Titre’ FROM notices, authors, responsability WHERE author_name = ’Uhlman’ AND author_rejete= ’Fred’ AND responsability_author = author_id AND responsability_notice= notice_id ORDER BY tit1 Solution : une formule étrange author_name =’!!nom_auteur!!’ Les doubles points d’exclamation au début et à la fin indiquent l’interactivité : l’utilisateur pourra répondre à une question. L’ajout d’une apostrophe au début et d’une autre à la fin signale qu’il s’agit d’une valeur alphanumérique. S’il n’y avait pas d’apostrophes, on ne pourrait introduire que des valeurs numériques. http://amcubat.be/docpmb/

Comment obtenir une requête interactive ? 2.3 La relation « plusieurs – plusieurs » Comment obtenir une requête interactive ? 1. Créer la requête et la sauvegarder 2. Configurer les paramètres 3. Signaler comment répondre : texte (= directement au clavier) liste de choix à partir d’une requête sélection d’une date … 4. Préciser les options et enregistrer le tout http://amcubat.be/docpmb/

Cet exemple illustre la relation « plusieurs – plusieurs ». Si on part d’un des auteurs, il y a 0, 1 ou plusieurs liaisons vers la table « notices ». Si on part d’une des notices, il y a 0, 1 ou plusieurs liaisons vers la table « auteurs ». Responsabilités Il est donc impossible de créer des clés secondaires, puisqu’on ignore au départ le nombre de relations dans un sens ou dans l’autre, et qu’en outre, ce nombre pourrait être fort élevé. Le système ne serait pas gérable. Dès lors, il faut une table intermédiaire pour établir les liaisons auteurs – notices. http://amcubat.be/docpmb/

Autres exemples de la relation « plusieurs – plusieurs » Notices - Mots-clés du thésaurus (les catégories de PMB) : Une notice peut être liée à 0, 1 ou plusieurs catégories (via la table « nœuds »). Et une catégorie peut être employée dans 0, 1 ou plusieurs notices. Paniers – Notices, exemplaires, bulletins ou lecteurs : Un panier peut contenir 0, 1 ou plusieurs exemplaires. Un exemplaire peut se retrouver dans 0, 1 ou plusieurs paniers. Un panier peut contenir 0, 1 ou plusieurs lecteurs. Un lecteur peut figurer dans 0, 1 ou plusieurs paniers. http://amcubat.be/docpmb/

3. Une balade virtuelle d’une table à l’autre C’est ce genre de balade que je vous propose maintenant. Nous n’allons bien sûr pas explorer toutes les tables ni toutes les relations possibles, mais vous verrez que finalement, PMB est un labyrinthe dont on sort assez facilement … Rassurez-vous, vous ne risquez pas de vous perdre en route, le parcours est fléché ! C’est PhpMyAdmin qui nous servira de boussole … L’objectif est ici de vous montrer sur base d’un exemple concret comment employer cette boussole – pardon, ce GPS !! http://amcubat.be/docpmb/

3. Une balade virtuelle d’une table à l’autre Comment chercher avec PhpMyAdmin ? Un exemple concret : relations entre notices et titres de série C’est une relation de type « un - plusieurs », qui ne concerne que 2 tables : les notices et une autre. Etape n° 1 : identifier la table qui contient les titres de série. Le schéma de PMB peut vous aider. Heureusement, les noms des tables et des champs sont significatifs dans PMB ! Etape n° 2 : explorer la table « series » Choisir un exemple significatif et facile à vérifier : Harry Potter. Mémoriser sa clé primaire, « serie_id » (qui vaut 2). http://amcubat.be/docpmb/

3. Une balade virtuelle d’une table à l’autre Etape n° 3 : explorer la table « notices » afin de trouver la clé étrangère qui renvoie aux titres de série. Il s’agit de « tparent_id ». http://amcubat.be/docpmb/

3. Une balade virtuelle d’une table à l’autre Etape n° 4 : dans PhpMyAdmin, lancer une recherche des notices liées à ce titre de série « Harry Potter ». Préciser les champs à afficher Préciser le critère de recherche : tparent_id = 2 http://amcubat.be/docpmb/

3. Une balade virtuelle d’une table à l’autre Etape n° 5 : analyser le résultat Un petit « coup de pouce » : PhpMyAdmin nous aide à rédiger une requête SQL simple Vérifier si le résultat est cohérent, s’il correspond à notre attente. http://amcubat.be/docpmb/

3. Une balade virtuelle d’une table à l’autre Etape n° 6 : rédiger la requête SQL Voici le résultat. http://amcubat.be/docpmb/

C’est le sens de l’instruction LIKE : ce qui ressemble à … 3. Une balade virtuelle d’une table à l’autre Etape n° 7 : améliorer la requête SQL Problème : si vous avez introduit au clavier seulement « Potter » ou uniquement « Harry », voici le message que vous obtiendrez. Lignes affectées : 0  Aucune notice ne vérifie la condition posée. On peut améliorer la requête en demandant de chercher dans la liste des titres de séries, ceux qui ressemblent au critère de recherche introduit au clavier. C’est le sens de l’instruction LIKE : ce qui ressemble à … http://amcubat.be/docpmb/

3. Une balade virtuelle d’une table à l’autre Etape n° 7 : améliorer la requête SQL LIKE ’%!!titre_serie!!%’ Apostrophes : valeur alphanumérique Symbole % : nombre indéterminé de caractères (0, 1, plusieurs) Cela correspond à l’astérisque : Har*  ceux dont le nom commence par « Har » Points d’exclamation : interactivité, l’utilisateur pourra choisir Ainsi, qu’on ait répondu « Harry » ou « Potter », PMB va chercher un titre de série où un de ces noms figure, éventuellement précédé ou suivi d’un ou de plusieurs caractères (symbole %). http://amcubat.be/docpmb/

Pour les bibliothécaires : un conseil final Ne pas modifier ou supprimer des données dans PhpMyAdmin. Vous risquez de provoquer des catastrophes ! Vous avez vu à quel point la structure des tables et de leurs relations était complexe. J’espère que ce diaporama aura « démystifié » le concept de base de données relationnelle. Dans un premier temps, cela vous permettra de comprendre mieux les requêtes SQL que vous pouvez trouver via la mailing-list, sur le Wiki, sur le site de Citédoc ou sur mon site http://amcubat.be/docpmb/ Dans un deuxième temps, vous vous lancerez dans la rédaction de requêtes ! Merci de votre attention Anne-Marie Cubat http://amcubat.be/docpmb/