La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Anne-Marie Cubat 2e partie Base de données relationnelle et requêtes SQL."— Transcription de la présentation:

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

2 1. Les relations entre plusieurs tables Nous avons vu que lemploi dune table intermédiaire est la seule manière de gérer la relation « plusieurs – plusieurs ». Toutefois, on a aussi recours à ces tables intermédiaires dans le cas de relations multiples entre plusieurs tables, même sil sagit de relations « un - plusieurs » si on les envisage deux par deux. Exemple concret : les liens entre la « notice-mère » des périodiques (dans la table « notices ») les bulletins (dans la table « bulletins ») les dépouillements darticles (dans la table « notices ») La table « analysis » établit un lien entre les bulletins et les dépouillements darticles. http://amcubat.be/docpmb/

3 1. Les relations entre plusieurs tables Exemple : nous partons à la recherche du « Petit Prince »… Dun clic de souris, nous envoyons ces résultats dans un panier dexemplaires. 5 exemplaires : 1 bulletin, 4 livres Titre du bulletin Dépouillements http://amcubat.be/docpmb/

4 1. Les relations entre plusieurs tables Dans la table « notices » Noubliez pas que dans PhpMyAdmin le symbole % est le « joker » qui permet de remplacer nimporte quel(s) caractère(s), et non pas lastérisque comme on en a lhabitude ! Les 3 notices du livre niveau_biblio = « m » niveau_hierar = « 0 » La notice de larticle niveau_biblio = « a »niveau_hierar = « 2 » La notice du périodique niveau_biblio = « s »niveau_hierar = « 1 » monographie article Niveau dans la hiérarchie série = périodique http://amcubat.be/docpmb/

5 1. Les relations entre plusieurs tables Relations entre périodiques, bulletins et dépouillements Bulletins Notices Analysis bulletin_notice est la clé qui renvoie à notice_id : dans ce cas, cette notice est la « notice-mère » du périodique. analysis_bulletin est la clé qui renvoie à bulletin_id analysis_notice est la clé qui renvoie à notice_id : dans ce cas, ces notices sont des articles de périodique. On obtiendra plus vite la liste des articles classés par périodique et ensuite par bulletin. En effet, dans « analysis », les enregistrements sont triés par n° de bulletin, et ensuite par n° de notice (= article dépouillé). En outre, cette table ne contient que les n° des notices qui correspondent à des articles, les n° des notices de monographies ou de périodiques ny figurent pas. Tout ceci accélère les recherches. http://amcubat.be/docpmb/

6 1. Les relations entre plusieurs tables Relations entre exemplaires, notices et bulletins Notices expl_notice est la clé qui renvoie à notice_id : exemplaire dun livre, dun CD, dun DVD … expl_bulletin est la clé qui renvoie à bulletin_id exemplaire dun bulletin de périodique Bulletins Exemplaires bulletin_notice est la clé qui renvoie à notice_id la « notice-mère » du périodique Suivant le cas, lun ou lautre de ces champs sera complété. N.B. Le champ expl_cb contient les numéros de codes-barres. mention_date est le libellé de période (formulation libre de la date de parution) date_date est une date au sens strict du terme (elle permet un tri chronologique exact) http://amcubat.be/docpmb/

7 1. Les relations entre plusieurs tables Comment relier ces tables dans une requête ? Par exemple pour afficher la liste des bulletins dun périodique. 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 liste de champs SELECT expl_cb as 'Code-barres', CONCAT(tit1,' - N° ', bulletin_numero) AS 'Titre - N° ', mention_date AS Date, bulletin_titre AS 'Titre du bulletin FROM exemplaires, bulletins, notices WHERE tit1 LIKE '%!!titre_periodique!!%' AND niveau_biblio='s' AND bulletin_notice=notice_id AND expl_bulletin=bulletin_id ORDER BY tit1, date_date, expl_cb http://amcubat.be/docpmb/

8 1. Les relations entre plusieurs tables Comment afficher une liste de bulletins ? SELECT expl_cb as 'Code-barres', CONCAT(tit1,' - N° ', bulletin_numero) AS 'Titre - N° ', mention_date AS Date, bulletin_titre AS 'Titre du bulletin FROM exemplaires, bulletins, notices WHERE tit1 LIKE '%!!titre_periodique!!%' AND niveau_biblio='s' AND bulletin_notice=notice_id AND expl_bulletin=bulletin_id ORDER BY tit1, date_date, expl_cb Résultat de la requête http://amcubat.be/docpmb/

9 1. Les relations entre plusieurs tables Comment afficher une liste de bulletins ? SELECT expl_cb as 'Code-barres', CONCAT(tit1,' - N° ', bulletin_numero) AS 'Titre - N° ', mention_date AS Date, bulletin_titre AS 'Titre du bulletin FROM exemplaires, bulletins, notices WHERE tit1 LIKE '%!!titre_periodique!!%' AND niveau_biblio='s' AND bulletin_notice=notice_id AND expl_bulletin=bulletin_id ORDER BY tit1, date_date, expl_cb niveau_biblio= s On ajoute ce critère afin de limiter la recherche aux périodiques dans le champ tit1. Il faut en effet exclure les titres des monographies, CD, DVD … contenant des mots tels que « vif » ou « express ». SELECT mention_date AS Date On affiche le libellé de période (par exemple « du 5 au 11 mai 2006 »). ORDER BY date_date Le tri chronologique ne peut se baser que sur la date au sens strict (date_date). CONCAT(,, ) permet de concaténer plusieurs éléments, cest-à-dire former une chaîne de caractères à partir des valeurs de certains champs et/ou de texte introduit entre apostrophes. Les divers éléments sont séparés par une virgule. http://amcubat.be/docpmb/

10 2. Les requêtes de sélection interactive Comment rendre une requête interactive ? Jusquà présent, nous navons vu quun seul mode dinteractivité pour lutilisateur : le mode « texte » : introduire une réponse directement au clavier. Toutefois, ce mode « texte » a des limites : il est par exemple plus fastidieux dintroduire le titre dun périodique « manuellement » ou de devoir mémoriser le n° dun bulletin quon veut absolument retrouver. Alors quil est si simple de sélectionner un périodique ou un bulletin dans une liste !! Cest pourquoi nous allons nous intéresser à dautres possibilités dinteractivité : la liste de choix à partir dune requête la sélection dune date http://amcubat.be/docpmb/

11 2.1 La liste de choix à partir dune requête Comment sélectionner des données à partir dune requête ? Repartons de la procédure qui affichait la liste des bulletins. Nouvelle version : le mode de choix du paramètre change. Cette requête doit afficher la liste des périodiques disponibles. http://amcubat.be/docpmb/

12 2. 1 La liste de choix à partir dun requête Comment obtenir la liste de tous les périodiques dépouillés ? monographie article Niveau dans la hiérarchie Rappel : la notice-mère dun périodique se repère par le champ « niveau_biblio ». Sil contient la valeur « s », il sagit du titre dun périodique. série = périodique Voici la requête et le résultat obtenu. Nous allons la modifier légèrement et lintégrer dans lautre procédure. http://amcubat.be/docpmb/

13 2.1 La liste de choix à partir dune requête Comment sélectionner des données à partir dune requête ? Notez la syntaxe WHERE notice_id IN (!!periodiques!!) IN (!! !!) pour choisir dans une liste créée par requête Si vous cochez la case « liste multiple », vous pouvez sélectionner plusieurs éléments dans la liste. Cette requête ressemble fort à la procédure de base qui affiche la liste des périodiques. http://amcubat.be/docpmb/

14 2.1 La liste de choix à partir dune requête Ajoutons un critère : la localisation Pour obtenir une liste de choix à partir dune requête, il faut sélectionner lid !! (notice_id ou idlocation) N.B. ORDER BY 2 = ORDER BY location_libelle car « location_libelle » est le 2e champ mentionné. http://amcubat.be/docpmb/

15 2.1 La liste de choix à partir dune requête Cest la table « docs_location » qui contient les infos sur les localisations. Vous pouvez tester la requête, mais noubliez pas de lenregistrer ! http://amcubat.be/docpmb/

16 2.2 La sélection dune date Ajoutons encore un critère : restriction entre 2 dates Lorsque vous cliquez sur les options des dates, voici le message obtenu. http://amcubat.be/docpmb/

17 2.2 La sélection dune date Voici lécran de sélection. Choix dun ou plusieurs périodiques. Choix dune ou plusieurs localisations. Choix dune date de début et dune date de fin. http://amcubat.be/docpmb/

18 2.2 La sélection dune date Voici le résultat final. http://amcubat.be/docpmb/

19 Pour les bibliothécaires : un conseil final Rappel important 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. Jespère que ce diaporama aura contribué à démystifier le concept de base de données relationnelle. A vos claviers ! Commencez à rédiger des requêtes ! Merci de votre attention Anne-Marie Cubat http://amcubat.be/docpmb/


Télécharger ppt "Anne-Marie Cubat 2e partie Base de données relationnelle et requêtes SQL."

Présentations similaires


Annonces Google