Vous êtes sur la page 1sur 33

Base de donnes

Stphane Devismes 1er aot 2013

Table des matires


1 La base de donne ZOO 1.1 Position du problme . . . 1.2 Les tables . . . . . . . . . 1.3 Exercices . . . . . . . . . 1.3.1 Schma relationnel 1.3.2 Comprhension des 1.3.3 Requtes . . . . . 1.3.4 Cohrence . . . . . 5 5 5 6 6 6 6 7 9 9 9 10

. . . . . . . . . . . . . . . . . . . . . . . . relations . . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

2 La grande boue 2.1 Position du problme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Schmas des relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Expression de requtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 Agence de voyages 11 3.1 Position du problme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Schma des relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4 Conception de Bases de Donnes 4.1 Exercice 1 . . . . . . . . . . . . . 4.1.1 Problme . . . . . . . . . 4.1.2 Questions . . . . . . . . . 4.2 Exercice 2 . . . . . . . . . . . . . 4.2.1 Problme . . . . . . . . . 4.2.2 Questions . . . . . . . . . 4.3 Exercice 3 . . . . . . . . . . . . . 4.3.1 Problme . . . . . . . . . 4.3.2 Questions . . . . . . . . . 4.4 Exercice 4 . . . . . . . . . . . . . 4.4.1 Problme . . . . . . . . . 4.4.2 Questions . . . . . . . . . 4.5 Exercice 5 . . . . . . . . . . . . . 4.5.1 Problme . . . . . . . . . 4.5.2 Questions . . . . . . . . . 5 Conception en SQL 5.1 La base de donne ZOO 5.2 Schma relationnel . . . 5.2.1 Les relations . . 5.2.2 Domaines . . . . 15 15 15 15 16 16 16 16 16 17 17 17 17 18 18 19 21 21 21 21 22

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . . 3

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

5.3 5.4 5.5

5.2.3 Contraintes dintgrit Cration . . . . . . . . . . . . Remplir la base . . . . . . . . Dclencheurs (triggers) . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

22 22 22 22 25 25 26 26 27 27 27 27

6 JDBC/Servlet 6.1 Mise en place . . . . . . . . . 6.2 Utilisation de ant . . . . . . . 6.3 Questions . . . . . . . . . . . 6.4 La base de donne ZOO . . . 6.4.1 Les relations . . . . . 6.4.2 Domaines . . . . . . . 6.4.3 Contraintes dintgrit

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

7 Normalisation 29 7.1 Exercice 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7.2 Exercice 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7.3 Exercice 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 A Dcouvrir Oracle A.1 Connexion Oracle . . . . . . . . . . . . . . . . . . A.2 Excution dune requte en ligne . . . . . . . . . . A.3 Excution dune requte partir dun chier . . . A.4 Stockage des rsultats des requtes dans un chier A.5 Requtes paramtres . . . . . . . . . . . . . . . . 31 31 31 32 33 33

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Chapitre 1

La base de donne ZOO


1.1 Position du problme

Le directeur dun zoo a informatis la gestion de son tablissement. Dans ce zoo, on trouve des animaux rpertoris par type (lion, lopard, girafe, escargot, ...). Chaque animal possde un nom (Charly, Arthur, Enzo, ...) qui lidentie de faon unique, une date de naissance et un pays dorigine. On retient galement les maladies que chaque animal a contractes depuis son arrive au zoo. Les animaux sont logs dans des cages. Chaque cage peut recevoir un ou plusieurs animaux. Certaines cages peuvent tre inoccupes. Une cage correspond une certaine fonctionnalit, qui nest pas forcment lie un type danimal donn (par exemple une cage peut convenir la fois aux girafes, aux lphants et aux fauves, une autre aux grands oiseaux, ...). Une cage est identi par un numro, elle est situe dans une alle, identie aussi par un numro. Des personnes sont employes par le zoo pour entretenir les cages et soigner les animaux. Chaque employ est identie par son nom, et on connat la ville o il rside. Il existe deux types de postes pour les employs : gardien ou responsable. Chaque employ est aect un unique poste : soit gardien, soit responsable. Un gardien soccupe dune ou plusieurs cages, et un responsable a la charge de toutes les cages de une ou de plusieurs alles. Une alle est sous la responsabilit dun seul employ et toute cage occupe par au moins un animal est garde par au moins un gardien ; les cages inoccupes ne sont pas gardes.

1.2

Les tables
LesAnimaux type pays lion Kenya ours France pie France lopard France lopard France lion Kenya

Ci-dessous nous fournissons les tables de la base de donnes du zoo.

nomA Charly Arthur Chlo Milou Tintin Charlotte

sexe mle mle femelle mle mle femelle

anNais 1990 1980 1991 1993 1993 1992

noCage 12 1 3 11 11 12 LesResponsables noAlle nomE 10 Peyrin 1 Adiba 2 Voiron

noCage 11 1 2 3 4 12

LesCages fonction enclos fosse aquarium volire grand aquarium enclos

noAlle 10 1 1 2 1 10

LesMaladies nomA nomM Charly rage de dents Charly grippe Milou angine Chlo grippe

LesEmploys nomE adresse Peyrin Nouma Berrut Sartne Sicard Calvi Voiron Pointe Pitre Scholl Ushuaia Adiba Papeete

LesGardiens noCage nomE 11 Scholl 12 Berrut 12 Sicard 11 Berrut 11 Sicard 1 Scholl 3 Scholl 12 Scholl

1.3
1.3.1

Exercices
Schma relationnel

1. Donnez la cl primaire de chacune des tables (relations) de la base Zoo. 2. Donnez le schma relationnel de la base Zoo. 3. Donnez la spcication de chacune des relations.

1.3.2

Comprhension des relations

1. Indiquez les n-uplets que lon doit insrer dans la ou les relation(s) concerne(s), pour reprsenter les informations contenues dans le texte ci-dessous : Chlo, qui est au zoo depuis longtemps, vient de contracter une rage de dents en mme temps que la grippe. Brigitte est une libellule femelle qui est arrive au zoo il y a quelques jours. Les libellules sont des animaux de type "insecte archiptre". Brigitte a t place dans la cage numro 3. Depuis son arrive au zoo, elle na contract aucune maladie. Mme Bruandet, rsidant Papeete, vient dtre employe par le zoo. Elle a t aecte au gardiennage des cages 4, 11, et 12. On vient de construire une cage piscine, qui conviendra par exemple aux tortues. Elle a le numro 40 et est situe au bout de lalle 10. 2. On souhaite maintenant pouvoir stocker pour chaque animal et pour chacune des maladies quil contracte, la date laquelle il a contract cette maladie. Quel est limpact de cette modication sur le modle relationnel prcdent ? 3. Quelles sont les caractristiques de lnonc qui ne sont pas directement traduites par les relations ?

1.3.3

Requtes

Donnez lexpression relationnelle, lexpression SQL, ainsi que le rsultat des requtes donnes ci-dessous : 1. Le nom des animaux du zoo. 2. Les fonctionnalits disponibles dans le zoo. 6

3. Les noms des lopards. 4. Les maladies contractes au moins une fois par des animaux du zoo. 5. Les noms et numros de cage des animaux mles qui sont originaires du Kenya et dont la date de naissance est antrieure 1992. 6. Une requte produisant lachage suivant :
Peyrin vit Nouma Berrut vit Sartne Sicard vit Calvi Voiron vit Pointe Pitre Scholl vit Ushuaia Adiba vit Papeete

7. Le nom et lge des animaux en 2012. 8. Le nom des gardiens qui habitent Ushuaa. 9. La fonctionnalit et le nom du gardien des cages gardes par un employ habitant Calvi. 10. Le nom des animaux ainsi que des employs qui en sont soit les gardiens soit les responsables. 11. Le nom des gardiens gardant tous les animaux. 12. Les noms et types des animaux qui nont jamais t malades. 13. Les noms des animaux originaires du Kenya ayant dj contracts une grippe. 14. Les numros et fonctionnalits des cages qui sont inoccupes. 15. Donner pour chaque animal mle lensemble des maladies quil a contractes (ensemble des couples nom danimal, nom de maladie). 16. Les numros et fonctionnalits des cages qui sont partages par des animaux de types dirents. En dautres termes, ce sont les cages qui contiennent au moins deux animaux de types dirents. 17. Les noms des responsables et les noms des gardiens de Charly. 18. Le nom et le pays dorigine de lanimal doyen du zoo (il peut y en avoir plusieurs). 19. Le nom, le type et lanne de naissance des animaux qui ont contract toutes les maladies (connues) du zoo. 20. Le nom, le type et le pays dorigine des animaux qui partagent la cage de Charly. 21. Le nom et ladresse des employs qui sont gardiens danimaux de tous types, on fait rfrence aux types des animaux du zoo.

1.3.4

Cohrence

Ecrire les requtes (relationnelles et SQL) qui permettent de vrier que la base de donnes satisfait les rgles de cohrence suivantes : 1. Un employ est soit un gardien, soit un responsable. 2. Il ny a pas de gardien aect des cages vides.

Chapitre 2

La grande boue
2.1 Position du problme

Une matresse de maison a constitu une base de donnes relationnelle sur les amis quelle invite. Elle reprsente, pour chaque repas identi par une date, les noms des plats qui ont t servis ainsi que leur type, et pour chaque plat, le vin qui laccompagnait. Elle connat les plats prfrs de tous ses amis. Un invit peut tre ou non un ami et inversement.

2.1.1

Schmas des relations

Cette matresse de maison fort avise dnit le schma de relations suivant (les identiants des relations sont les attributs souligns). Dans LesRepas, on parle des invits (amis ou non). Dans LesPrfrences, on parle des amis (invits ou non). LesRepas (dateR, nomI) (d, i) LesRepas la personne de nom i, a t invite au repas identi par la date d LeMenu (dateR, nomP, nomV) (d, p, v ) LeMenu le plat p accompagn par le vin v a t servi au repas d LesPreferences (nomA, nomP) (n, p) LesPreferences lami de nom n aime le plat de nom p LesPlats (nomP, typeP) (p, t) LesPlats le plat p est du type t domaine(dateR) = date domaine(nomI) = domaine(nomA) = {"Pierre", "Paul", etc..} domaine(nomP) = {"Mdaillon langouste", "Mousse chocolat", etc...} domaine(nomV) = {"don prignon 1991", "chateau la-pompe 1920", etc..} domaine(typeP) = {"entre chaude", "dessert", etc..} LeMenu(dateR) = LesRepas(dateR) LesPreferences(nomP) LesPLats(nomP) LeMenu(nomP) LesPlats(nomP) 9

2.1.2

Expression de requtes

Exprimer en algbre relationnelle et dans le langage SQL les requtes ci-dessous. Les requtes devront construire des rsultats sans rptition de valeurs. Dans le langage SQL, la clause distinct sera utilise uniquement lorsque ncessaire. 1. Donner les noms des invits du repas organis le 31 Dcembre 2004. 2. Donner les noms des vins qui ont t servis avec un mdaillon de langouste. 3. Donner les noms des plats (avec le vin qui les accompagne) qui ont t servis le 21 octobre 2003. 4. Donner les noms des invits qui il a t servi au moins une fois du foie gras. 5. Donner les noms des amis qui nont jamais t invits. 6. Donner les repas (date, plats et vins servis) auxquels Thomas et Patrick ont t invits (ensemble). 7. Donner les noms des amis qui ont eu, au moins une fois, un plat de leurs prfrences. 8. Donner les noms des invits qui naiment que les desserts. 9. Donner les noms des amis qui nont jamais eu un de leurs plats prfrs. 10. Donner les noms des invits qui ont mang du foie gras, mais qui naiment pas cela. 11. Pour chaque invit, donner le nombre de repas auxquels il a t convi. 12. Donner le nombre moyen dinvits par repas. 13. Donner les noms des desserts qui ont t servis au moins 2 fois. 14. Pour l(les) ami(s) invit(s) le plus souvent, donner son(leur) nom ainsi que ses(leurs) plats prfrs. 15. Donner les noms des amis qui aiment tous les types de plats, cest--dire au moins un plat de chaque type. 16. Pour chaque ami, donner le nombre de repas auxquels il a t convi. 17. Notre matresse de maison dcide quelle invitera son prochain repas, qui aura lieu le 1er janvier 2010, tous les amis qui nont pas encore t invits. Former la requte qui prdit comment la table LesRepas sera mise jour aprs le repas du 1er janvier 2010.

10

Chapitre 3

Agence de voyages
3.1 Position du problme

Une agence de voyage a informatis la gestion des voyages quelle propose (itinraires, monuments visits, rservations, etc.). La base de donnes a t construite partir du cahier des charges suivant : Les circuits : Un circuit est identi par un numro, il est dcrit par une ville de dpart, une ville darrive et une squence non vide dtapes. Une tape se droule pendant un nombre donn de jours, dans une ville donne. Au cours de chaque tape, tous les monuments de la ville, lorsquil y en a, sont visits. Les monuments des villes de dpart et darrive ne sont pas visits. Un mme circuit ne repasse jamais plusieurs fois dans la mme ville tape, mais il peut arriver quune ville dpart ou arrive gure aussi dans lensemble des villes tapes. Les monuments et les villes sont identis par leur nom. Un circuit peut tre programm plusieurs fois, des dates direntes, pour un nombre de places qui peut varier selon la programmation. Le prix dun circuit est x, toujours le mme quelque soit sa programmation. Un circuit dure un nombre de jours gal la somme des dures de chacune de ses tapes. Les rservations : Une rservation, identie par un numro, est eectue pour le compte dun client (identi par son nom) et concerne une programmation dun circuit. Plusieurs places pour la mme programmation du mme circuit peuvent tre rserves en une seule fois.

11

3.2

Schma des relations

Le schma retenu pour la base de donnes est constitu des relations suivantes (les identiants sont souligns) : LESVILLES (NOMV, PAYS) (n, p) LESVILLES la ville dont le nom est n, est situe dans le pays p. LESMONUMENTS (NOMM, NOMV, PRIX) (nm, nv, p) LESMONUMENTS le monument identi par son nom nm, est situ dans la ville nv . Son prix de visite est p (en euros). Certaines villes nont pas de monument visiter. LESCIRCUITS (NUMC, VDEP, VARR, PRIX) (n, vd, va, pr) LESCIRCUITS le circuit touristique identi par le numro n, part de la ville vd et se termine dans la ville va. Son prix est de pr, qui ne prend pas en compte le prix des monuments visits. La ville de dpart reprsente le point de rendez-vous avec les accompagnateurs. LESETAPES (NUMC, RANG, VETAPE, NBJOURS) (n, r, ve, nbj ) LESETAPES la rime tape du circuit n se droule dans la ville ve, o le sjour est de nbj jours. On fait comme hypothse que lorsquune ville est dans un circuit, tous ses monuments sont visits. De plus, r 1, et les villes de dpart et darrive (VARR et VDEP de LESCIRCUITS) sont dans LESETAPES lorsquelles sont visites. LESPROGRAMMATIONS (NUMC, DATEDEP, NBPLACES) (n, d, nbl) LESPROGRAMMATIONS le circuit identi par le numro n, programm la date d dispose encore de nbl places disponibles. Le mme circuit peut tre programm direntes dates. LESRESERVATIONS (NUMR, NOMC, NUMC, DATEDEP, NBRES) (nr, no, nc, d, nbr) LESRESERVATIONS le client de nom no, a eectu une rservation identie par nr, sur le circuit nc programm la date d. Il a rserv nbr places. Les domaines associs sont : domaine(NOMC) = {Bonemine, Corto, etc.} domaine(NOMM) = {Tower Bridge, Madame Tussau, etc.} domaine(VETAPE) = domaine(VDEP) = domaine(VARR) = domaine(NOMV) = {Paris, Florence, Brianon, etc.} domaine(PAYS) = {Italie, Finlande, France, etc.} domaine(NUMC) = domaine(NUMR) = domaine(RANG) = domaine(NBRES) = domaine(NBJOURS) = domaine(PRIX) = entiers > 0 domaine(NBPLACES) = entiers 0 domaine(DATEDEP) = dates Les contraintes dintgrit rfrentielle sont : LESRESERVATIONS(NUMC, DATEDEP) LESPROGRAMMATIONS(NUMC, DATEDEP) LESPROGRAMMATIONS(NUMC) LESCIRCUITS(NUMC) LESETAPES(NUMC) LESCIRCUITS(NUMC) LESETAPES(VETAPE) LESVILLES(NOMV) LESCIRCUITS(VDEP) LESVILLES(NOMV) LESCIRCUITS(VARR) LESVILLES(NOMV) LESMONUMENTS(NOMV) LESVILLES(NOMV)

12

Remarque 1 On dit quun circuit passe par une ville v, lorsque v est une des tapes, ou la ville arrive, ou la ville de dpart (ou inclusif ) ; On dit quun circuit visite une ville lorsque celle-ci est une fois une tape de ce circuit (Cf. 3.1).

3.3

Questions

Remarque 2 An de ne programmer aucune constante les requtes devront tre paramtres. Les rsultats seront ordonns et sans rptition de valeurs. Par exemple, la requte ci-dessous est paramtre par un numro du circuit et un nom de ville : select * from Circuit where nc = &num and vdep = &villed ; Lusage des requtes paramtres peut tre facilit en utilisant les instructions prompt et accept proposes par SQL (voir lannexe ou la documentation en ligne : help prompt et help accept). Traduisez en algbre relationnelle et en SQL les requtes suivantes : 1. 2. 3. 4. Donner le numro, les villes de dpart et darrive des circuits qui dmarrent aprs une date donne. Donner les noms des clients qui ont rserv au moins un circuit qui passe par un pays donn. Donner le nom des clients qui ne visitent aucun monument. Donner le numro, le prix de base (sans tenir compte du prix des monuments visits) et la date de dpart des circuits qui ont encore des places disponibles et dont le nombre de jours est infrieur ou gal un entier donn. 5. Donner le numro, le nombre total de jours et le prix de base des circuits qui nont aucune rservation. 6. Donner les noms des villes visites par Milou (cest--dire les villes tapes). 7. Donner les noms des villes et des monuments visits par Milou. Le rsultat devra faire apparatre toutes les villes tapes, mme celles o aucun monument nest visit. 8. Donner les noms des villes visites par Milou avec le nombre de monuments dans chaque ville. 9. Pour chacune des villes visites par Milou, donner le prix total pour visiter tous les monuments de cette ville (ce prix est nul sil ny a aucun monument visit). 10. Donner les noms des pays, des villes et des monuments visits par un client donn. Le rsultat devra faire apparatre aussi les pays et les villes sans monument. 11. Donner la liste des numros des circuits, en ordre croissant, qui passent dans toutes les villes dun pays donn. 12. Pour chaque circuit restant dans le mme pays, donner ce pays et le numro du circuit. 13. Pour tous les circuits qui passent dans un pays donn, donner les dates de toutes leurs programmations et, chaque fois, la date darrive dans le pays en question. 14. Etablir un rcapitulatif faisant apparatre, pour chaque circuit : numro du circuit cot total (prix + visite des monuments) taux de remplissage moyen Taux moyen de remplissage = taux moyen de remplissage dun circuit sur toutes les programmations. Taux de remplissage pour une programmation de circuit = nombre de places rserves / nombre de places oertes. 15. Pour chaque circuit, donn par son numro, quelle est la date de programmation pour laquelle il y a le plus de places rserves ? 13

14

Chapitre 4

Conception de Bases de Donnes


4.1
4.1.1

Exercice 1
Problme

Une cinmathque dsire automatiser son systme dinformation. Celui-ci concerne au maximum 500 lms, 20 ralisateurs et 40 acteurs principaux. En moyenne, on constate les points suivants : Un lm a deux acteurs principaux. Un ralisateur a tourn 25 lms. Un acteur a tourn dans 25 lms. En outre, on a not les rgles de gestion suivantes : Tout lm a un et un seul ralisateur. Tout ralisateur a fait au moins un lm. Tout lm a au moins un acteur principal. Tout acteur principal a jou dans au moins un lm. Ci-dessous, vous avez les indications sur les donnes ncessaires : Attribut NOFILM TITRE NOR NOMR PRENOMR DATEENG NOA NOMA PRENOMA Libell Identiant du lm Titre du lm Identiant dun ralisateur Nom dun ralisateur Prnom dun ralisateur Date dengagement dun acteur dans un lm Identiant dun acteur Nom dun acteur Prnom dun acteur Domaine Numrique Chane de caractres Numrique Chane de caractres Chane de caractres Date Numrique Chane de caractres Chane de caractres

4.1.2

Questions

Donner le diagramme de classes correspondant lnonc. Traduire le diagramme en schma relationnel. 15

4.2
4.2.1

Exercice 2
Problme

Une auto-cole comprend des moniteurs et des vhicules. Elle prpare les lves passer un permis dun type donn. A chaque type de permis correspond un ensemble de caractristiques rassembles sous forme dun libell. Les moniteurs donnent des leons aux lves. On souhaite stock le nom et le prnom des moniteurs ainsi que ceux des lves. Les moniteurs et les lves sont identis par un numro unique. Chaque leon est donne par un seul moniteur, pour un seul lve la fois et une certaine dure. Un lve ne passe quun seul type de permis et napprend conduire que sur un seul vhicule. Chaque vhicule a un nom (clio, audi TT) et est identi par son immatriculation. Le prix dun permis est forfaitaire, quel que soit le nombre de leons.

4.2.2

Questions

Donner le diagramme de classes correspondant lnonc. Traduire le diagramme en schma relationnel.

4.3
4.3.1

Exercice 3
Problme

LAFP (Agence Flamande de Presse) est une agence de presse spcialise dans la production de reportages tlvisuels. Son mtier : Proposer des reportages aux tlvisions du monde entier. Voici une partie du diagramme de classes ncessaire la gestion de lagence : Journalistes IDJ ralise 1..* 0..* NOMJ PRENOMJ Reportages est prsent dans JTs est dius par Chanes IDR 1 IDTV 1..* 0..* IDJT 0..* TITRER DATEJT DUREER
0.. 1

concerne

Sujets IDS LIBELLES Le dictionnaire (simpli) des donnes du diagramme est le suivant :
Attribut IDJ NOMJ PRENOMJ IDR TITRER DUREER IDS LIBELLES IDJT DATEJT IDTV Dsignation Identiant dun journaliste Nom dun journaliste Prnom dun journaliste Identiant dun reportage Titre dun reportage Dure dun reportage Identiant dun sujet Descriptif dun sujet Identiant dun journal tlvis Date dun journal tlvis Identiant dune chane de tlvision Domaine Chane de caractres Chane de caractres Chane de caractres Chane de caractres Chane de caractres Rel Chane de caractres Chane de caractres Entier naturel Date Chane de caractres Commentaires 12 caractres

13 caractres (code-barre) Exprim en secondes Code 3 caractres Numro automatique Ex : 10/09/2009 Ex : CNN, RTBF, ARTE

Un reportage est vendu une chane TV pour une diusion lors dun JT. Lacqureur (une chane TV) a la possibilit de rediuser le reportage autant de fois quil le souhaite ds lors que le reportage nest pas coup ou mont diremment. 16

4.3.2

Questions

1. Sur les seules informations fournies par le diagramme de classes ci-dessus, rpondre aux questions suivantes (vos rponses doivent tre justies) : (a) Un reportage peut-il tre ralis par plusieurs journalistes ? (b) Un reportage peut-il ne pas tre ralis par un journaliste ? (c) Un reportage peut-il tre prsent dans des JTs de chanes concurrentes ? (d) Un reportage peut-il ne jamais tre prsent dans un JT ? (e) Peut-il y avoir plusieurs reportages sur le mme sujet dans le mme JT ? (f) Un sujet dtermine-t-il un unique reportage ? 2. Pour chaque reportage, lquipe de rdaction de lAFP veut galement pouvoir grer les techniciens ayant collabor au tournage ainsi que les personnalits interviewes. Les informations ncessaires la gestion de ces personnes (techniciens et personnalits) sont identiques celles gres pour les journalistes. Par ailleurs, certains reportages doivent pouvoir faire lobjet dune exclusivit avec certaines chanes de tlvision. (a) Complter le diagramme de classes de telle sorte que ces nouvelles informations soient prises en compte. (b) Justier brivement les nouvelles cardinalits. (c) Donner le schma relationnel complet du diagramme de classes.

4.4
4.4.1

Exercice 4
Problme

Un oce HLM gre des cits composes de btiments, eux-mmes composs dappartements. Ces appartements sont libres ou lous des locataires. Un locataire peut louer plusieurs appartements. Un appartement, sil est lou, na quun seul locataire. Certaines informations sont ncessaires la bonne gestion de chaque appartement comme, par exemple, ltage o il se trouve, le montant de son loyer, si un garage y est aect, la ville et ladresse o il se trouve, le nom et le prnom de son locataire (sil en a un). . . Dans chaque cit, les btiments sont numrots squentiellement partir de 1. De mme, dans un btiment, les appartements sont numrots squentiellement partir de 1. Chaque cit est sous la responsabilit dun unique gardien, lui-mme pouvant avoir plusieurs cits sa charge. On souhaite stocker le nom et le prnom de chaque gardien. Un gardien est identi par un numro unique. Chaque appartement appartient type de logement (F1 F6) correspondant un certain nombre de caractristiques prcises regroupes sous la forme dun libell. Pour chaque appartement, des oprations dentretien peuvent tre eectues par des artisans. On souhaite stocker les noms et prnoms des artisans, ces derniers sont identis par un numro. Pour chaque oprations dentretiens, on souhaite stocker le prix et le dtail de lopration.

4.4.2

Questions

Donner le diagramme de classes correspondant lnonc. Traduire le diagramme en schma relationnel. 17

4.5
4.5.1

Exercice 5
Problme

(Toute ressemblance avec des personnes, des organismes ou des faits existant ou ayant exist ne serait que pure concidence) Vous avez t embauch le 1er mars 2012 par la socit THG-EPO, socit spcialise dans lapprovisionnement de mdicaments, remdes et substances stimulantes pour sportifs. Les clients de THG-EPO sont des sportifs de haut niveau. Ses fournisseurs sont des socits pharmaceutiques pour la plupart implantes ltranger (Belgique, Etats-Unis, Pays-Bas, Uruguay, . . .). A sa cration en 1998, THG-EPO ne comptait quune dizaine de fournisseurs belges pour une vingtaine de cyclistes runis dans la seule quipe Fastinos. Depuis THG-EPO fournit plus de cinq mille sportifs dans des disciplines trs diverses. Par, exemple, en athltisme, football, ou mme aux jeux dchecs. THG-EPO emploie 530 personnes pour un chire daaire annuel denviron 300 millions deuros. Ses activits stendent sur lEurope entire. Malheureusement, cette croissance exponentielle a t entache par quelques aaires, surmdiatises selon Mr Ritchie Vorinquo, PDG de THG-EPO. Fort de cette exprience et an de prvenir tout nouvel incident, Mr Vorinquo a dcid quil tait dsormais ncessaire de suivre prcisment la pharmacope prescrite par les mdecins sportifs aux clients de THG-EPO. Cette dcision devrait modier en profondeur la stratgie marketing de la socit, en qute dimage dsormais irrprochable, base sur le contrle des substances absorbes par les sportifs. THG-EPO vous a donc recrut au dbut du mois de mars pour une dure indtermine en qualit de responsable du groupe de pilotage charg de la mise en oeuvre du nouveau schma directeur. Depuis le dbut du mois de mars, votre analyse de lexistant et des besoins vous a conduit recenser les informations suivantes : La socit dispose dun chier clients comportant pour chaque client (sportif), son identiant, ses nom et prnom, son ge, son adresse, sa nationalit et un numro de compte en Suisse. Les mdecins sont identis par un numro. Pour chaque docteur, on connat ses nom et prnom, ses spcialits (toutes les spcialits tant elle-mme rpertories) et ses annes dexpriences en tant que mdecin sportif. Les fournisseurs (des socits pharmaceutiques) sont identis par leur numro dinscription IPF (International Pharmaceutical Federation). On a besoin de leur nom, leur adresse, leur numro de tlphone et de fax. Chaque substance pharmaceutique (mdicament) est identie par un numro. Les informations ncessaires sont le nom de la molcule et sa formule chimique. Chaque mdicament est fourni par une socit pharmaceutique donne. Lorsquune socit pharmaceutique arrte de fournir THG-EPO en mdicaments, les informations la concernant ne sont pas gardes (y compris les mdicaments quelle fournissait). THG-EPO dispose de centres de distribution (succursales) implants dans direntes villes europennes. Chaque centre est identi par un nom dinscription sur le registre du commerce du pays o il se trouve. Outre le nom, les informations concernant ces centres sont leur adresse, leur pays dimplantation, le nom de leur directeur, leur numros de tlphone et de fax. Chaque centre est libre de pratiquer pour chaque mdicament le prix de vente quil souhaite (le prix dpend souvent du pays, de la dicult de se procurer le produit dans le pays). Les centres se fournissent directement auprs des socits pharmaceutiques. Les centres et les compagnies pharmaceutiques sont lis par contrats, chaque compagnie pouvant passer des contrats avec plusieurs centres, chaque centre pouvant passer des contrats avec plusieurs compagnies. Pour chaque contrat, on doit connatre la date dentre en vigueur du contrat, la date de n du contrat et le texte du contrat. Les mdecins prescrivent des mdicaments aux sportifs. Un mdecin peut prescrire un ou plusieurs mdicaments plusieurs sportifs. Un unique mdecin est identi pour chaque sportif comme son mdecin traitant. Chaque sportif peut recevoir des prescriptions par un mdecin autre que son mdecin 18

traitant. Chaque prescription dun mdicament est date et on a besoin de stocker la posologie prescrite (quantit, frquence).

4.5.2

Questions

Donner le diagramme de classes correspondant lnonc. Traduire le diagramme en schma relationnel. Pour chacune des hypothses suivantes, le diagramme est-il modi ? Si tel est le cas, redessinez la partie qui est modie. Sinon, expliquez en quelques lignes pourquoi le diagramme nest pas modi. Hypothse A : Au lieu dtre libre dans chaque centre de distribution, le prix de chaque mdicament est x de faon unique pour tous les centres. Hypothse B : Chaque mdicament peut tre vendu par plusieurs socits pharmaceutiques.

19

20

Chapitre 5

Conception en SQL
5.1 La base de donne ZOO

Le directeur dun zoo a informatis la gestion de son tablissement. Dans ce zoo, on trouve des animaux rpertoris par type (lion, lopard, girafe, escargot, ...). Chaque animal possde un nom (Charly, Arthur, Enzo, ...) qui lidentie de faon unique, une date de naissance et un pays dorigine. On retient galement les maladies que chaque animal a contractes depuis son arrive au zoo. Les animaux sont logs dans des cages. Chaque cage peut recevoir un ou plusieurs animaux. Certaines cages peuvent tre inoccupes. Une cage correspond une certaine fonctionnalit, qui nest pas forcment lie un type danimal donn (par exemple une cage peut convenir la fois aux girafes, aux lphants et aux fauves, une autre aux grands oiseaux, ...). Une cage est identie par un numro, elle est situe dans une alle, identie aussi par un numro. Des personnes sont employes par le zoo pour entretenir les cages et soigner les animaux. Chaque employ est identie par son nom, et on connat la ville o elle rside. Il existe deux types de postes pour les employs : gardien ou responsable. Chaque employ est aect un unique poste : soit gardien, soit responsable. Un gardien soccupe de une ou de plusieurs cages, et un responsable a la charge de toutes les cages de une ou de plusieurs alles. Une alle est sous la responsabilit dun seul employ et toute cage occupe par au moins un animal est garde par au moins un gardien ; les cages inoccupes ne sont pas gardes.

5.2

Schma relationnel

Ci-dessous nous proposons un schma relationnel traduisant lnonc.

5.2.1

Les relations

LesEmployes(nomE,adresse) LesResponsables(noAllee,nomE) LesCages(noCage,fonction,noAllee) LesGardiens(noCage,nomE) LesAnimaux(nomA,sexe,type,pays,anNais,noCage) LesMaladies(nomA,nomM) 21

5.2.2

Domaines
Domaine chane de caractres chane de caractres entier entier chane de caractres chane de caractres chane de caractres chane de caractres chane de caractres chane de caractres entier Contraintes non nul non nulle entre 1 et 999, non nulle entre 1 et 999, non nul non nulle

Attribut nomE adresse noAllee noCage fonction nomA nomM sexe type pays anNais

femelle ou male ou hermaphrodite, valeur par dfaut male non nul valeur par dfaut France 1900

5.2.3

Contraintes dintgrit

LesResponsables(nomE) LesEmployes(nomE) LesCages(noAllee) LesResponsables(noAllee) LesGardiens(nomE) LesEmployes(nomE) LesGardiens(noCage) LesCages(noCage) LesAnimaux(noCage) LesCages(noCage) LesMaladies(nomA) LesAnimaux(nomA) Lorsquune ligne est supprime dans une table, toutes les lignes qui y font rfrence (dans les autres tables) doivent tre supprimes.

5.3

Cration

Implanter en SQL le schma relationnel dcrit dans la section prcdente. Vous devrez respecter les domaines et contraintes donnes, notamment les cls primaires et trangres.

5.4

Remplir la base

Une base zoo existe dj sur le serveur. En crant votre base, vous ncrasez pas lexistant. Lorsque vous faites une requte sur une de vos tables, par exemple SELECT * FROM LesAnimaux, La table LesAnimaux est en fait la table foo.LesAnimaux o foo est votre login. On peut alors accder aux donnes de la base pr-existante en utilisant le login de son crateur, ici zoo. Par exemple : SELECT * FROM zoo.LesAnimaux. Ainsi, vous pouvez remplir vos tables partir de la base de zoo. Par exemple : INSERT INTO LesEmployes(nomE,adresse) SELECT nomE, adresse FROM zoo.LesEmployes ;

Rpter lopration pour chacune de vos tables.

5.5

Dclencheurs (triggers)

Certaines contraintes de lnonc nont pas t traduites par le schma relationnel. Nous proposons donc de les crer partir de dclencheurs. 22

Un employ est soit un gardien soit un responsable mais jamais les deux. Crer deux dclencheurs qui empchent les insertions dans les tables LesResponsables et LesGardiens qui violent la contrainte dexclusion. Une cage vide nest pas garde. Crer un dclencheur qui lorsquune cage devient vide (DELETE dans LesAnimaux), enlve les gardiens aects cette cage. Une cage non vide doit tre garde par au moins un gardien. Crer un dclencheur qui lorsquun animal est ajout, vrie si la cage occupe par lanimal est garde et le cas chant, aecte Scholl comme gardien.

23

24

Chapitre 6

JDBC/Servlet
Lobjectif de ce TD est de raliser une application internet faisant des accs la base de donnes Zoo. Cette application sera base sur les servlets et JDBC (Java DataBase Connectivity). On utilisera de plus pour la compilation et la gestion des rpertoires loutil ant du projet Apache.

6.1

Mise en place

Tout dabord, vous devez mettre en place la base de donne. Pour cela connectez-vous la machine im2ag-oracle : ssh im2ag-oracle.e.ujf-grenoble.fr Ensuite tlchargez le script de cration de la base Zoo : wget www-verimag.imag.fr/~devismes/BD/create_zoo_eleve.sql Connectez-vous sqlplus. Puis excutez le script : start create_zoo_eleve; Puis, quittez sqlplus (exit) et quittez im2ag-oracle (exit). Vous allez maintenant installer et congurer un squelette dapplication utilisant loutil ant. Connectezvous en mode graphique la machine im2ag-tomcat : ssh -X im2ag-tomcat.e.ujf-grenoble.fr Ensuite tlchargez le squelette Zoo : wget www-verimag.imag.fr/~devismes/BD/appliEleve2.tgz Dcompressez le chier : tar -xvzf appliEleve2.tgz Modiez les droits daccs votre home et au rpertoire appliEleve2 pour autoriser laccs en lecture et excution tous les utilisateurs : cd chmod ugo+rx . chmod ugo+rx appliEleve2 25

Positionnez-vous dans le rpertoire appliEleve2. Editez le chier de conguration build.properties. Ce chier contient un certain nombre dinformations permettant ant de dployer lapplication : location du server Apache, le login et le mot de passe permettant dy accder, lurl du manager qui va dployer votre site et enn le point dentre du site (app.path). Ce point dentre doit tre dirent pour chaque tudiant, aussi nommez ce point dentre avec votre propre login : app.path=/login Puis mettez jour la conguration de ant en tapant : ant clean ant est maintenant prt tre utiliser.

6.2

Utilisation de ant

Les sources des applications sont stockes dans le rpertoire src. Le squelette de lapplication Zoo est donc dans src/zoo. Noter qu chaque chier source correspond deux entres servlet et servlet-mapping dans le chier de conguration appliEleve2/web/WEB-INF/web.xml. Ainsi, si vous souhaitez ajouter des chiers sources (ce qui nest pas ncessaire lors de ce TD), il est obligatoire de modier ce chier de conguration en ajoutant les entres appropries. Noter enn, que appliEleve2/web/WEB-INF/lib contient les bibliothques supplmentaires ncessaires, ici ojdbc14.jar (le pilote permettant de communiquer avec Oracle). Pour dployer le squelette dapplication, placez-vous dans le rpertoire appliEleve2 et tapez : ant install Par la suite, pour redployer lapplication aprs des modications tapez : ant remove install En cas dchec, par exemple suite une erreur de compilation, votre site a t supprim du serveur, donc corrigez votre code puis tapez : ant install Si vous avez lanc firefox depuis im2ag-tomcat, votre application est accessible depuis firefox par ladresse : localhost:8080/login Sinon, votre application est accessible depuis http://im2ag-tomcat.e.ujf-grenoble.fr:8080/login/, mais condition que ladresse im2ag-tomcat.e.ujf-grenoble.fr soit liste parmi les exceptions proxy de votre browser internet (Preferences/Advanced/Network/Settings).

6.3

Questions

Le schma relationnel de la base Zoo est rappel dans la section 6.4. Vous pouvez regarder la solution quasi-complte ladresse : localhost:8080/solution/

1. Considrez les chiers AnimalDetails.java et AnimalDetailsAction.java. Modiez-les pour : (a) Acher le sexe et lanne de naissance dun animal slectionn. 26

(b) Acher tous les dtails des animaux venant dun pays choisi dans une liste. 2. Compltez lapplication en ajoutant les fonctions suivantes : (a) Acher les cages inoccupes. (b) Acher le nom des gardiens et du responsable dun animal donn (donn par son nom). (c) Enregistrer une maladie donne pour un animal donn. (d) Modier laectation dun gardien ou dun responsable. (e) Enregistrer un animal et le cas chant, crer une aectation dun employ une cage (rle de gardien).

6.4
6.4.1

La base de donne ZOO


Les relations

LesEmployes(nomE,adresse) LesResponsables(noAllee,nomE) LesCages(noCage,fonction,noAllee) LesGardiens(noCage,nomE) LesAnimaux(nomA,sexe,type,pays,anNais,noCage) LesMaladies(nomA,nomM)

6.4.2

Domaines
Domaine chane de caractres chane de caractres entier entier chane de caractres chane de caractres chane de caractres chane de caractres chane de caractres chane de caractres entier Contraintes non nul non nulle entre 1 et 999, non nulle entre 1 et 999, non nul non nulle

Attribut nomE adresse noAllee noCage fonction nomA nomM sexe type pays anNais

femelle ou male ou hermaphrodite, valeur par dfaut male non nul valeur par dfaut France 1900

6.4.3

Contraintes dintgrit

LesResponsables(nomE) LesEmployes(nomE) LesCages(noAllee) LesResponsables(noAllee) LesGardiens(nomE) LesEmployes(nomE) LesGardiens(noCage) LesCages(noCage) LesAnimaux(noCage) LesCages(noCage) LesMaladies(nomA) LesAnimaux(nomA)

27

28

Chapitre 7

Normalisation
7.1 Exercice 1

Soit la relation R(A, B, C, D, E ). Soit F = {A B, BC E, ED A} un ensemble de dpendances fonctionnelles de R. Questions : 1. Calculer les cls candidates. 2. Justier si R est une 3N F ou non. Si R nest pas une 3N F , appliquer lalgorithme de synthse pour transformer R en 3N F . 3. Calculer les dpendances lmentaires non-triviales. 4. Justier pourquoi R nest pas en BCN F . 5. Mettre R en BCN F .

7.2

Exercice 2

Soit la relation R(A, B, C, D, E ). Soit F = {A C, C B, C D, CE A, CE B } un ensemble de dpendances fonctionnelles de R. Questions : 1. Calculer les cls candidates. 2. Justier si R est une 3N F ou non. Si R nest pas une 3N F , appliquer lalgorithme de synthse pour transformer R en 3N F . 3. Calculer les dpendances lmentaires non-triviales. 4. Justier pourquoi R nest pas en BCN F . 5. Mettre R en BCN F .

7.3

Exercice 3

Soit la relation R(G, R, A, S, P ). Soit F = {G AS, R S, AP R, R P, RSP A} un ensemble de dpendances fonctionnelles de R. 29

Questions : 1. Calculer les cls candidates. 2. Justier si R est une 3N F ou non. Si R nest pas une 3N F , appliquer lalgorithme de synthse pour transformer R en 3N F . 3. Calculer les dpendances lmentaires non-triviales. 4. Justier pourquoi R nest pas en BCN F . 5. Mettre R en BCN F .

30

Annexe A

Dcouvrir Oracle
Laccs au Systme de Gestion de Bases de Donnes (SGBD) Oracle nest possible que sur le serveur im2ag-oracle.

A.1

Connexion Oracle
ssh -X im2ag-oracle.e.ujf-grenoble.fr

Se connecter la machine im2ag-oracle. Pour cela, par exemple, partir dun autre serveur taper :

Vous devez fournir votre nom dutilisateur et votre mot de passe (ceux que vous utilisez habituellement sur le rseau de lUFR IMAG). Vous tes sous Unix, il sache : > Ensuite, appeler le logiciel Oracle en utilisant : > sqlplus Vous devez fournir votre nom dutilisateur (le mme que prcdemment) et le mot de passe spcique Oracle, cest le mme pour tous : bd2012. Vous tes sous Oracle, il sache : SQL> Pour sortir dOracle, taper exit, qui ramne sous Unix. Ensuite, pour sortir dUnix, utiliser nouveau exit. Si besoin, pour travailler la fois avec Oracle et avec un diteur, ouvrir deux fentres sous im2ag-oracle (ou tout autre serveur de lUJF) en tapant xterm & ; dans lune, appeler Oracle par sqlplus, et, dans lautre, appeler un diteur par vi (par exemple).

A.2

Excution dune requte en ligne

Attention, contrairement aux TDs, le nom des tables dans les requtes doit toujours tre prx par le nom de la base laquelle la table appartient. Par exemple, dans lenvironnement Oracle, taper la ligne suivante et analyser le rsultat : SQL> select nom from biblio.LesAdherents; Ensuite, taper la ligne suivante et analyser le rsultat : SQL> select nom from biblio.LesAdherents 31

Pour la prsentation des jeux dessai, les formats dachage peuvent tre re-dnis en utilisant les instructions column, set linesize, set pagesize, etc. Taper help nom_commande pour plus de dtails. Pour connatre les noms des bases correspondant aux tables, taper (utiliser la clause WHERE pour chercher le nom de la base dune table particulire) : SQL> select owner, table_name from all_tables; Noter que nous utilisons principalements les bases : zoo, repas, agence, et batiments. Pour avoir une description des colonnes de la table biblio.LesAdherents, taper : SQL> desc biblio.LesAdherents;

A.3

Excution dune requte partir dun chier

La plupart du temps, on prpare les requtes dans un chier quon demande ensuite Oracle dexcuter, en utilisant la commande start (ou le raccourci @). Dans un chier de suxe .sql, par exemple Req1.sql, taper le texte suivant : -- le nom des adhrents select nom from biblio.LesAdherents; La ligne commenant par le double tiret est une ligne de commentaires, les autres lignes forment une requte SQL. Il ne faut pas placer de commentaires lintrieur dune requte. Pour excuter cette requte, taper sous Oracle : SQL> start Req1 Le systme cherche alors le chier Req1.sql et lexcute. Le rsultat doit tre le mme que lorsquon tape la requte en ligne. Essayer direntes variantes dans le chier Req1.sql, les faire excuter et analyser le rsultat. Si Oracle indique des erreurs, les corriger. Par exemple ( vous de complter avec des commentaires) : select noAdh, nom, prenom from biblio.LesAdherents where adresse = Meylan; Sur lexemple ci-dessus, essayer diverses combinaisons de majuscules et minuscules. Ensuite, essayer en remplaant la ligne : where adresse = Meylan; par une des lignes suivantes : where datAdh < to_date(01/06/2011,DD/MM/YYYY); where anNais < 1960; where noAdh < 12; Essayer aussi dcrire plusieurs requtes lune aprs lautre dans le mme chier. 32

A.4

Stockage des rsultats des requtes dans un chier

Pour stocker automatiquement les rsultats des requtes dans un chier, utiliser spool, en insrant dans le chier Req1.sql une ligne en haut et une ligne en bas : spool ResReq1 ... (ici vos requtes) ... spool off; Comme prcdemment, taper sous Oracle : SQL> start Req1 Un chier est cr automatiquement, de nom ResReq1.lst (le nom que vous avez donn, suivi du suxe .lst). Ouvrir le chier ResReq1.lst pour voir son contenu. Remarque 3 On peut remplacer spool ResReq1 par spool Req1, le systme ne confond pas les chiers Req1.lst et Req1.sql puisquils nont pas le mme suxe.

A.5

Requtes paramtres

Dans un chier de nom par exemple Req2.sql, taper le texte suivant (o accept et prompt sont des mots-cls dOracle) : -- le numro, le nom et le prnom des adhrents -- qui habitent une adresse donne -- ou qui ont un numro dadhrent suprieur un numro donn accept ladresse prompt Donner une adresse : accept lenumero prompt Donner un numro dadhrent : select noAdh, nom, prenom from biblio.LesAdherents where adresse = &ladresse or noAdh > &lenumero; Remarque 4 Attention lutilisation des quotes ! Il faut les doubler pour dadhrent (dans un prompt), il faut en mettre pour &ladresse (chane de caractres) mais pas pour &lenumero (nombre). Taper start Req2. Le systme imprime le texte Donner une adresse : (sans quotes). Rpondre en donnant une adresse (sans quotes). Puis le systme imprime le texte Donner un numro dadhrent : (sans quotes). Rpondre en donnant un entier. Alors le systme excute la requte.

33