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

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

If you can't read please download the document

  • date post

    03-Apr-2015
  • Category

    Documents

  • view

    107
  • download

    3

Embed Size (px)

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

  • Page 1
  • Anne-Marie Cubat 2e partie Base de donnes relationnelle et requtes SQL
  • Page 2
  • 1. Les relations entre plusieurs tables Nous avons vu que lemploi dune table intermdiaire est la seule manire de grer la relation plusieurs plusieurs . Toutefois, on a aussi recours ces tables intermdiaires dans le cas de relations multiples entre plusieurs tables, mme sil sagit de relations un - plusieurs si on les envisage deux par deux. Exemple concret : les liens entre la notice-mre des priodiques (dans la table notices ) les bulletins (dans la table bulletins ) les dpouillements darticles (dans la table notices ) La table analysis tablit un lien entre les bulletins et les dpouillements darticles. http://amcubat.be/docpmb/
  • Page 3
  • 1. Les relations entre plusieurs tables Exemple : nous partons la recherche du Petit Prince Dun clic de souris, nous envoyons ces rsultats dans un panier dexemplaires. 5 exemplaires : 1 bulletin, 4 livres Titre du bulletin Dpouillements http://amcubat.be/docpmb/
  • Page 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) caractre(s), et non pas lastrisque 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 priodique niveau_biblio = s niveau_hierar = 1 monographie article Niveau dans la hirarchie srie = priodique http://amcubat.be/docpmb/
  • Page 5
  • 1. Les relations entre plusieurs tables Relations entre priodiques, bulletins et dpouillements Bulletins Notices Analysis bulletin_notice est la cl qui renvoie notice_id : dans ce cas, cette notice est la notice-mre du priodique. 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 priodique. On obtiendra plus vite la liste des articles classs par priodique et ensuite par bulletin. En effet, dans analysis , les enregistrements sont tris par n de bulletin, et ensuite par n de notice (= article dpouill). En outre, cette table ne contient que les n des notices qui correspondent des articles, les n des notices de monographies ou de priodiques ny figurent pas. Tout ceci acclre les recherches. http://amcubat.be/docpmb/
  • Page 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 priodique Bulletins Exemplaires bulletin_notice est la cl qui renvoie notice_id la notice-mre du priodique Suivant le cas, lun ou lautre de ces champs sera complt. N.B. Le champ expl_cb contient les numros de codes-barres. mention_date est le libell de priode (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/
  • Page 7
  • 1. Les relations entre plusieurs tables Comment relier ces tables dans une requte ? Par exemple pour afficher la liste des bulletins dun priodique. 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/
  • Page 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 Rsultat de la requte http://amcubat.be/docpmb/
  • Page 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 critre afin de limiter la recherche aux priodiques 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 priode (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 concatner plusieurs lments, cest--dire former une chane de caractres partir des valeurs de certains champs et/ou de texte introduit entre apostrophes. Les divers lments sont spars par une virgule. http://amcubat.be/docpmb/
  • Page 10
  • 2. Les requtes de slection interactive Comment rendre une requte interactive ? Jusqu prsent, nous navons vu quun seul mode dinteractivit pour lutilisateur : le mode texte : introduire une rponse directement au clavier. Toutefois, ce mode texte a des limites : il est par exemple plus fastidieux dintroduire le titre dun priodique manuellement ou de devoir mmoriser le n dun bulletin quon veut absolument retrouver. Alors quil est si simple de slectionner un priodique ou un bulletin dans une liste !! Cest pourquoi nous allons nous intresser dautres possibilits dinteractivit : la liste de choix partir dune requte la slection dune date http://amcubat.be/docpmb/
  • Page 11
  • 2.1 La liste de choix partir dune requte Comment slectionner des donnes partir dune requte ? Repartons de la procdure qui affichait la liste des bulletins. Nouvelle version : le mode de choix du paramtre change. Cette requte doit afficher la liste des priodiques disponibles. http://amcubat.be/docpmb/
  • Page 12
  • 2. 1 La liste de choix partir dun requte Comment obtenir la liste de tous les priodiques dpouills ? monographie article Niveau dans la hirarchie Rappel : la notice-mre dun priodique se repre par le champ niveau_biblio . Sil contient la valeur s , il sagit du titre dun priodique. srie = priodique Voici la requte et le rsultat obtenu. Nous allons la modifier lgrement et lintgrer dans lautre procdure. http://amcubat.be/docpmb/
  • Page 13
  • 2.1 La liste de choix partir dune requte Comment slectionner des donnes partir dune requte ? Notez la syntaxe WHERE notice_id IN (!!periodiques!!) IN (!! !!) pour choisir dans une liste cre par requte Si vous cochez la case liste multiple , vous pouvez slectionner plusieurs lments dans la liste. Cette requte ressemble fort la procdure de base qui affiche la liste des priodiques. http://amcubat.be/docpmb/
  • Page 14
  • 2.1 La liste de choix partir dune requte Ajoutons un critre : la localisation Pour obtenir une liste de choix partir dune requte, il faut slectionner 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/
  • Page 15
  • 2.1 La liste de choix partir dune requte Cest la table docs_location qui contient les infos sur les localisations. Vous pouvez tester la requte, mais noubliez pas de lenregistrer ! http://amcubat.be/docpmb/
  • Page 16
  • 2.2 La slection dune date Ajoutons encore un critre : restriction entre 2 dates Lorsque vous cliquez sur les options des dates, voici le message obtenu. http://amcubat.be/docpmb/
  • Page 17
  • 2.2 La slection dune date Voici lcran de slection. Choix dun ou plusieurs priodiques. Choix dune ou plusieurs localisations. Choix dune date de dbut et dune date de fin. http://amcubat.be/docpmb/
  • Page 18
  • 2.2 La slection dune date Voici le rsultat final. http://amcubat.be/docpmb/
  • Page 19
  • Pour les bibliothcaires : un conseil final Rappel important Ne pas modifier ou supprimer des donnes dans PhpMyAdmin. Vous risquez de provoquer des catastrophes ! Vous avez vu quel point la structure des tables et de leurs relations tait complexe. Jespre que ce diaporama aura contribu dmystifier le concept de base de donnes relationnelle. A vos claviers ! Commencez rdiger des requtes ! Merci de votre attention Anne-Marie Cubat http://amcubat.be/docpmb/