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.

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

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

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.

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)

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

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

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.

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

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.

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.

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.

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é.

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 !

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.

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.

18 2.2 La sélection dune date Voici le résultat final.

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


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

Présentations similaires


Annonces Google