Вы находитесь на странице: 1из 282

LES SYSTEMES DE GESTION DE BASES DE DONNEES

VERSION 2.0

MANUEL DE L'ELEVE

Pierre Stockreiser Lyce Technique d'Esch-s-Alzette


Aot-Septembre 1999

Je tiens remercier M. Sylvain Piren, Professeur-Ingnieur au Lyce Technique d'Esch-s-Alzette, pour avoir essentiellement contribu la rdaction de ce cours.

Je remercie galement les personnes suivantes pour leur support respectivement leur influence pendant le travail de recherche et de rdaction. M. Christian Lucius, Professeur de Sciences au Lyce Technique Michel-Lucius M. Ren Weber, Professeur-Ingnieur au Lyce Technique des Arts et Mtiers M. Jean-Marie Ottel, Professeur-Ingnieur au Lyce Technique Ecole de Commerce et Gestion

P. Stockreiser

Prface

Ce document est un support pour les cours en informatique des classes de 13CG. La structure et le contenu des chapitres de ce document ont t synchroniss avec le contenu du programme tabli par la CNPI. Le cours met l'accent sur les concepts et techniques fondamentaux des bases de donnes relationnelles, ainsi que sur la conception et l'implmentation de systmes informatiques lmentaires de gestion. Le cours est subdivis en quatre parties: PARTIE 1 : Modlisation d'un systme d'information PARTIE 2 : Exploitation des bases de donnes relationnelles PARTIE 3 : Protection des donnes PARTIE 4 : Travaux sur logiciel (chapitres 1 4) (chapitres 5 9) (chapitre 10) (chapitre 11)

Ce cours n'est pas du tout un manuel d'utilisation de MS-Access, de Win'Design respectivement d'un autre logiciel. Le cours se limite aux concepts importants en relation avec le sujet. Dans les rubriques TP, seulement les manipulations les plus importantes sont mentionnes. Symboles utiliss l'intrieur de cet ouvrage: Paragraphe important Exercice Exercice TP

Remarque pdagogique

Manipulation sur logiciel

Table des matires:


1. Analyse des systmes d'information............................................................................9
1.1 Introduction...................................................................................................................9 1.2 Dfinition de l'information et des systmes d'information.......................................10 1.3 Les donnes, les traitements et les informations.......................................................11 1.4 La reprsentation informatique des donnes............................................................12

2. Dmarche de modlisation des donnes...................................................................13


2.1 Le groupe d'tude (angl. Project group)...................................................................13 2.2 Les tapes.....................................................................................................................14 2.3 Sources d'information.................................................................................................15

3. Mthode de modlisation des donnes......................................................................16


3.1 Dfinition......................................................................................................................16 3.2 Pourquoi modliser ?..................................................................................................18 3.3 Le modle conceptuel des donnes (MCD)................................................................20 3.3.1 Dfinition................................................................................................................20 3.3.2 La notion d'entit.....................................................................................................21 3.3.3 La notion de proprit.............................................................................................22 3.3.4 La notion d'identifiant.............................................................................................24 3.3.5 La notion de relation ...............................................................................................25 3.3.5.1 Dfinition..........................................................................................................25 3.3.5.2 Les cardinalits d'une relation...........................................................................26 3.3.5.3 Proprits d'une relation....................................................................................30 3.3.6 Exemple "KaafKaaf"...............................................................................................31 3.3.7 Exemple "Gestion d'cole".....................................................................................35 3.3.8 Lutilisation dune relation ternaire.........................................................................37 3.3.9 Les contraintes d'intgrit fonctionnelle (CIF)........................................................38 3.3.10 Exercices...............................................................................................................40 3.3.11 Cas particuliers du MCD.......................................................................................48 3.3.11.1 Plusieurs relations diffrentes entre deux entits............................................48 3.3.11.2 Relation rflexive et rle d'une patte de relation.............................................48 3.3.11.3 La notion d'identifiant relatif..........................................................................49 3.3.11.4 Historisation...................................................................................................50 3.3.12 Exercices...............................................................................................................51 3.4 Le modle logique des donnes (MLD).....................................................................57 3.4.1 Dfinition................................................................................................................57 3.4.2 Rgles de transformation du MCD au MLD............................................................59 3.4.2.1 Transformation des entits................................................................................59 3.4.2.2 Transformation des relations binaires du type (x,n) (x,1)...............................59 3.4.2.3 Transformation des relations binaires du type (x,1) (x,1)..............................60 3.4.2.4 Transformation des relations binaires du type (x,n) (x,n)...............................61 3.4.2.5 Transformation des relations ternaires.............................................................61 3.4.2.6 Transformation de plusieurs relations entre 2 entits........................................62 3.4.2.7 Transformation des relations rflexives............................................................62 3.4.2.8 Transformation de l'identifiant relatif...............................................................63 3.4.2.9 Transformation de l'historisation .....................................................................64 3.4.3 Exemple "KaafKaaf"...............................................................................................66 3.4.4 Exercices................................................................................................................67 3.5 Le modle physique des donnes (MPD)...................................................................70

3.5.1 Dfinition................................................................................................................70 3.5.2 Passage du MLD au MPD.......................................................................................70 3.5.3 Les contraintes d'intgrit........................................................................................74 3.5.3.1 Les types de contraintes d'intgrit...................................................................74

4. Utilisation d'un outil de modlisation......................................................................78


4.1 Dfinition......................................................................................................................78 4.2 Fonctionnalits ............................................................................................................80

5. Les systmes de gestion de bases de donnes...........................................................82


5.1 Dfinitions ...................................................................................................................82 5.2 Un peu d'histoire.........................................................................................................84 5.3 Les composants d'une base de donnes relationnelle...............................................86 5.4 Structures physiques et logiques................................................................................88 5.5 Les rseaux informatiques..........................................................................................90 5.6 L'approche Client/Serveur.........................................................................................94 5.6.1 La priode des ordinateurs du type "Mainframe".....................................................94 5.6.2 L'approche Client/Serveur.......................................................................................96

6. Les tables (angl. tables)..............................................................................................98


6.1 Dfinition......................................................................................................................98 6.2 Les champs d'une table.............................................................................................100 6.3 Cl primaire...............................................................................................................102 6.4 Relations entre tables - cl trangre.......................................................................105 6.5 Index...........................................................................................................................106

7. Les requtes (angl. queries).....................................................................................108


7.1 Dfinition....................................................................................................................108 7.2 Introduction au langage SQL ..................................................................................110 7.2.1 Gnralits............................................................................................................110 7.2.2 Syntaxe SQL de base ............................................................................................111 7.2.3 Les critres de slection.........................................................................................114 7.2.4 Comparaison un filtre.........................................................................................116 7.2.5 Les oprateurs logiques.........................................................................................117 7.2.6 Valeur zro, chane vide et valeur indtermine (NULL)......................................120 7.2.7 Comparaison une fourchette de valeurs..............................................................121 7.2.8 Comparaison une liste de valeurs.......................................................................123 7.2.9 Dfinir l'ordre d'une requte de slection...............................................................124 7.2.10 Les valeurs calcules...........................................................................................127 7.2.11 Les fonctions d'agrgation...................................................................................128 7.2.12 Requtes sur les groupes.....................................................................................130 7.2.12.1 La clause GROUP BY..................................................................................130 7.2.12.2 La clause HAVING......................................................................................133 7.2.13 Exercices.............................................................................................................136 7.3 Les requtes SQL multitable....................................................................................142 7.3.1 La jointure.............................................................................................................143 7.3.1.1 Exemple d'introduction...................................................................................143 7.3.1.2 Cration d'une jointure....................................................................................146 7.3.2 Auto- jointure........................................................................................................150 7.3.3 Les requtes imbriques........................................................................................153

7.3.3.1 La requte imbrique renvoie une seule valeur................................................153 7.3.3.2 La requte imbrique renvoie un ensemble de valeurs.....................................156 7.3.4 Exercices SQL.......................................................................................................161 7.4 La mthode QBE.......................................................................................................170

8. Les formulaires (angl. forms)..................................................................................172


8.1 Dfinition....................................................................................................................172 8.2 Types de formulaires.................................................................................................176 8.3 Cration d'un formulaire.........................................................................................178

9. Les rapports (angl. reports).....................................................................................180


9.1 Dfinition....................................................................................................................180 9.2 Cration d'un rapport..............................................................................................186

10. Scurit des donnes..............................................................................................188


10.1 Dfinition..................................................................................................................188 10.2 Les manipulations malveillantes............................................................................188 10.2.1 Dfinition............................................................................................................188 10.2.2 La protection contre les manipulations malveillantes..........................................188 10.3 Les accs non autoriss...........................................................................................190 10.3.1 Dfinition............................................................................................................190 10.3.2 La protection contre les accs non autoriss........................................................190 10.3.2.1 Mot de passe.................................................................................................190 10.3.2.2 Droits d'accs aux objets d'une BD...............................................................190 10.3.2.3 Scurisation du systme d'exploitation..........................................................193 10.4 Les incohrences et pertes de donnes accidentelles.............................................194 10.4.1 Dfinition............................................................................................................194 10.4.2 La protection contre les incohrences et pertes de donnes accidentelles............195 10.4.2.1 Les pertes provoques par des erreurs humaines...........................................195 10.4.2.2 Les pertes des donnes en mmoire interne (RAM)......................................196 10.4.2.3 Les pertes des donnes stockes sur disque dur.............................................196 10.4.3 Les mesures de prvention contre la perte de donnes.........................................196 10.4.3.1 La sauvegarde des donnes (angl. backup)....................................................196 10.4.3.2 La rplication du disque dur (angl. mirroring)..............................................199 10.4.3.3 Rplication du serveur (angl. Backup server)................................................199 10.4.3.4 Les systmes RAID-5...................................................................................199

11. Travaux sur logiciel...............................................................................................201


11.1 TP No 1 : Introduction MS-Access ...................................................................201 11.2 TP No 2 : Les tables................................................................................................205 11.3 TP No 3 : Les requtes portant sur une table......................................................209 11.4 TP No 4 : Les relations et les requtes multitable...............................................226 11.5 TP No 5 : Les formulaires (Cration l'aide d'un assistant et utilisation).......237 11.6 TP No 6 : Les formulaires (Cration sans assistant)...........................................243 11.7 TP No 7 : Les formulaires bass sur plusieurs tables..........................................250 11.8 TP No 8 : Les rapports ..........................................................................................265 11.9 TP No 9 : Les rapports bass sur plusieurs tables...............................................273

12. Annexes...................................................................................................................277

12.1 Bibliographie...........................................................................................................278 12.2 Sites sur Internet.....................................................................................................280 12.3 Index.........................................................................................................................281

Informatique 13CG

Modlisation d'un systme d'information

Partie 1 : Modlisation d'un systme d'information

Pierre Stockreiser

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

1.

Analyse des systmes d'information

1.1 Introduction
La comptitivit d'une entreprise ainsi que sa valeur sur le march sont dtermines par plusieurs lments, d'une importance diffrente selon le secteur d'activit. On peut gnralement regrouper ces lments en deux classes: 1. Les lments matriels L'infrastructure Les supports financiers 2. Les lments intellectuels La comptence des employs La motivation des employs Le recueil et l'exploitation optimale des informations utiles Depuis quelques annes, les responsables des entreprises (banques, assurances, industrie etc. ) ont davantage reconnu et admis que la gestion et l'exploitation des informations sont un facteur de comptitivit ne pas ngliger. Le dveloppement rapide de l'informatique a donn aux entreprises la possibilit d'utiliser des moyens avancs et puissants pour grer et exploiter de trs grands volumes de donnes. Il y a quelques annes, le domaine de la gestion informatique des donnes tait rserv aux informaticiens. Actuellement, les tendances l'intrieur des entreprises ont chang de faon ce que tous les employs soient de plus en plus impliqus dans les diffrents procds lis la gestion et l'exploitation des donnes. De cette faon, un certain niveau de connaissance des principes et des outils standards de l'informatique est aujourd'hui requis pour la plupart des postes disponibles dans les entreprises. Toutefois, il ne suffit pas d'utiliser les ressources informatiques les plus sophistiques pour exploiter au mieux les donnes. En parallle avec les outils informatiques utiles pour grer des donnes, tels que les ordinateurs de plus en plus puissants et les logiciels adapts (SGBD, Tableur etc.), ont t dveloppes des mthodes d'analyse et de conception de systmes d'information. Ces mthodes nous offrent la possibilit d'analyser un systme d'information naturel, tel que par exemple la gestion des livres d'une librairie ou la gestion des sinistres d'une compagnie d'assurances, de concevoir ensuite un modle qui reprsente ce systme et d'implmenter finalement un systme informatique, bas sur ce modle.

Pierre Stockreiser

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

1.2 Dfinition de l'information et des systmes d'information


Une information est un lment qui permet de complter notre connaissance sur une personne, un objet, un vnement . Exemple: Le nom d'une personne est une information concernant cette personne. La couleur d'une voiture est une information concernant cette voiture. La date de la fte scolaire est une information concernant cet vnement. Un systme d'information est constitu par l'ensemble des informations relatives un domaine bien dfini. Exemple: Toutes les informations relatives la gestion d'une librairie constituent le systme d'information de cette librairie. Ce systme peut couvrir le simple stockage des livres, mais galement la gestion des commandes, des ventes et mme des clients. Un systme d'information ne doit pas ncessairement tre informatis. Bien que la plupart des systmes actuels se basent sur la technologie de l'informatique, il existe encore des systmes d'information o l'information est stocke, manipule et communique l'aide de moyens "traditionnels" tels que armoires, classeurs, calculatrices, fiches sur papier etc. . Un systme d'information existe indpendamment des techniques informatiques. Le systme d'information ne doit pas tre confondu avec le systme informatique qui est constitu par les lments suivants: Les ordinateurs Les programmes Les structures de donnes (Fichiers, Bases de donnes)

Dans ce chapitre nous allons dcouvrir une dmarche d'informatisation, qui nous permet de modliser un systme d'information et de le reprsenter l'aide d'un systme informatique. Le but de cette dmarche est de concevoir des systmes stables et optimiss en termes de performance, de fiabilit et de convivialit.

Pierre Stockreiser

10

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

1.3 Les donnes, les traitements et les informations


Bien que les deux termes "informations" et "donnes" soient souvent utiliss comme synonymes1, il existe une diffrence subtile entre eux. Prenons un exemple: Dans une librairie, un client demande au vendeur si le livre "L'tranger" (Albert Camus) est disponible en stock. Le vendeur conseille la base de donnes de la librairie l'aide de son ordinateur et confirme au client que le livre est disponible. Le vendeur a donc donn au client l'information que le livre est en stock. Afin de pouvoir donner cette information, le vendeur a du consulter les donnes qui reprsentent le stock de la librairie. Le fait de consulter le stock constitue un traitement sur les donnes du stock.

Nous pouvons gnraliser: Informations entrantes Informations sortantes

Systme d'information

Un systme d'information contient les donnes et les traitements ncessaires pour assimiler et stocker les informations entrantes et produire les informations sortantes. Dans les systmes d'information nous retrouvons gnralement les traitements suivants: Consultation des donnes; Ajout de donnes; Suppression de donnes; Modification de donnes. Exemple: Le propritaire d'une vidothque reoit une livraison avec des nouvelles cassettes vido. Pour chaque cassette vido, il lit le titre, la langue et la dure et sauvegarde ces informations dans la base de donnes de la vidothque. Il a donc utilis un traitement d'ajout de donnes afin de transformer les informations entrantes (titre, langue, dure) en donnes.

Deux mots sont synonymes quand ils dsignent une mme chose.

Pierre Stockreiser

11

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

1.4 La reprsentation informatique des donnes


Les donnes d'un systme d'information peuvent tre stockes et manipules l'aide d'un outil informatique spcialis dans ce domaine. Actuellement les Systmes de Gestion de Bases de Donnes (SGBD) constituent le type de logiciel le mieux adapt pour implmenter la plupart des systmes d'information. Sachant que les tables forment la base de stockage d'une base de donnes, on peut reprsenter n'importe quel systme d'information par un ensemble de tables dont chacune contient un certain nombre de champs de donnes. Nous allons voir qu'on peut mme dfinir des liens entre ces tables via des champs communs.

Pierre Stockreiser

12

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

2.

Dmarche de modlisation des donnes

2.1 Le groupe d'tude (angl. Project group)


Un systme d'information qui n'est pas trop complexe et volumineux en terme d'informations, peut facilement tre informatis par une seule personne, qui ne doit pas ncessairement tre un informaticien. Il suffit d'tre un peu familiaris avec une mthode de modlisation, et de savoir manipuler un SGBD pour raliser une implmentation informatique, cohrente et fonctionnelle, d'un tel systme d'information. Ds que le systme d'information atteint une certaine envergure (par exemple: informatiser la gestion des sinistres d'une compagnie d'assurances), un groupe d'tude est gnralement cr. Ce groupe ne devra en aucun cas contenir seulement des informaticiens mais galement: Un ou plusieurs reprsentants des futurs utilisateurs du systme informatis (Par exemple: Un employ du service qui gre les sinistres) ; Un ou plusieurs reprsentants de chaque dpartement impliqu (Par exemple: Un employ du service des contrats ) ; Un reprsentant de la direction.

Gnralement, un responsable du groupe (angl. Project Manager) est nomm, afin de coordonner les travaux effectus par le groupe et de suivre le droulement partir de l'analyse jusqu' la mise en place du systme informatis.

Pierre Stockreiser

13

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

2.2 Les tapes


Chaque projet d'informatisation, qu'il soit excut par une seule personne, ou gr par un groupe d'tude, prvoit plusieurs tapes. En gnral, nous avons les tapes suivantes: 1. Analyse de la situation existante et des besoins

2. Cration d'une srie de modles qui permettent de reprsenter tous les aspects importants

3. A partir des modles, implmentation d'une base de donnes

Pierre Stockreiser

14

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

2.3 Sources d'information


La premire tape de chaque projet est donc l'analyse de l'existant et des besoins. Afin de pouvoir raliser une analyse correcte sur laquelle on peut baser la suite du projet, il faut d'abord identifier les sources d'information, et puis collectionner exactement les informations importantes pour le projet. Sources d'information primaires: L'interview avec les utilisateurs; L'tude de documents provenant Bons de commandes, Factures ).

du

systme

d'information

actuel

(Rapports,

Pour les projets d'une certaine envergure s'ajoutent: L'interview avec les responsables des services impliqus; Pourvu que la tche d'analyse soit partage entre plusieurs membres du groupe d'tudes, il faut coordonner les actions et comparer les rsultats avec les autres membres. Pour les projets qui se basent sur un systme dj partiellement informatis s'ajoute: L'tude de l'application informatique existante.

Pierre Stockreiser

15

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.

Mthode de modlisation des donnes

3.1 Dfinition
Nous avons vu que la dmarche classique d'un projet informatique comprend les tapes suivantes: 1. Analyse de la situation existante et des besoins; 2. Cration d'une srie de modles, qui permettent de reprsenter tous les aspects importants; 3. A partir des modles, implmentation d'une base de donnes. En ce qui concerne la premire tape, nous n'allons pas introduire de vraies rgles, mais simplement utiliser nos connaissances de gestion d'une entreprise, notre esprit ouvert et mme notre fantaisie pour analyser correctement la situation existante et les besoins des utilisateurs. Le rsultat de l'analyse est gnralement un ou plusieurs documents, qui contiennent les indications principales sur le fonctionnement dsir du systme informatis. Le document d'analyse contient souvent dj des prototypes de certains documents importants, que le futur systme devra tre capable de produire. Une fois que l'analyse est termine, il s'agit d'laborer une srie de modles, bass sur le document d'analyse. Ces modles nous permettront plus tard d'implmenter une base de donnes, qui contiendra toutes les informations ncessaires au bon fonctionnement du systme informatis. La cration de ces modles se fait selon une certaine mthode. Nous allons baser notre cours sur la mthode MERISE (Mthode d'Etude et de Ralisation Informatique de Systmes d'Entreprise), qui a t dveloppe pendant les annes '70 sous l'impulsion du ministre franais de l'industrie. Merise est aujourd'hui largement rpandue au Luxembourg, mais galement dans beaucoup d'autres pays europens. MERISE prvoit une conception par niveaux, et dfinit pour cela 3 niveaux essentiels: 1. Le niveau conceptuel, qui se base directement sur l'analyse, dcrit l'ensemble des donnes du systme d'information, sans tenir compte de l'implmentation informatique de ces donnes. Ce niveau, qui reprsente donc la signification des donnes, se traduit par un formalisme que nous appelons: Modle conceptuel des donnes (MCD) 2. Le niveau logique, qui se base sur le modle conceptuel des donnes, prend en considration l'implmentation du systme d'information par un SGBD. Ce niveau introduit la notion des tables logiques, et constitue donc le premier pas vers les tables des SGBD. Ce niveau est reprsent par le: Modle logique des donnes (MLD) 3. Le niveau physique, qui se base sur le modle logique des donnes, contient finalement les tables dfinies laide dun SGBD spcifique (p.ex. MS Access, dBASE, Oracle ). Ce niveau est reprsent par le:

Pierre Stockreiser

16

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Modle physique des donnes (MPD)

Voici donc les 4 tapes ncessaires pour traduire un systme d'information naturel en une base de donnes:

Analyse Analyse

MCD MCD

MLD MLD

MPD MPD

Pierre Stockreiser

17

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.2 Pourquoi modliser ?


Nous avons vu quune base de donnes est constitue par un ensemble de tables qui contiennent toutes les donnes de la base. Une mthode de modlisation nous permet de trouver le bon nombre de tables pour une base de donnes et de dterminer quelles donnes sont reprsentes lintrieur de quelle table. Pour linstant, il nous suffit de savoir quune table est un ensemble denregistrements, dont chacun est compos par les mmes champs de donnes. On pourrait comparer une table une liste en MS-Excel1. Les tables sont tudies en dtail dans le chapitre 6. Voici un exemple dune table : Un champ de donnes

Marque
BMW Ford BMW ...

Modle
525i Orion 320i ...

Cylindre
2500 1800 2000 ...

Poids
1360 1080 1200 ... Un enregistrement

A laide dun exemple prcis, nous allons voir pourquoi il est important de bien rflchir sur le nombre de tables dune base de donnes et sur la structure de chaque table. Il sagit de crer une base de donnes pour une caisse de maladie. On veut stocker tous les employs-membres de la caisse avec leur socit-employeur. Afin de faciliter lexercice, nous allons uniquement stocker les informations suivantes pour chaque employ: le numro de lemploy le nom de lemploy le prnom de lemploy le numro de son entreprise le nom de son entreprise la localit o se trouve lentreprise

A premire vue, la solution suivante simpose :

NoEmp

Nom_Emp

Prnom_Emp

NoEntr

Nom_Entr

Localit

102 Boesch Emil 1 Schaffgaer S. r.l. Differdange 103 Midd Erny 2 Gudjr Colmar Berg 104 Witz Evelyne 1 Schaffgaer S. r.l. Differdange 105 Kuhl Menn 1 Schaffgaer S. r.l. Differdange 106 Super Jhemp 2 Gudjr Colmar Berg ... ... ... ... ... ... Nous voyons ici uniquement quelques enregistrements. Une caisse de maladie ayant des miliers de membres, et cette table possdant un enregistrement par membre, on peut bien simaginer la taille relle de la table.

voir cours de la classe 12CG

Pierre Stockreiser

18

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Hors cette solution, bien quelle soit correcte dans le sens le plus large du terme, nous impose un certain nombre de problmes .

Exercice 1
Essayez de trouver en discussion quelques problmes qui peuvent se manifester lors du travail journalier avec cette table.

Exercice 2
Comment est-ce quon pourrait viter ces problmes sans toutefois perdre des informations ?

Pierre Stockreiser

19

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.3 Le modle conceptuel des donnes (MCD)


3.3.1 Dfinition
En se basant sur un document d'analyse, le modle conceptuel des donnes (MCD) fait rfrence tous les objets du systme d'information et des relations entre ces objets. Le formalisme utilis dans ce modle est encore connu sous le nom de "Schma Entit-Relation". Ce formalisme se base autour de 3 concepts principaux, les entits, les relations et les proprits. Voici par exemple un MCD qui reprsente une entreprise avec ses employs.

Entit

Relation

Proprit

Nous allons par la suite dtailler le rle de ces 3 concepts de base du MCD.

Pierre Stockreiser

20

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.3.2 La notion d'entit


Une entit permet de modliser un ensemble d'objets concrets ou abstraits de mme nature. Dans l'exemple du chapitre prcdent , l'entit Entreprise spcifie donc l'ensemble des entreprises, qui nous intressent dans le contexte de notre systme d'information. De mme, l'entit Employs reprsente tous les employs de notre systme d'information.

Une entit est caractrise par son nom et ses proprits. Reprsentation graphique:

Prenons par exemple une entit Client:

Voici quelques exemples de clients:

Chacun de ces clients reprsente une occurrence de l'entit Client.

Pierre Stockreiser

21

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.3.3 La notion de proprit


Une proprit est une donne lmentaire d'une entit. Une proprit est unique dans un MCD; et ne peut pas tre rattache plusieurs entits diffrentes. Reprsentation graphique d'une proprit: Le nom de la proprit est indiqu l'intrieur du rectangle qui reprsente l'entit correspondante. Voici quelques exemples de proprits: Pour une entit Client: Nom du client No.Tl. du client Pour une entit Salari: Nom du salari No. Matricule Salaire mensuel Pour une entit Contrat d'assurance: No Contrat Type d'assurance Montant assur A l'intrieur des occurrences, les proprits prennent des valeurs Exemple: L'entit Client est dfinie par les proprits suivantes:

A l'intrieur de chaque occurrence, chaque proprit prend une valeur, qui est dans la plupart des cas une valeur numrique, une valeur sous forme de texte ou encore une date.

Pierre Stockreiser

22

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

La proprit Nom prend p.ex. les valeurs "Meier", "Muller" et "Weber" dans les 3 occurrences. A lintrieur de chaque occurrence, chaque proprit ne prend quune seule valeur au maximum. Le client 002 par exemple ne peut pas avoir 2 adresses.

Pierre Stockreiser

23

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.3.4 La notion d'identifiant


Afin de pouvoir distinguer les diffrentes occurrences d'une mme entit, l'entit doit tre dote d'un identifiant. L'identifiant est compos d'une ou de plusieurs proprits de l'entit. Chaque occurrence dune entit doit avoir une valeur diffrente pour lidentifiant Le choix d'un identifiant correcte est trs important pour la modlisation: Comme choix pour l'identifiant d'une entit nous distinguons gnralement 3 possibilits: 1. Une proprit naturelle Exemple: Le nom d'un pays pour une entit Pays 2. Une proprit artificielle qui est invente par le crateur du MCD Exemple: Le numro d'un client pour une entit Client 3. Une proprit compose d'autres proprits naturelles Exemple: Le nom et la localit pour une entit Entreprise Reprsentation graphique de l'identifiant d'une entit: La ou les proprits qui constituent l'identifiant d'une entit sont soulignes.

Exercice
Indiquez graphiquement les entits qui reprsentent : 1. les passagers dun vol dune socit arienne. Nous supposons que la socit garde ces informations aprs le vol ; 2. les rsultats sportifs de lentrainement dun coureur ; 3. les mdicaments dune pharmacie.

Pierre Stockreiser

24

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.3.5 La notion de relation


3.3.5.1 Dfinition

Une relation1 dcrit un lien entre deux ou plusieurs entits. Chaque relation possde un nom, gnralement un verbe l'infinitif. Bien qu'une relation n'ait pas d'identifiant propre, elle est implicitement identifie par les identifiants des entits auxquelles elle est lie. Nous distinguons deux types de relations: les relations binaires, qui sont lies 2 entits; les relations ternaires, qui sont lies 3 entits. Exemple d'une relation binaire:

L'occurrence d'une relation est reprsente par les occurrences des entits lies la relation. Voici quelques occurrences de la relation Ecrire.

Une occurrence dune relation est uniquement dtermine par les occurrences des entits lies la relation. Pour chaque occurrence dune relation, lidentifiant compos des identifiants des entits lies la relation doit tre unique.
1

dans certains livres on parle encore dune association pour dsigner une relation

Pierre Stockreiser

25

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.3.5.2

Les cardinalits d'une relation

Une relation est lie chacune de ses entits par une patte. Sur la patte, on indique les cardinalits. Les cardinalits prcisent la participation de l'entit concerne la relation. Le premier nombre indique la cardinalit minimale, le deuxime la cardinalit maximale.

Patte

Cardinalit minimale

Cardinalit maximale

Quelle est la signification des cardinalits ? Exemple 1:

Dans le MCD prcdent, entre l'entit Client et la relation Passer, nous avons les cardinalits suivantes: Cardinalit minimale = 1 , ce qui veut dire que chaque client passe au moins une commande. Cardinalit maximale = n , ce qui veut dire que chaque client peut passer plusieurs (n) commandes.

Pierre Stockreiser

26

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Entre l'entit Commande et la relation Passer, nous retrouvons les cardinalits suivantes: Cardinalit minimale = 1 , donc chaque commande est passe par au moins un client. Cardinalit maximale =1 , chaque commande est passe au maximum par un seul client. Exemple 2:

Entre l'entit Employ et la relation Utiliser, nous avons: Cardinalit minimale = 0 : Certains employs n'utilisent pas d'ordinateur Cardinalit maximale = n:

Entre l'entit Ordinateur et la relation Utiliser, nous avons: Cardinalit minimale = 1 : Cardinalit maximale = n :

De faon gnrale, on peut dire: La cardinalit minimale exprime le nombre minimum de fois qune occurrence d'une entit participe une relation. Cette cardinalit est gnralement 0 ou 1. Cardinalit minimale = 0 : Certaines occurrences de l'entit ne participent pas la relation Cardinalit minimale = 1 : Chaque occurrence de l'entit participe au moins une fois la relation La cardinalit maximale exprime le nombre maximum de fois qune occurrence d'une entit participe une relation. Cette cardinalit vaut souvent 1 ou n, avec n indiquant une valeur >1 mais pas connue priori. Cardinalit maximale = 1 : Chaque occurrence de l'entit participe au maximum une seule fois la relation. Cardinalit maximale = n : Chaque occurrence de l'entit peut participer plusieurs fois la relation.

Pierre Stockreiser

27

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

En pratique, afin de dterminer les bonnes cardinalits, le concepteur doit se rfrer aux rsultats de l'analyse. Exemple 3: Pour les deux cas suivants, on peut affirmer qu'une commande est toujours passe par au moins un client. Une commande est galement passe au maximum par un client. Une commande est donc toujours passe par un et un seul client. Un client passe au moins une commande et au maximum plusieurs (n) commandes. Cette modlisation ne tient pas compte des clients qui ne passent aucune commande. Un client est uniquement considr comme tel s'il passe au moins une commande.

Un client peut passer aucune commande et au maximum plusieurs (n) commandes. Cette modlisation tient compte des clients qui ne passent aucune commande.

Laquelle des deux modlisations est correcte ?

Pierre Stockreiser

28

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Les deux modlisations sont bien sr correctes. Le choix dpend uniquement du rsultat de l'analyse. Imaginez que vous avez fait pendant l'analyse une interview avec un futur utilisateur du systme. Il vous a dit qu'il veut enregistrer dans son systme des clients potentiels, c..d. des personnes dont la compagnie dispose des donnes personnelles, mais qui n'ont encore jamais pass de commande auprs de la compagnie. La compagnie dsire enregistrer les donnes de ces personnes afin de leur envoyer de temps en temps des publicits. Dans ce cas vous devez opter pour la deuxime modlisation.

Exemple 4:

Interprtez cette modlisation :

On dit que Client est l'entit indpendante par rapport la relation disposer (cardinalit minimale = 0) , tandis que Carte_membre est l'entit dpendante par rapport la relation disposer (cardinalit minimale = 1). Une occurrence d'un client peut donc trs bien exister sans carte de membre, mais une carte de membre ne peut jamais exister sans client. La cardinalit minimale nous indique donc si une entit est indpendante ou dpendante. On dit qu'une entit est indpendante par rapport une relation lorsque sa cardinalit minimale vaut 0, et dpendante par rapport une relation lorsque sa cardinalit minimale vaut 1. Une relation ne peut pas tre lie uniquement des entits dpendantes ayant en plus une cardinalit maximale de 1 ! ! !

Pierre Stockreiser

29

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

La modlisation suivante par exemple n'est pas correcte:

Dans ce cas, il faut runir les proprits des deux entits dans une seule.

3.3.5.3

Proprits d'une relation

Une relation peut gnralement tre dote de proprits. Exemple:

Exercice
Pourquoi est-ce quon ne peut pas associer la proprit Anne une des entits ?

Attention: Cette proprit peut mme devenir une partie de l'identifiant. Dans ce cas, elle doit tre souligne.

Pierre Stockreiser

30

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exemple:

Comme un professeur peut avoir la mme classe pendant plusieurs annes (p.ex. Jos Weber 12CG2), un identifiant compos de No_Matricule et Code_Classe n'est pas suffisant, puisquil ne garantit pas lunicit. On y ajoute l'Anne.

Attention: Une relation cardinalit (1,1) n'est jamais porteuse de proprits. Dans ce cas, les proprits migrent dans l'entit portant cette cardinalit (1,1). Exemple:

Cette modlisation n'est pas correcte ! Chaque facture ne possde qu'une et une seule date d'mission, ce qui fait que la proprit Date_mission doit migrer dans l'entit Facture. Voici la modlisation correcte:

3.3.6 Exemple "KaafKaaf"


PARTIE 1

Pierre Stockreiser

31

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

La socit "KaafKaaf" dsire informatiser son systme de facturation. Les factures devraient se prsenter de la faon suivante:

Crez un MCD, qui permet de modliser correctement le systme d'information ncessaire, sachant que: Un client peut bien sr recevoir plusieurs factures, mais il est uniquement considr comme tel partir du moment o il reoit sa premire facture. Une facture concerne un et un seul client.

Remarque: Bien que le numro du client n'apparaisse pas en tant que tel sur la facture, il est prfrable d'ajouter cette proprit artificielle l'entit Client, et de la dfinir comme identifiant de cette entit. Cela nous empche de devoir dfinir un identifiant compos de trop de proprits.

Pierre Stockreiser

32

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

PARTIE 2
Il s'agit d'tendre le MCD de la partie 1. Le responsable de la facturation de la socit dsire rendre les factures plus informatives. Comme un client peut acheter plusieurs articles diffrents en mme temps, la facture devrait indiquer pour chaque article le numro , un libell, le prix unitaire, la quantit vendue et le prix total pour ce type d'article. Voici l'aspect que la facture devrait avoir:

Proposez un nouveau MCD qui reflte ces modifications, en respectant que: Tous les articles disponibles sont stocks (p.ex. No=234 Libell="Marteau" PU=470 Luf.). Mme si un article n'est pas encore considr par une facture, il existe dans le systme d'information.

Pierre Stockreiser

33

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Remarques: L'entit Facture ne contient plus la proprit Montant. Il existe une rgle gnrale de conception qui dit: Aucune proprit qui peut tre calcule partir d'autres proprits existantes, ne devra tre stocke dans le MCD. Pour la mme raison, on n'a pas besoin de modliser explicitement le prix payer pour l'achat d'une quantit d'articles donns. Le prix pour chaque article figurant sur la facture peut tre calcul partir du prix unitaire et de la quantit Nous retrouvons ici le cas d'une relation qui a une proprit. En fait, la proprit Quantit n'est pas spcifique un article, mais l'achat de cet article l'aide d'une facture. Cette faon de modliser la situation est la plus facile, mais il existe une alternative. On peut introduire l'entit abstraite Ligne_de_facture, qui reprsente une ligne de dtail d'une facture, p.ex celle pour le marteau.

Pierre Stockreiser

34

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.3.7 Exemple "Gestion d'cole"


PARTIE 1
Dans une cole, on veut informatiser le systme d'information qui gre les classes. Elaborez un MCD sachant que: Un lve est caractris par son no. matricule, son nom et prnom, ainsi que sa date de naissance. Une classe est caractrise par le nom de la classe (p.ex 13CG2) et par une indication du cycle (valeurs possibles: "infrieur", "moyen", "suprieur"). Il faudra prvoir de connatre la frquentation des classes des lves sur plusieurs annes conscutives. Un lve enregistr dans le systme frquente au moins une classe au cours des annes.

PARTIE 2
Il s'agit maintenant de concevoir une extension au MCD prcdent qui permet de reprsenter la situation suivante: La direction de l'cole dsire galement saisir tous les professeurs dans le systme d'information. Un professeur est caractris par un code interne unique (p.ex. Jemp Muller aura le code JEMU), son nom et prnom et la matire qu'il enseigne. Nous supposons que chaque professeur enseigne une seule matire. Modlisez le fait que chaque classe est enseigne chaque anne par un ou plusieurs enseignants. Un enseignant peut bien sr donner des cours dans plusieurs classes, mais peut galement ne pas donner des cours pendant une ou plusieurs annes.

Pierre Stockreiser

35

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Pierre Stockreiser

36

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.3.8 Lutilisation dune relation ternaire


Lors de lintroduction des relations nous avons dj mentionn la notion de relation ternaire. Une relation ternaire est une relation laquelle sont lie 3 entits. Bien que dans la pratique la plupart des relations soient binaires (2 entits) il existe cependant des situations o lutilisation dune relation ternaire simpose. Exemple : A partir des 3 entits Professeur (CodeProf, Nom, Prnom); Matire(CodeMatire, Libell) et Classe(Nom,Cycle) il sagit de crer un MCD qui renseigne sur le fait quelle matire est enseigne dans quelle classe par quel professeur pour une anne scolaire donne.

Exercice
Essayez de montrer les limites/dfauts dun MCD qui reprsente lnonc de lexemple prcdent en utilisant uniquement des relations binaires.

Solution de lexemple prcdent : Voici une solution qui utilise une relation ternaire

Il existe 3 faons pour lire/interprter ce modle: Un professeur peut enseigner 1 n fois une matire dans une classe. Une matirepeut tre enseigne 1 n fois par un professeur dans une classe. Une classe peut tre enseigne 1 n fois dans une matire par un professeur.

On peut dire que chaque occurrence de la relation enseigner associe un professeur une matire et une classe pour une anne donne. Ou encore, ce modle nous permet de montrer pour chaque anne scolaire quelle matire est enseigne dans quelle classe par quel professseur. Il nest pas toujours facile de dterminer quand il faut utiliser une relation ternaire. Gnralement, on peut dj affirmer que si une ou plusieurs des entits lies une relation ternaire possdent une cardinalit maximale de 1, la modlisation nest pas optimise dans le

Pierre Stockreiser

37

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

sens quil faudrait mieux dcomposer la relation ternaire, c..d. la reprsenter par 2 relations binaires. Exemple : La direction dune chane dhtels dsire grer les sjours des clients dans les diffrents htels. Comme on peut effectivement dire "Un client effectue un sjour dans un htel" on est ammen proposer la modlisation suivante.

Il existe 3 faons pour lire/interprter ce modle: Un client Dans un htel Un sjour peut effectuer 1 n fois un sjour dans un htel. peut tre effectu 0 n fois un sjour par un client. peut tre effectu une et une seule fois par un client dans un htel.

Chaque occurrence de la relation effectuer associe donc un sjour un client et un htel. Hors, cette modlisation porte une contrainte supplmentaire, puisque la cardinalit 1,1 entre l'entit Sjour et la relation nous indique que pour chaque occurrence de Sjour il ne peut exister qu'une et une seule occurrence de la relation. Donc chaque sjour est associ une et une seule fois une combinaison client/htel. Dans ce cas il vaut mieux dcomposer la relation ternaire de la faon suivante:

3.3.9 Les contraintes d'intgrit fonctionnelle (CIF)


Quand on dtermine entre une relation et une entit une cardinalit qui prsente les valeurs 0,1 ou 1,1, alors cette relation est particulire et on dit qu'elle reprsente une Contrainte d'Intgrit Fonctionnelle (CIF).

Pierre Stockreiser

38

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exemple:

La relation Obtenir reprsente une CIF. Une CIF indique que l'une des entits est totalement dtermine par la connaissance de l'autre. Dans notre exemple on peut dire que connaissant une facture bien prcise, on connat avec certitude le client correspondant. Comment est-ce qu'on reprsente une CIF dans un MCD ? Une CIF est reprsente par une flche sur la patte oppose celle ayant une cardinalit 0,1 ou 1,1. L'entit qui est attache cette patte est appele entit cible de la CIF, tandis que l'autre entit constitue l'entit mettrice de la CIF.

Pierre Stockreiser

39

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.3.10

Exercices

Exercice 1
Voici le rsultat simplifi d'une analyse faite auprs d'une compagnie d'assurance qui dsire informatiser la gestion des contrats auto. Un client peut assurer plusieurs voitures auprs de la compagnie. Chaque voiture est assure par un seul contrat. Un contrat assure une seule voiture. En ce qui concerne un client, la compagnie dsire connatre son nom, prnom, adresse complte, numro de tlphone ainsi qu'un numro de compte bancaire avec indication de la banque. Chaque contrat contient un numro de contrat unique, la prime annuelle payer, la date de paiement annuel, la marque de la voiture, le modle de la voiture, le numro d'immatriculation de la voiture, la valeur de la voiture et la date d'acquisition de la voiture. En ignorant la mthode de modlisation, on pourrait crer une BD avec une seule table ayant un champ pour chaque donne indique dans l'analyse. On aurait donc les donnes des clients et des contrats dans une seule table. Quelles en seraient les inconvnients ?

Crez le modle conceptuel des donnes correspondant cette situation

Pierre Stockreiser

40

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exercice 2
Le responsable d'un magasin de location de cassettes vido dsire informatiser le systme de gestion des locations. Voici les informations recueillies pendant l'analyse: Un membre est caractris par son numro membre, son nom, son prnom, son adresse ainsi que sa date de naissance. Ds que la carte de membre est paye (paiement unique), le membre est enregistr dans le systme et il peut dsormais louer des cassettes vido. Un film est caractris par un numro film, un titre, un code langue, un code genre et une dure. Le mme film peut tre disponible en plusieurs exemplaires. Un exemplaire est dtermin par un numro exemplaire ainsi que la date d'achat de l'exemplaire. Lors d'une location, un membre peut louer plusieurs films en mme temps. En principe, une location a une dure d'un jour, mais cette dure peut tre prolonge. Nous supposons qu'un membre rend tous les exemplaires lous en une seule fois. Crez le modle conceptuel des donnes

Pierre Stockreiser

41

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exercice 3
Afin d'informatiser la gestion des sances du cinma Limelight, vous disposez des informations suivantes. Un film est enregistr dans le systme d'information ds que la (les) copie(s) sont arrives au cinma. A partir de ce moment, on commence programmer des sances pour le film en question. Comme le mme film n'est jamais jou dans deux sances parallles, on peut ignorer la gestion des copies. Un film est reprsent par un numro courant interne, qui lui est affect par le gestionnaire des sances. En plus, on s'intresse pour le titre, la langue et la dure du film. Lorsqu'un film apparat en plusieurs langues diffrentes, on cre dans le systme d'information simplement un enregistrement par langue. Chaque film est accompagn en gnral d'une fiche technique, qui renseigne en outre sur le systme son du film (p.ex. DOLBY, THX etc.). Cette information est importante, puisque les capacits en ce qui concerne la reproduction du son varient d'une salle dans une autre. Une salle peut supporter plusieurs systmes diffrents, tandis qu'un film est tourn en utilisant un seul systme son. Un systme son est caractris par un code identificateur ainsi qu'un libell. Le cinma dispose actuellement de 12 salles, avec 3 nouvelles salles en construction. Une salle est prise en compte dans le systme d'information, ds qu'elle est prte pour accueillir des sances. Une salle est caractrise par son numro, sa capacit ainsi que des informations concernant le support des diffrents systmes son. Le systme d'information doit permettre de vendre des tickets pour une sance donne, mme plusieurs jours en avance. La rservation des siges n'tant pas demande, il est toutefois ncessaire que le systme soit capable de prvenir un excs de la capacit d'une salle en ce qui concerne le nombre de tickets vendus. La gestion des prix pour les tickets se fait au niveau des sances, puisque le prix pour voir un mme film peut varier d'une sance une autre (p.ex. Tarif rduit les lundis 16h00). Une sance, qui se droule videmment sans une seule salle, est identifie par un numro courant.

Crez le modle conceptuel des donnes

Pierre Stockreiser

42

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exercice 4
Un club de vente de livres par correspondance propose ses membres l'achat d'un ou de plusieurs livres via des bons de commandes. Pour cela, des bons de commandes ainsi qu'un catalogue sont envoys tous les membres deux fois par an. Le responsable du club dsire informatiser la gestion des commandes de livres. Voici titre d'exemple un bon de commande:

Bicherwuerm S. r.l.
Commande de livres
Votre numro membre : 123578
Veuillez nous indiquer des changements ventuels de vos coordonnes personnelles.

Nom: _________________ Adresse: _________________ Localit: _________________ Votre commande :

Prnom: _____________ CP: _____________ No. Tlphone: _____________

Indiquez s.v.p. pour chaque livre le numro ISBN et le titre (voir catalogue).

Numro ISBN 1 2 3 4 5
Cher membre

Titre

Les livres commands vous seront envoys le plus vite possible. Une facture vous parviendra aprs livraison complte. Au moment o un membre retourne un bon de commande, une nouvelle commande est cre dans le systme. Une commande est identifie par un numro de commande et caractrise en plus par une date de commande. Les livres disponibles de la commande sont envoys tout de suite au membre. Pour devenir membre du club, il suffit d'effectuer une fois une commande via des bons de commandes lgrement modifis (p.ex. pas de numro de membre), et d'indiquer les coordonnes personnelles. Tous les livres prsents dans le catalogue sont galement stocks dans le systme. Un livre est identifi par son numro ISBN et caractris en plus par un titre, un genre (p.ex. ROMAN, HISTOIRE, BIOGRAPHIE, TECHNIQUE ...), une langue (p.ex. ALL, FRA ...), le nom de l'auteur, le prix de vente et le nombre d'exemplaires disponibles en stock.

Pierre Stockreiser

43

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Une facture est identifie par un numro de facture et caractrise en plus par une date de facture. Afin de garantir qu'une facture n'est cre et envoye au membre qui a effectu la commande correspondante qu'au moment o tous les livres de la commande ont t livrs, le systme doit tre capable de vous informer quels livres de la commande ont dj t envoys au membre et quels livres n'ont pas encore t envoys au membre (p.ex. livre non disponible en stock au moment de la rception de la commande). A chaque commande est affecte un seul employ. Un employ est identifi par un code employ (p.ex. WEBJO = Weber Jos). Le responsable du club de vente veut galement savoir quel employ (Nom & Prnom) traite quelle commande. Nous supposons que chaque employ a dj trait des commandes. De temps en temps, le responsable de la facturation dsire avoir un relev des factures non encore payes.

Crez le modle conceptuel des donnes

Pierre Stockreiser

44

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exercice 5
Le commandant de la brigade municipale des Sapeurs-Pompiers d'Esch-sur-Alzette se propose d'informatiser la gestion des diffrentes interventions. Etant responsable de l'administration de la brigade, vous tes en charge de crer une base de donnes pour stocker les informations relatives aux interventions. PARTIE 1 Voici le rsultat de l'analyse prliminaire mene auprs des responsables de la brigade (p.ex. le commandant, le sous-commandant ) Chaque intervention est identifie par un numro unique Une intervention est en plus caractrise par une date, une adresse et un type d'intervention (p.ex. Incendie, Accident, Inondation) Pour chaque intervention, on veut savoir quels sapeurs-pompiers y ont particip Un sapeur-pompier est caractris par un numro d'identification, son nom, son prnom, son ge ainsi qu'un grade (p.ex. sapeur, chef de section, sous-commandant, commandant)

Travail raliser: Crez le modle conceptuel des donnes

PARTIE 2 Le commandant vous demande de reprsenter galement l'utilisation des vhicules de la brigade. Lors d'une intervention, les sapeurs-pompiers sont affects aux diffrents vhicules selon les circonstances. Jusqu' prsent, le commandant a rempli une fiche pour chaque intervention (Exemple: voir page suivante) Un vhicule est identifi par son numro d'immatriculation Un vhicule est en plus caractris par un type de vhicule (p.ex. Echelle, Transport ...), une marque, et le nombre de places disponibles

Travail raliser: Crez le modle conceptuel des donnes

Pierre Stockreiser

45

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Service Incendie Esch-sur-Alzette


Fiche d'intervention
No-Intervention: 00235 Date: 11/11/1997 Type: Incendie

Adresse: 12, bvd. Hubert Clement L-4076 Esch-Sur-Alzette

Vhicule Echelle Magirus-Deutz Emilio Pegaso

Sapeur

Jang van der Heck Camion double pompe Toto Alnasso Jemp Grisu Transport Ford Transit Emil Zweemil Kathrin Allburn Metti Paletti Jacques Guddebuer Hary Beau

Signature responsable: _____________________

Pierre Stockreiser

46

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exercice 6
Il s'agit d'informatiser la gestion des sjours des patients d'un hpital, ainsi que la gestion des interventions effectues par les mdecins. Jusqu' prsent, cette gestion s'est effectue l'aide des fiches suivantes.

Hpital Municipal de Heinerscheid


Gestion des sjours et interventions
PATIENT No Matricule: Nom: Prnom: Adresse: Code Postal: Localit: Caisse de maladie: INTERVENTION(S):
Code intervention: Description: Date: Code Mdecin: Nom: Prnom:

SEJOUR No Sjour: Date Arrive: Date Dpart: Frais charge du patient: No Chambre: Etage: Classe:

Nous supposons qu'un patient occupe la mme chambre pendant toute la dure de son sjour. A part des informations concernant les mdecins, qui se trouvent dj sur les fiches, on dsire stocker dans le systme d'information le numro de tlphone et la spcialit de chaque mdecin. Les interventions sont identifies par un code et une description. L'hpital dispose d'une liste d'interventions prdfinies. (p.ex. 0236 Tomographie du crne) Les donnes actuelles sont migres dans la nouvelle application informatique.

Pierre Stockreiser

47

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.3.11
3.3.11.1
Exemple:

Cas particuliers du MCD


Plusieurs relations diffrentes entre deux entits

Une personne, qui habite dans une maison n'est pas toujours propritaire de cette maison, tandis que le propritaire d'une maison ne doit pas ncessairement habiter dans celle-ci. Il incombe donc de reprsenter le fait de possder une maison par une relation spare et le fait d'habiter dans une maison par une relation spare.

3.3.11.2
Exemple 1:

Relation rflexive et rle d'une patte de relation

Une relation rflexive, est une relation, dont les deux pattes sont lies une mme entit. En gnral, la signification des pattes d'une relation rflexive devrait tre clarifie par l'indication d'un rle.

Pierre Stockreiser

48

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Nous avons donc:

Exemple 2: Afin d'obtenir une licence pour piloter un avion de ligne, un pilote doit effectuer un certain nombre de brevets. Il existe une hirarchie prdfinie en ce qui concerne les brevets (structure arborescente). A chaque fois qu'un pilote a russi un brevet, il a la possibilit d'effectuer un certain nombre d'autres brevets, qui sont dpendants du brevet russi. Tous les brevets sont dpendants du brevet de base.

3.3.11.3

La notion d'identifiant relatif

Sachant que chaque entit doit obligatoirement tre dote d'un identifiant, certaines entits ont cependant une existence compltement dpendante et lie une autre entit. Une entit A est compltement dpendante d'une entit B, c..d. qu'une occurrence de l'entit A ne peut pas exister sans tre relie une occurrence de l'entit B, lorsque les deux conditions suivantes sont vraies: 1. L'entit A est mettrice d'une CIF tandis que l'entit B est cible de la mme CIF. 2. L'entit A n'est pas indpendante par rapport la CIF (Cardinalit minimale = 1)

Pierre Stockreiser

49

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exemple:

L'entit Tche est compltement dpendante de l'entit Projet. Dans le cas d'une telle dpendance complte, on peut avoir recours un identifiant relatif. Dans notre exemple, la proprit No_Tche constitue l'identifiant relatif de l'entit Tche. Cette proprit ne remplit dans ce cas pas les conditions pour devenir identifiant absolu (Le mme numro de tche est susceptible d'apparatre dans plusieurs projets). Toutefois, on peut affirmer qu'en relation un certain numro de projet, le numro de tche est un identifiant absolu. On note cette identification relative par la lettre (R) sur la patte relie l'entit qui contient l'identifiant relatif.

3.3.11.4

Historisation

Pour certaines proprits, entits ou relations, on dsire parfois conserver les valeurs antrieures en cas de modification. On parle dans ce contexte d'historisation. Thoriquement, cette ide n'est pas tout fait en accord avec les rgles de conception d'un systme d'information. Prenons l'exemple suivant:

Pour une occurrence de cette entit, c..d. pour un assur spcifique, il existe uniquement une seule valeur pour chaque proprit. Selon cette modlisation, un assur ne peut par exemple pas habiter en mme temps dans deux localits diffrentes. En gnral, ceci ne pose aucun problme, comme un assur indique normalement une seule adresse de rfrence. Toutefois, cette modlisation ne permet pas de reprsenter le trac historique des adresses, lorsqu'un assur dmnage une ou plusieurs fois. Dans la plupart des cas, cette modlisation

Pierre Stockreiser

50

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

de l'historique n'est pas demande, mais elle est quand mme ralisable l'aide de la mthode Merise. Au niveau conceptuel, nous indiquons simplement ce que nous voulons historiser. Nous distinguons 3 cas: 1. Proprit historise La conservation des valeurs historiques s'applique une ou plusieurs proprits d'une entit ou d'une relation. Dans le MCD, on indique une historisation de proprit par la lettre (H) derrire la resp. les proprits concernes. Exemple:

2. Entit historise La conservation des valeurs s'applique toutes les proprits d'une l'entit. On indique l'historisation par la lettre (H) derrire le nom de l'entit. Exemple:

3. Relation historise La conservation des valeurs s'applique toutes les proprits d'une relation. On indique l'historisation par la lettre (H) derrire le nom de la relation. Exemple:

On ne peut pas historiser une relation sans proprits, puisque l'expression 'historiser une relation' n'est qu'un abus de langage, il s'agit en fait d'historiser toutes les proprits d'une relation. On peut remarquer ce moment que la mthode MERISE prsente une particularit en ce qu'elle ne prvoit pas l'historisation d'une proprit individuelle d'une relation

3.3.12

Exercices

Pierre Stockreiser

51

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exercice 1
Un club de tennis vous demande d'informatiser la gestion des rservations des diffrents terrains. A ces fins, vous disposez des informations suivantes. Le club dispose d'une liste de membres. Quiconque veut jouer sur un des terrains, doit devenir membre du club. Un membre est caractris par un numro interne au club, par son nom, prnom, adresse, code postal, localit, numro de tlphone ainsi qu'une indication s'il est un joueur licenci auprs de la fdration de tennis ou non. Pour chaque rservation, on dsire connatre l'identit des deux joueurs membres. Au cas o quatre joueurs rserveraient un terrain, uniquement deux joueurs sont enregistrs dans le systme. Le club dispose de plusieurs terrains, dont certains sont couverts. On distingue en plus le type du terrain selon la nature du sol (p.ex. Sable, Herbe etc.) Une rservation se fait pour une date prcise par tranches d'une heure.

Crez le MCD correspondant.

Pierre Stockreiser

52

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exercice 2
Une socit arienne utilise prsent les fiches suivantes pour la gestion des ressources. Vol No. : 98-8-798
Date Dpart Arrive
24/08/98 24/08/98

Heure
7h45 9h00

Code Aroport
FIN LHR

Nom Aroport
Findel Heathrow

Ville
Lux Lon

Pays
Lux UK

Avion
No
23

Marque
Boeing

Type
737-400

Porte (km)
3810

Capacit Passagers
147

Commandant
No
726

Nom
Weber

Prnom
Jos

Date de naissance
13/06/65

Brevet
PP-IFR/EP/DA

Co-pilote
No
813

Nom
Meier

Prnom
Emil

Date de naissance
23/04/73

Brevet
PP-IFR

Personnel de cabine
No
1072 1014 1103

Nom
Feller Pinto Weis

Prnom
Nathalie Tania Laurent

Sachant que la socit entretient dj une BD avec tous les pilotes et qu'un pilote peut tre commandant d'un vol et co-pilote d'un autre vol, proposez un MCD, qui permet l'informatisation de la gestion des ressources.

Pierre Stockreiser

53

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exercice 3
Un nouveau parc de vacances va prochainement ouvrir ses portes au Luxembourg. Dans ce parc, les visiteurs sont logs dans des bungalows. Vous tes charg de l'implmentation d'un systme informatis pour grer les rservations des bungalows. Aprs plusieurs runions avec les responsables de la gestion du parc, vous avez collectionn les informations suivantes. Le parc est subdivis en plusieurs zones, dont chacune contient environ 40 50 bungalows. Chaque zone dispose de ses propres magasins, restaurants, piscines etc. . Pour l'ouverture du parc, les zones suivantes sont prtes accueillir des visiteurs. Zone
Texas Chine Hawa Camelot Liliput

Situation
Nord Est Sud-est Sud Centre

Description
Imitation "Kloondike-City" avec Saloon, Sheriff Office . . . Chine traditionnelle avec temple, palais . . . Atmosphre tropicale avec palmiers, mer artificielle . . . Ambiance mdivale autour d'un magnifique chteau ... Zone comportant plein d'lments des contes bien connus

Les bungalows sont parfaitement intgrs dans l'atmosphre correspondante de leur zone. Chaque bungalow du parc appartient une des catgories suivantes, de faon indpendante sa situation (zone). Catgorie
A B C D E

Description
Bain ou douche / WC sp. / TV Bain et douche / WC sp. / TV / Terrasse Bain ou douche / WC sp. / TV Bain et douche / WC sp. / TV / Terrasse Bain et douche / WC sp. / TV / Terrasse

Capacit
3 3 5 5 7

Prix par nuit


1200 1500 2000 2300 3000

Afin de faciliter la gestion des bungalows, le responsable du service Comptabilit vous demande de prvoir uniquement des nombres avec 2 positions pour numroter les bungalows. Les clients peuvent effectuer des rservations. Une rservation concerne un seul bungalow. Suite une rservation, une fiche de rservation est immdiatement envoye au client. Deux semaines avant la date d'arrive au parc, une facture correspondante est envoye au client. Cette facture doit tre rgle avant l'arrive au parc. Le responsable de la facturation veut videmment garder trace des informations contenues sur les factures. Le responsable de la rception dsire voir dans le systme si une facture correspondant une rservation a dj t paye ou non.

Pierre Stockreiser

54

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Lors de la rservation d'un bungalow, le client a le choix entre les supplments suivants. Code supplment
01 02 03

Description
Literie Livraison domicile du petit djeuner Livraison domicile du quotidien

Prix (par personne) par jour


100 300 50

Voici un modle d'une fiche de rservation

Wonderland S. r.l.
Parc de bungalows 3, am Boesch L-8899 Schlindermanderscheid G.D.Luxembourg Tl: (Lux)+345566 / Fax: (Lux)+345567

Fiche de rservation
Client Numro: 340 Nom: Weber Prnom: Jos Adresse: 23, rue Principale Code postal: L-8765 Localit: Grevenmacher Pays: Luxembourg No. Passeport: 87699 No. Tlphone: (Lux)+348845 Supplments Code supplment
01 03

Rservation No: 589 Date d'arrive: 03/09/98 Date de dpart: 07/09/98 Nombre de personnes: 4 Bungalow Zone: Liliput Numro: 19 Catgorie: Bain et douche / WC sp. / TV /
Terrasse

Capacit: 5

Description
Literie Livraison domicile du quotidien

Une facture vous sera envoye environ 2 semaines avant votre arrive au parc. Cette facture est rgler avant l'arrive au parc. Nous vous souhaitons un beau sjour au parc Wonderland. Si vous avez encore des questions, n'hsitez pas nous contacter.

Arsne Lupin
RESERVATION MANAGER

Pierre Stockreiser

55

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Une facture reprend exactement les mmes informations, avec en plus la date d'envoi de la facture et le prix total payer. Afin d'tablir des statistiques, la direction du parc est intresse de sauvegarder dans le systme l'volution des prix par nuit pour les diffrentes catgories de bungalows. Un client est uniquement considr comme tel partir de la premire fois qu'il effectue une rservation.

Crez le modle conceptuel

Pierre Stockreiser

56

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.4 Le modle logique des donnes (MLD)


3.4.1 Dfinition
Jusqu' prsent nous avons tabli des MCD bass sur une analyse d'un domaine bien dfini (p.ex. Gestion des sances d'un cinma, Gestion des sjours des patients d'un hpital etc.). La finalit d'un MCD est de nous faciliter la cration d'une base de donnes pour grer un tel domaine. Nous savons galement qu'une base de donnes est constitue par un ensemble de tables, dont chacune est compose de champs de donnes. Hors le MCD ne connat pas la notion de table, tandis qu'une base de donnes ne connat pas le concept des entits relies entre-elles via des relations portant des cardinalits. Pour cela, il existe un autre modle, le modle logique des donnes (MLD), qui utilise essentiellement le formalisme des tables logiques. Un MLD, qui est toujours bas sur un MCD donn, contient donc toutes les informations de ce MCD, mais les reprsente l'aide d'un formalisme diffrent qui est trs adapt aux structures d'une base de donnes. Tandis que le MCD reprsente un systme d'information d'une faon gnrale et indpendante d'un systme informatique, le MLD tient compte de la ralisation par le biais d'un SGBD. Un MLD est essentiellement compos de tables logiques relies entre elles par des flches. Voici un exemple qui montre un MCD avec son MLD correspondant:

MCD

MLD

Exercice

Pierre Stockreiser

57

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

En vous rfrant l'exemple prcdant, rpondez brivement aux questions suivantes. 1. Comment est-ce qu'on traduit une entit du MCD dans le MLD ?

2. Comment est-ce qu'on traduit une proprit d'une entit du MCD dans le MLD ?

3. Comment est-ce qu'on traduit un identifiant d'une entit du MCD dans le MLD ?

4. Comment est-ce qu'on traduit la relation Ecrire avec ses cardinalits du MCD dans le MLD ?

5. Le MCD nous dit que chaque livre est uniquement crit par un seul auteur (cardinalit max.), tandis qu'un auteur peut crire plusieurs livres. Comment est-ce qu'on peut retrouver ces informations dans le MLD ?

Remarque: La mthode MERISE dfinit de faon gnrale certaines rgles qui nous permettront de transformer n'importe quel MCD en MLD.

Pierre Stockreiser

58

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.4.2 Rgles de transformation du MCD au MLD


Nous allons dfinir les rgles de transformation pour le passage du MCD au MLD, en respectant les diffrents cas qui se posent.

3.4.2.1

Transformation des entits

Toute entit est transforme en table. Les proprits de l'entit deviennent les attributs de la table. L'identifiant de l'entit devient la cl primaire de la table. Exemple: Entit "Entreprise" Lettres majuscules Table "Entreprise"

3.4.2.2

Transformation des relations binaires du type1 (x,n) (x,1)

Afin de reprsenter la relation, on duplique la cl primaire de la table base sur l'entit cardinalit (x,n) dans la table base sur l'entit cardinalit (x,1). Cet attribut est appel cl trangre. Les deux tables sont lies par une flche nomme selon la relation, qui pointe de la table cl trangre vers la table qui contient la cl primaire correspondante. Exemple:

L'attribut No_Auteur qui est cl primaire de la table Auteur, devient cl trangre dans la table Livre.

x peut prendre les valeurs 0 ou 1

Pierre Stockreiser

59

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.4.2.3

Transformation des relations binaires du type (x,1) (x,1)

Nous devons distinguer plusieurs cas. Sachant qu'une relation binaire du type (1,1)-(1,1) ne doit pas exister il nous reste les 2 cas suivants: Relation binaire (0,1)-(1,1) On duplique la cl de la table base sur l'entit cardinalit (0,1) dans la table base sur l'entit cardinalit (1,1). Exemple:

Le No_Client, qui est cl primaire de la table Client, devient cl trangre dans la table Carte_Membre. Relation binaire (0,1)-(0,1) !!! Ne figure actuellement pas au programme de la classe 13CG On duplique la cl d'une des tables dans l'autre. Lorsque la relation contient elle-mme des proprits, celles-ci deviennent galement attributs de la table dans laquelle a t ajoute la cl trangre. Exemple:

ou

Soit on migre la cl primaire de la table Entreprise dans la table Salari, soit on fait l'inverse.

Pierre Stockreiser

60

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.4.2.4

Transformation des relations binaires du type (x,n) (x,n)

On cre une table supplmentaire ayant comme cl primaire une cl compose des cls primaires des 2 tables. Lorsque la relation contient elle-mme des proprits, celles-ci deviennent attributs de la table supplmentaire. Une proprit de la relation qui est souligne devra appartenir la cl primaire compose de la table supplmentaire. Exemple:

On cre une table Porter, qui contient comme cl primaire une cl compose de NoCommande et Code_Article. Elle contient galement la proprit Quantit issue de la relation Porter.

3.4.2.5

Transformation des relations ternaires

On cre une table supplmentaire ayant comme cl primaire une cl compose des cls primaires de toutes les tables relies. Cette rgle s'applique de faon indpendante des diffrentes cardinalits. Lorsque la relation contient elle-mme des proprits, celles-ci deviennent attributs de la table supplmentaire. Une proprit de la relation qui est souligne devra appartenir la cl primaire compose de la table supplmentaire. Exemple:

La table Enseigner contient une cl compose de No_Enseignant, Code_Matire et Nom_Classe.

Pierre Stockreiser

61

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.4.2.6

Transformation de plusieurs relations entre 2 entits

Les rgles gnrales s'appliquent Exemple:

La relation habiter du type (x,n)-(x,1), est traduite par la migration de l'attribut Adresse dans la table Personne. La relation possder du type (x,n)-(x,n) est traduite par la cration d'une table supplmentaire du mme nom. Cette table contient comme cl primaire compose, les cls des deux tables relies Personne et Maison. On a donc simplement appliqu 2 fois de faon indpendante les rgles de transfert MCD MLD.

3.4.2.7

Transformation des relations rflexives

Nous appliquons les rgles gnrales avec la seule diffrence que la relation est 2 fois relie la mme entit Exemple 1:

Comme il s'agit d'une relation (x,n)-(x,n), une table supplmentaire est cre. Cette table contient comme cl primaire compose, la cl des "deux" entits relies. Comme la mme entit est lie 2 fois la relation, on ne peut pas utiliser 2 fois le mme nom pour la cl. Dans ce cas il convient d'utiliser des rles dans le MCD, et d'intgrer le rle dans le nom d'une des cls migres dans le MLD.

Pierre Stockreiser

62

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exemple 2:

Comme il s'agit d'une relation (0,1)-(0,1), nous avons en gnral le choix en ce qui concerne quelle entit contiendra la cl trangre. Comme cette relation est lie deux fois la mme entit, il est vident que nous devons dupliquer la cl primaire, tout en veillant que le mme nom de cl ne sera pas utilis pour la cl primaire et la cl trangre. Dans notre exemple, tous les hommes maris, ont comme valeur de la cl trangre la matricule de leur pouse actuelle. Pour les hommes non maris et les femmes, la cl trangre est sans valeur. On pourrait bien sr utiliser la modlisation inverse avec une cl trangre NO_MATRICULE_MARI, qui indique pour chaque femme marie, la matricule de son mari.

3.4.2.8

Transformation de l'identifiant relatif

Sachant que l'entit dpendante est toujours lie la relation par les cardinalits (1,1), nous pouvons appliquer les rgles gnrales. Dans chaque cas, la table issue de l'entit dpendante contient donc comme cl trangre, la cl primaire de l'autre table. L'identification relative est reprsente par le fait que la table issue de l'entit dpendante contient une cl primaire compose, constitue de la cl primaire transforme de l'identifiant de cette entit et de la cl trangre. Exemple:

Tout en respectant les rgles gnrales du passage MCDMLD, la cl primaire de la table Projet migre comme cl trangre dans la table Tche. L'identification relative est reprsente par le fait que la table tche contient une cl primaire compose de No_Tache et No_Projet.

Pierre Stockreiser

63

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.4.2.9

Transformation de l'historisation

1. Historisation d'une proprit Pour chaque proprit historiser, on cre une table qui contient: Une cl primaire compose de la cl primaire de la table qui contient la proprit historiser et de la date d'historisation. La proprit historiser Exemple:

2. Historisation d'une entit Pour toute modification de valeur d'une des proprits de l'entit, on historise l'ensemble des valeurs des proprits dans une table qui contient: Une cl primaire compose de la cl primaire de l'entit historiser et de la date d'historisation Toutes les autres proprits de l'entit historiser Exemple:

3. Historisation d'une relation Pour toute modification de valeur d'une des proprits de la relation, on historise l'ensemble des valeurs des proprits dans une table qui contient: Une cl primaire compose de la cl primaire de la table qui reprsente la relation historiser et de la date d'historisation Toutes les autres proprits de la relation historiser Exemple:

Pierre Stockreiser

64

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Pierre Stockreiser

65

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.4.3 Exemple "KaafKaaf"


Transformez le MCD suivant, qui reprsente la facturation de la socit "KaafKaaf" (voir chapitre 3.3.6 Exemple "KaafKaaf"), en un MLD en respectant toutes les rgles du passage MCD MLD.

Voici une solution:

Pierre Stockreiser

66

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.4.4 Exercices

Exercice 1
Transformez les MCD que vous avez raliss pour les exercices 1 6 du chapitre 3.3.10 et les exercices 1 3 du chapitre 3.3.12 en MLD.

Pierre Stockreiser

67

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exercice 2
Transformez le MCD suivant en MLD en respectant toutes les rgles de passage MCDMLD.

Remarques: En ce qui concerne le rapport mdical, une conclusion mdicale pourrait par exemple tre "Infection" ou "Cancer de la gorge", tandis que la conclusion professionnelle qui s'en suit serait par exemple "Apte" ou "Inaptitude temporaire <x> jours". L'entit Salari est historise.

Pierre Stockreiser

68

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Exercice 3
Voici un MCD qui reprsente de faon trs simplifie la gestion d'une compagnie d'assurances. Transformez le MCD en MLD en respectant toutes les rgles de passage MCDMLD.

Remarques: Le type de contrat indique les garanties prvues.


Exemple: Type AUTO-SIMPLE contient (RC-AUTO et Protection juridique) Type AUTO-SPECIAL contient (Garanties AUTO-SIMPLE + FEU + VOL) Type AUTO-DELUXE contient (Garanties AUTO-SPECIAL + Dgts matriels)

Un contrat couvre un seul risque. Ce risque peut tre une voiture ou une habitation. Afin d'amliorer l'exploitation statistique des donnes concernant les garanties, le tarif d'une garantie est historis.

Pierre Stockreiser

69

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.5 Le modle physique des donnes (MPD)


3.5.1 Dfinition
Le modle physique des donnes (MPD) est la traduction du modle logique des donnes (MLD) dans une structure de donnes spcifique au systme de gestion de bases de donnes (SGBD) utilis. Le MPD est donc reprsent par des tables dfinies au niveau du systme de gestion de bases de donnes. C'est donc au niveau du MPD que nous quittons la mthode gnrale de cration d'un MCD et de sa transformation en MLD, pour nous tourner vers la manipulation d'un SGBD spcifique.

3.5.2 Passage du MLD au MPD


Le passage MLD MPD se fait par les tapes suivantes:

Implmentation physique de chaque table du MLD dans le SGBD utilis. Pour chaque table, indiquer au SGBD quel(s) champ(s) constitue(nt) la cl primaire. Pour chaque table, indiquer au SGBD la (les) cl(s) trangre(s), et la (les) cl(s) primaire(s) correspondante(s).

Pour ce faire, la plupart des SGBD actuellement sur le march nous offrent 2 possibilits. Prenons titre d'exemple l'implmentation du modle logique suivant.

Pierre Stockreiser

70

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

1. Utilisation d'une ou de plusieurs interfaces graphiques, qui nous aident dans la cration des tables physiques, dans la dfinition des cls primaires et dans la dfinition des relations. Exemple: Dfinition de la table des employs avec le champ idEmploy tant dfini comme cl primaire.

Dfinition de la relation entre les deux tables.

Remarquez que les noms des diffrents champs ont t modifis lors de l'implmentation du modle logique. Cette mesure dpend uniquement de la convention des noms utilise et n'affecte pas du tout le fonctionnement correcte de la BD.

Pierre Stockreiser

71

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

2. Utilisation de commandes spciales, faisant partie d'un langage de dfinition de donnes (p.ex. SQL-DDL) Exemple: Implmentation du mme modle logique l'aide de commandes spcifiques
REM REM REM REM REM REM REM REM REM REM REM REM REM ----------------------------------------------------------------------------Gnration d'une base de donnes SQL Gnrique (SQL 2) (6/9/1998 17:03:24) ----------------------------------------------------------------------------Nom de la base : Entreprises Projet : Auteur : Pierre Stockreiser Date de dernire modification : 6/9/1998 17:03:13 --------------------------------------------------------------------------------------------------------------------------------------------------------TABLE : tblEntreprises -----------------------------------------------------------------------------

CREATE TABLE tblEntreprises ( idEntreprise INTEGER NOT NULL , fldNom CHAR (20) NOT NULL , fldAdresse CHAR (25) NOT NULL , fldCodePostal CHAR (7) NOT NULL , fldLocalit CHAR (20) NOT NULL , PRIMARY KEY (idEntreprise) CONSTRAINT PK_ENTREPRISE ); REM ----------------------------------------------------------------------------REM INDEX DE LA TABLE tblEntreprises REM ----------------------------------------------------------------------------CREATE UNIQUE INDEX I_PK_ENTREPRISE ON tblEntreprises (idEntreprise ASC); REM ----------------------------------------------------------------------------REM TABLE : tblEmployes REM ----------------------------------------------------------------------------CREATE TABLE tblEmployes ( idEmploye INTEGER NOT NULL , fiEntreprise INTEGER NOT NULL , fldNom CHAR (32) NOT NULL , fldPrnom CHAR (32) NOT NULL , fldDateNaissance DATE NOT NULL , PRIMARY KEY (idEmploye) CONSTRAINT PK_EMPLOY ); REM ----------------------------------------------------------------------------REM INDEX DE LA TABLE tblEmployes REM ----------------------------------------------------------------------------CREATE UNIQUE INDEX I_PK_EMPLOY ON tblEmployes (idEmploye ASC); CREATE INDEX I_FK_EMPLOYER ON tblEmployes (fiEntreprise ASC); REM ----------------------------------------------------------------------------REM CREATION DES REFERENCES DE TABLE REM ----------------------------------------------------------------------------ALTER TABLE tblEmployes ADD (FOREIGN KEY (fiEntreprise) REFERENCES tblEntreprises (idEntreprise) CONSTRAINT FK_EMPLOYER ON UPDATE RESTRICT ON DELETE RESTRICT);

Pierre Stockreiser

72

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

REM ----------------------------------------------------------------------------REM FIN DE GENERATION REM -----------------------------------------------------------------------------

Que vous avez utilis l'une ou l'autre des 2 mthodes, le rsultat sera toujours un ensemble de tables physiques relies entre elles, dans lesquelles vous pouvez stocker des donnes.

Pierre Stockreiser

73

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3.5.3 Les contraintes d'intgrit


Une modlisation correcte et cohrente est sans doute une condition ncessaire pour crer une BD fonctionnelle, mais ne vaut pas grand chose, lorsque le SGBD utilis pour implmenter la base, ne garantit pas l'intgrit de celle-ci lors du travail journalier avec les donnes. Exemples: Le systme doit empcher un utilisateur entrer une valeur double ou indtermine (NULL) pour un champ dclar comme cl primaire. Le systme doit vrifier qu'une quantit livre est toujours infrieure ou gale une quantit commande.

3.5.3.1

Les types de contraintes d'intgrit

La contrainte d'intgrit des tables (angl. Table Integrity Constraint) Cette contrainte vrifie qu'il n'existe jamais des doublons ou des valeurs indtermines pour le(s) champ(s) qui constitue(nt) la cl primaire. La cl primaire doit donc toujours tre unique et bien dfinie. Exemples de violation de cette contrainte A. B. C. D. L'ajout d'une valeur de cl primaire qui existe dj dans la table. La modification d'une valeur de cl primaire vers une valeur qui existe dj dans la table. L'ajout d'une valeur indtermine pour une cl primaire. La modification d'une valeur de cl primaire vers une valeur indtermine.

Mthodes pour vrifier cette contrainte d'intgrit dans un SGBD Dans un SGBD il suffit gnralement de dclarer un ou plusieurs champs comme cl primaire d'une table pour que cette contrainte soit automatiquement vrifie pour chaque insertion ou modification d'une valeur dans la table.

La contrainte d'intgrit rfrentielle (angl. Referential Integrity Constraint) Par contrainte d'intgrit rfrentielle, on entend l'obligation qu' chaque valeur d'une cl trangre correspond une et une seule valeur de la cl primaire associe. Cette obligation doit toujours tre vrifie lors de l'ajout, de la suppression ou de la modification de donnes. Exemples de violation de cette contrainte A. L'ajout d'une cl trangre pour laquelle il n'existe pas de valeur correspondante dans la cl primaire associe. B. La modification d'une cl trangre vers une valeur pour laquelle il n'existe pas de valeur correspondante dans la cl primaire associe. C. La suppression d'une cl primaire, qui est rfrence par une ou plusieurs valeurs d'une cl trangre. D. La modification d'une cl primaire, qui est rfrence par une ou plusieurs valeurs d'une cl trangre.

Pierre Stockreiser

74

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Mthodes pour vrifier cette contrainte d'intgrit dans un SGBD Un SGBD nous offre gnralement une ou plusieurs des quatre mthodes suivantes pour spcifier tout moment l'intgrit rfrentielle des donnes d'une BD. I. Interdiction des oprations du type A, B, C et D. Bien que cette possibilit soit trs efficace, il existe parfois une alternative prfrable en fonction de la nature des donnes. Remarque: Tandis que les oprations A et B ne sont jamais permises lorsque l'intgrit rfrentielle est applique, il n'en est pas de mme pour les oprations C et D. Le langage SQL par exemple contient une commande CREATE TABLE qui permet de dfinir la structure d'une table. Cette commande contient entre autres les options ON DELETE NO ACTION et ON UPDATE NO ACTION qui permettent de raliser explicitement l'interdiction des oprations C et D. Cascade des oprations du type C et D vers les cls trangres correspondantes. Une modification d'une cl primaire aurait comme consquence la modification de toutes les cls trangres correspondantes. Une suppression d'une cl primaire aurait comme consquence la suppression automatique de tous les enregistrements dont la cl trangre a la mme valeur. Cette option est utiliser avec prcaution !!! Remarque: En SQL la commande CREATE TABLE nous offre les options ON DELETE CASCADE et ON UPDATE CASCADE. Affectation d'une valeur par dfaut aux cls trangres concernes par une opration du type C ou D. Affectation d'une valeur indtermine (NULL) aux cls trangres concernes par une opration du type C ou D.

II.

III. IV.

La contrainte d'intgrit gnrale (angl. General Integrity Constraint) Une contrainte d'intgrit gnrale est utilise pour limiter les valeurs possibles d'un champ quelconque d'une table en fonction de la nature de celui-ci et de son rle dans le systme d'information. Exemples de violation de cette contrainte Il existe plusieurs variantes de cette contrainte. 1. A chaque champ correspond un type de donnes, une longueur et un format bien dfinis. Exemples: Le numro client doit tre une valeur numrique. Le nom du client ne doit pas dpasser 25 caractres. Un numro de compte doit respecter le format X-XXX/XX-X 2. Un champ peut avoir un domaine de valeurs prdfini (une plage de valeurs possibles) et/ou une valeur par dfaut. Exemples: Une note d'un devoir en classe doit tre entre 0 et 60 La prix d'une facture ne doit pas tre un nombre ngatif. La date d'une commande doit automatiquement tre la date actuelle moins que l'utilisateur n'entre une autre date.

Pierre Stockreiser

75

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

3. La valeur d'un champ peut limiter les valeurs possibles pour un autre champ d'une table/d'une BD. Exemple: La valeur du champ fldDatePaiement est suprieure ou gale la valeur du champ fldDateFacture pour une table tblFactures.

Exercice
Soit la BD suivante.

Code L-XXXX

a) Quelle(s) contrainte(s) est(sont) concerne(s) lors de l'ajout d'un client ?

b) Quelle(s) contrainte(s) est(sont) concerne(s) lors de la suppression d'un client ?

Pierre Stockreiser

76

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

c) Quelle(s) contrainte(s) est(sont) concerne(s) lors de l'ajout d'une facture ?

d) Quelle(s) contrainte(s) est(sont) concerne(s) lors de la suppression d'une facture ?

e) Quelle(s) contrainte(s) est(sont) concerne(s) lors de l'ajout d'un enregistrement dans la table tblConcerne ?

f) Quelle(s) contrainte(s) est(sont) concerne(s) lors de la suppression d'un enregistrement de la table tblConcerne ?

g) Quelle(s) contrainte(s) est(sont) concerne(s) lors de la modification du numro d'un article dans la table des articles?

h) Quelle(s) contrainte(s) est(sont) concerne(s) lors de la modification du numro client d'une facture ?

Pierre Stockreiser

77

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

4.

Utilisation d'un outil de modlisation

4.1 Dfinition
Un outil de modlisation est un programme spcialis dans le support de la conception d'un systme d'information. Il existe actuellement sur le march une offre trs diverse d'outils de modlisation. Chaque outil de modlisation implmente une mthode de modlisation. Comme la mthode MERISE est trs rpandue dans nos rgions, il est vident qu'il existe un certain nombre d'outils bass sur MERISE. En principe, les outils de modlisation sont intgrs dans des applications capables de ne supporter pas uniquement la conception d'un systme d'information (BD), mais galement le dveloppement complet de programmes de gestion d'une certaine envergure. Ces applications, appeles "Ateliers de gnie logiciel" (angl. CASE Tool : Computer Aided Software Engineering Tool), sont gnralement utiliss par les informaticiens afin de raliser des grands projets. Exemples: L'outil Win'Design constitue une mise en uvre de la mthode MERISE. Notons que Win'Design a t utilis pour crer les modles conceptuels et logiques prsents dans cet ouvrage.

Pierre Stockreiser

78

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

L'application Designer de la socit Oracle, constituant un atelier de gnie logiciel trs rpandu, implmente une mthode plus ou moins compatible MERISE en ce qui concerne la modlisation des donnes (Entity Relationship Modelling).

Pierre Stockreiser

79

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

4.2 Fonctionnalits
Bien que les diffrents outils de modlisation, actuellement disponibles sur le march, varient considrablement en termes de caractristiques et fonctionnalits, ils offrent cependant les fonctions de base suivantes. Reprsentation graphique des modles conceptuels et logiques avec les diffrents objets (p.ex. entits, relations, proprits, identifiants, tables, attributs, cls etc.). Vrification des rgles de construction des diffrents modles (p.ex. Une relation ne peut pas tre lie deux entits via des cardinalits 1,1). Transformation automatique d'un MCD en MLD en respectant toutes les rgles de transformation. Gnration automatique d'une BD partir d'un MLD. Aprs avoir indiqu le SGBD cible (p.ex. Oracle, MS-Access, Informix), le concepteur peut demander l'outil de crer la BD. Pour ce faire, il existe deux alternatives: l'outil de modlisation accde directement au SGBD cible afin de crer la BD en question; l'outil de modlisation gnre un script1, qui est la suite excut sur le SGBD afin de crer la BD. Gnration automatique de rapports imprims concernant l'tat actuel d'un travail de conception. Ces rapports contiennent en gnral la reprsentation graphique des modles, des listes avec tous les objets des diffrents modles et des explications supplmentaires concernant certains objets. Gestion des objets de conception (p.ex. entits, relations, proprits, identifiants, tables, attributs, cls etc.) dans un dictionnaire2. Pour des petits projets de conception, effectus par un seul concepteur sur un ordinateur, le dictionnaire est simplement un fichier stock localement. Toutefois, pour les grands projets, effectus par plusieurs concepteurs, certains outils de modlisation permettent la gestion d'un dictionnaire sur un serveur en rseau (voir chapitre 5.5). Dans ce cas, plusieurs concepteurs peuvent travailler en mme temps sur un modle, l'outil de modlisation veillant chaque moment que le modle reste cohrent. L'intgration de plusieurs modles en un seul modle, et la gestion des versions d'un objet ou d'un modle constituent d'autres caractristiques supportes par un tel systme. La plupart des outils de modlisation sont capables de crer un MLD et un MCD partir d'une BD existante. Ce procd, connu sous le nom de "Reversement d'une BD" (angl. Database Reverse Engineering), est souvent utilis la base d'un projet d'amlioration ou d'extension d'un systme d'information existant dj sous forme informatique.

1 2

plusieurs commandes dans un langage support par le SGBD cible. une sorte de rcipient logique pour les objets de conception.

Pierre Stockreiser

80

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Modlisation d'un systme d'information

Partie 2 : Exploitation des bases de donnes relationnelles

Pierre Stockreiser

81

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

5. Les systmes de gestion de bases de donnes 5.1 Dfinitions


Une base de donnes (BD) est un ensemble bien structur de donnes relatives un sujet global. Ces donnes peuvent tre de nature et d'origine diffrentes. Exemple: Une banque peut avoir une BD, qui contient les informations ncessaires sur tous les clients et leurs dpts d'pargne. Une socit d'assurances peut stocker les donnes relatives aux contrats d'assurances ainsi qu'aux sinistres dans une BD.

Un systme de gestion de bases de donnes (SGBD) est un programme qui nous permet de crer, de modifier et d'exploiter des bases de donnes. Ce systme constitue donc notre interface pour accder aux donnes.

Un utilisateur utilise un SGBD pour accder aux donnes d'une base de donnes.

Pierre Stockreiser

82

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Par analogie: Un utilisateur utilise un tableur pour accder aux donnes d'une feuille de calcul, respectivement un traitement de texte pour accder le texte d'un document. Exercice Discutez les avantages et dsavantages d'une gestion de donnes informatises l'aide d'un SGBD, et comparez cette gestion la gestion non informatise.

Pierre Stockreiser

83

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

5.2 Un peu d'histoire


Avant les annes '70, la plupart des systmes qui permettaient de grer des grands volumes de donnes d'une faon plus ou moins cohrente taient bass sur de simples fichiers squentiels. Ces systmes de gestion de fichiers (SGF) s'avraient particulirement limits lorsqu'il s'agissait de grer une grande masse de donnes comportant des liens entre elles. Classiquement, cette masse de donnes tait rpartie dans diffrents fichiers. L'utilisation de ces donnes n'tait possible que par le biais de programmes spcialiss, qui ont du tre raliss par des programmeurs ayant une connaissance technique approfondie de la structure des fichiers. Chaque nouvelle interrogation du SGF ncessitait donc l'intervention d'un programmeur. En plus, les SGF n'ont pas assur la cohrence des donnes. Le programmeur tait seul responsable pour garantir l'intgrit des donnes. Prenons l'exemple d'un SGF qui tait utilis dans une banque pour la gestion des clients et de leurs dpts. Rien n'empchait un programmeur de crer dans le fichier des dpts un nouveau dpt pour un client qui n'existait pas du tout dans le fichier des clients etc. . Ceci tant seulement quelques exemples des inconvnients des SGF, nous remarquons qu'il tait difficile pour un utilisateur d'utiliser directement un tel systme. Il fallait souvent l'intervention d'un programmeur, qui devait faire bien attention prserver la structure des donnes dans un rapport cohrent, tout en satisfaisant les besoins d'informations de l'utilisateur. Dj vers la fin des annes 60, les premiers systmes qui taient capables de cacher la reprsentation interne des donnes l'utilisateur, apparaissaient sur le march. Ces systmes, qui offraient l'utilisateur une certaine structure logique pour stocker les donnes, taient dj quips de certains mcanismes de base pour assurer la cohrence des donnes via des rgles qui pouvaient tre dfinies par l'utilisateur. Le systme vrifiait ces rgles lors de chaque modification des donnes. Dans un systme de gestion des dpts d'une banque, une telle rgle pouvait par exemple exprimer le lien explicite entre un dpt client et une personne. Ces systmes taient essentiellement bass sur les deux modles de donnes suivants: Modle rseau dvelopp initialement par la "Conference On Data Systems and Languages" (CODASYL) en 1961 Modle hirarchique dvelopp pour la plus grande partie par la socit IBM pendant les annes 1965 - 1970 C'tait en 1970 qu'un nouveau modle pour reprsenter les donnes, le modle relationnel, fut propos par E.F.CODD. Le but de ce modle, tait d'accrotre l'indpendance vis--vis de l'implmentation interne des donnes. Du point de vue de l'utilisateur, les donnes sont stockes dans un ensemble de tableaux, appeles "tables relationnelles" ou simplement "tables". Le stockage ainsi que la manipulation des donnes se basent sur le concept mathmatique de l'algbre relationnelle et du calcul relationnel. Ces concepts proviennent de la thorie mathmatique des ensembles, et on y retrouve des notions telles que "Union", "Intersection" ou "Produit cartsien". Il a fallu attendre le milieu des annes 70 pour voir apparatre les premiers systmes qui taient bass sur le modle relationnel, les "Systmes de Gestion de Bases de Donnes Relationnelles (SGBDR)". En 1976 apparat le modle Entit-Association, propos par P.CHEN, qui donnait aux concepteurs des bases de donnes relationnelles une mthode adquate pour modliser des donnes d'un domaine quelconque (banques, assurances, industrie ) par une structure bien

Pierre Stockreiser

84

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

cohrente de tables relationnelles. Le modle Entit - Association devenait ainsi le modle thorique de conception de donnes sur lequel se basaient beaucoup de bases de donnes relationnelles. Pendant les annes '80 et '90, beaucoup de SGBDR taient commercialiss pour les diffrentes plates-formes informatiques (Mainframe, Serveurs UNIX, Serveurs VMS, PC...). Citons quelques exemples de SGBDR populaires qui tournent actuellement sur PC: Personal ORACLE MS-ACCESS Visual dBASE Visual FOXPRO Borland PARADOX Lotus APPROACH Aujourd'hui, les bases de donnes relationnelles se rjouissent d'une grande popularit. Surtout le domaine de la gestion des donnes l'intrieur des entreprise est entirement domin par ces systmes.

Pour la suite de ce cours, nous allons nous limiter l'tude des bases de donnes relationnelles. Nous entendons donc par chaque rfrence une base de donnes (BD), la notion de base de donnes relationnelle. Il est galement sous-entendu que les deux notions SGBD et SGBDR dnotent un systme de gestion de bases de donnes relationnelles dans le contexte de ce cours.

Pierre Stockreiser

85

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

5.3 Les composants d'une base de donnes relationnelle


Une base de donnes relationnelle contient en gnral quatre types de composants (d'objets). Nous allons brivement introduire ces types d'objets sans aller trop dans les dtails. A chacun de ces objets sera consacr un chapitre spar. 1. Les donnes sont stockes l'intrieur de tables. Une table peut tre compare une liste, qui contient des enregistrements relatifs un domaine bien dfini. Exemple: Le service du personnel de l'entreprise SCHAFFGAER S. r.l. entretient une BD avec en outre une table pour les donnes des employes. Cette table contient un enregistrement pour chaque employ, avec le nom, le prnom, l'adresse, la localit, la date de naissance, la date d'entre en service, le salaire mensuel et le nom du dpartement auquel l'employ est actuellement affect.

2. Les requtes constituent dans un certain sens des "questions" qu'on pose au SGBD. Le rsultat d'une requte est toujours un sous-ensemble d'une ou de plusieurs tables. Exemple: Le chef du personnel de l'entreprise SCHAFFGAER S. r.l. dsire connatre les noms, prnoms, adresses et localits des employs recruts en 1996. Il doit formuler une requte qui sera excute par le SGBD, et qui donnera comme rsultat une liste semblable la table des employs, mais contenant uniquement les employs qui vrifient le critre de slection de la requte, et pour chacun de ces employs seulement les informations demandes. Voici le rsultat de cette requte:

3. Les formulaires sont utiliss pour ajouter, modifier ou supprimer des donnes dans les tables. Bien que la plupart des SGBD nous permettent d'accder les donnes directement dans les tables, les formulaires nous offrent certains avantages en ce qui concerne la facilit d'utilisation, mais galement la scurit des donnes. Exemple: La secrtaire du chef du personnel utilise un formulaire pour ajouter ou supprimer un employ de la BD. Ce formulaire lui permet galement de modifier les donnes d'un employ.

Pierre Stockreiser

86

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

4. Souvent on veut imprimer des statistiques; concernant certaines donnes d'une BD. C'est ici qu'interviennent les rapports. Les rapports sont similaires aux formulaires, la diffrence prs, qu'ils sont uniquement destins tre imprims et qu'il n'y a pas de dialogue interactif avec l'utilisateur. Un rapport se base gnralement sur une ou plusieurs tables ou bien le rsultat d'une requte. Exemple: A la fin de chaque mois le chef du personnel reoit un rapport avec pour chaque dpartement, la liste des employs, leur salaire mensuel ainsi que le salaire mensuel total pay par dpartement.

Pierre Stockreiser

87

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

5.4 Structures physiques et logiques


Un SGBD utilise les ressources de l'ordinateur sur lequel il est excut. Les donnes des SGBD sont ainsi stockes par exemple sur un disque dur ou sur un autre support de stockage, de la mme faon que les autres fichiers, gnrs par les autres programmes (p.ex. Traitement de texte, Tableur ) qui tournent sur l'ordinateur.

Qu'est-ce qu'on entend par structure physique ? Le systme d'exploitation (p.ex. DOS, Windows, Windows NT ), qui connat seulement la notion de fichier en ce qui concerne le stockage des donnes, ignore en principe le contenu de ces fichiers. Les fichiers constituent dans un certain sens la structure physique des donnes. Chaque programme cre des fichiers ayant un format spcifique ce programme. L'utilisateur peut reconnatre le format par l'extension derrire le nom du fichier. Par exemple: .doc .xls fichier MS-Word fichier MS-Excel

Qu'est-ce qu'on entend par structure logique ? Chaque programme offre galement l'utilisateur la possibilit de manipuler des composants, qui existent seulement dans le contexte de ce programme. Par exemple: Document Feuille de calcul Classeur Composant logique de MS-Word Composant logique de MS-Excel Composant logique de MS-Excel

Ces composants ou structures logiques sont uniquement visibles par le biais du programme correspondant. On vient de dfinir les composants standard d'un SGBD dans le chapitre prcdent: Les tables Les requtes Les formulaires Les rapports

Pierre Stockreiser

88

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Quelle est la relation entre une structure logique et sa structure physique correspondante ? Cette relation dpend du programme. MS-Word: MS-Excel: Chaque document (composant logique) correspond en principe un fichier .doc (structure physique). Chaque classeur (composant logique) correspond un fichier .xls (composant physique). Attention: Un classeur peut contenir plusieurs feuilles de calcul.

En ce qui concerne les SGBD, il existe deux variantes: 1. Chaque composant (table, formulaire ) d'une BD est stock dans un fichier spar. Une base de donnes constitue donc un ensemble de fichiers. Exemple: dBASE 2. Tous les composants d'une BD sont intgrs dans un seul fichier. Exemple: MSAccess Exercice Discutez les avantages et dsavantages des deux concepts d'implmentation possibles pour les composants d'une BD.

A faire: TP No 1

Pierre Stockreiser

89

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

5.5 Les rseaux informatiques


A son niveau le plus lmentaire, un rseau se compose de plusieurs ordinateurs relis entre eux par un cble, afin de pouvoir changer des donnes et partager des ressources, tels que des imprimantes, de l'espace disque etc. . Dans le contexte d'un rseau, ces ordinateurs sont appels postes de travail (angl. workstation). Les postes de travail peuvent tre rpartis sur plusieurs tages d'un btiment ou mme sur plusieurs btiments voisins. Un tel rseau est appel rseau local (angl. LAN = Local Area Network).

Poste de travail

Pierre Stockreiser

90

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Afin de pouvoir tre connect un rseau, un ordinateur doit disposer d'une carte rseau.

La plupart des rseaux locaux contiennent des ordinateurs trs puissants en termes de vitesse d'excution et de capacit de stockage. Ces ordinateurs, encore appels serveurs ddis (angl. Server), ne sont gnralement pas utiliss comme poste de travail, mais ils doivent effectuer un certain nombre de tches varies.

Serveur ddi

On distingue plusieurs types de serveurs.

Les serveurs de fichiers (angl. File Server) contiennent gnralement des fichiers appartenant aux diffrents utilisateurs du rseau. Par exemple, si vous utilisez un programme de traitement de texte sur un poste de travail, ce programme se trouve localement sur le poste. Cependant, le document sur lequel vous dsirez effectuer des modifications, stock sur le serveur, est charg dans la mmoire locale de votre poste de travail, afin que vous puissiez l'utiliser. Lors de chaque opration de sauvegarde (angl.

Extrait du livre "La Micro c'est simple", publi par IDG Books Worldwide, Inc. ISBN 2-87691-321-6

Pierre Stockreiser

91

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Save/Save As), le fichier est effectivement sauvegard sur le serveur. Le serveur gre bien sr l'accs des utilisateurs, qui doivent gnralement s'identifier par un nom et un mot de passe, afin de garantir une certaine scurit des donnes. Les serveurs d'impression (angl. Print Server) effectuent la gestion des imprimantes connectes au rseau. Lorsque le rseau comporte une multitude d'imprimantes diffrentes, un utilisateur sur son poste de travail peut slectionner une imprimante en fonction des caractristiques (p.ex. impression couleur/NB), des capacits (p.ex. nombre de pages imprimes par minute) et de l'emplacement physique (p.ex. imprimante la mme tage que le poste de travail). Lors de l'impression (angl. Print), le document imprimer est d'abord envoy dans une file d'attente (angl. Print Queue) qui se trouve sur le serveur d'impression. Le serveur d'impression contient gnralement une file d'attente par imprimante. Les documents d'une file d'attente sont envoys un aprs l'autre vers l'imprimante correspondante. Les serveurs d'applications (angl. Application Server) contiennent des applications ou programmes destins l'utilisation en rseau. Un exemple populaire constituent les applications du type "Groupware", qui permettent aux utilisateurs du rseau d'changer des messages lectroniques (angl. E-Mail), d'entretenir un agenda lectronique commun et de travailler soi-disant en mme temps sur des document partags. Les serveurs de bases de donnes (angl. Database Server), appartenant galement cette catgorie, sont trs rpandues. Avant la priode o les PC devenaient populaires, les bases de donnes ainsi que les programmes pour les manipuler, se trouvaient sur des grands ordinateurs puissants du type "Mainframe". L'utilisateur tait connect au mainframe l'aide d'un terminal compos d'un clavier et d'un cran. Contrairement un PC, un terminal peut uniquement envoyer des caractres au mainframe et afficher les caractres, qui lui sont envoys par le mainframe. Avec l'arrive des PC, dont les fonctionnalits ne se limitent pas l'envoi et l'affichage de caractres, le rle des serveurs a considrablement chang. Actuellement, dans les environnements dits "Client/Serveur", les PC constituent des clients "intelligents", qui sont en parfaite communication avec les serveurs, dont le but principal est de "rpondre" aux questions qui leurs sont poses par les clients. L'architecture Client/Serveur est explicite plus en dtail dans le chapitre 5.6 .

Les rseaux informatiques ayant une certaine taille, en termes du nombre de postes et de serveurs, sont gnralement grs par un administrateur rseau, personne (ou groupe de personnes) en charge de la gestion, du contrle et de l'entretien du rseau.

Lorsque la distance gographique couverte par un rseau augmente en connectant des utilisateurs situs par exemple dans des villes ou mme des pays diffrents, plusieurs rseaux locaux sont connects en un seul rseau tendu (angl. WAN = Wide Area Network), qui peut ainsi regrouper plusieurs milliers d'utilisateurs.

Pierre Stockreiser

92

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Rseau public

En utilisant de l'quipement rseau spcialis dans ce domaine, on peut connecter plusieurs rseaux locaux via un rseau public. Ce rseau public peut par exemple tre constitu du rseau tlphonique public, d'un ensemble de lignes loues (lignes ddies), d'un rseau de cbles en fibre optique, d'un rseau rapide de commutation de paquets ou mme d'une liaison par satellite. A titre d'exemple, on peut mentionner l'Internet, qui n'est rien d'autre qu'un gigantesque rseau tendu.

Pour un utilisateur, le travail dans un rseau local ou tendu est tout fait transparent. Il peut par exemple accder des fichiers distants de la mme manire qu' des fichiers qui se trouvent sur son disque dur local.

Pierre Stockreiser

93

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

5.6 L'approche Client/Serveur


5.6.1 La priode des ordinateurs du type "Mainframe"
Avant la priode o les PC devenaient populaires, les bases de donnes ainsi que les programmes pour les manipuler; se trouvaient sur de grands ordinateurs puissants du type "mainframe". On parlait d'une architecture centralise, puisque les BD, le SGBD et les objets tels que requtes, formulaires, rapports taient stocks sur le "mainframe". L'utilisateur tait connect au "mainframe" l'aide d'un terminal compos d'un clavier et d'un cran. Contrairement un PC, un terminal ne possde aucune "intelligence" propre, c..d. qu'il peut uniquement envoyer des caractres au "mainframe" et afficher les caractres, qui lui sont envoys par le "mainframe", et ceci en plus uniquement en mode caractre1. Lorsque l'utilisateur veut par exemple afficher un formulaire, la construction du formulaire se fait compltement sur le "mainframe". Ensuite, le formulaire o plutt l'apparence du formulaire est envoy via le rseau vers le terminal de l'utilisateur. Exemple d'un formulaire en mode caractre:

un terminal est incapable d'afficher des graphiques

Pierre Stockreiser

94

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Architecture "mainframe":

Avantages de l'architecture "mainframe": Les "mainframe" tant de grands ordinateurs trs puissants, les systmes atteignent de trs belles performances, d'autant plus qu'il n'y a pas de reprsentation graphique sur les terminaux.

Dsavantages de l'architecture "mainframe": Aucune capacit de calcul sur le terminal, donc impossible d'excuter des programmes sur le terminal. Pas de reprsentation graphique sur le terminal. Formulaires etc. moins faciles utiliser. Le "mainframe" tant sous la seule gestion du service informatique, les utilisateurs peuvent uniquement accder les BD via des formulaires etc. crs par les informaticiens. (Cette mesure s'avre parfois avantageuse ) Le rseau est assez charg, surtout lorsque le nombre de terminaux accrot. Les requtes, formulaires etc. sont fortement coupls au SGBD ce qui les rend pratiquement inutilisable lorsqu'une socit veut migrer vers un autre SGBD.

Exemples de SGBD pour "Mainframe": DB2 de IBM RDB de DEC

En fait, les informaticiens sont depuis longtemps la recherche de systmes ouverts. La finalit d'un systme ouvert consiste dans le fait que ses composants (ordinateurs, SGBD etc.)

Pierre Stockreiser

95

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

sont changeables sans que tous les objets en utilisation (requtes, formulaires etc.) doivent tre compltement redfinis resp. reprogramms. Tous les lments d'un tel systme doivent donc supporter au maximum possible certains standards. Un lment important de la philosophie des systmes ouverts est constitu par l'approche Client/Serveur.

5.6.2 L'approche Client/Serveur


L'volution historique des architectures informatiques vers les architectures du type Client/Serveur (angl. Client/Server) dans les annes '90; peut tre ramene surtout aux facteurs suivants. L'arrive au march des PC. L'apparition de serveurs, machines moins chres et moins spacieuses que les "mainframe", avec cependant une capacit de calcul et de stockage analogue celle des "mainframe". L'mergence de systmes d'exploitations standardiss tels que UNIX ou Windows NT. L'apparition des SGBD indpendants de la plate-forme1 et disponible pour tous les systmes d'exploitation standardiss L'approche Client/Serveur implmente une dcentralisation des applications BD. En fait, les BD sont gres sur un serveur BD, tandis que les interfaces pour visualiser et manipuler les donnes (p.ex. formulaires, rapports) se trouvent sur les PC client, dans un environnement ergonomique2. Sur le poste client se trouve donc en principe un SGBD client, offrant toutes les fonctionnalits requises, qui met des requtes formules dans un langage d'interrogation de donnes3 au serveur BD via le rseau. Le serveur excute les requtes qui lui ont t transmises et renvoie le rsultat au client. Le client reprsente alors le rsultat en se servant par exemple d'un formulaire ou d'un rapport qui a t dfini antrieurement.

par plate-forme, on entend l'ordinateur sur lequel est excut le SGBD plus facile utiliser 3 par exemple SQL (voir chapitre 7.2)
1 2

Pierre Stockreiser

96

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Architecture Client/Serveur:

Avantages de l'architecture Client/Serveur: Les utilisateurs deviennent des clients avec des postes de travail intelligents (PC), l'aide desquels ils peuvent connecter les applications bureautiques directement aux serveurs BD, afin de grer dans un environnement convivial les donnes de l'entreprise, sans tre dpendant des services d'un informaticien pour rsoudre le moindre problme. Les rseaux informatiques modernes permettent un accs transparent plusieurs serveurs BD, et ceci mme de faon simultane. Une partie de la capacit de travail est partage entre les serveurs et les clients, ce qui cre un certain quilibre. Une panne du serveur n'empche pas ncessairement tous les utilisateurs de travailler avec l'outil informatique. Certains travaux peuvent tre excuts sans connexion au serveur. L'architecture Client/Serveur, reposant sur les systmes ouvert, offre en plus l'avantage qu'il existe toute une panoplie de logiciels standards, ce qui cre un march multivendeur et une offre de produits quilibre.

Exemples de SGBD Client/Serveur: Ct serveur: Ct client: Oracle, Sybase, Informix, MS-SQL-Server BORLAND Paradox, Personal Oracle, MS-Access

Pierre Stockreiser

97

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

6.

Les tables (angl. tables)

6.1 Dfinition
Une table est une collection de donnes relatives un domaine bien dfini, par exemple les employs d'une socit ou les livres d'une bibliothque. Elle contient des enregistrements dont chacun est compos par les mmes champs de donnes. Voici, titre d'exemple, quelques employs d'une socit:
Jos Weber Age: 34 Salaire: 68000 Luf. Service: Comptabilit Antonio Da Costa Age: 27 Salaire: 70000 Luf. Service: Informatique Emil Feller Age: 43 Salaire: 65000 Luf. Service: Expdition

. . . Voici la table ncessaire pour stocker les informations concernant ces employs dans une BD:

Proprits des tables: Les champs de donnes dfinissent les informations, qu'on veut stocker dans la table (p.ex. des informations concernant les employs d'une socit). Chaque enregistrement reprsente une occurrence de ce qu'on veut stocker ( p.ex. un employ). Chaque table possde un nom unique (p.ex. : tblEmploys). Chaque enregistrement correspond une ligne de la table. Chaque champ correspond une colonne de la table. Chaque champ peut reprsenter des donnes de nature diffrente (Nom, Salaire, Date de naissance ). Chaque champ peut reprsenter des donnes de type diffrent (Texte, Nombres, Dates ). Convention des noms:

Pierre Stockreiser

98

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Il existe une convention concernant les noms des objets des BD. Gnralement, les noms des objets ne contiennent ni d'espaces, ni de caractres spciaux. En plus, chaque nom d'un objet est prcd par un prfixe bien dtermin pour chaque type d'objet. Cette convention fait partie d'une convention des noms gnrale pour les programmes tournant sous une interface graphique du type Windows. Les noms de tables sont prcds du prfixe tbl (angl.: table). Par exemple: tblLivres, tblEmploys Le nom d'une table doit tre unique l'intrieur d'une BD. Une BD peut contenir une ou plusieurs tables, mais les tables sont gnralement la condition ncessaire pour la cration d'autres objets tels que les requtes, formulaires et rapports. Exercice Dterminez les champs ncessaires pour une table qui contiendra des donnes concernant : les lves d'une cole (nous ignorons la gestion des classes); les livres d'une bibliothque (nous supposons qu'un livre est rdig par un seul auteur); les produits d'un supermarch.

Pierre Stockreiser

99

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

6.2 Les champs d'une table


Une table reprenant les donnes concernant les voitures d'une socit de taxis contient par exemple pour chaque enregistrement (= chaque taxi) les informations suivantes: Marque Modle Cylindre Poids Il est vident que les informations sont de types diffrents. Tandis que la marque et le modle sont reprsents par des chanes de caractres (p.ex. "Ford", "BMW", ), la cylindre et le poids sont reprsents par des valeurs numriques. Voici, titre d'exemple, une table qui reprsente les taxis dans une BD: Marque BMW Ford BMW . Modle 525i Orion 320i Cylindre 2500 1800 2000 Poids 1360 1080 1200

Afin de pouvoir reprsenter des donnes de types diffrentes, les SGBD offrent des types de donnes standards pour les champs de donnes. Voici les types de donnes connus par la plupart des SGBD: Type de donnes Date/Heure Valeur boolenne Texte Numrique Mmo Description Date et heure Seulement les 2 valeurs Oui/Non (Yes/No) sont possibles Chanes de caractres Nombres entiers ou dcimaux Documents (textes long)

Consultez le manuel d'utilisation de votre SGBD pour trouver des informations plus dtailles concernant les types de donnes supports. Remarque: Les nombres qui ne sont pas utiliss lors de calculs numriques (p.ex. No.Tl) sont gnralement reprsents l'aide du type de donnes "Texte". Convention des noms: Les noms des champs sont prcds du prfixe fld (angl.: field). Par exemple: fldMarque, fldModle

Pierre Stockreiser

100

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exercice Rflchissez pour chaque champ des 3 tables, que vous avez dfini dans l'exercice du chapitre 6.1, sur le type de donnes appropri.

Exercice Dtaillez dans la table suivante, pour chaque type de donnes implment par votre SGBD, le nom ainsi qu'une description. Rfrez vous au manuel d'utilisation ou au systme d'aide en ligne. Type de donnes Description

Lors de la cration d'une table, nous devons indiquer au SGBD, pour chaque champ: 1. Le nom du champ, qui doit tre unique dans la table 2. Le type de donnes du champ

Pierre Stockreiser

101

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

6.3 Cl primaire
Dans la plupart des cas, on dsire pouvoir identifier de manire unique chaque enregistrement de la table. Ceci n'est pas possible pour notre table avec les taxis. Il se peut trs bien que le propritaire de la socit achte par exemple une deuxime BMW 320i , qui possde bien sur galement une cylindre de 2000 ccm et un poids de 1200 kg. Dans ce cas nous avons 2 enregistrement compltement identiques dans notre BD. Cela nous empche d'identifier clairement un des 2 enregistrements. Il nous faut donc un moyen, qui nous permet d'adresser sans ambigut chaque enregistrement dans la table une cl primaire ! La cl primaire, constitue d'un ou de plusieurs champs, nous permet d'identifier de manire unique chaque enregistrement d'une table. Examinons notre cas de la socit de taxis. Aucun des 4 champs seuls, et aucune combinaison des 4 champs ne se prtent comme candidats pour devenir cl primaire, car aucun de ces champs ne contient des valeurs uniques un et un seul taxi. Supposons par exemple la marque et le modle comme cl primaire. Au cas ou la socit achte un deuxime BMW 320i, on ne pourrait plus distinguer entre les deux voitures. Le ou les champs, qui forment la cl primaire doivent imprativement avoir des valeurs qui sont uniques pour toute la table1, et qui permettent donc d'identifier chaque enregistrement. Exemples: Le numro de la matricule pour les assurs des caisses de maladie. Le numro client pour les clients d'une vidothque.

En ce qui concerne les taxis, nous avons deux possibilits: 1. Analyser s'il n'existe pas d'information concernant les taxis qui ne soit pas encore stocke dans la table et qui ferait une cl primaire valable. Une telle information serait par exemple le numro de chassis, unique pour chaque voiture. On pourrait donc ajouter un champ fldNochassis et dfinir ce champ comme cl primaire. Ceci a comme dsavantage que le numro de chassis d'une voiture est un numro assez long et compliqu, ce qui dfavorise une utilisation conviviale de la table. 2. On pourrait inventer un numro de taxi allant simplement de 1 jusqu'au nombre de taxis que la socit possde. Le premier taxi enregistr serait le numro TAXI=1, le deuxime le numro TAXI=2 etc. . Bien que ce numro n'ait aucune signification relle, cette mthode de cration de cls primaires artificielles est trs rpandue, et la plupart des SGBD offrent mme un type de donnes prdfini pour gnrer des valeurs uniques pour de telles cls primaires. Notre table aurait dans ce cas la structure suivante:

pour une cl primaire compose de plusieurs champs, la combinaison des valeurs doit tre unique

Pierre Stockreiser

102

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Cl primaire

idTaxi 1 2 3 ...

fldMarque BMW Ford BMW ...

fldModle 525i Orion 320i ...

fldCylindre 2500 1800 2000 ...

fldPoids 1360 1080 1200 ...

Convention des noms: Les noms des champs qui forment la cl primaire sont prcds du prfixe id (angl.: identifier). Par exemple: idTaxi, idEmploy

Exercice Dfinissez pour chacune des 3 tables, que vous avez dfini dans l'exercice du chapitre 6.1, une cl primaire parmi les champs existants, resp. crez un nouveau champ qui assumera le rle de cl primaire. Indiquez dans la grille suivante pour chaque table toutes les informations ncessaires.

Nom de la table:
Membre de la Nom du cl primaire champ (Cochez la case si OUI ) Type de donnes Description

Pierre Stockreiser

103

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Nom de la table:
Membre de la Nom du cl primaire champ (Cochez la case si OUI ) Type de donnes Description

Nom de la table:
Membre de la Nom du cl primaire champ (Cochez la case si OUI ) Type de donnes Description

Pierre Stockreiser

104

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

6.4 Relations entre tables - cl trangre


Une base de donnes bien concipe est rarement compose d'une seule table, mais d'un ensemble de tables, entre lesquelles il existe certaines relations (voir Partie1: Modlisation d'un systme d'information). Exemple: Soit la BD suivante d'un organisme de scurit sociale.

La table tblEmploys contient certaines informations concernant les employs, mais pas le nom de la socit, qui emploie un employ en question. Les informations des socits se trouvent dans la table tblSocits. Cependant, dans la table tblEmploys se trouve le champ fiSocit, qui contient pour chaque employ le numro de la socit patron. On peut retrouver chaque numro de socit encore une fois dans le champ idSocit, qui constitue la cl primaire de tblSocits. Les deux tables sont donc logiquement lies via les champs fiSocit et idSocit. On dit que fiSocit est une cl trangre, qui fait rfrence la cl primaire idSocit de la table tblSocits.

Cl trangre Un champ qui, dans une table, fait rfrence la cl primaire d'une autre table est appel cl trangre (angl.: foreign key). Ainsi sont dfinies les relations entre les tables.

Pierre Stockreiser

105

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

6.5 Index
Une des utilisations frquentes des tables consiste dans la recherche et le tri des enregistrements. Lorsque les tables contiennent un grand nombre d'enregistrements, la recherche de certains enregistrements ainsi que le tri d'enregistrements ncessitent de plus en plus de temps. Les index sont des structures qui acclrent les tris et recherches dans les tables, ainsi que l'excution de certaines requtes (voir chapitre 7). Exemple: Reprenons notre exemple des employs d'une socit. Une recherche intressante serait par exemple: MONTRE-MOI TOUS LES EMPLOYS DU SERVICE INFORMATIQUE ! Il serait aussi intressant de trier les employs sur leur nom de famille. Au cas ou la table contient beaucoup d'enregistrements, on devrait d'abord crer un index sur le champ fldNom, afin d'acclrer le tri. Crer par exemple un index sur le champ fldNom veut dire que le SGBD copie toutes les valeurs existantes du champ fldNom dans une liste spciale 2 colonnes. La deuxime colonne contient les noms tris en ordre alphabtique, et la premire contient une rfrence vers l'enregistrement correspondant de la table.

Il est vident que par la suite de la cration de cet index, toutes les recherches et les tris concernant le nom de l'employ sont acclres, puisque le SGBD consulte uniquement l'index pour retrouver le bon nom, pour ensuite utiliser la rfrence de l'index vers l'enregistrement correspondant de la table. Un index peut aussi comporter plusieurs champs comme par exemple fldService et fldNom. Proprits importantes des index: Un index est toujours li un ou plusieurs champs d'une table. Un index peut seulement contenir des champs ayant un des types de donnes Texte, Numrique ou Date/Heure. Un index est automatiquement mis jour par le SGBD lors d'un ajout, d'une modification ou d'une suppression d'enregistrements dans la table. Ceci est transparent pour l'utilisateur de la BD. Il existe deux types d'index: 1. Index avec doublons (Les valeurs doubles sont permises) 2. Index sans doublons (Les valeurs doubles ne sont pas permises) Voici quelques rgles qui nous aident dterminer les champs d'une table qui ont besoin d'tre indexs:

Pierre Stockreiser

106

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

La puissance des index joue uniquement pour des tables qui contiennent beaucoup d'enregistrements (Consultez la documentation de votre SGBD afin d'avoir des prcisions). Un champ sur lequel on ne fait que rarement ou pas du tout de recherche ou de tri n'a pas besoin d'index. Les champs rfrencs frquemment dans les recherches et tris doivent par contre tre indexs. Pour les index multi-champs, il faut veiller ce que la combinaison des champs dans l'index corresponde exactement au critre de recherche. Un index sur nom&prnom n'acclre pas une recherche du type prnom=Jos & nom=Weber. Un index sans doublons sur un champ empche l'utilisateur d'entrer la mme valeur dans ce champ, dans deux enregistrements diffrents. Dfinir trop d'indexes sur une table ralentit en gnral les oprations d'ajout, de modification et de suppression, parce que le SGBD doit mettre jour la table et l'index. La cl primaire est toujours indexe l'aide d'un index sans doublons ! 1

A faire : TP No 2

Pour la plupart des SGBD, ceci est fait de faon automatique lors de la dfinition d'un ou de plusieurs champs comme cl primaire .
1

Pierre Stockreiser

107

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.

Les requtes (angl. queries)

7.1 Dfinition
Nous avons vu que la plupart des SGBD offrent la possibilit d'effectuer des recherches directement dans les tables. Les possibilits de formuler des critres de recherche sont cependant souvent assez limites. Heureusement, la plupart des SGBD nous offrent galement la possibilit de poser pratiquement n'importe quelle "question" nos tables, sous forme de requtes. Les requtes servent donc rpondre aux questions bases sur le contenu d'une ou de plusieurs tables. Nous allons plus tard tudier des requtes, qui se basent sur plusieurs tables, mais pour l'instant nous allons nous limiter aux questions simples bases sur une seule table. Exemple: Reprenons notre table avec les taxis: Taxi 1 2 3 fldMarque BMW Ford BMW . fldModle 525i Orion 320i fldCylindre 2500 1800 2000 fldPoids 1360 1080 1200

Une requte simple serait par exemple: Quelles sont les marques et modles des voitures ayant une cylindre suprieure 2000 ? Le rsultat serait un sous-ensemble de la table avec seulement les enregistrements qui vrifient le critre de slection ( cylindre > 2000). Pour chacun de ces enregistrements, le SGBD affiche en plus seulement les champs explicitement demands ( fldMarque et fldModle). Une requte simple produit donc comme rsultat un sous-ensemble des enregistrements d'une table. En plus, une requte nous permet d'afficher seulement certains champs pour les enregistrements appartenant ce sous-ensemble. On appelle ces requtes "Requtes de Slection", puisqu'il s'agit d'une slection de certains enregistrements. Il n'existe cependant pas seulement des requtes de slection, mais galement: Des requtes d'insertion insrer des enregistrements dans la table. p.ex. Insrer un nouveau taxi : 4, BMW, 325i, 2500, 1270. Des requtes de modification modifier des enregistrements dans la table. p.ex. Modifier la cylindre des Ford Orion de faon ce qu'elle devienne 2000. Des requtes de suppression supprimer des enregistrements de la table. p.ex. Supprimer toutes les BMW. Les requtes possdent l'avantage de pouvoir manipuler facilement un grand nombre d'enregistrements sans que l'utilisateur ne doive s'occuper de slectionner enregistrement par enregistrement. Il lui suffit de spcifier des critres de slection pour la requte, ainsi que

Pierre Stockreiser

108

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

l'opration effectuer ( simple slection et affichage, insertion, modification ou suppression). Bien que les requtes de slection soient implmentes d'une manire plus ou moins cohrente travers les SGBD actuels, il existe des diffrences subtiles en ce qui concerne les requtes d'insertion, de modification ainsi que de suppression. En plus, l'insertion et la suppression se font souvent de manire plus facile directement dans la table. Il existe 4 types de requtes: 1. 2. 3. 4. Requtes de slection. Requtes d'insertion. Requtes de modification. Requtes de suppression.

Pour chaque requte nous retrouvons le cycle suivant:

Exercice Quel est en gnral le rsultat d'une requte: de slection : d'insertion : de modification : de suppression :

Pierre Stockreiser

109

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2 Introduction au langage SQL


7.2.1 Gnralits
Nous avons vu au chapitre prcdent qu'il faut d'abord formuler une requte et puis l'excuter, afin d'avoir des rsultats. Vous pouvez probablement bien vous imaginer que les SGBD actuels ne comprennent pas le langage naturel. Aucun SGBD n'offre une possibilit d'crire p.ex. Je veux voir tous les taxis dont la marque est Ford Pour formuler une requte, l'utilisateur doit donc utiliser un langage spcialis pour ce domaine. Le langage SQL (Structured Query Language) est un standard international, en ce qui concerne les langages de manipulation des BD. SQL est connu par tous les SGBDR. Il faut cependant mentionner que, dsormais la prsence de standards internationaux tels que SQL86, SQL-89 ou SQL-92, chaque SGBD sur le march utilise un peu son propre dialecte du langage SQL.

Pierre Stockreiser

110

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.2 Syntaxe SQL de base


Nous distinguons les 4 types de requtes suivants.

1. Requtes de slection.
SELECT <Nom des champs> FROM <Nom de la table> WHERE <Critres de slection>;

2. Requtes d'insertion.
INSERT INTO <Nom de la table> [(<Liste des champs>)] VALUES ( <Valeurs pour les champs> ); Attention: Lorsque vous n'indiquez pas la liste des champs derrire INSERT INTO , vous devez spcifier une valeur pour chaque champ de la table derrire VALUES . Les parenthses derrire VALUES sont obligatoires. La liste des champs, lorsqu'elle est indique, contient les noms des champs, spars par une virgule, et doit galement tre entoure de parenthses.

3. Requtes de modification.
UPDATE <Nom de la table> SET <Nom d'un champ>={valeur}, champ>={valeur}, . . WHERE <Critres de slection>; <Nom d'un

4. Requtes de suppression.
DELETE FROM <Nom de la table> WHERE <Critres de slection>;

Pierre Stockreiser

111

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Soit une table des employs d'une entreprise avec la structure suivante:

Voici le code SQL ncessaire pour effectuer quelques requtes lmentaires: 1. Afficher le prnom et le nom de tous les employs
SELECT fldPrnom, fldNom FROM tblEmploys;

2. Insrer une nouvelle employe: 20 Angela Portante ITA 27 F Comptabilit

INSERT INTO tblEmploys VALUES (20, 'Angela', 'Portante', 'ITA', 27, 'F', 'Comptabilit');

Remarques: Les valeurs sont spares par des virgules. En SQL, les donnes du type TEXTE sont entoures d'apostrophes. Les dates sont entoures du caractre # et indiques dans le format amricain #Mois/Jour/Anne# Exemple: 20/4/98 #04/20/98# ou #4/20/98# ou #04/20/1998# ou #4/20/1998#

3. Afficher toutes les nationalits reprsentes dans la socit


SELECT fldNationalit FROM tblEmploys;

Quel est inconvnient de cette requte ? ______________________________________ Soit l'adaptation suivante de la requte:
SELECT DISTINCT fldNationalit FROM tblEmploys;

Expliquez l'utilit de l'option DISTINCT

Pierre Stockreiser

112

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

4. Afficher tous les champs pour tous les employs


SELECT idEmploy, fldService FROM tblEmploys; fldPrnom, fldNom, fldNationalit, fldAge, fldSexe,

ou
SELECT * FROM tblEmploys;

Remarque: L'oprateur * permet d'afficher tous les champs dfinis dans la table.

Pierre Stockreiser

113

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.3 Les critres de slection


Les critres de slection constituent une expression logique; qui peut prendre la valeur 'Vrai' ou 'Faux'. Les critres de slection sont appliqus chaque enregistrement d'une table. Lorsque pour un enregistrement donn, l'expression logique prend la valeur 'Vrai', cet enregistrement : fait partie du rsultat pour une requte de slection; est modifi pour une requte de modification; est effac pour une requte de suppression; Comparaison une valeur donne. Pour chaque enregistrement, la valeur d'un champ donn est compare une valeur fixe. Cette valeur fixe est gnralement une valeur numrique, une date ou un texte. Voici les oprateurs de comparaison: = > < >= <= <> Exemples: 1. Afficher le prnom et le nom de tous les employs du service "Marketing"
SELECT fldPrnom, fldNom FROM tblEmploys WHERE fldService='Marketing';

"est gal" "strictement suprieur" "strictement infrieur" "suprieur ou gal" "infrieur ou gal" "est diffrent"

2. Afficher le prnom, le nom et l'ge de tous les employs plus jeunes que 50 ans
SELECT fldPrnom, fldNom, fldAge FROM tblEmploys WHERE fldAge<50;

Quel problme se pose lorsqu'on excute cette mme requte encore une fois un an plus tard ?

Comment peut-on viter un tel problme ds le dpart, dj lors de la conception des tables ?

Pierre Stockreiser

114

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

3. Augmentez de la valeur 1 l'ge de Madame Angela Portante.


UPDATE tblEmploys SET fldAge=fldAge+1 WHERE fldNom='Portante';

Remarque: Cette requte peut provoquer des rsultats imprvus au cas ou plusieurs employs ont par exemple le mme nom. Pour tre certain de ne pas commettre d'erreur, il faudrait d'abord slectionner tous les employs qui s'appellent "Portante". Lorsque cette requte ne fournit qu'un seul enregistrement, vous pouvez excuter la requte comme indiqu en haut. Par contre lorsque vous remarquez que la table contient plusieurs employs au nom de "Portante", vrifiez les enregistrements, et retenez la valeur de la cl primaire (idEmploy) pour l'employ que vous dsirez modifier. Ensuite utilisez la valeur de idEmploy dans la partie WHERE de la commande UPDATE (.WHERE idEmploy=<valeur>). 4. Effacez tous les employs du service Informatique.
DELETE FROM tblEmploys WHERE fldService='Informatique';

Pierre Stockreiser

115

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.4 Comparaison un filtre

Parfois, on ne connat pas la valeur exacte laquelle on veut comparer la valeur d'un champ. Dans ce cas on peut utiliser un filtre. Un filtre est une expression qui peut contenir des lettres, des chiffres et en plus les 2 caractres spciaux (angl. Wildcards) suivants: % reprsente n'importe quelle squence de 0 ou plusieurs caractres; _ reprsente un seul caractre quelconque. Exemple: Exemple: Pour rechercher des personnes dont le nom est 'SCHMITZ' ou 'SCHMITT' ou 'SCHMIT' etc. on dfinit par exemple le filtre suivant : 'SCHMI%' Le filtre 'BL__' slectionne par exemple les valeurs 'BLEU' ou 'BLUE' mais pas 'BLANC'

Les filtres sont utiliss ensemble avec le mot rserv LIKE. Voici la syntaxe: ... WHERE <Nom du champ> LIKE <Filtre> Exemples: 1. Afficher le nom et le prnom des employs dont le prnom contient un trait d'union (p.ex. Jean-Jacques)
SELECT fldNom, fldPrnom FROM tblEmploys WHERE fldPrnom LIKE '%-%';

2. Afficher le nom, le prnom et l'ge des employs dont le nom commence par 'W', est compos de 5 lettres et se termine par 'R'
SELECT fldNom, fldPrnom, fldAge FROM tblEmploys WHERE fldNom LIKE 'W___R';

Remarque Pour les manipulations pratiques, il faut se rendre compte que certains SGBD utilisent des caractres spciaux diffrents pour reprsenter une squence de caractres respectivement un caractre quelconque. MS-Access par exemple utilise les caractres suivants: SQL Squence de 0 ou plusieurs caractres Un seul caractre quelconque MS-Access

% _

* ?

Pierre Stockreiser

116

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.5 Les oprateurs logiques

Il existe 3 oprateurs logiques: 1. NOT (Ngation logique)

L'oprateur NOT inverse le rsultat d'une expression logique. 2. AND (Et logique)

L'oprateur AND nous permet de combiner plusieurs conditions dans une expression logique. L'expression logique retourne uniquement la valeur 'Vrai' lorsque toutes les conditions sont remplies. 3. OR (Ou logique)

L'oprateur OR nous permet de combiner plusieurs conditions dans une expression logique. L'expression logique retourne la valeur 'Vrai' lorsque au moins une des conditions est remplie. Priorit des oprateurs logiques Lorsqu'on combine plusieurs conditions par des oprateurs logiques, le rsultat final de l'expression logique dpend de l'ordre d'excution des diffrentes conditions. Cet ordre est dtermin par la priorit des oprateurs logiques. Voici l'ordre prdfini en SQL: 1. 2. 3. 4. Dterminer le rsultat logique ('Vrai','Faux') des comparaisons (=, <, > etc.) Effectuer les ngations (NOT) Effectuer les AND Effectuer les OR

Pour modifier cet ordre d'excution, nous pouvons utiliser des parenthses afin de grouper les diffrentes conditions logiques. Exemples 1. Afficher le prnom et le nom de tous les employs qui ne travaillent pas dans le service "Marketing"
SELECT fldPrnom, fldNom FROM tblEmploys WHERE NOT fldService='Marketing';

Formulez une requte qui affiche exactement le mme rsultat, sans utiliser l'oprateur NOT.
SELECT fldPrnom, fldNom FROM tblEmploys WHERE fldService<>'Marketing';

Pierre Stockreiser

117

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

2. Afficher le numro d'employ, le prnom et le nom de tous les employs dont le nom ne commence pas par la lettre 'W'
SELECT idEmploy, fldPrnom, fldNom FROM tblEmploys WHERE fldNom NOT LIKE 'W%';

3. Afficher le numro de l'employ, le prnom et le nom pour les employs du service Informatique qui ont moins de 30 ans.
SELECT idEmploy, fldPrnom, fldNom FROM tblEmploys WHERE fldService='Informatique' AND fldAge<30;

4. Afficher le prnom et nom des employs fminins (code=F) qui ne travaillent pas au service marketing.
SELECT fldPrnom, fldNom FROM tblEmploys WHERE fldSexe='F' AND NOT fldService='Marketing';

ou
SELECT fldPrnom, fldNom FROM tblEmploys WHERE fldSexe='F' AND fldService<>'Marketing';

5. Afficher tous les champs pour les employs de nationalit luxembourgeoise (Code=LUX) ou portugaise (Code=PRT).
SELECT * FROM tblEmploys WHERE fldNationalit='LUX' OR fldNationalit='PRT';

6. L'employ Emil Meier est transfr du service Comptabilit dans le service Informatique. Refltez ce changement dans la table.
UPDATE tblEmploys SET fldService='Informatique' WHERE fldPrnom='Emil' AND fldNom='Meier';

Pierre Stockreiser

118

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Remarque: Cette requte peut provoquer des rsultats imprvus au cas ou plusieurs employs ont par exemple le mme nom. Pour tre certain de ne pas commettre d'erreur, il faudrait d'abord slectionner tous les employs qui s'appellent Emil Meier. Lorsque cette requte ne fournit qu'un seul enregistrement, vous pouvez excuter la requte comme indiqu en haut. Par contre lorsque vous remarquez que la table contient plusieurs employs au nom de Emil Meier, vrifiez les enregistrements, et retenez la valeur de la cl primaire (idEmploy) pour l'employ que vous dsirez modifier. Ensuite utilisez la valeur de idEmploy dans la partie WHERE de la commande UPDATE (.WHERE idEmploy=<valeur>).

7. Affichez tous les champs pour les employs fminins de nationalit luxembourgeoise (Code='LUX') ou allemande (Code='ALL')
SELECT * FROM tblEmploys WHERE (fldNationalit='LUX' OR fldNationalit='ALL') AND fldSexe='F';

Est-ce que cette requte serait correcte sans les parenthses ?

Pierre Stockreiser

119

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.6 Valeur zro, chane vide et valeur indtermine (NULL)

Gnralement, chaque champ dfini dans une table possde une valeur bien dfinie. Il existe pourtant des situations dans lesquelles cette valeur est inconnue ou n'existe pas temporairement. La quantit en stock d'un nouveau produit par exemple peut tre 0, le prnom ne s'applique pas du tout pour un client du type "Socit" tandis que l'adresse d'un nouveau client peut tre encore inconnue lors de l'insertion des donnes du client dans une BD. Les SGBD nous offrent en gnral 3 valeurs pour ces types de situations: Le nombre 0 ; La chane de caractres vide ('') ; La valeur prdfinie NULL (Valeur indtermine, Champ vide). Il n'est pas toujours vident de dcider sur la bonne valeur. Voici quelques rflexions concernant les exemples noncs: Pour le stock d'un produit, qui est 0 au dbut, il est conseill d'insrer effectivement ds le dbut la valeur numrique 0. On a effectivement 0 produits dans le stock ce qui ne veut pas dire que la quantit en stock est indtermine. Pour le prnom d'un client du type "Socit" on utilise la chane vide (''). Le prnom d'une socit est dfinitivement non-existant. En ce qui concerne l'adresse d'un nouveau client, on insre la valeur NULL, ce qui veut dire que l'adresse est (pour le moment) indtermine. On est plus ou moins sr de connatre l'adresse un moment ultrieur. Lorsque pour un nouveau client, vous ne connaissez pas le numro de fax, on doit distinguer deux cas. Si le client n'a pas de fax, vous n'aurez dfinitivement pas son numro de fax, et vous pouvez affecter la chane vide au champ. Si par contre le client possde un numro de fax, mais pour une raison ou l'autre vous l'ignorez encore, vous devez affecter la valeur NULL au champ. En cas de doute, affectez la valeur NULL. En gnral, on peut dire que la valeur NULL est uniquement affecte un champ en cas d'indtermination de la valeur du champ. Remarques: On peut insrer la valeur NULL de faon explicite, par exemple l'aide d'une requte d'insertion. La plupart des SGBD insrent automatiquement la valeur NULL pour chaque champ qui n'a pas de valeur explicite associe dans une requte d'insertion. Chaque expression logique, qui contient une condition indtermine prend la valeur NULL. On peut donc affirmer, qu'un enregistrement qui contient une valeur NULL pour un champ donn, n'apparat pas dans une slection portant sur une comparaison avec une valeur pour ce champ. L'oprateur IS NULL nous permet de tester de faon explicite si une valeur est indtermine pour un champ. L'oprateur IS NOT NULL permet de tester inversement le fait que la valeur est bien dtermine. Exemple:

Pierre Stockreiser

120

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

1. Vous devez ajouter un nouvel employ dans la BD. Voici les informations dont vous disposez: 24 Marcel Schrobiltgen LUX ? M ?

Sachant que M.Schrobiltgen n'est pas du tout affect un service spcifique, puisqu'il est le rviseur interne de l'entreprise, formulez la requte d'insertion.
INSERT INTO tblEmploys VALUES (24, 'Marcel', 'Schrobiltgen', 'LUX', NULL, 'M', '');

ou
INSERT INTO tblEmploys (idEmploy, fldPrnom, fldNom, fldNationalit, fldSexe, fldService) VALUES (24, 'Marcel', 'Schrobiltgen', 'LUX', 'M', '');

Attention: On ne connat pas encore l'ge de M.Schrobiltgen, puisqu'on a probablement oubli de le lui demander. Toutefois on est sr de le connatre plus tard, ce qui veut dire que pour l'instant son ge est indtermin et qu'on affecte la valeur NULL au champ fldAge. En ce qui concerne le service, celui-ci n'est pas vraiment indtermin, puisqu'on sait trs bien que M.Schrobiltgen n'est pas du tout affect un service. Pour cela , le champ fldService contiendra une chane vide. Exercice Dans laquelle des requtes suivantes va apparatre M.Schrobiltgen ?
SELECT * FROM tblEmploys WHERE fldAge=0; SELECT * FROM tblEmploys WHERE fldAge IS NULL; SELECT * FROM tblEmploys WHERE fldService=''; SELECT * FROM tblEmploys WHERE fldService IS NULL; SELECT * FROM tblEmploys WHERE fldAge IS NOT NULL AND fldService=''; SELECT * FROM tblEmploys WHERE fldAge IS NOT NULL OR fldService='';

7.2.7 Comparaison une fourchette de valeurs

Pierre Stockreiser

121

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

L'oprateur BETWEEN ... AND ... permet de dterminer si la valeur d'un champ donn appartient un intervalle bien dfini. L'intervalle est gnralement un intervalle numrique ou un intervalle du type Date. Exemples 1. Afficher le numro d'employ, le nom et l'ge des employs gs entre 30 et 50 ans.
SELECT idEmploy, fldNom, fldAge FROM tblEmploys WHERE fldAge BETWEEN 30 AND 50;

Formulez une requte qui affiche exactement le mme rsultat, sans utiliser l'oprateur BETWEEN ... AND ....
SELECT idEmploy, fldNom, fldAge FROM tblEmploys WHERE fldAge>=30 AND fldAge<=50;

2. Afficher tous les champs pour les employs masculins gs entre 20 et 30 ans et les employs fminins gs entre 40 et 50 ans.
SELECT * FROM tblEmploys WHERE fldSexe='M' AND fldAge BETWEEN 20 AND 30 OR fldSexe='F' AND fldAge BETWEEN 40 AND 50;

Pierre Stockreiser

122

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.8 Comparaison une liste de valeurs

L'oprateur IN (<Liste de valeurs>) permet de dterminer si la valeur d'un champ donn appartient une liste de valeurs prdfinies. Les valeurs dans la liste des valeurs sont gnralement des valeurs numriques, des valeurs du type Texte ou des valeurs du type Date. Exemples: 1. Afficher le numro d'employ, le nom, l'ge et le service des employs qui sont affects aux services 'Comptabilit', 'Informatique' et 'Vente'.
SELECT idEmploy, fldNom, fldAge, fldService FROM tblEmploys WHERE fldService IN ('Comptabilit','Informatique','Vente');

Formulez une requte qui affiche exactement le mme rsultat, sans utiliser l'oprateur IN.
SELECT idEmploy, fldNom, fldAge, fldService FROM tblEmploys WHERE fldService='Comptabilit' OR fldService='Informatique'OR fldService='Vente';

2. Afficher tous les champs pour les employs masculins, gs d'au moins 30 ans qui ne sont pas de nationalit luxembourgeoise (Code='LUX'), portugaise (Code='PRT'), allemande (Code='ALL') ou italienne (Code='ITA')
SELECT * FROM tblEmploys WHERE fldSexe='M' AND fldAge>=30 AND fldNationalit NOT IN ('LUX', 'PRT', 'ALL', 'ITA');

Pierre Stockreiser

123

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.9 Dfinir l'ordre d'une requte de slection


L'ordre obtenu dans la rponse d'une requte de slection a t laiss jusqu' maintenant au pur hasard. L'expression ORDER BY nous permet de dfinir convenablement l'ordre d'apparition des enregistrements qui vrifient les critres de slection de la requte. Voici la syntaxe:
SELECT <Nom des champs> FROM <Nom de la table> WHERE <Critres de slection> ORDER BY <Nom d'un champ>[ASC/DESC], ;

champ>[ASC/DESC],

<Nom

d'un

Par dfaut l'ordre de tri est ascendant (ASC), donc vous n'avez pas ncessairement besoin d'indiquer le mot ASC. Cependant, lorsque vous voulez trier les enregistrements en ordre descendant, le mot DESC est indispensable. Exemples: Soit la table suivante.

Exemple 1:
SELECT idLivre, fldTitre, fldAuteur, fldPrix FROM tblLivres ORDER BY fldPrix;

respectivement
SELECT idLivre, fldTitre, fldAuteur, fldPrix FROM tblLivres ORDER BY fldPrix ASC;

Pierre Stockreiser

124

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exemple 2:
SELECT idLivre, fldTitre, fldAuteur, fldPrix FROM tblLivres ORDER BY fldPrix DESC;

On peut aussi trier sur plusieurs champs. Pour afficher tous les livres tris d'abord sur leur genre en ordre ascendant et pour chaque genre sur le prix en ordre descendant, on utilise la requte suivante: Exemple 3:
SELECT idLivre, fldTitre, fldAuteur, fldGenre, fldPrix FROM tblLivres ORDER BY fldGenre ASC, fldPrix DESC;

Pierre Stockreiser

125

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Nous remarquons que l'ordre de tri est bas sur l'ordre alphabtique pour les champs de type TEXTE et sur l'ordre numrique pour les champs de type NUMERIQUE. La plupart des SGBD sont galement capable de trier des valeurs de type DATE. Exemple 4: Afficher le numro du livre, le titre, l'auteur et la langue de tous les romans. Triez la liste en ordre descendant sur la langue.
SELECT idLivre, fldTitre, fldAuteur, fldLangue FROM tblLivres WHERE fldGenre='Roman' ORDER BY fldLangue DESC;

Pierre Stockreiser

126

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.10

Les valeurs calcules

Dans une requte on a la possibilit de dfinir des champs valeur calcule. Un tel champ ne fait pas partie d'une table, mais contient une valeur, qui est calcule sur base d'un ou de plusieurs champs existants. Exemple:
SELECT idLivre, fldTitre, fldPrix*1.15 AS PrixTTC FROM tblLivres;

Champ valeur calcule

Remarque: On peut utiliser un champ valeur calcule pour renommer un champ affich dans une requte. Exemple:
SELECT idLivre As ISBN , fldTitre FROM tblLivres;

Champ valeur calcule

Un champ valeur calcule n'est pas confondre aux calculs qui peuvent intervenir l'intrieur d'un critre de slection. Comme un critre de slection n'est rien d'autre qu'une expression, qui peut tre value soit la valeur logique VRAI, soit la valeur logique FAUX, la requte suivante est absolument correcte, mais ne dfinit pas de champ valeur calcule.
SELECT idLivre, fldTitre FROM tblLivres WHERE (fldPrix*fldEnStock)<5000;

Pierre Stockreiser

127

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.11

Les fonctions d'agrgation

Derrire ce mot compliqu se cachent quelques fonctions qui peuvent tre utilises l'intrieur des requtes de slection pour faire des calculs sur le rsultat de la requte. Imaginons la requte suivante:
SELECT * FROM tblLivres WHERE fldEnStock=0;

Cette requte nous retourne tous les livres dont il n'y a plus d'exemplaire en stock. Il se peut trs bien que l'utilisateur ne soit pas intress dans le dtail, mais veut uniquement connatre le nombre de livres dont il n'y a plus d'exemplaires en stock. La requte correspondante est:
SELECT COUNT (*) FROM tblLivres WHERE fldEnStock=0;

Le rsultat de cette requte est une valeur unique indiquant combien de livres se trouvent dans la table avec le champ fldEnStock ayant la valeur 0. Les paramtres d'une fonction d'agrgation sont toujours entours de parenthses. Voici les fonctions d'agrgations les plus rpandues: COUNT (*) COUNT (Nom d'un champ) SUM (Nom d'un champ) AVG (Nom d'un champ) MAX (Nom d'un champ) MIN (Nom d'un champ) Dtermine le nombre d'enregistrements du rsultat de la requte. Tient compte de tous les enregistrements, y inclus ceux contenant des valeurs NULL Dtermine le nombre des enregistrements pour lesquels le champ indiqu ne contient pas la valeur NULL Calcule pour tous les enregistrements slectionns, la somme des valeurs du champ indiqu, pourvu que cette valeur soit diffrente de NULL. Calcule pour tous les enregistrements slectionns, la moyenne des valeurs du champ indiqu, pourvu que cette valeur soit diffrente de NULL. Dtermine pour tous les enregistrements slectionns, la plus grande des valeurs du champ indiqu, pourvu que cette valeur soit diffrente de NULL. Dtermine pour tous les enregistrements slectionns, la plus petite des valeurs du champ indiqu, pourvu que cette valeur soit diffrente de NULL.

Exemples: 1. Affichez la moyenne des prix des livres allemands.


SELECT AVG(fldPrix) FROM tblLivres WHERE fldLangue='ALL';

Pierre Stockreiser

128

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

2. Affichez la quantit totale des exemplaires de romans allemands en stock.


SELECT SUM(fldEnStock) FROM tblLivres WHERE fldGenre='Roman' AND fldLangue='ALL';

3. Combien de livres d'histoires sont disponibles en langue franaise ?


SELECT COUNT(*) FROM tblLivres WHERE fld Genre='Histoire' AND fldLangue='FRA';

4. Dterminez le prix du roman anglais le plus cher qui est actuellement disponible.
SELECT MAX(fldPrix) FROM tblLivres WHERE fldGenre='Roman' AND fldLangue='ANG' AND fldEnStock>0;

Remarque: Les fonctions d'agrgation admettent comme paramtre galement des expressions contenant plusieurs champs ainsi que DISTINCT. Exemples: 1. Calculez la valeur actuelle du stock
SELECT SUM(fldPrix * fldEnStock) FROM tblLivres;

2. Combien de langues diffrentes sont reprsentes dans notre stock de livres


SELECT COUNT(DISTINCT fldLangue) FROM tblLivres;

A faire : Exercice 1

Pierre Stockreiser

129

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.12
7.2.12.1

Requtes sur les groupes


La clause GROUP BY

Reprenons notre table avec les livres d'une librairie.

Soit la requte suivante:


SELECT fldTitre,fldGenre,fldEnStock FROM tblLivres;

Voici titre d'exemple le rsultat de cette requte

Si on voulait connatre la quantit en stock par genre de livre, on aurait le rsultat suivant:

Pierre Stockreiser

130

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

SQL nous offre une extension la requte de slection, qui nous permet de formuler exactement ce type de questions. La clause GROUP BY <Liste des champs de groupe> rpartit le rsultat d'une requte de slection en groupes. Gnralement, on applique une fonction d'agrgation aux membres de chaque groupe. Voici la requte qui nous donne le tableau prcdant:
SELECT fldGenre, SUM(fldEnStock) As 'En Stock' FROM tblLivres GROUP BY fldGenre;

La clause GROUP BY fldGenre cre des groupes selon les valeurs du champ fldGenre, c..d. les 3 groupes 'Histoire' , 'Roman' et 'Technique'. La partie SELECT fldGenre, SUM(fldEnStock) affiche pour chaque groupe une seule ligne, qui contient la valeur du champ de groupe fldGenre, ainsi que la somme des valeurs du champ fldEnStock. La partie ... AS 'En Stock' est uniquement utilise afin de renommer l'en-tte du champ calcul via la fonction d'agrgation SUM.

La clause GROUP BY La clause GROUP BY <Liste des champs de groupe> intervient sur le rsultat d'un SELECT. En fait, les enregistrements rsultant d'une requte de slection sont groups, de faon qu' l'intrieur de chaque groupe, les valeurs pour la liste des champs de groupe soient identiques. Gnralement, on applique une fonction d'agrgation un ou plusieurs champs, ne faisant pas partie de la liste des champs de groupe. Attention: La clause SELECT peut uniquement contenir des champs faisant partie de la liste des champs de groupe ou des fonctions d'agrgation appliques un des autres champs. La requte de slection peut bien sr contenir des critres de slection (WHERE ...), qui liminent un certain nombre d'enregistrements dj avant la cration des groupes. On a la possibilit d'appliquer la clause ORDER BY au rsultat d'un GROUP BY Syntaxe:
SELECT <Liste des champs de groupe>,[COUNT/SUM...] FROM <Nom de la table> WHERE <Critres de slection> GROUP BY <Liste de champs de groupe> ORDER BY <Nom d'un champ>[ASC/DESC], <Nom d'un champ>[ASC/DESC], ;

Pierre Stockreiser

131

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exemples: 1. Classez les genres de livres par ordre descendant et affichez pour chaque genre la moyenne du prix.
SELECT fldGenre, AVG(fldPrix) FROM tblLivres GROUP BY fldGenre ORDER BY fldGenre DESC;

2. Mme question, mais en tenant uniquement compte des livres anglais


SELECT fldGenre, AVG(fldPrix) FROM tblLivres WHERE fldLangue='ANG' GROUP BY fldGenre ORDER BY fldGenre DESC;

3. Affichez pour chaque genre, le nombre de titres disponibles, ainsi que la quantit d'exemplaires en stock.
SELECT fldGenre, COUNT(fldTitre), SUM(fldEnStock) FROM tblLivres GROUP BY fldGenre;

ou
SELECT fldGenre, COUNT(*), SUM(fldEnStock) FROM tblLivres GROUP BY fldGenre;

4. Regroupez les livres par genre et par langue et affichez pour chaque groupe la valeur en stock des livres. Triez le rsultat par ordre ascendant sur les langues, et l'intrieur d'une langue par ordre ascendant sur le genre.
SELECT fldGenre, fldlangue, SUM(fldPrix*fldEnStock) FROM tblLivres GROUP BY fldGenre, fldLangue ORDER BY fldLangue, fldGenre;

Exercice Comparez les deux requtes suivantes.


SELECT fldLangue FROM tblLivres GROUP BY fldLangue; SELECT DISTINCT fldLangue FROM tblLivres;

Remarque: Si pour un champ de groupe, les valeurs d'un ou de plusieurs enregistrements sont indtermines (NULL), alors ces enregistrements sont regroupes dans un groupe spar (Groupe 'NULL').

Pierre Stockreiser

132

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.12.2

La clause HAVING

Sachant que les critres de slection (WHERE ...) nous permettent d'liminer un certain nombre d'enregistrements avant la cration des groupes, il serait intressant de disposer d'une deuxime possibilit de filtrage, qui s'applique aux groupes eux-mmes. La clause HAVING <Critres de slection des groupes> nous offre la possibilit d'liminer du rsultat; les groupes qui ne donnent pas satisfaction aux critres de slection des groupes. Reprenons l'exemple:
SELECT fldGenre, SUM(fldEnStock) AS 'En Stock' FROM tblLivres GROUP BY fldGenre;

qui nous donne le rsultat suivant:

Lorsqu'on veut par exemple uniquement afficher les groupes pour lesquelles la quantit en stock est suprieure 10, on utilise la clause HAVING de la faon suivante:
SELECT fldGenre, SUM(fldEnStock) AS 'En Stock' FROM tblLivres GROUP BY fldGenre HAVING SUM(fldEnStock)>10;

Voici le rsultat correspondant.

Est-ce que la requte suivante donne le mme rsultat ? Expliquez.


SELECT fldGenre, SUM(fldEnStock) AS 'En Stock' FROM tblLivres WHERE fldEnStock>10 GROUP BY fldGenre;

Pierre Stockreiser

133

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

La clause HAVING La clause HAVING <Critres de slection des groupes> est uniquement spcifie en relation avec un GROUP BY. Une fois les groupes crs, cette clause en limine certains, bass sur les critres de slection des groupes. Les critres de slection des groupes portent bien entendu sur la valeur d'une ou de plusieurs des fonctions d'agrgation calcules pour chaque groupe. Syntaxe:
SELECT <Liste des champs de groupe>,[COUNT/SUM...] FROM <Nom de la table> WHERE <Critres de slection> GROUP BY <Liste de champs de groupe> HAVING <Critres de slection des groupes> ORDER BY <Nom d'un champ>[ASC/DESC], <Nom d'un champ>[ASC/DESC], ;

Exemples: 1. Affichez pour chaque langue, le nombre de titres disponibles, ainsi que la quantit d'exemplaires en stock, en tenant uniquement compte des langues pour lesquelles la quantit d'exemplaires est suprieure 0.
SELECT fldLangue, COUNT(fldTitre), SUM(fldEnStock) FROM tblLivres GROUP BY fldLangue HAVING SUM(fldEnStock)>0;

ou
SELECT fldLangue, COUNT(*), SUM(fldEnStock) FROM tblLivres GROUP BY fldLangue HAVING SUM(fldEnStock)>0;

2. Mme question, mais en liminant ds le dbut les livres anglais


SELECT fldLangue, COUNT(fldTitre), SUM(fldEnStock) FROM tblLivres WHERE fldLangue<>'ANG' GROUP BY fldLangue HAVING SUM(fldEnStock)>0;

ou
SELECT fldLangue, COUNT(*), SUM(fldEnStock) FROM tblLivres WHERE fldLangue<>'ANG' GROUP BY fldLangue HAVING SUM(fldEnStock)>0;

Pierre Stockreiser

134

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

3. Classez les auteurs par ordre descendant en fonction du nombre de titres. Tenez uniquement compte des titres franais et allemands, et des auteurs ayant au moins 3 titres disponibles.
SELECT fldAuteur, COUNT(fldTitre) FROM tblLivres WHERE fldLangue IN ('FRA', 'ALL') GROUP BY fldAuteur HAVING COUNT(fldTitre)>=3 ORDER BY COUNT(fldTitre) DESC;

ou
SELECT fldAuteur, COUNT(*) FROM tblLivres WHERE fldLangue IN ('FRA', 'ALL') GROUP BY fldAuteur HAVING COUNT(*)>=3 ORDER BY COUNT(*) DESC;

A faire : Exercice 2 et Exercice 3

Pierre Stockreiser

135

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.13

Exercices

Exercice 1: Gestion de livres


Soit la table suivante pour stocker les livres d'une librairie:

Trouvez le code SQL pour les requtes suivantes: 1. Affichez le numro, le titre, l'auteur et la quantit en stock pour tous les romans. 2. Affichez tous les champs des romans allemands. Effectuez un classement par ordre ascendant sur le numro du livre. 3. Affichez les diffrentes langues dans lesquelles sont rdigs les livres de la librairie. 4. Affichez le numro du livre "Windows 95" de "Pierre Godefroid" en version franaise. 5. Supposons que ce numro soit 38285, augmentez de 10 units la quantit en stock de ce livre. 6. Insrez le nouveau livre suivant: 34000 MS-Access 2.0 Ken Getz ANG Technique 2300 2

7. Insrez le nouveau livre suivant: 34001 MS-Access 97 Ken Getz ANG Technique

Quelle est la valeur des champs fldPrix et fldEnStock pour cet enregistrement ? 8. Tous les livres des genres Technique et Histoire subissent une hausse de prix de 10%. Reprsentez cette situation dans votre table. 9. Comptez le nombre de livres dont il reste moins de 3 exemplaires en stock. 10. Supprimez tous les romans anglais. 11. Affichez le numro, le titre et l'auteur pour tous les livres dont la valeur en stock est suprieure 10000. La valeur en stock est le prix d'un livre multipli par la quantit en stock pour ce livre.

Pierre Stockreiser

136

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

12. Ajoutez 15% au prix pour tous les livres techniques dont le titre contient le mot 'Windows 98'. 13. Afficher toutes les informations pour les romans franais (Code='FRA') et les romans allemands (Code='ALL'). Utilisez uniquement des oprateurs logiques et des oprateurs de comparaison. Formulez une requte alternative qui fournit le mme rsultat. 14. Indiquez 2 requtes diffrentes pour afficher le numro du livre pour tous les livres anglais (Code='ANG') actuellement en stock, dont le prix varie entre 500 et 1000 Luf. 15. Afficher une liste qui contient toutes les langues dont il existe au moins un roman plus cher que 300 Luf. 16. Affichez le prix moyen des romans anglais.

Pierre Stockreiser

137

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exercice 2: Gestion des clients


Une socit utilise la table suivante pour grer ses clients. tblClients Nom du champ idClient fldNom fldPrnom fldSexe fldAdresse fldCP fldLocalit fldNoTel fldNoFax fldDateNaiss fldBonClient Type de donnes Numrique Texte Texte Texte Texte Texte Texte Texte Texte Date/Heure Boolen (Logique) Description Numro du client Nom du client Prnom du client Sexe du client. Valeurs possibles: 'F' et 'M' Rue et numro Code postal Localit Numro de tlphone Numro de fax Date de naissance du client Valeurs possibles: YES/NO

Trouvez le code SQL pour les requtes suivantes: 1. Affichez le nom, prnom, adresse, code postal et localit pour tous les clients habitant Walferdange. 2. Insrez le client suivant dans la table: 6 2021 Heinen Ettelbruck Edmond 217070 217071 M 12, Am Gaard 12/01/1954 NO

Indiquez la requte correcte pour ajouter ce client lorsque vous ignorez le numro de fax. Indiquez la requte correcte pour ajouter ce client lorsque vous savez que le client ne possde pas de fax. 3. Affichez la liste de toutes les localits prsentes dans la table des clients. 4. Tous les clients habitant Ettelbruck, dans la Cit Patton, auront le nouveau code postal 8897. Remarque: Utilisez un filtre pour retrouver les adresses correctes. 5. Nous voulons "nettoyer" notre BD. En fait, il y a un certain nombre de clients dont l'adresse, le code postal, la localit le numro de tlphone et le numro de fax sont indtermins. Ces enregistrements sont sans aucune valeur commerciale pour nous. Formulez une requte qui garde uniquement les clients pour lesquels on connat: soit le numro de tlphone; soit le numro de fax; soit l'adresse complte (fldAdresse, fldCP, fldLocalit). Tous les autres clients sont effacs de la BD. 6. Comptez le nombre de clients masculins ns aprs le 1.1.1978.

Pierre Stockreiser

138

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7. Afficher le numro client, le nom, le prnom, l'adresse, le code postal et la localit pour les bons clients fminins, l'exception de ceux habitant Luxembourg, Esch-s-Alzette et Ettelbruck. 8. Affichez par sexe, le nombre de clients ns aprs le 31/12/1969. Le champ qui affiche le nombre de clients doit porter l'en-tte 'Nombre de clients'. 9. Afficher le numro client, le nom, le prnom, le sexe et la date de naissance pour les clients habitant Luxembourg. Triez le rsultat par ordre descendant sur le sexe et l'intrieur, par ordre ascendant sur la date de naissance. Le premier enregistrement du rsultat affiche donc les informations de la femme la plus jeune parmi les clients de Luxembourg. Est-ce que cette affirmation est correcte ?

10. Affichez le numro client, le nom, le prnom et le code bon client pour tous les clients fminins habitant Diekirch ou Mersch. En ce qui concerne le code bon client, affichez l'en-tte 'Code spcial' au lieu d'afficher le nom du champ. 11. Affichez pour chaque localit le nombre de bons clients (cf. fldBonClient) ainsi que le nombre des autres clients. Triez la liste par ordre ascendant sur les localits, en affichant pour chaque localit d'abord le nombre de bons clients. 12. Dterminez la date de naissance du client le plus vieux habitant Luxembourg.

Pierre Stockreiser

139

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exercice 3: Gestion de concerts


Une agence de concerts utilise la table suivante: tblConcert s Nom du champ idConcert fldArtiste fldDate fldDbut fldLocalit fldLieu fldTypeLieu fldPrixTicket fldPlaces fldTicketsVendus Type de donnes Numrique Texte Date/Heure Date/Heure Texte Texte Texte Numrique Numrique Numrique Description Numro d'identification (Cl primaire) Artiste ou groupe qui donne le concert Date du concert Dbut du concert (Heure) Localit du concert Lieu du concert (Centre Culturel , Hall Sportif , Club etc.) Prix d'un ticket Total des places disponibles pour le concert Nombre de tickets dj vendus pour le concert

Voici quelques exemples d'enregistrements:

Exprimez les requtes suivantes en langage SQL:

1. Affichez toutes les informations pour les concerts qui ne sont pas Luxembourg et dont le nombre de places est au moins 1000. 2. Affichez l'artiste, la date et la localit des concerts qui se tiendront Luxembourg pendant la deuxime moiti de l'anne. 3. Insrez le concert suivant:
No. 112 Artiste Oasis Date 12/09/1998 Dbut 20:00 Localit Weiswampach Lieu Fte sous tente Type Lieu Autre Places 1000

4. Affichez l'artiste, la date, la localit et le prix des concerts qui ont lieu dans un hall sportif ou un club partir du 1/8/1998. Triez cette liste par ordre ascendant sur les types des lieux et l'intrieur d'un type par ordre descendant sur le prix. 5. Quel tait le prix moyen pour un concert en mois de juillet 1998 ? On ignorera les ftes sous tente.

Pierre Stockreiser

140

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

6. Classez les localits par ordre descendant sur le montant des recettes des concerts pour l'anne 1998 (Recette d'un concert=Tickets vendus*Prix d'un ticket). Ignorez les localits pour lesquelles il n'y a pas encore de recettes. 7. Comptez le nombre de localits dans lesquelles a eu lieu un concert pendant les mois de juillet et aot 1998. 8. Effacez tous les concerts qui ont eu lieu avant le 1/8/1998. 9. Affichez le nom de l'artiste, la date, la localit ainsi que le nombre de places encore disponibles pour les concerts qui auront lieu au mois de juillet 1998. 10. Un client achte 2 tickets pour le prochain concert de la "Kelly Family". Affichez d'abord une liste avec tous les concerts prvus pour cet artiste, et modifiez ensuite la table de faon ce qu'elle reflte la vente des 2 tickets pour le concert correspondant. Nous supposons que cette requte donne comme rsultat un seul concert avec le numro 103 comme valeur de la cl primaire. Vous allez utiliser ce numro pour identifier de faon unique et prcise l'enregistrement qui doit reflter la vente des 2 tickets. Quel problme constatez-vous en ce qui concerne les valeurs des champs fldPlaces et fldTicketsVendus pour l'enregistrement 103 (voir exemples d'enregistrements) ?

11. Affichez la liste des localits, l'exception de Luxembourg, dans lesquelles ont eu lieu au moins 2 concerts pendant la premire moiti de l'anne 1998. Indiquez pour chaque localit le nombre de concerts. 12. Le concert numro 108 (voir exemples d'enregistrements) aura lieu au club "Den Atelier" Luxembourg la date et l'heure prvue initialement. Les tickets dj vendus gardent leur validit et le prix d'un nouveau ticket ne change pas. Effectuez les modifications correspondantes dans la table.

Pierre Stockreiser

141

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.3 Les requtes SQL multitable


La plupart des BD relles ne sont pas constitues d'une seule table, mais d'un ensemble de tables lies entre elles via certains champs (voir Chapitre 6.4). Par consquent, les requtes correspondantes ne sont pas cibles sur une, mais sur plusieurs tables. Nous allons diffrencier 2 mthodes pour lier plusieurs tables dans une requte: 1. La jointure, qui lie plusieurs tables via des champs communs; 2. Les requtes imbriques, qui utilisent le rsultat d'une requte comme source d'une autre.

Pierre Stockreiser

142

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.3.1 La jointure
7.3.1.1 Exemple d'introduction

Voici deux tables qui reprsentent une gestion (trs simplifie) des comptes d'une banque:

tblCompte s idCompte 101 106 112 125 20000 48000 9000 5000 fldValeur 3 2 3 1 fiClient

tblClients idClient 1 2 3 Pegaso Weber Muller fldNom Emilio Jos Ketty fldPrnom

En principe, la prsence d'une relation (cl trangre/cl primaire) entre deux tables est une condition ncessaire pour effectuer une jointure sur les tables. Une question possible serait: Affichez pour tous les comptes, le numro de compte, la valeur actuelle, ainsi que le nom du client correspondant. Voici la requte ncessaire pour rpondre notre question
SELECT tblcomptes.idCompte, tblComptes.fldValeur, tblClients.fldNom FROM tblComptes, tblClients WHERE tblComptes.fiClient=tblClients.idClient;

La clause FROM contient les deux tables impliques dans la jointure.

Pierre Stockreiser

143

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

La clause WHERE contient ce qu'on appelle la condition de jointure. Dans notre exemple, la condition de jointure demande l'galit des valeurs pour les champs fiClient et idClient. La clause SELECT contient les noms des champs afficher. Voici le rsultat correspondant idCompte 101 106 112 125 fldValeur 20000 48000 9000 5000 fldNom Muller Weber Muller Pegaso

Cette requte reprsente donc une jointure entre les table tblComptes et tblClients. Remarquez pour l'instant que nous avons prfix chaque nom d'un champ par le nom de la table correspondante. Au moment o une requte porte sur plusieurs tables, on doit soit s'assurer que le nom de chaque champ est unique pour l'ensemble des tables, soit adopter la notation <Nom de la table>.<Nom du champ>. Puisque les noms des champs impliqus dans notre exemple sont tous diffrents, nous pouvons donc faciliter l'criture de la requte:
SELECT idCompte, fldValeur, fldNom FROM tblComptes, tblClients WHERE fiClient=idClient;

Afin de comprendre le fonctionnement d'une jointure, et surtout celui de la condition de jointure, il est intressant d'examiner en dtail comment SQL procde l'excution d'une jointure. Pour cela, nous allons nous baser sur l'exemple prcdent. SQL excute la requte en plusieurs tapes: 1. Comme la clause FROM contient 2 tables, SQL cre d'abord le produit cartsien des deux tables. Pour le produit cartsien, SQL associe chaque enregistrement de la premire table, tous les enregistrements de la deuxime table. Les enregistrements du produit cartsien contiennent donc les champs de la premire table suivis des champs de la deuxime table. Si la premire table contient N enregistrements et la deuxime table M enregistrements, alors le produit cartsien des deux tables est compos de N*M enregistrements.

Pierre Stockreiser

144

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Produit cartsien des tables tblComptes et tblClients: idCompte 101 101 101 106 106 106 112 112 112 125 125 125 fldValeur 20000 20000 20000 48000 48000 48000 9000 9000 9000 5000 5000 5000 fiClient 3 3 3 2 2 2 3 3 3 1 1 1 idClient 1 2 3 1 2 3 1 2 3 1 2 3 fldNom Pegaso Weber Muller Pegaso Weber Muller Pegaso Weber Muller Pegaso Weber Muller fldPrnom Emilio Jos Ketty Emilio Jos Ketty Emilio Jos Ketty Emilio Jos Ketty

tblComptes

tblClients

2. Le produit cartsien contient un bon nombre d'enregistrements, qui ne donnent pas de sens logique. idCompte 101 101 101 106 106 106 112 112 112 125 125 125 fldValeur 20000 20000 20000 48000 48000 48000 9000 9000 9000 5000 5000 5000 fiClient 3 3 3 2 2 2 3 3 3 1 1 1 idClient 1 2 3 1 2 3 1 2 3 1 2 3 fldNom Pegaso Weber Muller Pegaso Weber Muller Pegaso Weber Muller Pegaso Weber Muller fldprnom Emilio Jos Ketty Emilio Jos Ketty Emilio Jos Ketty Emilio Jos Ketty

En fait, pour tous les enregistrements non marqus, fiClient ne correspond pas idClient. Pour ces enregistrements, on associe donc un compte un client qui n'est pas le propritaire de ce compte. C'est ici qu'intervient la condition de jointure, qui limine du produit cartsien les enregistrements ne donnant pas de sens logique dans le contexte de la requte. Aprs avoir ralis le produit cartsien, SQL limine tous les enregistrements qui ne correspondent pas la condition de jointure de la clause WHERE, donc tous les enregistrements pour lesquels l'expression logique fiClient=idClient n'est pas vraie.

Pierre Stockreiser

145

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Voici le rsultat de l'application de la condition de jointure: idCompte 101 106 112 125 fldValeur 20000 48000 9000 5000 fiClient 3 2 3 1 idClient 3 2 3 1 fldNom Muller Weber Muller Pegaso fldprnom Ketty Jos Ketty Emilio

3. Finalement SQL affiche uniquement les champs indiqus dans la clause SELECT. idCompte 101 106 112 125 fldValeur 20000 48000 9000 5000 fldNom Muller Weber Muller Pegaso

7.3.1.2

Cration d'une jointure

Pour crer une jointure, on doit: Indiquer dans la clause FROM les noms des tables impliques Prciser dans la clause WHERE une condition de jointure Indiquer dans la clause SELECT les noms des champs afficher La condition de jointure spcifie gnralement mais pas ncessairement une galit entre une cl trangre d'une table et la cl primaire d'une table correspondante.

Remarque: La requte
SELECT tblcomptes.idCompte, tblComptes.fldValeur, tblClients.fldNom FROM tblComptes, tblClients WHERE tblComptes.fiClient=tblClients.idClient;

peut encore s'crire d'une faon plus lisible en utilisant des alias pour les noms des tables. Exemple:
SELECT Co.idCompte, Co.fldValeur, Cl.fldNom FROM tblComptes Co, tblClients Cl WHERE Co.fiClient=Cl.idClient;

Pierre Stockreiser

146

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Il suffit d'indiquer les alias derrire les noms des tables dans la partie FROM, afin de les utiliser dans l'ensemble de la requte. Lorsque vous dfinissez des alias dans la clause FROM, vous ne pouvez plus utiliser les noms des tables dans la requte. Au cas o les noms des champs seraient tout fait diffrents pour les deux tables, de faon ce qu'il n'y ait aucune ambigut, on peut compltement laisser de ct les noms des tables resp. les alias. Exemple:
SELECT idCompte, fldValeur, fldNom FROM tblComptes, tblClients WHERE fiClient=idClient;

Au cas o il existerait uniquement une ambigut pour un certain nombre de champs, il suffit de prfixer ceux-ci par un alias ou par le nom de la table correspondante.

Remarque: La clause WHERE peut bien entendu dfinir des critres de slection en combinaison avec la condition de jointure. Exemple: Affichez pour les comptes ayant une valeur actuelle >= 10000, le numro de compte, la valeur actuelle, ainsi que le nom du client correspondant.
SELECT idCompte, fldValeur, fldNom FROM tblComptes, tblClients WHERE fiClient=idClient AND fldValeur>=10000;

Aprs avoir cr le produit cartsien, SQL limine les enregistrements qui ne vrifient pas la condition de jointure (fiClient=idClient) et ceux qui ne vrifient pas le critre de slection (fldValeur>=10000). Pour les enregistrements qui restent, SQL effectue l'affichage des champs demands.

Remarque: Une jointure peut mettre en relation plus que 2 tables.

Pierre Stockreiser

147

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exemples: Soient les 3 tables suivantes:

tblCompte s idCompte 101 106 112 125 12 24 12 30 fiAgence fldValeur 20000 48000 9000 5000 fiClient 3 2 3 1

tblClients idClient 1 2 3 fldNom Pegaso Weber Muller fldPrnom Emilio Jos Ketty fldAdresse 25, rue de la Gare 66a, Cit Paerchen 102, av G.Diederich fldCP 2278 1234 6690 fldLocalit Diekirch Schifflange Luxembourg

tblAgences idAgence 12 24 30 fldAdresse 15, bvd Royal 67, rue de l'Alzette 2, Grand Rue fldCP 5377 8765 6678 fldLocalit Luxembourg Esch-s-Alzette Ettelbruck

1. Affichez pour tous les comptes, le numro de compte, la valeur actuelle, le nom du client ainsi que sa localit et la localit de l'agence. Renommez les en-ttes de faon ce qu'il n'y ait pas de confusion entre les donnes du client et celles de l'agence.
SELECT idCompte, fldValeur, fldNom, Cl.fldLocalit AS 'Localit Client', A.fldLocalit AS 'Localit Agence' FROM tblAgences A, tblClients Cl, tblComptes WHERE idAgence=fiAgence AND idClient=fiClient;

Pierre Stockreiser

148

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Comme la jointure contient 3 tables, nous avons 2 conditions de jointure. En gnral, on a: Nombre de conditions de jointure = Nombre de tables dans la jointure 1

2. Affichez le numro de compte, le nom et prnom du client ainsi que le numro d'agence pour les comptes dont l'agence se trouve dans la mme localit ou habite le client correspondant.
SELECT idCompte, fldNom, fldPrnom, idAgence FROM tblAgences A, tblClients Cl, tblComptes WHERE idAgence=fiAgence AND idClient=fiClient AND A.fldLocalit=Cl.fldLocalit;

Pierre Stockreiser

149

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.3.2 Auto- jointure


Il est possible de dfinir une jointure d'une table avec soi-mme. Dans ce cas, il faut obligatoirement utiliser des alias. Exemple: Soit la table tblCompte s idCompte 101 106 112 125 12 24 12 30 fiAgence fldValeur 20000 48000 9000 5000 fiClient 3 2 3 1

Afficher le numro de compte, et la valeur pour les comptes ayant une valeur suprieure celle du compte 112
SELECT Co1.idCompte, Co1.fldValeur FROM tblComptes Co1, tblComptes Co2 WHERE Co2.idCompte=112 AND Co1.fldValeur>Co2.fldValeur;

Cette requte ne semble pas vident premire vue. Nous allons analyser les tapes d'excution de la requte. 1. Produit cartsien
Co1.idCompte 101 106 112 125 101 106 112 125 101 106 112 125 101 106 112 125 Co1.fiAgence 12 24 12 30 12 24 12 30 12 24 12 30 12 24 12 30 Co1.fldValeur 20000 48000 9000 5000 20000 48000 9000 5000 20000 48000 9000 5000 20000 48000 9000 5000 Co1.fiClient 3 2 3 1 3 2 3 1 3 2 3 1 3 2 3 1 Co2.idCompte 101 101 101 101 106 106 106 106 112 112 112 112 125 125 125 125 Co2.fiAgence Co2.fldValeur Co2.fiClient 12 12 12 12 24 24 24 24 12 12 12 12 30 30 30 30 20000 20000 20000 20000 48000 48000 48000 48000 9000 9000 9000 9000 5000 5000 5000 5000 3 3 3 3 2 2 2 2 3 3 3 3 1 1 1 1

Ce tableau associe tous les comptes 1 1. 2. Slection des enregistrements

Pierre Stockreiser

150

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Il s'agit ici de la partie la plus dlicate, puisque nous ne retrouvons plus une condition de jointure classique du type galit - cl primaire/cl trangre. La slection se fait en deux tapes. Comme nous voulons afficher tous les comptes ayant une valeur suprieure celle du compte 112, nous allons uniquement garder les enregistrements pour lesquels un compte est associ au compte 112, c..d. les enregistrements pour lesquels le critre de slection Co2.idCompte=112 s'applique.
Co1.idCompte 101 106 112 125 101 106 112 125 101 106 112 125 101 106 112 125 Co1.fiAgence 12 24 12 30 12 24 12 30 12 24 12 30 12 24 12 30 Co1.fldValeur 20000 48000 9000 5000 20000 48000 9000 5000 20000 48000 9000 5000 20000 48000 9000 5000 Co1.fiClient 3 2 3 1 3 2 3 1 3 2 3 1 3 2 3 1 Co2.idCompte 101 101 101 101 106 106 106 106 112 112 112 112 125 125 125 125 Co2.fiAgence Co2.fldValeur Co2.fiClient 12 12 12 12 24 24 24 24 12 12 12 12 30 30 30 30 20000 20000 20000 20000 48000 48000 48000 48000 9000 9000 9000 9000 5000 5000 5000 5000 3 3 3 3 2 2 2 2 3 3 3 3 1 1 1 1

Co1.idCompte 101 106 112 125

Co1.fiAgence 12 24 12 30

Co1.fldValeur 20000 48000 9000 5000

Co1.fiClient 3 2 3 1

Co2.idCompte 112 112 112 112

Co2.fiAgence Co2.fldValeur Co2.fiClient 12 12 12 12 9000 9000 9000 9000 3 3 3 3

Ce tableau associe donc chaque compte (inclus le compte 112 mme) au compte 112. Il suffit maintenant de slectionner les comptes qui ont une valeur suprieure celle du compte 112. Ceci est fait l'aide de la condition de jointure Co1.fldValeur>Co2.fldValeur Pour cet exemple, la condition de jointure ne se dfinit donc pas sur la cl trangre/cl primaire.

Pierre Stockreiser

151

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Co1.idCompte 101 106 112 125

Co1.fiAgence 12 24 12 30

Co1.fldValeur 20000 48000 9000 5000

Co1.fiClient 3 2 3 1

Co2.idCompte 112 112 112 112

Co2.fiAgence Co2.fldValeur Co2.fiClient 12 12 12 12 9000 9000 9000 9000 3 3 3 3

Co1.idCompte 101 106

Co1.fiAgence 12 24

Co1.fldValeur 20000 48000

Co1.fiClient 3 2

Co2.idCompte 112 112

Co2.fiAgence Co2.fldValeur Co2.fiClient 12 12 9000 9000 3 3

3. Affichage des champs spcifis La dernire tape consiste dans l'affichage des champs indiqus dans la clause SELECT
Co1.idCompte 101 106 Co1.fldValeur 20000 48000

Avec l'auto-jointure, nous avons tudi un cas qui nous a montr que nous n'avons pas toujours une condition de jointure classique avec une galit entre cl trangre et cl primaire d'une table associe. Une condition de jointure ne doit pas ncessairement impliquer une cl trangre/cl primaire Bien qu'une condition de jointure soit gnralement dfinie l'aide de l'oprateur d'galit (=) , elle peut galement tre spcifie l'aide des oprateurs suivants: <> < > <= >= BETWEEN ... AND IN LIKE Dans ce cas, on parle d'une jointure par non galit. Ces conditions de jointure sont surtout employes en relation avec une auto-jointure. Voici un autre exemple d'une auto-jointure: Affichez les numros des comptes ayant une agence diffrente que le compte numro 101.
SELECT CO1.idCompte FROM tblComptes CO1, tblComptes CO2 WHERE CO2.idCompte=101 AND CO1.fiAgence<>CO2.fiAgence;

A faire : Exercice 4

Pierre Stockreiser

152

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.3.3 Les requtes imbriques


Nous savons qu'une requte de slection se base sur une ou plusieurs tables pour afficher un rsultat. En SQL, on peut imbriquer plusieurs requtes, c..d. le rsultat d'une requte imbrique sert comme base pour une deuxime requte. Une requte imbrique est encore parfois appele 'SELECT interne' ou 'sous-requte'. On distingue gnralement deux types de requtes imbriques: 1. les requtes imbriques, qui renvoient comme rsultat une seule valeur; 2. les requtes imbriques, qui renvoient comme rsultat un ensemble de valeurs.

7.3.3.1
Exemple:

La requte imbrique renvoie une seule valeur

Soient les trois tables suivantes.

tblCompte s idCompte 101 106 112 125 12 24 12 30 fiAgence fldValeur 20000 48000 9000 5000 fiClient 3 2 3 1

tblClients idClient 1 2 3 fldNom Pegaso Weber Muller fldPrnom Emilio Jos Ketty fldAdresse 25, rue de la Gare 66a, Cit Paerchen 102, av G.Diederich fldCP 2278 1234 6690 fldLocalit Diekirch Schifflange Luxembourg

Pierre Stockreiser

153

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

tblAgences idAgence 12 24 30 La requte:


SELECT fldNom, fldPrnom FROM tblClients WHERE idClient = (SELECT fiClient FROM tblComptes WHERE idCompte=106);

fldAdresse 15, bvd Royal 67, rue de l'Alzette 2, Grand Rue

fldCP 5377 8765 6678

fldLocalit Luxembourg Esch-s-Alzette Ettelbruck

retourne le nom et prnom du client qui est le propritaire du compte numro 106. Analysons le fonctionnement de cette requte: Le requte imbrique:
SELECT fiClient FROM tblComptes WHERE idCompte=106;

retourne simplement la valeur 2 On peut donc traduire la requte de niveau suprieur en


SELECT fldNom, fldPrnom FROM tblClients WHERE idClient = 2;

Cette requte retourne finalement le nom et prnom du client correspondant, c..d. 'Weber' 'Jos'

La requte imbrique doit renvoyer au maximum une seule valeur. Si tel n'est pas le cas, SQL ne pourra pas excuter la requte de niveau suprieur, et gnre un message d'erreur. Dans la clause WHERE de la requte de niveau suprieur, le rsultat de la requte imbrique doit obligatoirement tre compar un champ de type de donnes compatible avec la valeur retourne. Comme la requte imbrique doit retourner une seule valeur, on utilise souvent des fonctions d'agrgation dans la clause SELECT de la requte imbrique. On peut avoir plusieurs niveaux d'imbrication de requtes. Une requte imbrique peut donc dj se baser sur le rsultat d'une autre requte imbrique Exemples: Reprenons les 3 tables tblComptes, tblClients et tblAgences

Pierre Stockreiser

154

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

1. Affichez le numro du(des) compte(s) avec la plus grande valeur.


SELECT idCompte FROM tblComptes WHERE fldValeur=(SELECT MAX(fldValeur) FROM tblComptes);

Remarque: Dans une requte imbrique, vous n'avez pas besoin d'utiliser des alias lorsque la mme table est utilise plusieurs fois.

2. Affichez les numros des comptes et la valeur actuelle pour les comptes dont la valeur est suprieure la moyenne des valeurs.
SELECT idCompte, fldValeur FROM tblComptes WHERE fldValeur > (SELECT AVG(fldValeur) FROM tblComptes);

3. Affichez le nom, le prnom, l'adresse, le code postal et la localit du client, qui possde le compte avec la plus petite valeur. Nous supposons qu'il existe uniquement un seul compte avec la plus petite valeur.
SELECT fldNom, fldPrnom, fldAdresse, fldCP, fldLocalit FROM tblClients WHERE idClient=(SELECT fiClient FROM tblComptes WHERE fldValeur=(SELECT MIN(fldValeur) FROM tblComptes));

4. Pour effectuer des statistiques, on vous demande la requte suivante. Affichez le numro de compte et la valeur actuelle pour les comptes dont la valeur est plus petite que la moyenne des valeurs pour les comptes dont les clients habitent au Luxembourg, mais plus grande que la moyenne des valeurs pour les comptes dont les clients habitent Diekirch ou Ettelbruck.
SELECT idCompte, fldValeur FROM tblComptes WHERE fldValeur< (SELECT AVG(fldValeur) FROM tblComptes, tblClients WHERE fiClient=idClient AND fldLocalit='Luxembourg') AND fldValeur> (SELECT AVG(fldValeur) FROM tblComptes, tblClients WHERE fiClient=idClient AND fldLocalit IN ('Diekirch','Ettelbruck'));

Remarque: Comme cet exemple nous le montre, on peut avoir plusieurs requtes imbriques dans une seule clause WHERE.

Pierre Stockreiser

155

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.3.3.2
Exemple:

La requte imbrique renvoie un ensemble de valeurs

Reprenons les trois tables suivantes

tblCompte s idCompte 101 106 112 125 12 24 12 30 fiAgence fldValeur 20000 48000 9000 5000 fiClient 3 2 3 1

tblClients idClient 1 2 3 fldNom Pegaso Weber Muller fldPrnom Emilio Jos Ketty fldAdresse 25, rue de la Gare 66a, Cit Paerchen 102, av G.Diederich fldCP 2278 1234 6690 fldLocalit Diekirch Schifflange Luxembourg

Pierre Stockreiser

156

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

tblAgences idAgence 12 24 30 La requte


SELECT idCompte, fldValeur FROM tblComptes WHERE fiClient IN (SELECT idClient FROM tblClients WHERE fldLocalit='Luxembourg' OR fldLocalit='Diekirch');

fldAdresse 15, bvd Royal 67, rue de l'Alzette 2, Grand Rue

fldCP 5377 8765 6678

fldLocalit Luxembourg Esch-s-Alzette Ettelbruck

retourne le numro de compte et la valeur actuelle pour les comptes dont le client habite Luxembourg ou Diekirch Analysons le fonctionnement de cette requte: Le requte imbrique:
SELECT idClient FROM tblClients WHERE fldLocalit='Luxembourg' OR fldLocalit='Diekirch';

retourne tous les numros de clients habitant Luxembourg ou Diekirch. Cette requte retourne donc l'ensemble de valeurs [1, 3]. On peut donc traduire la requte de niveau suprieur en
SELECT idCompte, fldValeur FROM tblComptes WHERE fiClient IN (1, 3);

Cette requte retourne finalement le numro de compte et la valeur des comptes correspondants. idCompte 101 112 125 fldValeur 20000 9000 5000

Pierre Stockreiser

157

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

La requte imbrique renvoie un ensemble de n valeurs. Cet ensemble peut bien sr tre vide (n=0) ou tre compos d'une seule valeur (n=1). Dans la clause WHERE de la requte de niveau suprieur, le champ pour lequel on vrifie l'appartenance l'ensemble de valeurs retourn par la sous-requte, doit avoir un type de donnes compatible avec les valeurs de l'ensemble. Parfois, il est convenable d'utiliser l'option DISTINCT dans la clause SELECT de la sousrequte, afin d'viter des doublons dans l'ensemble rsultat. Toutefois, ceci est uniquement une mesure d'optimisation des requtes imbriques. On peut avoir plusieurs niveaux d'imbrication de requtes. Une requte imbrique peut donc dj se baser sur le rsultat d'une autre requte imbrique Exemples: Reprenons les 3 tables tblComptes, tblClients et tblAgences 1. Affichez les numros des comptes qui sont grs par une agence situe Luxembourg.
SELECT idCompte FROM tblComptes WHERE fiAgence IN (SELECT idAgence FROM tblAgences WHERE fldLocalit='Luxembourg');

2. Affichez le nom et le prnom de tous les clients ayant un compte gr par une agence situe Luxembourg ou Esch-s-Alzette.
SELECT fldNom, fldPrnom FROM tblClients WHERE idClient IN (SELECT fiClient FROM tblComptes WHERE fiAgence IN (SELECT idAgence FROM tblAgences WHERE fldLocalit IN ('Luxembourg', 'Esch-s-Alzette')));

3. Affichez le nom et le prnom de tous les clients n'ayant pas de compte.


SELECT fldNom, fldPrnom FROM tblClients WHERE idClient NOT IN (SELECT DISTINCT fiClient FROM tblComptes);

Remarque:

Pierre Stockreiser

158

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

A l'intrieur d'une requte imbrique, on peut faire rfrence un champ d'une table dfinie dans la requte de niveau suprieur. Dans ce cas on parle d'une requte imbrique corrle. Une valeur retourne par ce type de requte dpend donc d'un champ qui reoit ses valeurs partir d'une requte de niveau suprieur. Exemple: Affichez le nom et le prnom des clients ayant au moins un compte avec une valeur de 9000 Luf.
SELECT fldNom, fldPrnom FROM tblClients C WHERE 9000 IN (SELECT fldValeur FROM tblComptes WHERE fiClient=C.idClient);

L'ensemble de valeurs retourn du SELECT imbriqu dpend de la valeur de C.idClient. SQL excute cette requte de la faon suivante: C.idClient est substitu par sa valeur pour le premier enregistrement de la table tblClients. C.idClient prend donc la valeur 1. La requte imbrique
SELECT fldValeur FROM tblComptes WHERE fiClient=1;

est excute avec comme rsultat l'ensemble [5000]. La requte de niveau suprieur ne retourne donc aucun rsultat C.idClient est maintenant substitu par sa valeur pour le deuxime enregistrement de la table tblClients. C.idClient prend donc la valeur 2. La requte imbrique
SELECT fldValeur FROM tblComptes WHERE fiClient=2;

retourne l'ensemble [48000] La requte de niveau suprieur ne retourne donc aucun rsultat C.idClient est ensuite substitu par sa valeur pour le troisime enregistrement de la table tblClients. C.idClient prend donc la valeur 3. La requte imbrique
SELECT fldValeur FROM tblComptes WHERE fiClient=3;

retourne l'ensemble [20000 , 9000] La requte de niveau suprieur retourne le rsultat 'Muller' 'Ketty' puisque effectivement le troisime enregistrement de la table tblClients contient une valeur de idClient (3) , qui produit dans la requte imbrique un ensemble contenant la valeur 9000.

Pierre Stockreiser

159

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Formulez cette requte sans utiliser le principe de la requte corrle

A faire : Exercice 5

Rptition gnrale en SQL : Exercice 6 et Exercice 7

Pierre Stockreiser

160

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.3.4 Exercices SQL Exercice 4: Assurance bagages (Les jointures)


Une socit d'assurances offre une formule 'Assurance Bagages'. Cette formule garantit pendant une dure limite un remboursement intgral de la valeur des bagages avec contenu en cas de vol ou de perte. Voici la BD utilise pour grer ce type d'assurances.

Remarques: Comme certains noms de champs sont identiques pour les tables tblAgents et tblClients, vous devez veiller employer les noms des tables resp. des alias aux bons endroits dans les requtes. Le champ fldAgentgnral est du type boolen (valeurs VRAI/FAUX resp. YES/NO) Utilisez le mcanisme des jointures afin de rpondre aux questions suivantes. 1. Affichez pour les contrats qui couvrent la France comme pays de destination, le nom de l'agent. 2. Affichez le numro de contrat, les dates de dbut et de fin du contrat ainsi que le nom, prnom, adresse, code postal et localit du client pour tous les contrats qui couvrent la priode entre le 14 juillet et le 20 juillet 1998 et dont le pays de destination tait l'Italie. Utilisez des alias partout dans la requte. 3. Dterminez la plus grande prime parmi celles o le pays de destination est la Belgique et l'agent n'est pas un agent gnral.

Pierre Stockreiser

161

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

4. Affichez le numro de contrat, la prime, le nom et prnom du client ainsi que le nom et prnom de l'agent pour tous les contrats ou l'agent a le mme nom que le client. 5. Affichez toutes les informations concernant les clients ayant un agent qui habite Capellen. Eliminez un effet indsirable qui peut se produire cause du fait qu'un client peut avoir conclu plusieurs contrats avec le mme agent. 6. Affichez pour chaque client, le numro de client, son nom, le nom de son agent et la somme des primes de tous les contrats qu'il a conclu avec cet agent. Appliquez une clause GROUP BY sur le rsultat de la jointure des tables impliques. Au cas ou un client a conclu des contrats avec plusieurs agents diffrents, vous devez afficher un groupe pour chaque agent. 7. Soient les valeurs suivantes pour les deux tables tblContrats et tblAgents:
idContrat 1000 1001 1002 fldDbut 22/07/1998 12/07/1998 19/07/1998 fldFin 03/08/1998 22/07/1998 18/08/1998 fldPrime fldPays 2300 France 1750 Italie 4500 Belgique fiAgent 2 1 1 fiClient 10 11 11

idAgent fldNom fldPrnom fldAdresse 1 Pezzotto Alfredo 23, rue de Mamer 2 Kremer Pierre 2, bvd de la libert

fldCP fldLocalit fldNoTel fldAgentGnral 6555 Capellen 238987 No 9980 Luxembourg 228890 Yes

Expliquez pour la requte suivante, les tapes d'excution, en prcisant chaque fois les rsultats intermdiaires.
SELECT IdContrat, fldPrime, fldNom FROM tblContrats, tblAgents WHERE fiAgent=idAgent AND fldAgentGnral=No;

8. Elaborez une liste qui affiche pour chaque agent le nombre de contrats par pays de destination. 9. Indiquez le nom, le prnom, l'adresse, le code postal et la localit des clients ayant conclu un contrat qui a une prime strictement infrieure celle du contrat numro 1003. 10. Classez les agents par ordre descendant sur le nombre de contrats qu'ils ont conclu. En tenant uniquement compte des agents qui ont conclu au moins 2 contrats, affichez pour chaque agent, son numro, son nom et prnom ainsi que le nombre de contrats qu'il a conclu. 11. Affichez le nom et prnom des agents ayant conclu un contrat avec un client, qui a encore conclu un contrat avec au moins un autre agent. 12. Affichez le nom et prnom de tous les agents ayant conclu un contrat avec un client habitant dans la mme localit que le client numro 11.

Exercice 5: Facturation (Les requtes imbriques)


Un magasin spcialis dans la vente d'appareils lectromnagers entretient la BD suivante afin de grer la facturation.

Pierre Stockreiser

162

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Utilisez le mcanisme des requtes imbriques afin de rpondre aux questions suivantes. 1. Affichez le libell et le prix unitaire de l'article (des articles) qui est le plus cher. 2. Affichez le numro de l'article ainsi que le libell pour les articles moins cher que le prix moyen de tous les articles. 3. Affichez le numro et la date de toutes les factures dont le client habite Luxembourg. 4. Affichez le nom et le prnom des clients qui habitent Luxembourg et qui sont concerns par une facture etablie au cours du mois d'aot 1998. 5. Affichez le numro et le libell des articles qui sont plus cher que le prix moyen de tous les articles, et pour lesquels il existe une ou plusieurs factures avec une quantit >1. 6. Affichez le nom, le prnom, l'adresse, le code postal et la localit de tous les clients ayant dj achet un article plus cher que 3000 Luf. Exprimez la mme requte sans utiliser les requtes imbriques 7. Affichez le nom, le prnom, l'adresse, le code postal et la localit de tous les clients ayant uniquement achet des articles plus cher que 3000 Luf. Proposez une solution alternative en vous servant du mcanisme de la requte imbrique corrle. 8. Affichez le nom, le prnom, l'adresse, le code postal et la localit de tous les clients ayant dj achet pour une somme > 3000 Luf. par facture. Utilisez au maximum possible les requtes imbriques.

Pierre Stockreiser

163

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

9. Affichez le nom et le prnom de tous les clients ayant une facture, qui concerne un seul article. La facture ne doit donc ni concerner plusieurs articles diffrents ni avoir une quantit >1 pour un seul article.

Pierre Stockreiser

164

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exercice 6: Bibliothque
Une bibliothque utilise la BD suivante.

Remarques: Un auteur peut rdiger plusieurs livres et un livre peut tre rdig par plusieurs auteurs. La bibliothque peut disposer de plusieurs exemplaires du mme livre. Un prt concerne un seul exemplaire d'un livre. Le champ fldDateRetour de la table tblPrts reste indtermin (NULL) tant que l'exemplaire emprunt n'a pas t retourn la bibliothque.

Formulez en SQL les requtes suivantes: 1. Affichez le numro, le titre et le genre de tous les livres allemands (Code=ALL). Classez la liste par ordre alphabtique sur le genre (p.ex. 'Roman' avant 'Technique') et l'intrieur d'un genre par ordre ascendant sur les numros. 2. Affichez une liste trie par ordre alphabtique de tous les genres de livres disponibles. 3. Affichez une liste de toutes les localits o habite un membre dont l'adresse contient l'abrviation 'bvd' , indiquant que le membre habite sur un boulevard. 4. Affichez toutes les informations de la table tblAuteurs concernant les auteurs ayant une des nationalits suivantes. Nationalit (Pays d'origine) Code

Pierre Stockreiser

165

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Allemagne Angleterre France Autriche Italie Suisse Russie

ALL ANG FRA AUT ITA SUI RUS

5. Effacez tous les membres n'ayant pas encore effectu un prt. 6. Affichez le nom, le prnom, l'adresse, le code postal et la localit de tous les membres habitant Luxembourg ou Esch-s-Alzette, n'ayant pas encore retourn un exemplaire emprunt. 7. Affichez pour chaque livre le titre, le genre, la langue et le nombre d'exemplaires disponibles (emprunt ou non). Triez la liste par ordre alphabtique sur la langue, sur le genre et finalement sur le titre. Le champ indiquant le nombre d'exemplaires disponibles doit avoir l'en-tte 'Exemplaires disponibles'. 8. Affichez le nom et le prnom des auteurs ayant crit un livre franais dont le titre contient le mot 'passage', et dont la bibliothque possde au moins 3 exemplaires. 9. Affichez tous les livres (Titre et genre) de l'auteur 'Alexandre Dumas'. Triez la liste par ordre alphabtique sur le titre. 10. Affichez le nom, le prnom et le nombre de prts effectus, pour tous les membres qui habitent Esch-s-Alzette ou Luxembourg, ayant dj effectu au moins 2 prts. Triez la liste par ordre alphabtique sur le nom. 11. Crez une liste qui affiche pour chaque exemplaire actuellement emprunt (pas encore retourn), le numro du prt, le numro, le nom et le prnom du membre ayant emprunt le livre ainsi que le titre et le genre du livre en question. Triez la liste par ordre alphabtique sur le nom et le prnom du membre. 12. Quels sont les auteurs (Nom et prnom) ayant dj crit un livre ensemble avec l'auteur 'Margaret Gibson' ? 13. Quels sont les auteurs (Nom et prnom) n'ayant pas encore crit un livre ensemble avec l'auteur 'Margaret Gibson' ?

Pierre Stockreiser

166

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exercice 7: Gestion d'une cole


Voici une BD qui reprsente une gestion simplifie des cours d'un lyce technique.

Remarques: Une classe est reprsente par un code interne (idClasse) , un nom de classe (fldNomClasse) tel que '13CG2' ou '11CM1' , un niveau (fldNiveau) tel que 10 pour la classe '10GE2' ou 13 pour '13CG1' , et un champ indiquant le cycle (fldCycle) avec les valeurs possibles 'Infrieur', 'Moyen' et 'Suprieur'. Nous supposons qu'un lve ne change pas de classe pendant l'anne scolaire. Les champs fiElve et fldAnne forment donc la cl primaire de la table tblFrquenter. Cependant, un lve peut frquenter la mme classe pendant plusieurs annes conscutives (redoublants). De mme nous supposons qu'une matire est enseigne pendant une anne par un seul prof dans une classe. Les champs fiMatire, fiClasse et fldAnne forment donc la cl primaire de la table tblEnseigner. Toutefois, un prof peut enseigner la mme matire pendant plusieurs annes dans une mme classe ou la mme matire pendant une anne dans plusieurs classes. Les champs fldAnne des tables tblfrquenter et tblEnseigner font rfrence des annes scolaires. On y retrouve des valeurs telles que '97/98' ou '95/96'. La BD ne contient pas uniquement la situation de l'anne scolaire actuelle, mais galement celle des annes prcdentes.

Pierre Stockreiser

167

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Formulez en SQL les requtes suivantes: 1. Affichez pour l'anne scolaire '97/98' , le nom de chaque classe ainsi que le nombre d'lves. 2. Affichez par anne scolaire et par niveau le nombre d'lves. Triez la liste par ordre ascendant sur l'anne scolaire et par ordre ascendant sur le niveau. 3. Affichez le nom et le prnom de tous les profs ayant enseign une matire dans une classe de 13me pendant les 5 dernires annes scolaires ( partir de l'anne scolaire '97/98'). Triez la liste par ordre alphabtique sur le nom du prof. 4. Dressez une liste avec le nom, le prnom, l'adresse, le code postal, et la localit pour tous les lves qui ont frquent la classe '08TH1' pendant l'anne scolaire '96/97'. La liste doit tre trie par ordre alphabtique sur le nom des lves. Utilisez au maximum possible le mcanisme des requtes imbriques. 5. Crez une liste, qui montre pour l'anne scolaire '97/98', pour chaque classe, les matires enseignes avec les noms et prnoms des profs correspondants. Triez la liste par ordre alphabtique sur les noms des classes et l'intrieur d'une classe par ordre alphabtique sur les matires. Utilisez uniquement des jointures en dfinissant des alias pour toutes les tables impliques. 6. Crez une liste des profs (nom & prnom) qui est trie par ordre descendant sur le nombre de cours enseigns pendant les 3 dernires annes scolaires ( partir de l'anne scolaire '97/98'). La notion de cours est dfinie par le fait d'enseigner une matire dans une classe. 7. Affichez le nom et le prnom des profs qui enseignent au moins une matire dans une classe pendant l'anne scolaire '97/98'. Formulez la mme requte en utilisant le mcanisme de la requte imbrique corrle. 8. Affichez le nom, le prnom, l'adresse, le code postal et la localit de tous les lves ayant frquent pendant l'anne scolaire 96/97 une classe du cycle infrieur. Utilisez au maximum les requtes imbriques. 9. Affichez le nom, le prnom et la dnomination de la classe actuelle des lves qui sont actuellement (Anne '97/98') des redoublants. Attention: Un lve est actuellement un redoublant s'il a frquent l'anne scolaire passe une classe de mme niveau, mais pas ncessairement la mme classe. 10. Sachant qu'une classe ne devrait avoir un effectif suprieur 21 lves, le directeur vous demande d'tablir une liste avec les noms des classes du cycle infrieur, qui pourraient encore accepter des nouveaux lves pendant l'anne scolaire '97/98'. Utilisez uniquement des requtes imbriques. Formulez la mme requte en utilisant uniquement des jointures Formulez la mme requte en utilisant le mcanisme de la requte corrle. 11. Affichez le nom et le prnom, ainsi que le nom, le niveau et le cycle de leur classe actuelle (anne = '97/98') de tous les lves qui n'ont jamais redoubl une classe dans notre lyce. 12. Affichez parmi tous les profs, qui ont dj enseign la mme matire que le prof numro 10001, ceux n'ayant pas encore enseign la mme matire au mme niveau que le prof numro 10001 pendant les annes scolaires '96/97' et '97/98'.

Pierre Stockreiser

168

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Pierre Stockreiser

169

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.4 La mthode QBE


Bien que le langage SQL soit le standard unanime en ce qui concerne l'extraction de donnes d'une BD ainsi que leur manipulation, les informaticiens taient dj pendant les annes '70 la recherche d'une possibilit de crer des requtes sans faire recours un langage d'interrogation. Etant d'accord sur la flexibilit et les nombreuses possibilits de SQL, on voulait quand mme combler au grand dsavantage de ce langage, savoir une syntaxe assez rigide et surtout pas uniforme travers les diffrents SGBD. Les chercheurs voulaient crer une possibilit de spcifier graphiquement tous les lments d'une requte c..d. la ou les tables cibles, les critres de slection et les champs concerns. Le standard QBE (Query By Example) tait n. Pourtant, QBE tout comme SQL n'est pas implment de faon uniforme dans les diffrents SGBD. Ce n'est qu'en 1985, que QBE devenait vraiment populaire avec son introduction dans le SGBD PARADOX, qui fut commercialis par la socit BORLAND. Actuellement, tous les SGBD qui tournent sous une interface graphique du type Windows offrent le systme QBE. Citons par exemple dBASE, Visual FOXPRO, Superbase et surtout MS-Access qui offre actuellement selon les experts l'implmentation la plus conviviale du standard QBE. Prenons comme exemple les requtes de slection. QBE offre l'utilisateur une interface graphique qui lui permet de : Slectionner une table sur laquelle la requte sera base (SQL : FROM ). Choisir parmi les champs de cette table ceux qui vont tre affich ( SQL : SELECT ). Dfinir pour un ou plusieurs champs des critres de slection ( SQL : WHERE ). Dfinir un ordre de tri ( SQL : ORDER BY ). etc. Voici titre d'exemple un cran QBE de MS Access :

La requte correspondante en SQL serait:


SELECT idLivre, fldTitre, fldAuteur, fldLangue FROM tblLivres WHERE fldGenre="Roman" ORDER BY fldLangue DESC;

Pierre Stockreiser

170

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Les SGBD actuels offrent de plus en plus des possibilits QBE avances telles que l'utilisation des fonctions d'agrgation, l'implmentation des requtes d'insertion, de modification et de suppression etc. . Rfrez-vous la documentation de votre SGBD pour voir comment QBE est implment et quelles sont les fonctionnalits et les limites. Il est cependant important de savoir que les requtes QBE sont toujours excutes via SQL, parce qu'un SGBD ne comprend pas vraiment QBE. QBE n'est qu'une interface graphique couple un interprteur, qui transforme les indications de l'cran QBE en SQL. La partie du SGBD, qui excute la requte (appele le moteur SQL), utilise le code SQL gnr par l'interprteur de la mme faon que celui entr directement par l'utilisateur. Nous avons l'architecture suivante:

A faire : TP No 3 & TP No4

Pierre Stockreiser

171

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

8.

Les formulaires (angl. forms)

8.1 Dfinition
L'affichage, la saisie et la modification des donnes ont t raliss jusqu' maintenant directement dans les tables. Mme les requtes ont soit affich leurs rsultats sous forme de feuilles de donnes ( = sous-table), soit modifi directement le contenu des tables. Les formulaires reprsentent un autre outil de manipulation de donnes des SGBD. Un formulaire est une aide utile pour consulter et modifier rapidement et facilement les donnes d'une table. Les diverses facilits mises notre disposition par les formulaires nous offrent un bon confort ainsi qu'une trs grande scurit des donnes lors des manipulations. En gnral on utilise un formulaire pour: Entrer des donnes. Consulter des donnes. Modifier des donnes. Voici titre d'exemple un formulaire, qui affiche toutes les donnes d'une table qui contient des livres:

Vous remarquez que ce formulaire affiche un enregistrement la fois. Un formulaire est toujours li une table ou bien une requte. Il ne reprsente donc qu'une interface entre l'utilisateur et les tables. Toutes les donnes saisies sur un formulaire sont donc inscrites dans la (les) table(s) correspondante(s).

Pierre Stockreiser

172

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Chaque formulaire est compos de contrles. Voici une liste non exhaustive des contrles les plus rpandus dans les SGBD actuels:

Nom du contrle
Etiquette (angl. Label) Exemple:

Description
Affiche du texte fixe.

Utilisation
Ce type de contrle n'est pas li un champ d'une BD. Il sert uniquement fournir des informations l'utilisateur.

Zone de texte (angl. Text Box) Exemple:

Contient des donnes de la BD. Ce Peut reprsenter des contrle affiche par exemple la valeur champs de tout type. d'un champ pour l'enregistrement actuel.

Bouton d'options Utiliss en groupe, ces boutons (angl. Option Button ou permettent de choisir une seule valeur Radio Button) parmi plusieurs possibles. Un bouton slectionn signifie que la valeur associe Exemple: ce bouton est slectionne comme valeur pour le champ correspondant au groupe de boutons. Les options dans un groupe reprsentent donc les valeurs possibles pour UN champ donn de la table.

Ce contrle reprsente de prfrence des champs de type numrique, texte ou date. On utilise des groupes de boutons d'options pour reprsenter des champs pouvant contenir seulement quelques valeurs prdfinies, qui ne changent pas souvent Exemple: Le bouton Fminin slectionn ou pas du tout comme veut dire que le sexe de cet employ est par exemple le sexe fminin. (masculin/fminin), le rsultat d'un examen (Admin/Ajourn/Ecart) etc. .

Pierre Stockreiser

173

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Case cocher (angl. Check Box) Exemple:

Utilis pour afficher le contenu d'un Reprsente des champs champ de type Oui/Non (Yes/No). La valeurs logiques diffrence par rapport aux boutons (Oui/Non). d'option est qu'il est possible de cocher simultanment plusieurs cases dans un groupe. En plus, les cases cocher apparaissent souvent seules et indpendant d'un groupe. Chaque case concerne UN champ de la table. Exemple: La table contient 3 champs valeurs Oui/Non (fldCaracGras, fldItalique, fldSoulign). Permet d'afficher une liste de valeurs parmi lesquelles l'utilisateur peut en choisir une. On utilise des zones de liste pour reprsenter des champs qui contiennent plusieurs valeurs possibles. Lorsque la nature des donnes fait que des nouvelles options deviennent indispensables, il suffit de les ajouter dans la liste et chaque utilisateur pourra les slectionner.

Zone de liste (angl. List Box) Exemple:

Ce contrle reprsente de prfrence des champs de type numrique, texte ou date. On utilise des zones de liste pour reprsenter des champs pouvant contenir beaucoup de valeurs qui ne changent pas souvent ou pas du tout comme par exemple les noms des diffrents pays de l'Europe.

Liste modifiable (angl. Combo Box) Exemple:

Combinaison entre une zone de liste et une zone de texte. L'utilisateur peut slectionner une valeur de la liste ou entrer un texte de son choix.

Ce contrle reprsente de prfrence des champs de type numrique, texte ou date. Utilisation pareille la zone de liste mais avec l'option pour l'utilisateur d'entrer une valeur non prdfinie.

Pierre Stockreiser

174

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Bouton de commande (angl. Command Button) Exemples:

Excuter une ou plusieurs commandes Ce type de contrle n'est systmes respectivement lancer des pas li un champ d'une modules de programmes crs par BD. l'utilisateur. Exemple1: Visualiser toutes les commandes d'un client. Exemple2: Arrter l'action en cours.

La plupart des SGBD offrent encore des contrles pour amliorer la prsentation des formulaires (contrles graphiques, images, liens OLE ). Convention des noms: Les noms des formulaires sont prcds du prfixe frm (angl.: Form) Quand est-ce qu'on utilise des formulaires ? Lorsqu'on ne veut pas que les utilisateurs travaillent directement dans les tables. Les formulaires offrent gnralement des mcanismes de scurit plus sophistiqus tels que les zones de listes qui empchent les utilisateurs d'entrer n'importe quelle valeur dans un champ etc. Lorsqu'on veut prsenter les donnes sous une forme plus conviviale. On peut par exemple utiliser des cases cocher pour les champs valeur Oui/Non (Yes/No). Lorsqu'on dsire afficher les enregistrements un la fois ( Formulaires Colonne Simple) Le principe de conception d'un bon formulaire est toujours de minimiser le nombre de frappes afin de minimiser les erreurs possibles. Quelle est la base de cration d'un formulaire ? Tout comme les tables et les requtes, un formulaire est un composant d'une BD, qui doit tre cre et dfini avant de pouvoir tre utilis pour manipuler les donnes. Chaque formulaire se cre partir d'une table ou d'une requte. Les donnes affiches dans un formulaire proviennent donc de tables ou de requtes, tandis que certaines informations spcifiques l'apparence du formulaire (p.ex. couleur de l'arrire plan ) sont stockes dans la dfinition du formulaire.

Pierre Stockreiser

175

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

8.2 Types de formulaires


En gnral nous distinguons 3 types de formulaires: 1. Formulaire Colonne Simple (angl. Single Column Form)

Dans un formulaire Colonne Simple, les valeurs des enregistrements sont affiches dans une seule colonne. Chaque valeur d'un enregistrement se trouve dans un champ de formulaire ddi. Un seul enregistrement est donc reprsent chaque fois. 2. Formulaire Tabulaire (angl. Tabular Form)

Dans un formulaire tabulaire, les enregistrements sont reprsents sur des lignes et des colonnes. Ce type de formulaire a une apparence similaire celle de la vue d'un tableau ou d'un rsultat d'une requte.

Pierre Stockreiser

176

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

3. Formulaire Graphique (angl. Graphical Form)

La plupart des SGBD offrent une multitude d'options de reprsentations graphiques (Histogrammes 2D, Histogrammes 3D, Diagrammes circulaires ).

A faire : TP No 5

Pierre Stockreiser

177

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

8.3 Cration d'un formulaire


Avant de crer un formulaire, quelques rflexions s'imposent: Comment est-ce qu'on veut reprsenter les donnes et quel type de formulaire est le plus adquat ? Est-ce que l'utilisateur aura la possibilit d'ajouter, de modifier respectivement de supprimer des donnes ? Quels sont les contrles appropris pour reprsenter les diffrents champs de la table respectivement de la requte ? Voici quelques rgles gnrales d'utilisation des diffrents contrles standard. Pour reprsenter un champ valeur logique (Oui/Non), employez imprativement une case cocher. Plusieurs cases cocher peuvent tre regroupes afin de reprsenter plusieurs champs valeur logique. Exemple: L'utilisateur, qui est dans ce cas un employ d'une socit d'assurances, peut indiquer si un client inclus dans son contrat une assurance auto supplmentaire du type "Dfense & Recours" .

Pour reprsenter un champ, qui ne peut contenir qu'un nombre trs limit (max 5) de valeurs prdfinies du type numrique, texte ou date, qui sont en plus mutuellement exclusives, utilisez un groupe de boutons d'options.

Exemple:

L'employ choisit si la carte verte est envoye l'agent ou directement au client.

Un champ, qui peut contenir un nombre limit (> 5) de valeurs prdfinies du type numrique, texte ou date, qui sont en plus mutuellement exclusives, devra tre reprsent par une zone de liste.

Exemple:

L'employ peut tendre la couverture de l'assurance auto sur un pays supplmentaire.

Lorsque pour un champ, reprsent normalement par une zone de liste, vous voulez donner l'utilisateur la possibilit d'entrer des valeurs outres que celles prdfinies, utilisez une liste modifiable.

Pierre Stockreiser

178

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exemple:

L'employ peut soit slectionner une des marques prdfinies, soit entrer lui-mme un nom de marque.

Pour les champs ou vous ne pouvez pas du tout anticiper les valeurs, et qui ne sont pas du type logique, utilisez une zone de texte. Exemple: L'employ doit entrer le nom du client.

Lors de la conception d'un formulaire, le respect de ces quelques rgles garantit l'utilisateur le principe de la saisie minimale. Partout ou une slection de valeurs prdfinies est possible, l'utilisateur n'a pas besoin d'entrer les donnes au clavier. Avantages: 1. La rapidit de la saisie des donnes augmente meilleure productivit. 2. Elimination de beaucoup de sources d'erreur.

A faire : TP No 6

A faire : TP No 7

Pierre Stockreiser

179

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

9.

Les rapports (angl. reports)

9.1 Dfinition
Avec les formulaires, nous avons introduit un outil puissant pour consulter et manipuler les donnes d'une BD. Il est galement possible d'imprimer les formulaires, mais les SGBD nous offrent un outil beaucoup plus puissant en termes de fonctionnalits pour imprimer les donnes et effectuer des calculs sur ces donnes. Il s'agit des rapports (ou tats) (angl. reports), qui ont l'avantage d'tre trs flexibles en ce qui concerne la cration de listes et de statistiques imprimes, mais qui ne permettent pas de dialogue interactif avec l'utilisateur. L'important pour l'utilisateur d'une BD est donc de savoir quand il faut utiliser un formulaire et quand un rapport.

En gnral, on utilise un rapport pour: Imprimer des listes et statistiques concernant les donnes; Regrouper les donnes et crer des calculs sur les donnes; Crer des factures, bons de livraisons et autres pices de gestion importantes.

Reprenons notre table avec les livres d'une librairie

Pierre Stockreiser

180

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exemple 1: Le rapport suivant affiche simplement une liste avec tous les livres en stock. Cette liste est trie par ordre alphabtique sur le titre.

Exemple 2: Un SGBD nous offre gnralement la possibilit de regrouper les donnes. Chaque groupe est dfini selon les valeurs d'un ou de plusieurs champs. Un groupe contient normalement 3 parties; une en-tte de groupe, une section dtail et un pied de groupe. Dans notre exemple, nous allons crer des groupes bass sur la valeur du champ fldGenre, donc un groupe par genre. Pour chaque groupe, donc pour chaque genre, nous allons afficher les libells des champs dans l'en-tte du groupe et les livres appartenant au groupe dans la section dtail. A la fin de chaque groupe (dans le pied de groupe) sera affich en plus, le total des exemplaires en stock pour ce groupe.

En-tte

Dtail Pied

Pierre Stockreiser

181

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exemple 3: Dans ce rapport, les livres sont groups par genre et l'intrieur d'un genre par langue. Chaque groupe est donc dfini par le genre et la langue.

Pierre Stockreiser

182

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exemple 4: On pourrait envisager de reprsenter le mme groupement (genre & langue) d'une autre faon.

Quelle est la base de cration d'un rapport ? Tout comme les tables, les requtes et les formulaires, un rapport est un composant d'une BD, qui doit tre cr et dfini avant de pouvoir tre utilis pour afficher les donnes et les calculs sur les donnes. Chaque rapport se cre partir d'une table ou d'une requte. Les donnes affiches dans un rapport proviennent donc de tables ou de requtes, tandis que certaines informations spcifiques l'apparence du rapport (p.ex. Titre dans l'en-tte ) sont stockes dans la dfinition du rapport.

Pierre Stockreiser

183

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Chaque rapport est compos de contrles. Puisque les rapports ne sont pas prvus pour le dialogue interactif avec l'utilisateur, ils contiennent dans la plupart des cas seulement 3 types de contrles: Nom du contrle Zone de texte (angl. Text Box) Description Exemple Affiche les donnes de la BD, ainsi que les rsultats de calculs sur ces donnes. Les zones de textes constituent les contrles les plus importants et les plus utiliss dans les rapports. Affiche du texte fixe.

Etiquette (angl. Label)

Contrles graphiques Ces contrles, dont le seul but est (angl. Graphical l'amlioration de la prsentation Controls) des rapports peuvent tre de types diffrents, comme par exemple des lignes , des lments graphiques lmentaires tels que carrs ou rectangles, mais galement des images importes. Nanmoins, beaucoup de SGBD prvoient galement l'utilisation d'autres contrles, comme par exemple les boutons d'options ou les cases cocher. Convention des noms: Les noms des rapports sont prcds du prfixe rpt (angl.: report)

Pierre Stockreiser

184

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

Structure d'un rapport Chaque rapport est subdivis en diffrentes parties, appels sections. Un rapport peut contenir les sections suivantes: En-tte/Pied de rapport L'en-tte de rapport apparat une seule fois au dbut de la premire page, et le pied de rapport apparat une seule fois la fin de la dernire page. L'en-tte de rapport est souvent utilis pour afficher des logos ou la date actuelle. Le pied de rapport contient souvent des grand totaux. En-tte/Pied de page Contient du texte, qui sera affich/imprim chaque nouvelle page du rapport. L'en-tte de page contient gnralement les noms des champs affichs dans la section dtail. Le pied de page est souvent utilis pour afficher le numro de page. En-tte/Pied de groupe Dans un rapport on peut faire un regroupement d'enregistrements selon les valeurs d'un ou de plusieurs champs spcifis (p.ex. Regrouper une liste de voitures par marque). Chaque groupe dfini peut disposer d'un en-tte et d'un pied de groupe. L'en-tte de groupe affiche par exemple une ou plusieurs zones de texte indiquant le contenu du groupe (p.ex. Nom de la marque), ou les tiquettes de la section dtail. Le pied de groupe contient des calculs (p.ex. sous totaux, moyennes) pour ce groupe. Entre l'en-tte de groupe et le pied de groupe se trouve la section dtail, avec tous les enregistrements faisant partie du groupe. Section Dtail Cette section est la plus importante. Elle contient la plupart des zones de texte et affiche les donnes et les calculs pour chaque enregistrement. Il existe toujours une seule zone dtail, indpendant du fait qu'il y a des groupes ou non.

Pierre Stockreiser

185

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Exploitation des bases de donnes relationnelles

9.2 Cration d'un rapport


Voici quelques points de rflexion avant la cration d'un rapport: Quelles donnes est-ce qu'on veut reprsenter ? (Dressez la liste des champs) Quelles informations supplmentaires sont utiles (p.ex. groupements, sous totaux, moyennes, pourcentages) Quel est le format appropri en terme de disposition des informations ?

A faire : TP No 8 A faire : TP No 9

Pierre Stockreiser

186

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

Partie 3 : Protection des donnes

Pierre Stockreiser

187

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

10. Scurit des donnes 10.1Dfinition


Par scurit des donnes, on entend toutes les mesures prises pour que les donnes d'une BD soient protges contre: les manipulations malveillantes les accs non autoriss; les incohrences et pertes de donnes accidentelles.

10.2Les manipulations malveillantes


10.2.1 Dfinition

Par manipulation malveillante, on entend la lecture, la modification ou la destruction non autorise de donnes.

Exemple: Sachant qu'une BD est implmente par un ou plusieurs fichiers, au niveau du systme d'exploitation, une personne peut effacer une BD complte au niveau de la gestion des fichiers (p.ex. Explorer1) sans mme avoir besoin de dmarrer le SGBD.

Exercice Donnez un exemple supplmentaire d'une manipulation malveillante.

10.2.2

La protection contre les manipulations malveillantes

programme de gestion des fichiers sous Windows 95 et Windows NT

Pierre Stockreiser

188

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

Il est difficile d'empcher une personne autorise dans le systme effectuer une manipulation malveillante.

Toutefois, la plupart des SGBD excuts sur un serveur offrent l'administrateur d'une BD la possibilit de stocker toutes les manipulations effectues dans une BD spcialise, appele journal des oprations effectues (angl. auditing). A l'intrieur du journal, l'administrateur peut chaque moment vrifier quel utilisateur a effectu quelle manipulation sur quelle table quel moment. Avantages: Transparence totale concernant les manipulations effectues. Identification des coupables en cas de problmes. Le fait de rendre l'existence d'un tel journal public possde un certain effet psychologique sur les malfaiteurs potentiels.

Dsavantages: Les conclusions tires de la consultation d'un journal, sont considrer avec prcaution puisqu'un utilisateur en possession d'un mot de passe d'une autre personne peut effectuer des manipulations malveillantes sous l'identit de celle-ci. Les performances d'une BD peuvent tre dgrades puisque pour chaque manipulation d'une table, une inscription dans le journal doit tre effectue. Un journal permet le contrle total du travail des utilisateurs d'une BD.

Pierre Stockreiser

189

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

10.3Les accs non autoriss


10.3.1 Dfinition

Par accs non autoris une BD on entend le fait qu'une personne lit, modifie, insre ou efface des donnes d'une BD sans avoir une autorisation pralable respectivement un accs lectronique (Nom utilisateur & Mot de passe)

10.3.2

La protection contre les accs non autoriss

Il existe un certain nombre de mesures de protection contre les accs non autoriss.

10.3.2.1

Mot de passe

Une BD peut tre protge par un mot de passe. L'utilisateur dsirant travailler avec la BD; doit indiquer un mot de passe avant d'ouvrir celle-ci. Une fois la BD ouverte, l'utilisateur peut accder tous les objets. Avantage: Une personne ne disposant pas du mot de passe correspondant ne peut pas du tout accder une BD. Dsavantage: Les mots de passe sont videmment stocks dans un fichier spcial au niveau du systme d'exploitation. Une personne ayant des connaissances approfondies d'un systme d'exploitation n'a gnralement aucun problme d'afficher le contenu d'un tel fichier. Pour cela, la plupart des SGBD utilisent un procd d'encryptage afin de rendre les mots de passe illisibles avant de les stocker dans un fichier.

10.3.2.2

Droits d'accs aux objets d'une BD

Au niveau des BD, qui se trouvent localement sur un PC, un mot de passe est gnralement suffisant pour garantir une certaine scurit. Par contre pour les BD, qui se trouvent sur un serveur gr par un administrateur1, et qui sont accdes par une multitude d'utilisateurs, d'autres mcanismes plus varis s'imposent.

Certains utilisateurs autoriss de la base peuvent tre limits, dans leur accs, quelques tables de celle-ci.
1

personne (informaticien) responsable de la gestion du serveur, du SGBD sur le serveur et des BD

Pierre Stockreiser

190

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

Exemple: Soit une BD pour la gestion des comptes d'une banque, implmente sur un serveur BD, auquel tous les employs (mme ceux des agences) ont un accs via un rseau informatique.

Un stagiaire auprs de la banque aura un login 1 afin d'accder la base de donnes, mais l'administrateur de la base lui accorde uniquement un accs en lecture aux tables tblAgences et tblClients. En plus, l'administrateur cre une vue2, qui contient tous les enregistrements de la table tblComptes, toutefois sans afficher le champ fldValeur. Le stagiaire, avec les connaissances acquises pendant le cours d'informatique en classe de 13CG, peut crer sur son PC des requtes, formulaires et rapports, mais il sera limit l'utilisation des donnes pour lesquelles il est en possession des droits ncessaires.

En ce qui concerne les tables et vues d'une BD sur un serveur, l'administrateur n'a pas uniquement la possibilit de limiter les objets qu'un utilisateur peut accder, mais il peut galement dfinir pour chaque objet, le type d'accs auquel un utilisateur a le droit . Parmi les types d'accs nous distinguons: Autorisation de lecture (angl. select) L'utilisateur peut uniquement lire des donnes. Autorisation d'insertion (angl. insert) L'utilisateur peut lire et insrer des donnes. Il ne peut cependant pas modifier ou effacer des donnes existantes.

1 2

nom utilisateur & mot de passe l'aide duquel un utilisateur peut s'identifier au systme terme gnralis pour une requte de slection stocke et raffichable

Pierre Stockreiser

191

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

Autorisation de mise jour (angl. update) L'utilisateur peut lire et modifier des donnes. Il ne peut cependant pas insrer ou effacer des donnes. Autorisation d'effacement (angl. delete) L'utilisateur peut lire et effacer des donnes. Il ne peut cependant pas insrer ou modifier des donnes. Le SGBD sur le serveur garantit que les restrictions dfinies pour un utilisateur ne sont pas violes.

Exemple: L'administrateur d'une BD gre par un SGBD serveur Oracle peut par exemple excuter des commandes comme:
GRANT insert, update ON tblComptes,tblAgences TO JWEBER;

Cette commande donne l'utilisateur identifi au systme par le nom JWEBER, le droit de lire les donnes des tables tblComptes et tblAgences, d'insrer de nouveaux enregistrements dans ces tables et de modifier les enregistrements existants dans les deux tables. La commande suivante enlve le droit d'insertion dans la table tblComptes l'utilisateur.
REVOKE insert ON tblComptes FROM JWEBER;

Exercice En vous rfrant la syntaxe prsente dans cet exemple, et en supposant que le nom utilisateur du stagiaire de l'exemple prcdent est EMULLER, indiquez les commandes ncessaires pour donner les droits d'accs au stagiaire de la banque au dbut de la priode de stage, et celles ncessaires pour lui enlever ces droits la fin de la priode de stage. Nous supposons que la vue cre par l'administrateur s'appelle vComptesSansValeurs.

Avantage de la gestion des droits d'accs: Les droits d'accs sont un outil parfait pour personnaliser l'accs une BD de faon ce que chaque utilisateur puisse uniquement effectuer les oprations en relation avec sa fonction et comptence l'intrieur de l'entreprise. Ceci restreint les possibilits d'effectuer des manipulations malveillantes et limite en plus le nombre des suspects en cas d'une telle manipulation.

Dsavantage de la gestion des droits d'accs:

Pierre Stockreiser

192

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

En fait, il n'existe pas vraiment un dsavantage, mais la gestion des droits d'accs ncessite un effort de gestion supplmentaire considrable, surtout pour les socits o les comptences des employs varient beaucoup.

10.3.2.3

Scurisation du systme d'exploitation

Un SGBD, tout comme les autres applications informatiques, utilise les services d'un systme d'exploitation. Une BD est toujours implmente l'aide de un ou de plusieurs fichiers. Le contenu de ces fichiers est normalement illisible pour chaque application outre que le SGBD l'aide duquel le fichier (la BD) a t cr. Toutefois, il est possible d'endommager et mme d'effacer compltement un tel fichier, ce qui aurait comme consquence la destruction partielle ou totale de la BD, de faon indpendante des mcanismes de scurit implments au niveau du SGBD. Il convient donc de protger mme l'accs au systme d'exploitation, c..d. l'accs gnral au PC par un mot de passe. Au niveau d'un PC, qui contient une BD locale, la plupart des systmes d'exploitation prvoient deux types de mot de passe: 1. Un mot de passe pour dmarrer le PC (angl. Power On Password) 2. Un mot de passe coupl un conomiseur d'cran1 (angl. Screen Saver Password) Pour les serveurs BD, quelques mesures supplmentaires, telles que l'emplacement dans une salle protge par une cl lectronique, s'imposent. Avantages: L'existence d'un mot de passe au niveau du systme d'exploitation augmente le niveau de scurit du systme. Dsavantage: Un utilisateur doit indiquer son nom d'utilisateur ainsi que son mot de passe deux fois, la premire fois pour accder au systme d'exploitation et la deuxime fois pour accder la BD l'aide du SGBD. Certains SGBD sont cependant capables de reconnatre le nom d'utilisateur ainsi que le mot de passe indiqu au systme d'exploitation et de le reprendre lorsque l'utilisateur veut accder une BD.

programme affichant une animation l'cran, qui s'excute automatiquement aprs un nombre prdfini de minutes sans activit de l'utilisateur
1

Pierre Stockreiser

193

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

10.4Les incohrences et pertes de donnes accidentelles


10.4.1 Dfinition

Par incohrence accidentelle, on entend toute coupure non intentionnelle des liens logiques entre les donnes d'une BD.

Exemple d'une incohrence accidentelle: Dans les systmes multi-utilisateur, il se peut que deux utilisateurs accdent en mme temps, aux mmes enregistrements d'une BD sur le serveur. On parle d'un accs concurrent.

BD

Nous supposons, que les deux utilisateurs excutent en mme temps, de faon indpendante l'un de l'autre, les deux requtes suivantes: Utilisateur 1
UPDATE Employs SET fldDpartement="CPT" WHERE fldDpartement="Comptabilit";

Utilisateur 2
UPDATE Employs SET fldSalaire=fldSalaire*1.1 WHERE fldDpartement="Comptabilit" AND fldDateNaiss<#1/1/70#;

Nouvelle codification comptabilit.

pour

le

service

de

Tous les employs du service comptabilit ns avant le 1/1/70 , subissent une hausse de salaire de 10%.

Nous supposons en plus que la requte de l'utilisateur numro 2 est excute quelques instants avant l'autre requte. Cependant, la requte de l'utilisateur 1 s'excute un peu plus vite que l'autre, puisque pour chaque enregistrement, il y a uniquement un seul critre de slection vrifier. A un certain moment, l'excution de la requte 1 aura dpasse celle de la requte 2, donc pour certains enregistrements, le code "Comptabilit" est chang en "CPT", avant que la requte 2 ne

Pierre Stockreiser

194

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

puisse effectuer la modification du salaire. Parmi tous les employs ayant droit une hausse de salaire, certains sont donc "ignors". Le problme des accs concurrents se pose surtout dans les systmes avec beaucoup d'utilisateurs mettant beaucoup de requtes, tels que par exemple la gestion des dpts d'une banque. Ce problme peut tre rsolu par le mcanisme de la srialisation d'excution des requtes1, support automatiquement par tous les SGBD multi-utilisateur excuts sur un serveur de BD. Ce mcanisme garantit une excution en srie de plusieurs requtes, mme lorsque celles-ci sont envoyes par plusieurs utilisateurs en mme temps.

Exercice Donnez un exemple supplmentaire d'une incohrence accidentelle et d'une perte accidentelle.

10.4.2 La protection contre les incohrences et pertes de donnes accidentelles


Tous les SGBD implmentent des fonctionnalits, qui garantissent la cohrence des donnes en fonctionnement normal. A titre d'exemple mentionnons les contraintes d'intgrit et la srialisation d'excution des requtes. Une incohrence accidentelle peut donc en principe uniquement apparatre suite une perte accidentelle de donnes. Citons la perte d'enregistrements, qui contiennent des cls primaires lies des cls trangres d'une autre table. Par consquent, nous allons limiter la discussion suivante aux pertes accidentelles. Les causes des pertes de donnes accidentelles sont rparties en trois groupes: 1. Les pertes provoques par des erreurs humains; 2. Les pertes des donnes en mmoire interne (RAM). 3. Les pertes des donnes stockes sur disque dur.

10.4.2.1

Les pertes provoques par des erreurs humaines

une requte n'est excute qu'au moment o la requte prcdente a termin son excution

Pierre Stockreiser

195

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

Ce type de pertes est difficilement matrisable. Toutefois, une bonne formation des utilisateurs d'un systme aide rduire le nombre de telles pannes. Exemple d'une perte provoque par une erreur humaine: Une requte de suppression mal formule en SQL, efface trop d'enregistrements.

10.4.2.2

Les pertes des donnes en mmoire interne (RAM)

Les BD rsidant normalement sous forme de fichier(s) sur le disque dur, sont partitionnes en blocs de longueur fixe, avec chaque bloc contenant un ou plusieurs enregistrements. Un SGBD appelle les blocs ncessaires en mmoire centrale et les retourne sur le disque suite aux modifications effectues. Les donnes rsidant en mmoire interne ne rsistent pas un crash; et sont perdues de faon irrcuprable. Comme les blocs avec les enregistrements sont gnralement retourns vers le disque dur assez vite aprs une opration de modification, l'impact d'une perte de donnes en mmoire interne n'est toutefois pas trs grand. Exemples de causes pour la perte de donnes en mmoire interne: un crash systme provoqu par un dfaut matriel; un crash systme provoqu par un dfaut logiciel; une coupure d'alimentation lectrique.

10.4.2.3

Les pertes des donnes stockes sur disque dur

Les donnes stockes sous forme de fichier(s) sur disque dur peuvent en principe galement tre perdues, mais heureusement il existe des mesures de prvention d'une perte de donnes sur disque, puisque l'impact d'une telle perte peut tre norme, et peut dans le pire, aboutir dans la perte complte de la BD. Exemples de causes pour la perte de donnes sur disque dur: une manipulation errone effectue par un utilisateur; une erreur de logiciel (angl. Bug) a cause une incohrence de certaines donnes; une panne d'un disque.

10.4.3 donnes
10.4.3.1

Les mesures de prvention contre la perte de


La sauvegarde des donnes (angl. backup)

Pierre Stockreiser

196

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

Une mthode prventive contre la perte de donnes sur disque dur est la sauvegarde rgulire des donnes du (des) disque(s). L'opration de sauvegarde (ang. backup) d'une BD consiste dans la copie du resp. des fichiers qui contiennent la BD, du disque dur vers un support de sauvegarde. Ceci est fait au niveau du systme d'exploitation. Lors d'une perte de donnes d'un disque, on peut restituer (angl. restore) les donnes sur le disque partir du support de sauvegarde. Afin de pouvoir effectuer une sauvegarde des fichiers BD au niveau du systme d'exploitation, la BD doit tre "ferme", ce qui veut dire que personne ne doit tre en train d'effectuer n'importe quelle manipulation. Sinon, on risque de sauvegarder des fichiers incohrents. Au niveau des SGBD pour serveurs, il existe des systmes, qui permettent la sauvegarde "intelligente" d'une table pendant que celle-ci est consulte ou mme modifie. On distingue gnralement deux types de sauvegardes: 1. La sauvegarde complte (angl. full backup) Toutes les donnes sont sauvegardes 2. La sauvegarde incrmentale (angl. incremental backup) Uniquement les nouvelles donnes ou celles modifies depuis la dernire sauvegarde sont sauvegardes. Il est conseill de grer plusieurs gnrations de sauvegarde. On aura ainsi une version "Lundi", "Mardi", "Mercredi" etc., afin de pouvoir accder un tat de donnes antrieur si la dernire version sauvegarde est dj corrompue.

Voici un tableau comparatif des supports de sauvegarde, qui sont actuellement assez rpandus. Support Disquette Caractristiques Stockage magntique Capacit1: 720KB/1.4MB (trs faible) Lecture & criture rptitive des donnes Vitesse d'accs assez lente

1KB = 1Kilobyte = 1024 Byte / 1MB = 1 Megabyte = 1024KB / 1GB = 1Gigabyte = 1024MB

Pierre Stockreiser

197

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

Bande magntique Stockage magntique Capacit: 1GB 40 GB (trs leve) Lecture & criture rptitive des donnes Vitesse d'accs trs lente

Disque magntique amovible Stockage magntique Capacit: 100MB 2GB (suffisante pour petits systmes) Lecture & criture rptitive des donnes Vitesse d'accs rapide

CD-R

Stockage optique Capacit: 650 MB - 2GB (suffisante pour petits systmes) Lecture rptitive & une seule criture Vitesse d'accs moyenne

CD-RW Stockage magnto-optique Capacit: 1 3 GB (suffisante pour petits systmes) Lecture & criture rptitive des donnes Vitesse d'accs moyenne

Pierre Stockreiser

198

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Protection des donnes

10.4.3.2

La rplication du disque dur (angl. mirroring)

Cette solution met en uvre plusieurs disques durs dont le contenu est identique. La gestion incombe au systme d'exploitation resp. un contrleur de disque (carte lectronique). Celui-ci doit donc s'assurer que les informations sur les diffrents disques soient jour en permanence, de faon ce que l'on puisse continuer travailler en cas de panne d'un disque.

10.4.3.3

Rplication du serveur (angl. Backup server)

Dans cette solution, le serveur de rseau (qui peut contenir des donnes + le systme d'exploitation) est rpliqu (ddoubl). Si le serveur principal a une dfaillance, on continue travailler sur le serveur de sauvegarde.

10.4.3.4

Les systmes RAID-5

Le terme RAID (angl. Redundant Array of Inexpensive Disks) dnote un systme dans lequel plusieurs disques durs sont grs par un contrleur spcifique qui rpartit les donnes de telle faon sur les disques de manire ce que l'on puisse changer l'un des disques sans qu'il y ait perte de donnes. Les dernires versions de contrleur permettent mme le 'hot-swapping', c.--d. l'change d'un disque dfectueux sans arrter le systme.

Pierre Stockreiser

199

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Partie 4 : Travaux sur logiciel

Pierre Stockreiser

200

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

11. Travaux sur logiciel

11.1

TP No 1 : Introduction MS-Access

DUREE APPROX. : 2h. PRESENTATION Pendant ce cours nous allons utiliser le SGBD MS-Access, qui fait partie du groupe de programmes MS-Office en version professionnelle. (Attention: La version standard de MSOffice ne contient pas MS-Access). Une base de donnes MS-Access est stocke dans un fichier qui porte l'extension .mdb . Ce fichier contient tous les objets dfinis pour cette base. MANIPULATIONS IMPORTANTES ACTION Dmarrer MS-Access Slectionner l'icne : Crer une nouvelle BD Ouvrir une BD existante Afficher le contenu du systme d'aide en ligne Effectuer une recherche par mot cl dans le systme d'aide en ligne Recevoir de l'aide contextuelle lors d'une manipulation Recevoir de l'aide concernant une option de menu ou une icne Quitter MS-Access COMMENT FAIRE ?

Pierre Stockreiser

201

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

L'cran suivant se prsente comme cran principal de MS-Access:

ACTIVITES 1. Dmarrez MS-Access 2. Essayez de localiser un fichier .mdb existant sur votre disque dur. En principe, MS-Access contient une BD exemple nwind.mdb, qui est normalement stocke dans le rpertoire ..\access\sampapps. 3. Ouvrez la base de donnes sous MS-Access. Lorsque vous avez ouvert une BD, la fentre des objets de la BD apparat:

Nous voyons que MS-Access connat entre autres les 4 types d'objets que nous venons d'introduire:

Pierre Stockreiser

202

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Franais Table Requte Formulaire Rapport

Anglais Table Query Form Report

Pour chaque objet, il existe deux modes:


Le mode Utilisation de l'objet Le mode Structure de l'objet

Utiliser l'objet Crer l'objet resp. modifier sa structure

4. Dmarrez le conseiller de MS-Access 5. Slectionnez l'option "See a quick overview" 6. Affichez et lisez attentivement le contenu des lments Databases, Tables, Queries, Forms et Reports. Rpondez aux questions suivantes: 7. En ce qui concerne les tables, quelle est la diffrence entre "Design View" et "Datasheet View", et quelle est la relation avec les deux modes (Mode Utilisation, Mode Structure) que nous venons de dfinir ?

8. Pour les autres objets (Requtes, Formulaires, Rapports), quelles sont les dnominations des modes "Structure" et "Utilisation" dans le langage de MS-Access. Objet Table Requte Formulaire Rapport 9. Dcrivez en une seule phrase l'utilit des objets suivants: Table Requte Formulaire Rapport Mode Structure Design View Mode Utilisation Datasheet View

Pierre Stockreiser

203

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

10. Fermez le conseiller. 11. Quittez MS-Access

Pierre Stockreiser

204

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

11.2

TP No 2 : Les tables

DUREE APPROX : 3h. PRESENTATION Dans le cadre de ce TP, nous allons crer une table et la remplir avec des donnes. En plus, nous allons examiner un peu les possibilits offertes par Access en ce qui concerne la manipulation des donnes dans une table, ainsi que l'importation et l'exportation de donnes. Le mode "Design View" de MS-Access correspond au mode "Structure" (ou mode "Cration") qu'on vient de dfinir (voir TP1). Ceci veut dire qu'on peut dfinir la structure de la table (champs, cl primaire ). Le mode "Datasheet View" de MS-Access correspond au mode "Utilisation" qu'on vient de dfinir. Ceci veut dire qu'on peut ajouter, modifier et supprimer des enregistrements dans la table. MANIPULATIONS IMPORTANTES Dfinir la structure d'une table: ACTION Crer une table (Sans utiliser l'assistant) Ouvrir une table existante en mode "Cration" Dfinir un champ Dplacer un champ (Modifier l'ordre des champs) Insrer un champ Supprimer un champ Dfinir une cl primaire un champ Dfinir une cl primaire multi-champs Crer un index sur un seul champ Crer un index multi-champs Imprimer la structure de la table Enregistrer la table COMMENT FAIRE ?

Pierre Stockreiser

205

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Utiliser une table/Travailler avec les enregistrements: ACTION Slectionner le mode "Feuille de Donnes" pour une table ouverte en mode "Cration" Ouvrir une table en mode "Feuille de Donnes" Dplacer le curseur dans le champ suivant Dplacer le curseur dans le champ prcdent Dplacer le curseur dans n'importe quel champ d'un enregistrement Slectionner l'enregistrement suivant Slectionner l'enregistrement prcdent Slectionner le premier enregistrement Slectionner le dernier enregistrement Comment reconnat-on l'enregistrement en cours ? Modifier la largeur d'une colonne Dplacer un champ Rechercher des valeurs dans les enregistrements (angl. Find) Masquer des champs (angl. Hide) Rafficher les champs masqus (angl. Unhide) Imprimer des enregistrements Enregistrer les ajouts resp. modifications COMMENT FAIRE ?

ACTIVITES 1. Crez une nouvelle BD que vous appelez taxis.mdb . 2. Crez une table tblTaxis avec les champs suivants. N'utilisez pas l'assistant (angl. Wizard) Nom du champ idTaxi Type de donnes Compteur Description Numro identificateur d'un taxi

Pierre Stockreiser

206

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

fldMarque fldModle fldDateCirc fldKm fldCarburant

Texte [15] Texte [15] Date Numrique Texte [10]

Marque du taxi Modle du taxi Date de la premire mise en circulation Kilomtrage actuel Essence/Diesel Type de donnes AutoNumber en Access 97

3. Dfinissez le champ idTaxi comme cl primaire.

4. Expliquez brivement l'utilit du type de donnes "Compteur" (angl. Counter).

5. Sauvegardez la dfinition de la table (Nom = tblTaxis). 6. Entrez les enregistrements suivants dans votre table idTaxi 1 2 3 4 5 6 7 fldMarque BMW Ford VW BMW Audi VW VW fldModle 520i Scorpio Passat 525i A6 Golf TDI Passat fldDateCirc 01.02.1995 15.07.1994 28.09.1996 10.10.1996 09.11.1997 23.09.1997 22.02.1996 fldKM 85000 110800 56700 48500 4500 7800 59000 fldCarbur ant Essence Diesel Diesel Essence Diesel Diesel Diesel

Pierre Stockreiser

207

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

7. Crez un index multi-champs, que vous appelez simplement Ind1, sur la marque, le modle et la date de mise en circulation. A l'intrieur de l'index, les trois champs sont tris par ordre ascendant. 8. Ajoutez l'enregistrement suivant 8 VW Passat 13.10.1994 100800 Diesel

9. Sauvegardez et fermez la table.

Pierre Stockreiser

208

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

11.3 table

TP No 3 : Les requtes portant sur une

DUREE APPROX : 4h. PRESENTATION Ce TP contient une partie thorique supplmentaire au cours. Cette partie nous fournit l'aide d'exemples un aperu sur les possibilits de raliser des requtes l'aide de Access-QBE. Chaque exemple nous prsente une requte SQL ainsi que son pendant en Access-QBE. Le mcanisme des requtes paramtres est galement prsent. MS Access nous offre pour chaque requte une transparence totale entre les spcifications QBE et le code SQL correspondant. L'utilisateur qui travaille en QBE peut tout moment changer en vue SQL, qui lui permet de visualiser le code SQL correspondant la spcification QBE actuelle. Il peut alors ajouter respectivement modifier le code SQL . Les modifications seront rpercutes dans la grille QBE. Access nous offre donc une synchronisation complte dans les deux sens. Il est donc important de savoir que Access supporte deux modes de cration pour les requtes: 1. Le mode QBE 2. Le mode SQL Access ne connat pas seulement les requtes de slection, mais galement les requtes de modification de suppression et d'insertion. Les trois derniers types de requtes sont dnommes gnralement Requtes Action (angl. Action Queries). Toutefois, il existe des requtes, qui ne peuvent pas tre spcifies via QBE. Parmi celles-ci se trouvent les requtes d'insertion telles que nous les avons vues en SQL. INSERT INTO <Nom de la table> [<Nom des champs>] VALUES ( <Valeurs pour les champs> ); Lorsqu'on veut insrer des enregistrements, un la fois, on utilise SQL ou on insre directement dans la table. Chaque nouvelle requte est par dfaut une requte de slection. L'utilisateur doit explicitement spcifier le type de requte pour les autres types de requte. Un utilisateur expriment peut directement spcifier que la requte est une requte de suppression ou de modification, et entrer les critres de slection. Une manire plus sre de procder est la suivante: 1. Dfinir une requte de slection dont les critres de slection correspondent exactement ceux de la requte action. 2. Vrifier le rsultat de la requte slection. 3. Convertir la requte slection en requte action et excuter la requte action.

Pierre Stockreiser

209

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Voici une table rcapitulative des requtes possibles en QBE et en SQL. MS Access Requte de slection Requte d'insertion Requte de suppression Requte de modification SQL Oui Oui Oui Oui QBE Oui Non1 Oui Oui

Il est possible de sauvegarder une requte (Sauvegarde de la spcification QBE resp. du code SQL) et de l'excuter un moment ultrieur. Convention des noms: Les noms des requtes sont prcds des prfixes suivants: 1. Requtes de slection qsel (angl.: Query Select) 2. Requtes d'insertion qins (angl.: Query Insert) 3. Requtes de modification qupd (angl.: Query Update) 4. Requtes de suppression qdel (angl.: Query Delete) MANIPULATIONS IMPORTANTES ACTION Crer une nouvelle requte (Sans utiliser l'assistant) Ouvrir une requte existante en mode cration Changer en mode SQL Changer en mode QBE Changer en mode Feuille de Donnes (Affichage du rsultat) Sauvegarder une requte Slectionner une table en mode QBE Slectionner les champs en mode QBE Dslectionner des champs en mode QBE Activer en mode QBE l'affichage d'un champ slectionn (Correspond la clause SELECT en SQL) COMMENT FAIRE ?

Access supporte cependant la syntaxe INSERT INTO <Table cible> SELECT ... , qui copie les enregistrements rsultant de l'excution du SELECT dans la table cible.
1

Pierre Stockreiser

210

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

THORIE SUPPLMENTAIRE - IMPLMENTATION DE ACCESS-QBE Les exemples suivants sont bass sur la table tblTaxis , cre lors du TP2. Nom du champ idTaxi fldMarque fldModle fldDateCirc fldKm fldCarburant Type de donnes Compteur Texte [15] Texte [15] Date Numrique Texte [10] Description Numro identificateur d'un taxi Marque du taxi Modle du taxi Date de la 1re mise en circulation Kilomtrage actuel Essence/Diesel

Voici titre d'exemple un cran QBE qui reprsente la requte SQL suivante. Affichez le numro et la marque de tous les taxis

SELECT idTaxi, fldMarque FROM tblTaxis;

Requtes de slection Afin d'afficher un champ, ce champ doit donc tre slectionn et l'affichage du champ doit tre activ. Le fait de slectionner l'astrisque ( * ) correspond la slection de tous les champs de la table. (Correspond SELECT * FROM ... ) L'option DISTINCT: Afin d'implmenter l'option DISTINCT en Access-QBE la proprit Unique Values de la requte doit avoir la valeur YES. Pour afficher les proprits d'une requte, cliquez sur la fentre QBE avec la touche droite de la souris. Slectionnez ensuite l'option Properties du menu flottant. Les critres de slection

Pierre Stockreiser

211

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

En principe , Access-QBE prvoit la ligne intitule Criteria pour dfinir les critres de slection Affichez le numro et la marque pour tous les taxis de la marque "Peugeot".

SELECT idTaxi, fldMarque FROM tblTaxis WHERE fldMarque='Peugeot';

Les oprateurs AND et OR Lorsqu'on spcifie plusieurs critres de slection pour plusieurs champs diffrents sur une seule ligne, ces critres seront combins par un ET (AND) logique. Alternativement il est possible d'utiliser l'oprateur AND directement dans une mme cellule. Lorsqu'on spcifie plusieurs critres dans plusieurs lignes l'une au-dessous de l'autre, pour un seul champ, ces critres seront combins par un OU (OR) logique. Alternativement, il est possible d'utiliser l'oprateur OR directement dans une mme cellule.

Affichez le numro, la marque et le kilomtrage des taxis o la marque est "BMW" ou "Mercedes".

SELECT idTaxi, fldMarque, fldKM FROM tblTaxis WHERE fldMarque = 'BMW' OR fldMarque='Mercedes';

Mme requte.

SELECT idTaxi, fldMarque, fldKM FROM tblTaxis WHERE fldMarque = 'BMW' OR fldMarque='Mercedes';

Affichez le numro, la marque et le kilomtrage en tenant uniquement compte des taxis qui sont des "VW" ou de ceux qui ont un kilomtrage >100000.

Pierre Stockreiser

212

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

SELECT idTaxi, fldMarque, fldKM FROM tblTaxis WHERE fldMarque='VW' OR fldKM >100000;

Affichez le numro, la marque et le modle des Audi A6.

SELECT idTaxi, fldMarque, fldModle FROM tblTaxis WHERE fldMarque='AUDI' AND fldModle='A6';

Affichez le numro et le kilomtrage des taxis ayant un kilomtrage entre 10000km et 100000km, les deux valeurs incluses.

SELECT idTaxi, fldKM FROM tblTaxis WHERE fldKM >= 10000 AND fldKM <=100000;

Mme requte.

SELECT idTaxi, fldKM FROM tblTaxis WHERE fldKM >= 10000 AND fldKM <=100000;

Pierre Stockreiser

213

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Affichez le numro, la marque et le kilomtrage en retenant uniquement soit les VW, soit les Audi ayant un kilomtrage < 10000km.

SELECT idTaxi, fldMarque, fldKM FROM tblTaxis WHERE fldMarque = 'VW' OR fldMarque = 'AUDI' AND fldKM < 10000; (Attention: AND a la priorit sur OR)

Les oprateurs LIKE, IN, IS NULL et BETWEEN Ces oprateurs sont utiliss l'intrieur des cellules, en respectant exactement la syntaxe de SQL.

Affichez toutes les informations disponibles pour les taxis dont le nom de marque contient la lettre "D".

SELECT * FROM tblTaxis WHERE fldMarque LIKE '*D*';

Les dates en Access-QBE Access convertit les dates spcifies en QBE automatiquement dans le format amricain (mois/jour/anne) lors d'une conversion en SQL. Affichez le numro, la marque et la date de premire mise en circulation pour tous les taxis immatriculs aprs le 31/12/96.

SELECT idTaxi, fldMarque, fldDateCirc FROM tblTaxis WHERE fldDateCirc > #12/31/96#;

Pierre Stockreiser

214

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Access nous offre quelques fonctions supplmentaires la syntaxe SQL. Ces fonctions peuvent tre employes en QBE tant qu'en SQL. Fonction Date() Year(<date>) Month(<date>) Day(<date>) Time() Hour(<time>) Minute(<time>) Second(<time>) Description Retourne la date actuelle (Date systme de l'ordinateur). Le format dpend du format slectionn dans Windows (c.f. Regional Settings) Retourne l'anne (100-9999) resp. le mois (112) resp. le jour (1-31) de la date qui est passe comme paramtre. Retourne l'heure actuelle (Heure systme de l'ordinateur). Le format dpend du format slectionn dans Windows (c.f. Regional Settings) Retourne l'heure (0-23) resp. la minute (0-59) resp. la seconde (0-59) de l'heure, qui est passe comme paramtre.

Il est possible de calculer avec les dates. L'expression < Date() - 30 par exemple slectionne toutes les dates antrieures la date actuelle moins 30 jours.

SELECT idTaxi, fldMarque, fldDateCirc FROM tblTaxis WHERE fldDateCirc < Date()-30;

Les fonctions d'agrgation Ces fonctions sont utilises l'intrieur des cellules, en respectant exactement la syntaxe de SQL. Affichez le nombre de taxis enregistrs dans la table tblTaxis.

SELECT COUNT(*) FROM tblTaxis

La clause GROUP BY

Pierre Stockreiser

215

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

La clause GROUP BY est reprsente en Access-QBE par une option des requtes de slection, les requtes du type sous-total (ang. Totals Queries). En fait, il suffit de slectionner l'option de menu ____________ resp. l'icne afin d'insrer une nouvelle ligne dans votre cran QBE. Cette ligne, qui porte le libell Total: , vous permet d'indiquer les champs de groupe. Une cellule appartenant cette ligne peut prendre en principe 3 valeurs possibles. Group By Expression Where Indique que le champ est un champ de groupe. Pour les champs sur lesquels sont dfinis des fonctions d'agrgation. On peut directement slectionner la fonction d'agrgation dans cette cellule (Exception: COUNT(*) ). Indique les champs, qui apparaissent dans le critre de slection. Ces champs sont d'office non affichs.

Affichez pour chaque marque, le nom de la marque et le nombre de taxis pour cette marque.

SELECT fldMarque, COUNT(*) FROM tblTaxis GROUP BY fldMarque;

Mme requte.

SELECT fldMarque, COUNT(idTaxi) FROM tblTaxis GROUP BY fldMarque;

Pierre Stockreiser

216

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Mme requte, en retenant uniquement les taxis immatriculs aprs le 31/12/96.

SELECT fldMarque, COUNT(*) FROM tblTaxis WHERE fldDateCirc > #12/31/96# GROUP BY fldMarque;

En ignorant les VW, affichez pour chaque marque, le nom de la marque ainsi que la somme du kilomtrage parcouru.

SELECT fldMarque, SUM(fldKM) FROM tblTaxis WHERE fldMarque <> 'VW' GROUP BY fldMarque;

Affichez pour chaque combinaison marque/modle la moyenne du kilomtrage parcouru.

SELECT fldMarque, fldModle, AVG(fldKM) FROM tblTaxis GROUP BY fldMarque, fldModle;

Afin d'implmenter la clause HAVING en Access-QBE , il suffit d'indiquer le critre de slection des groupes dans la cellule du champ correspondant. Affichez pour chaque marque, le nom de la marque et le nombre de taxis pour cette marque, en ignorant les marques pour lesquelles on dispose uniquement d'un seul taxi.

SELECT fldMarque, COUNT(*) FROM tblTaxis GROUP BY fldMarque HAVING COUNT(*) > 1;

Champ valeur calcule

Pierre Stockreiser

217

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Pour crer un champ valeur calcule, vous devez indiquer manuellement l'expression dans la ligne intitule Field: et prfixer l'expression par le nom afficher suivi d'un double-point. La syntaxe est la mme qu'en SQL. Pour renommer un champ, il suffit de prfixer le nom du champ par le nom afficher suivi d'un double-point. Affichez pour chaque taxi, le numro ainsi que le kilomtrage parcouru en moyenne par jour.

SELECT idTaxi,fldKM/(Date()fldDateCirc) AS 'KM par jour en moyenne' FROM tblTaxis;

Affichez le numro, la marque et le kilomtrage de tous les taxis. L'en-tte du champ affichant le numro doit porter le libell "Numro", celle du kilomtrage doit porter le libell "Kilomtres parcourus".

SELECT idTaxi AS Numro, fldMarque, fldKM AS 'Kilomtres parcourus' FROM tblTaxis;

Trier une liste d'enregistrements Access-QBE nous permet pour chaque champ slectionn, de spcifier dans la ligne Sort: l'ordre du tri (ascendant/descendant). Affichez une liste avec le numro, la marque et le kilomtrage parcouru de tous les taxis. Triez cette liste par ordre descendant sur le kilomtrage.

SELECT idTaxi, fldMarque, fldKM FROM tblTaxis ORDER BY fldKM DESC;

Mme question. Triez cette fois par ordre alphabtique sur les marques et pour chaque marque

Pierre Stockreiser

218

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

par ordre descendant sur le kilomtrage.

SELECT idTaxi, fldMarque, fldKM FROM tblTaxis ORDER BY fldMarque, fldKM DESC;

Requtes de suppression Voici titre d'exemple un cran QBE qui reprsente une requte SQL, qui efface de la table tblTaxis tous les VW.
DELETE FROM tblTaxis WHERE fldMarque='VW';

Une cellule appartenant la ligne intitule Delete: peut prendre en principe 2 valeurs possibles. From Where Dans ce cas, la cellule au dessus doit indiquer le nom de la table dans laquelle on veut effacer des enregistrements (Attention la syntaxe <Nom de la table>.* ) Permet de spcifier des critres de slection

Pierre Stockreiser

219

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

ACTION Slectionner le type de requte SUPPRESSION Excuter la requte

COMMENT FAIRE ?

Requtes de modification Voici titre d'exemple un cran QBE qui reprsente une requte SQL, qui affecte la valeur 'Essence' au champ fldCarburant pour tous les Audi.
UPDATE tblTaxis SET fldCarburant='Essence' WHERE fldMarque='AUDI';

La ligne intitule Update To: dfinit la nouvelle valeur pour le champ modifier. Access ne peut pas excuter la requte de modification lorsque votre cran QBE contient l'astrisque (*) comme indicateur d'un champ slectionn. Comme l'utilisation de l'astrisque est trs utile pour les requtes de slection, il ne faut pas oublier de l'enlever aprs la conversion d'une requte de slection en requte de modification. ACTION Slectionner le type de requte MODIFICATION Excuter la requte COMMENT FAIRE ?

THORIE SUPPLMENTAIRE - LES REQUTES PARAMTRES

Pierre Stockreiser

220

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Voici titre d'exemple une requte, qui affiche toutes les informations concernant les taxis dont la date de premire mise en circulation est antrieure au 1.1.96.

SELECT * FROM tblTaxis WHERE fldDateCirc<#1/1/96#;

Imaginez que de temps en temps vous vouliez tablir cette liste, mais avec une date de premire mise en circulation diffrente. Au lieu de modifier chaque fois le critre de slection en SQL ou en QBE, vous dfinissez une requte paramtre. Dans la requte paramtre, vous n'indiquez pas directement la date (une constante), mais un paramtre (une variable), et chaque fois que la requte est excute, une bote de dialogue demande l'utilisateur d'entrer une date avant l'excution. Aprs que l'utilisateur a entr cette date, la requte affiche tous les taxis, dont la date de premire mise en circulation est antrieure la date entre. Voici un exemple SQL et QBE, qui vous montre qu'on indique simplement le texte afficher dans la bote de dialogue.

SELECT * FROM tblTaxis WHERE fldDateCirc<[Entrez une date];

L'excution de cette requte est prcde par l'affichage de la bote de dialogue suivante.

Vous pouvez videmment prciser plusieurs paramtres dans une requte. La requte suivante demande une marque ainsi que la date de la premire mise en circulation.

Pierre Stockreiser

221

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

SELECT * FROM tblTaxis WHERE fldDateCirc<[Entrez une date] AND fldMarque=[Entrez une marque];

Les botes de dialogue apparaissent dans l'ordre de dfinition des paramtres. Lorsque pour une raison ou l'autre, vous dsirez modifier l'ordre d'apparence des botes de dialogue, sans modifier la requte, vous utilisez soit en SQL la commande PARAMETERS soit vous ouvrez en mode QBE la fentre Query Parameters et indiquez les paramtres dans l'ordre dsir. Menu Query/parameters

PARAMETERS [Entrez une marque] Text, [Entrez une date] DateTime; SELECT * FROM tblTaxis WHERE fldDateCirc<[Entrez une date] AND fldMarque=[Entrez une marque];

ACTIVITES 1. Ouvrez la BD taxis.mdb (Vous allez crer diffrentes requtes bases sur la table tblTaxis) 2. Crez via QBE une requte qselACirc, qui affiche le numro , la marque et le modle de tous les taxis mis en circulation aprs le 31.12.1995. Excutez la requte. Analysez le code SQL que MS-Access a cr. Modifiez le code de faon ce qu'il corresponde exactement notre syntaxe. Rexcutez la requte. Qu'est ce que vous remarquez ?

Notez votre code SQL

3. Crez via SQL la requte qselCarbKM, qui affiche le numro du taxi, la marque, le modle ainsi que la date de premire mise en circulation pour tous les taxis qui utilisent du carburant Diesel et qui ont un kilomtrage entre 50.000 et 100.000 (les 2 valeurs incluses).
Pierre Stockreiser 222 Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Triez les enregistrements du rsultat par ordre ascendant sur la marque. Aprs avoir excut la requte, affichez la requte en mode QBE.

4. Crez via QBE la requte qselMarMod, qui affiche toutes les informations des taxis dont le nom de marque commence par la lettre 'V' et dont le nom du modle ne finit pas par la lettre 'T'. Notez le code SQL correspondant.

5. Crez via QBE une requte qselKM, qui permet l'utilisateur de spcifier pour le kilomtrage d'un taxi une limite infrieure ainsi qu'une limit suprieure, et qui affiche le numro, la marque, le modle et le kilomtrage actuel de tous les taxis dont le kilomtrage est une valeur qui se trouve entre ces limites. Notez le code SQL correspondant cette spcification QBE.

6. A l'aide d'une requte qinsMerc, insrez l'enregistrement suivant dans la BD. 9 Mercedes 300SL 15.7.1997 200

Pour l'instant nous laissons la valeur pour le carburant non dfinie. Utilisez pour ce champ la valeur NULL et non pas la chane vide "".

Quel mode est-ce que vous allez utiliser, QBE ou SQL ? Justifiez votre choix.

Pierre Stockreiser

223

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

7. Crez via SQL une requte qupdNull, qui crit la chane "Inconnu" dans le champ fldCarburant de chaque enregistrement ou ce champ est non dfini. Excutez la requte.

Affichez la requte en mode QBE. 8. Crez via QBE une requte qselNouvVoit, qui compte le nombre de voitures dont la date de premire mise en circulation est antrieure au 1.1.1996. Notez le code SQL correspondant.

9. Utilisez la mthode QBE afin de rsoudre les requtes suivantes. Notez chaque fois le code SQL correspondant.

Enonc
Affichez toutes les informations pour les taxis qui sont soit des VW , soit des Mercedes avec carburant Essence, soit des BMW avec moins de 10000 km. Triez les enregistrements par ordre ascendant sur les marques et par ordre descendant sur le kilomtrage.

Code SQL

Comptez le nombre de taxis qui sont actuellement plus 'vieux' que 2 annes. (Nous supposons: 1 anne = 365 jours) L'en-tte du champ affich portera le titre 'Vieux taxis'

Pierre Stockreiser

224

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Affichez les marques pour lesquelles on dispose exactement de X voitures. Le nombre X est obtenir chaque fois avant l'excution de la requte, sans modifier la dfinition (SQL,QBE) de la requte.

Affichez pour chaque marque, le nombre de voitures ainsi que la moyenne des kilomtres parcourus.

Regroupez les taxis sur le mois de leur date de premire mise en circulation, et affichez pour chaque groupe, le nombre de taxis.

Pierre Stockreiser

225

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

11.4 TP No 4 : Les relations et les requtes multitable


DUREE APPROX. : 4h. PRESENTATION Les requtes en Access ne sont videmment pas limites une seule table. De toute faon, Access supporte le langage SQL, ce qui nous offre dj une possibilit de formuler nos requtes multitable. Pendant ce TP, nous allons galement examiner les possibilits offertes par Access-QBE en ce qui concerne les requtes multitable. Comme le TP3, ce TP contient une partie thorique supplmentaire au cours. Cette partie nous fournit un aperu sur les possibilits de raliser des requtes multitable l'aide des relations dfinies entre les diffrentes tables. THORIE SUPPLMENTAIRE Les relations en Access La partie thorique de ce cours nous a appris qu'une relation entre deux tables se fonde sur l'existence d'une cl trangre (angl. Foreign Key) , qui fait rfrence la cl primaire (ang. Primary Key) d'une autre table. Voici, titre d'exemple, trois tables utilises par un htelier pour la gestion (simplifie) de ses chambres.

tblChambr es Nom du champ idChambre fldEtage fldType fldStanding fldPrix Type de donnes Numrique Numrique Texte [15] Texte [15] Numrique Description Numro de la chambre Numro de l'tage Simple/Double Standard/Luxe/Grand Luxe Prix de la chambre par nuit (en Luf.)

Pierre Stockreiser

226

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

tblRservatio ns Nom du champ idRservation fldDbut fldFin fiChambre fiClient tblClients Nom du champ idClient fldNom fldPrnom fldAdresse fldCP fldLocalit fldPays Type de donnes Numrique Texte [20] Texte [20] Texte [25] Texte [7] Texte [20] Texte [15] Description Numro du client Rue et numro Type de donnes Numrique Date Date Numrique Numrique Description Numro de la rservation Dbut de la rservation Fin de la rservation Numro de la chambre Numro du client

Dans la table tblRservations, les champs fiChambre et fiClient sont des cls trangres, qui fournissent des rfrences vers les cls primaires idChambre et idClient des tables tblChambres resp. tblClients. De cette faon, on peut pour chaque rservation dterminer avec exactitude le client et la chambre concerne. Par le simple fait d'inclure des cls trangres dans une table, Access ne reconnat pas encore une relation entre les tables. Access ne sait par exemple pas automatiquement que le champ fiChambre de la table tblRservations fait rfrence la cl primaire idChambre de la table tblChambres. A l'aide de la fentre Relationships , on peut indiquer Access les cls trangres et leurs cls primaires associes, et ainsi dfinir les relations entre les tables.

La documentation de Access nous dit que le fait d'tablir des relations simples entre des tables, nous facilite en outre le cration de requtes multitable. Nous allons vrifier cette affirmation plus tard dans la partie Activits de ce TP. Un avantage incontestable de la fentre Relationships est la possibilit de dfinir ce qu'on appelle l'intgrit rfrentielle pour une relation donne. L'intgrit rfrentielle

Pierre Stockreiser

227

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Par contrainte d'intgrit rfrentielle (angl. Referential Integrity Constraint) , on entend l'obligation qu' chaque valeur de la cl trangre corresponde une et une seule valeur de la cl primaire associe. Cette obligation doit toujours tre vrifie lors de l'ajout, de la suppression ou de la modification de donnes. Il existe plusieurs scnarios qui peuvent compromettre l'intgrit rfrentielle d'une BD. Donnez chaque fois un exemple prcis en vous basant sur nos 3 tables tblRservations, tblChambres et tblClients. A. L'ajout d'une cl trangre pour laquelle il n'existe pas de valeur correspondante dans la cl primaire associe. Exemple:

B. La modification d'une cl trangre vers une valeur pour laquelle il n'existe pas de valeur correspondante dans la cl primaire associe. Exemple:

C. La suppression d'une cl primaire qui est rfrence par une ou plusieurs valeurs d'une cl trangre. Exemple:

D. La modification d'une cl primaire qui est rfrence par une ou plusieurs valeurs d'une cl trangre. Exemple:

Access nous offre plusieurs possibilits pour garantir tout moment l'intgrit rfrentielle des donnes d'une BD. I. Interdiction des oprations du type A, B, C et D. Bien que cette possibilit soit trs efficace, il existe parfois une alternative prfrable en fonction de la nature des donnes. Cascade des oprations du type C et D vers les cls trangres correspondantes. Une modification d'une cl primaire aurait comme consquence la modification de toutes les cls trangres correspondantes. Une suppression d'une cl primaire par exemple aurait comme consquence la suppression automatique de tous les enregistrements dont la cl trangre a la mme valeur. Cette option est utiliser avec prcaution !!!

II.

Pierre Stockreiser

228

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

MANIPULATIONS IMPORTANTES Les relations ACTION Ouvrir la fentre Relationships Ajouter une table dans la fentre Relationships Effacer une table de la fentre Relationships Dfinir une relation entre deux tables COMMENT FAIRE ?

Effacer une relation existante Modifier une relation existante Forcer le respect de l'intgrit rfrentielle Activer les suppressions resp. modifications en cascade

Les requtes multitable ACTION Slectionner les tables impliques dans une requte multitable Raliser une auto-jointure sur une table Afficher les noms des tables dans la partie infrieure de la fentre QBE (Utile pour les auto-jointures) Slectionner une requte existante comme base de la nouvelle requte COMMENT FAIRE ?

Pierre Stockreiser

229

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

ACTIVITES 1. Crez une nouvelle BD, que vous appelez Hotel.mdb . 2. Crez les 3 tables tblChambres, tblRservations et tblClients. 3. Entrez les donnes suivantes dans les 3 tables.

Attention: Le format des dates peut tre diffrent sur votre PC (Entrez p.ex. simplement 3 8 98 lors de l'entre d'une date)

Pierre Stockreiser

230

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

4. Crez des simples relations (sans intgrit rfrentielle) entre les tables tblRservations et tblChambres ainsi que entre les tables tblRservations et tblClients.

5. Quel est le code SQL d'une requte qui affiche pour chaque rservation, le numro de rservation, les dates de dbut et de fin de rservation, ainsi que le nom et le prnom du client concern.

Crez cette requte via QBE et sauvegardez la sous le nom qselResCli

Remarquez que la relation entre les deux tables tblRservations et tblClients est automatiquement affiche dans la fentre QBE. Excutez la requte pour voir le rsultat. Notez le code SQL que Access vient de crer.

A part des diffrences syntaxiques que nous connaissons dj du TP3, qu'est-ce que vous remarquez lorsque vous comparez votre code SQL celui cr par Access ?

Pierre Stockreiser

231

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Dans la fentre Relationships , effacez la relation entre tblRservations et tblClients, et ouvrez par aprs le requte qselResCli en mode QBE. Qu'est ce que vous remarquez ?

Effacez la relation entre les deux tables tblRservation et tblClients galement dans la fentre QBE. Vrifiez maintenant encore une fois le code SQL gr par Access et excutez encore une fois la requte. Quel est donc l'utilit d'une relation simple en MS-Access ?

6. Utilisez la fentre Relationships afin de crer entre les tables tblRservation et tblChambres ainsi que entre les tables tblRservations et tblClients des relations avec intgrit rfrentielle. Utilisez chaque fois l'option One To Many et ne slectionnez pas les cases cocher concernant la modification resp. l'effacement en cascade.

Effacez dans la table tblClients le client numro 2. Expliquez la raction de MS-Access.

Pierre Stockreiser

232

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Pour le client numro 3 , essayez d'affecter la valeur 4 au champ idClient. Expliquez la raction de MS-Access.

Insrez dans la table tblRservations la rservation suivante. Expliquez la raction de MSAccess. idRservation 5 fldDbut 03.09.98 fldFin 10.09.98 fiChambre 9 fiClient 5

Pour la rservation numro 2 , essayez d'affecter la valeur 15 au champ fiChambre. Expliquez la raction de MS-Access.

7. Utilisez la fentre Relationships afin de modifier les relations entre les tables tblRservations et tblChambres ainsi que entre les tables tblRservations et tblClients. Slectionnez maintenant pour chaque relation, les 2 cases cocher concernant la modification resp. l'effacement en cascade. Effacez dans la table tblClients le client numro 2. Expliquez la raction de MS-Access.

Pour le client numro 3 , essayez d'affecter la valeur 4 au champ idClient. Expliquez la raction de MS-Access.

Insrez dans la table tblRservations la rservation suivante. Expliquez la raction de MSAccess. idRservation 5 fldDbut 03.09.98 fldFin 10.09.98 fiChambre 9 fiClient 5

Pierre Stockreiser

233

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Pour la rservation numro 2 , essayez d'affecter la valeur 15 au champ fiChambre. Expliquez la raction de MS-Access.

8. Crez via SQL la requte qselCliEt1 qui affiche le nom, le prnom , l'adresse, le code postal, la localit et le pays des clients ayant rserv une chambre la premire tage pendant le mois d'aot 1998.

Affichez l'cran QBE pour cette requte. Qu'est ce que vous remarquez ?

9. Crez et excutez via SQL la requte suivante. On cherche les noms et prnoms de tous les clients ayant dj une fois rserv la mme chambre que le client numro 4. Sauvegardez la requte sous le nom qselCli4.

Affichez et analysez l'cran QBE correspondant cette requte SQL. Essayez ensuite de refaire la requte en utilisant uniquement les possibilits QBE. Sauvegardez cette requte sous le nom qselCli4bis. 10. Soit la requte suivante
SELECT fldNom, fldPrnom FROM tblClients WHERE idClient IN (SELECT fiClient FROM tblRservations WHERE fiChambre=6);

Pierre Stockreiser

234

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

A premire vue, cette requte est difficile implmenter en Access-QBE. Trouvez un moyen pour reprsenter cette requte en Access-QBE. Expliquez votre mthode.

11. Utilisez si possible la mthode QBE afin de rsoudre les requtes suivantes. Notez chaque fois le code SQL tel qu'il est cr par MS-Access.

Enonc

Code SQL gnr par Access

Affichez une liste trie par ordre ascendant des numros des chambres dont la priode de rservation contient le 1.9.98.

Affichez le numro de chambre, les dates de dbut et de fin de rservation ainsi que le nom et le prnom du client pour toutes les rservations qui commencent aprs la date actuelle et dont le client vient du Luxembourg.

Affichez le numro de rservation, le nom et le prnom du client pour toutes les rservations de la mme chambre que celle utilise par le client 4 entre le 4.8.98 et le 7.8.98. (Auto-jointure)

Pierre Stockreiser

235

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Affichez pour chaque chambre la recette totale de toutes les rservations.

Affichez une liste avec les numros et les prix des chambres n'ayant pas du tout t rserves pendant les mois de juillet et d'aot 1998.

Pierre Stockreiser

236

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

11.5 TP No 5 : Les formulaires (Cration l'aide d'un assistant et utilisation)


DUREE APPROX. : 2h. PRESENTATION MS-Access nous offre des assistants (angl. wizards) afin de nous allger considrablement le travail d'laboration des diffrents composants d'une BD. Access contient plusieurs types d'assistants: Assistant de table Assistant de requte Assistant de formulaire Assistant de rapport

Ces assistants existent en plus en diffrentes versions, en fonction du composant qu'on veut crer. Il existe par exemple pour les formulaires un "Assistant de Formulaire Colonne Simple", un "Assistant de Formulaire Tabulaire", un "Assistant de Formulaire Graphique", mais galement par exemple un "Assistant de Bouton de commande", qui est notre disposition sur n'importe quel type de formulaire. Beaucoup de tches ayant atteint un certain degr de complexit peuvent donc tre facilites par l'utilisation d'un assistant. Que fait l'assistant ? Un assistant pose un certain nombre de questions en relation avec le composant qu'on veut crer. Bas sur les rponses, l'assistant cre le composant pour nous. Pour cet exercice nous allons nous baser sur la table tbltaxis (taxis.mdb), cre lors du TP2.. Nom du champ idTaxi fldMarque fldModle fldDateCirc fldKm fldCarburant Type de donnes Compteur Texte [15] Texte [15] Date Numrique Texte [10] Description Numro identificateur d'un taxi Marque du taxi Modle du taxi Date de la premire mise en circulation Kilomtrage actuel Essence/Diesel

Nous utilisons l'"Assistant de Formulaire Colonne Simple" (Single-Column Wizard), afin de crer le formulaire suivant.

Pierre Stockreiser

237

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Zone de texte

Etiquette

Ce formulaire contient des contrles, comme par exemple les zones de texte ou les tiquettes. L'apparence ainsi que le comportement de ces contrles sont dtermins par leurs proprits. Une zone de texte possde par exemple une proprit Back Color, qui dtermine la couleur d'arrire-plan de la zone. Nous allons analyser les proprits plus en dtail lors du prochain TP, pour l'instant, retenez uniquement la notion. Modes Tout comme pour les autres composants d'une BD, l'utilisateur a le choix parmi plusieurs modes d'affichage pour n'importe quel formulaire. Nous avons en principe pour chaque composant un mode "structure" (=mode "cration") et un mode "utilisation" (=mode "Feuille de Donnes"). En ce qui concerne les formulaires, Access nous offre un mode en plus ce qui nous donne les 3 modes suivants: 1. Le mode "Cration" Dfinir des nouveaux formulaires ou modifier des formulaires existants. Placer les contrles sur le formulaire et dfinir les proprits des contrles et du formulaire. 2. Le mode "Formulaire" Entrer, consulter et modifier les donnes. Ce mode affiche un formulaire comme il a t dfini en mode cration. 3. Le mode "Feuille de Donnes" Entrer consulter et modifier les donnes. Ce mode affiche une "Feuille de Donnes" similaire celles qui reprsentent directement les donnes des tables et des requtes. MANIPULATIONS IMPORTANTES Cration d'un formulaire l'aide d'un assistant ACTION Crer un nouveau formulaire en utilisant un assistant Avancer d'une tape dans l'excution d'un assistant COMMENT FAIRE ?

Pierre Stockreiser

238

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Reculer d'une tape dans l'excution d'un assistant Finir l'excution d'un assistant (Attention: Finir trop tt ne mne pas au rsultat attendu)

Remarque: La cration d'un formulaire l'aide d'un assistant nous vite de crer un formulaire en mode cration. Un formulaire cr par un assistant peut bien sr tre utilis en mode formulaire, ou mode Feuille de Donnes, et peut mme tre modifi en mode cration. ACTION Slectionner le mode Cration Slectionner le mode Formulaire Slectionner le mode Feuille de Donnes COMMENT FAIRE?

Utilisation du formulaire Nous utiliserons en gnral le mode Formulaire ou le mode Feuille de Donnes pour entrer, consulter et modifier des donnes. ACTION Slectionner l'enregistrement suivant
(seulement formulaire Colonne Simple et Tabulaire)

COMMENT FAIRE?

Slectionner l'enregistrement prcdent


(seulement formulaire Colonne Simple et Tabulaire)

Slectionner un enregistrement quelconque


(seulement formulaire Colonne Simple et Tabulaire)

Slectionner le premier enregistrement


(seulement formulaire Colonne Simple et Tabulaire)

Slectionner le dernier enregistrement


(seulement formulaire Colonne Simple et Tabulaire)

Slectionner un champ quelconque Passer au prochain champ Reculer au champ prcdent Annuler la dernire action Editer le contenu d'un champ

Pierre Stockreiser

239

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

!!! Access sauvegarde automatiquement chaque modification lorsque vous quittez l'enregistrement modifi. Comment est-ce qu'on peut forcer la sauvegarde d'un enregistrement tout moment ? Ajouter un nouvel enregistrement

ACTIVITES 1. Ouvrez la BD taxis.mdb 2. Crez un formulaire du type "Colonne Simple", bas sur la table tblTaxis en utilisant l'assistant correspondant. Voici les indications ncessaires pour rpondre aux questions de l'assistant: Tous les champs de la table apparaissent dans leur ordre original. Utilisez le style "Embossed". Le titre du formulaire sera "Tous nos taxis". Le formulaire sera tout de suite ouvert en mode "Formulaire" (Affichage des donnes). 3. Sauvegardez le nouveau formulaire sous le nom frmTousTaxis. 4. Affichez le formulaire frmTousTaxis en mode "Cration".

5. Affichez le formulaire en mode "Feuille de Donnes".

Pierre Stockreiser

240

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

6. Affichez le formulaire en mode "Formulaire".

7. En mode "Formulaire", cherchez manuellement l'enregistrement pour lequel le carburant indique toujours "Inconnu" et remplacez cette valeur par "Essence" 8. Ajoutez un nouvel enregistrement vierge (Notez que la valeur idTaxi de type compteur est automatiquement gnre). 9. Entrez les valeurs suivantes pour les champs fldMarque fldModele fldDateCirc fldKM fldCarburant Opel Omega 10.08.1997 190 Essence

10. Comment est-ce que vous pouvez sauvegarder ce nouvel enregistrement ?

11. Affichez le formulaire en mode "Feuille de Donnes" et largissez la fentre de faon ce qu'elle affiche tous les champs.

Pierre Stockreiser

241

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

12. Sachant que le mode "Feuille de Donnes" d'un formulaire correspond au mode "Feuille de Donnes" d'une table, triez les enregistrements en ordre croissant sur la marque. 13. Slectionnez le mode "Formulaire". Est-ce que les enregistrements sont encore tris ? Si oui, ordonnez les enregistrements de nouveau dans leur ordre original. 14. Imprimez le formulaire en mode Formulaire. Que constatez-vous ?

15. Dfinissez un filtre qui affiche uniquement les taxis mis en circulation aprs le 1.1.1996, et appliquez ce filtre. Est-ce que ce filtre a un effet dans les deux modes (mode "Formulaire" et mode "Feuille de donnes") ? 16. Effacez le filtre (= raffichez tous les enregistrements). 17. Fermez le formulaire.

Pierre Stockreiser

242

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

11.6 TP No 6 : Les formulaires (Cration sans assistant)


DUREE APPROX : 3h. PRESENTATION Ce TP nous apprendra manipuler un contrle sur un formulaire l'aide de ses proprits. MS-Access supporte la philosophie des objets, que vous avez dj rencontre en classe de 12CG, lors de l'tude dtaille de MS-Excel. En Excel, les objets importants taient les classeurs (angl. workbook), les feuilles de calculs (angl. worksheet), et les champs (angl. range). Par analogie, chaque BD cre l'aide de MS-Access, est une collection d'objets, tels que les tables, requtes, formulaires etc. , qui sont eux-mmes de nouveau composs d'autres objets comme par exemple les zones de liste, cases cocher, zones de texte ou boutons d'options d'un formulaire. Les contrles sur un formulaire sont donc galement des objets, avec des proprits, nous permettant de modifier l'apparence et le comportement des contrles. Quels sont les inconvnients du formulaire que nous avons cr l'aide d'un assistant lors du dernier TP ?

Dans ce TP nous allons crer le formulaire frmEncoreTousTaxis sans utiliser un assistant. Ce formulaire affichera les mmes donnes que le formulaire frmTousTaxis, mais l'apparence du formulaire sera un peu amliore selon la faon suivante.

Par rapport au formulaire cr par l'assistant, nous avons chang la disposition des contrles, nous avons un regroupement de certaines donnes techniques figurant sur la carte grise et nous

Pierre Stockreiser

243

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

avons choisi la reprsentation par groupe de boutons d'options en ce qui concerne le carburant d'un taxi. A chaque champ est associ une tiquette, qui indique l'utilisateur d'une faon claire et nette la signification du champ. Quel est l'avantage d'utiliser un groupe avec deux boutons d'options pour le carburant ?

Nous allons commencer par un nouveau formulaire vierge et ajouter un aprs l'autre les contrles. Le formulaire ainsi que chaque contrle possdent des proprits qui sont affiches dans une petite fentre appele fentre des proprits. Cette fentre affiche tout moment les proprits du formulaire , respectivement du contrle actuellement slectionn. Nous pouvons changer l'apparence ainsi que le comportement du formulaire et des contrles en modifiant quelques proprits. Pour avoir une description dtaille d'une proprit d'un objet, utilisez le systme d'aide en ligne de MS-Access. Chaque formulaire peut contenir plusieurs sections. Il existe plusieurs types de sections dans un formulaire. Utilisez votre documentation Access et donnez pour chaque section d'un formulaire une petite dfinition: En-tte d'un formulaire
(angl. Form header)

En-tte de page
(angl. Page header)

Section dtail
(angl. Detail section)

Pied de page
(angl. Page footer)

Pied de formulaire
(angl. Form footer)

MANIPULATIONS IMPORTANTES Cration d'un formulaire sans un assistant (resp. modification en mode Cration): ACTION Crer un nouveau formulaire vierge sans utiliser un assistant Afficher la fentre des proprits Afficher la boite d'outils (angl. Toolbox) Afficher un en-tte resp. un pied de formulaire Afficher une en-tte resp. un pied de page Slectionner un contrle COMMENT FAIRE ?

Pierre Stockreiser

244

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Slectionner plusieurs contrles Placer respectivement bouger le contrle sur le formulaire Afficher les proprits pour un contrle ou pour le formulaire dans la fentre des proprits Modifier une proprit spcifique d'un contrle ou du formulaire Modifier la taille d'un contrle avec la souris Dupliquer un contrle Aligner plusieurs contrles Adapter la largeur (angl. size) de plusieurs contrles Egaliser l'espacement horizontal (angl. horizontal spacing) entre plusieurs contrles Egaliser l'espacement vertical (angl. vertical spacing ) entre plusieurs contrles Utilisation/Non-utilisation par dfaut de l'assistant pour les groupes d'options, les zones de listes Indiquer resp. modifier la suite du parcours des champs lorsque l'utilisateur utilise la touche TAB Indiquer resp. modifier le nom d'un contrle Slectionner uniquement l'tiquette d'un contrle Slectionner uniquement le contrle sans l'tiquette Slectionner le contrle avec l'tiquette

Pierre Stockreiser

245

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

ACTIVITES 1. Ouvrez la BD taxis.mdb. 2. Crez un nouveau formulaire qui est bas sur la table tblTaxis, sans utiliser un assistant. Un nouveau formulaire vierge apparat en mode cration.

3. Affichez la fentre des proprits et la boite d'outils, qui contient tous les contrles votre disposition. Fentre des proprits Boite d'outils

Dans la fentre des proprits, affichez toutes les proprits. Pour avoir de l'aide concernant une proprit, il suffit de positionner le curseur sur la proprit dans la fentre des proprits, et d'utiliser la touche F1. 4. Choisissez comme couleur d'arrire plan (angl. Back Color) de la section dtail du formulaire la couleur gris clair. 5. Affichez l'en-tte resp. le pied du formulaire.

Pierre Stockreiser

246

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

6. Au milieu de l'en-tte du formulaire, placez un contrle du type tiquette. Cette tiquette contiendra le texte "Socit LUXTAXI" format en Arial 15, caractres gras, color en bleu. L'arrire plan de l'tiquette sera color en gris clair (comme l'arrire plan du formulaire) et comme effet supplmentaire utilisez l'option "lev" (angl. raised). Manipulez les proprits suivantes pour raliser cette apparence. Proprit Font Name Font Size Font Weight Fore Color Back Color Special Effect 7. Alignez le texte au milieu de l'tiquette. Alignez l'tiquette au milieu de l'en-tte. 8. Placez une zone de texte pour le numro du taxis sur le formulaire. Vous voyez qu'une zone de texte possde une tiquette attache la zone. Slectionnez uniquement cette tiquette et slectionnez comme couleur d'arrire-plan la couleur gris clair (comme celle du formulaire). Entrez comme texte (prop. Caption) "Numro Taxi :", et formatez ce texte en caractre gras. Alignez le texte droite de l'tiquette. Slectionnez maintenant la zone de texte et choisissez comme source (prop. Control Source) le champ idTaxi de la table tblTaxis. Slectionnez comme effet supplmentaire l'option "abaiss" (angl. sunken). Afin que le formulaire affiche uniquement un enregistrement la fois, slectionnez la proprit Default View du formulaire, et choisissez la valeur "Single Form". Slectionnez le mode "Formulaire" pour vrifier l'aspect du formulaire. 9. Sauvegardez le formulaire sous le nom frmEncoreTousTaxi pour tre sr de ne pas perdre les fruits de votre travail. 10. Crez maintenant de faon analogue les autres contrles du formulaire. Pour les boutons d'option crez d'abord le groupe. Bouton d'options Groupe Valeur

En ne vous servant pas de l'assistant, attachez le groupe au champ fldCarburant. Crez les 2 boutons d'options et placez les l'intrieur du groupe. Slectionnez la valeur sunken pour la proprit Special Effect des deux boutons. L'tiquette du premier bouton doit afficher "Essence", celle du deuxime bouton "Diesel".

Pierre Stockreiser

247

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

ATTENTION: Nous venons de toucher une des limites de MS-Access. La reprsentation par boutons d'options du champ carburant implique que la valeur stocke dans le champ fldCarburant soit une valeur numrique. Access ne sait pas stocker le texte correspondant un bouton d'options directement dans la table, mais uniquement la valeur numrique de la proprit Option Value, du bouton actuellement slectionn. Bouton "Essence": Option Value = 1 Bouton "Diesel": Option Value = 2 Ceci implique un travail supplmentaire pour les enregistrements existants. Nous devons convertir les valeurs du champ fldCarburant de faon que la valeur "Essence" est convertie en valeur "1" et la valeur "Diesel" est convertie en valeur "2". Heureusement, nous n'avons pas besoin de modifier le type de donne du champ fldCarburant. Les valeurs 1 et 2 peuvent tre stockes en tant que valeurs textes. Cette conversion peut tre ralise l'aide de deux requtes de modification, dont le code SQL est:

fldCarburant = 1

Vrifiez ensuite que la proprit Option Value du bouton "Essence" vaut 1 et celle du bouton "Diesel" vaut 2. Slectionnez le mode "Formulaire" et vrifiez que le type de carburant est correctement affich pour les enregistrements existants. En ce qui concerne les nouveaux enregistrements, nous voulons que le groupe d'options propose comme carburant par dfaut "Essence". Il suffit de slectionner la proprit valeur par dfaut (angl. Default Value) du groupe d'options et d'entrer la valeur 1. 11. Utilisez votre formulaire pour ajouter l'enregistrement suivant:
(Valeur gnre)

Audi

A6

10.7.97

3000

Diesel

Pierre Stockreiser

248

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

12. Adaptez votre formulaire de faon ce que les champs soient parcourus dans l'ordre suivant 1. 2. 3. 4. 5. Marque Modle Carburant Kilomtrage Date de premire mise en circulation Le champ Numro taxi n'est pas accessible. 13. Supposons que la socit de taxis envisage uniquement l'achat et l'utilisation de taxis des marques BMW, Audi, VW, Ford, Mercedes, Opel, Renault et Citron. Pour ces marques les modles sont bien sr connus, mais on doit tenir compte du fait que de nouveaux modles apparaissent sur le march. Comment est-ce qu'on pourrait encore amliorer le formulaire afin de respecter au maximum possible le principe de la saisie minimale pour l'utilisateur.

Effectuez ces modifications sur votre formulaire. 14. Sauvegardez le formulaire

Pierre Stockreiser

249

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

11.7 TP No 7 : Les formulaires bass sur plusieurs tables


DUREE APPROX : 4h. PRESENTATION Sachant que les tables d'une BD sont gnralement lies l'aide de relations, les formulaires nous offrent la possibilit d'afficher les donnes de plusieurs tables dans un seul formulaire. Les donnes provenant de deux tables, qui sont relies de faon 1:N l'aide d'une cl trangre, qui fait rfrence une cl primaire, peuvent par exemple tre trs bien reprsentes l'aide d'un formulaire principal/secondaire (angl. Main/Subform). Exemple: Soient les trois tables suivantes, cres lors du TP4 (Hotel.mdb).

Le formulaire suivant reprsente des informations en provenance des deux tables tblChambres et tblRservations. En occurrence, le formulaire est capable d'afficher pour chaque chambre, les rservations correspondantes.
Formulaire principal

1:N
Formulaire secondaire

Pierre Stockreiser

250

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Le formulaire secondaire (ou sous-formulaire) affiche toutes les rservations effectues pour la chambre numro 4. Au moment o on slectionne une chambre diffrente dans le formulaire principal, les rservations de cette chambre seront affiches. Le rle d'un formulaire secondaire est d'afficher tous les enregistrements; dont la valeur de la cl trangre (gnralement non affiche) correspond la valeur le la cl primaire de l'enregistrement actuel du formulaire principal. Ce TP est rparti sur quatre parties A, B,C et D en vue de son envergure, avec chaque fois un formulaire crer resp. modifier. Partie Formulaire cr frmChambreRservations

frmClientRservations

frmGestionRservations

D
Pierre Stockreiser

frmGestionRservations version amliore

251

Lyce Technique d'Esch-s-Alzette

Client:

Informatique 13CG

Travaux sur logiciel

ACTIVITES PARTIE A : CRATION DU FORMULAIRE frmChambreRservations L'AIDE D'UN ASSISTANT

1. Ouvrez la BD Hotel.mdb . 2. Nous allons crer un formulaire, qui est capable d'afficher pour chaque chambre les rservations effectues. Pour cela, nous utilisons l'"Assistant de Formulaire principal/secondaire" (angl. Main/Subform Wizard). Avant d'excuter l'assistant, MSAccess vous demande le nom de "la table" concerne, ne sachant pas encore que deux tables diffrentes sont la base de notre formulaire. Indiquez dans cette bote de dialogue le nom de la table sur laquelle sera base le formulaire principal, donc tblChambres.

3. Aprs avoir excut l'assistant, la fentre suivante vous est propose.

Pierre Stockreiser

252

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

L'assistant vous indique que vous tes en train de crer un formulaire principal/secondaire et que tblChambres est la base du formulaire principal. Vous devez maintenant slectionner la table sur laquelle se base le sous-formulaire, donc tblRservations. 4. Les deux prochaines botes de dialogue vous permettent de slectionner pour chaque table resp. pour chaque formulaire (principal et secondaire) les champs afficher. En ce qui concerne le formulaire principal (tblChambres), slectionnez tous les champs disponibles. Pour le formulaire secondaire (tblRservations), slectionnez tous les champs l'exception de la cl trangre fiChambre. Pourquoi est-ce qu'on n'affiche en principe pas dans le sous-formulaire la cl trangre, qui fait le lien avec l'enregistrement actuel du formulaire principal ?

5. Voici les indications ncessaires pour rpondre aux prochaines questions de l'assistant: Utilisez le style "Embossed". Le titre du formulaire sera "Rservations des chambres". Avant de crer le formulaire, l'assistant vous indique que vous devez d'abord sauvegarder le sous-formulaire1.

Convention des noms: Les noms des sous-formulaires sont prcds du prfixe fsub. Sauvegardez le sous-formulaire sous le nom fsubChambreRservations.

Ceci est d la philosophie des objets supporte par MS-Access. En fait, le sous-formulaire est un formulaire indpendant, qui est simplement imbriqu comme objet dans le formulaire principal.
1

Pierre Stockreiser

253

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

MS-Access vous affiche sur le formulaire pour chaque chambre automatiquement les rservations correspondantes. 6. Sauvegardez le formulaire principal sous le nom frmChambreRservations. 7. Affichez le sous-formulaire fsubChambreRservations de faon indpendante du formulaire principal. Quels enregistrements et quels champs sont affichs ?

8. Affichez le formulaire frmChambreRservations en mode cration. Affichez ensuite les proprits du sous-formulaire, et expliquez brivement le rle des proprits suivantes du sous-formulaire. Proprit Source Object Link Child Fields Link Master Fields Description

9. Utilisez le formulaire frmChambreRservations en mode formulaire pour slectionner la chambre numro 2. Ajouter l'aide du formulaire une nouvelle rservation, dont le numro est 15, la date d'arrive le 16 septembre 1998 et la date de dpart le 23 septembre 1998. Le client concern est le client numro 1. Affichez ensuite le contenu de la table tblRservations. Quelle est la valeur du champ fiChambre _____ pour le nouvel enregistrement ? Quel est le dsavantage de ce formulaire en relation avec l'ajout de nouvelles rservations ?

Pierre Stockreiser

254

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

PARTIE B : CRATION DU FORMULAIRE frmClientRservations SANS ASSISTANT

Il est important de comprendre; qu'un formulaire principal ainsi qu'un formulaire secondaire; sont bass chacun sur un objet diffrent. Dans l'exemple prcdent, cet objet tait une table. Cependant, il s'avre parfois ncessaire de baser un formulaire sur une requte1, comme dans le cas de cet exemple, o on ne veut pas simplement voir le numro d'une chambre concerne par une rservation dans le sous-formulaire, mais galement l'tage, le type, le standing, le prix par nuit etc. Dans ce cas, le sous-formulaire n'est plus bas sur la table tblRservations, mais sur une requte, qui affiche pour chaque rservation, les donnes de la rservation et celles de la chambre correspondante (jointure). En plus, nous allons calculer le prix total de chaque rservation via un champ valeur calcule. Ce formulaire sera cr sans assistant. Etapes de cration du formulaire: Crer le formulaire principal. Dfinir la requte pour le sous-formulaire. Crer le sous-formulaire bas sur la requte. Intgrer le sous-formulaire dans le formulaire principal.

1. Nous commenons par le formulaire principal, qui se base sur la table ___________ . Crez ce formulaire du type colonne simple sans utiliser un assistant. Sauvegardez le formulaire sous le nom frmClientRservations .

Rgle gnrale: Lorsque des donnes reprsentes sur un formulaire proviennent de plusieurs tables, il faut utiliser une requte comme base du formulaire. Il est impratif de comprendre que l'on parle des donnes spcifies par la proprit 'Control Source' du formulaire seulement, et non pas de celles reprsentes dans une zone de liste attache une table ou requte.
1

Pierre Stockreiser

255

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

2. Crez une requte qselRservationChambre , qui affiche pour chaque rservation les champs suivants. Le numro de rservation. La date de dbut de la rservation. La date de fin de la rservation. Le numro de la chambre correspondante. Le numro de l'tage. Le type de la chambre. Le standing de la chambre. Le prix par nuit de la chambre. Le prix total de la rservation (Champ calcul). Le numro du client.

3. Sans utiliser l'assistant, crez un nouveau formulaire fsubClientRservations, qui affiche tous les champs de la requte qselRservationChambre, l'exception du numro client. Ne vous souciez pas trop de la disposition des zones de texte, puisque nous allons plus tard intgrer ce formulaire comme sous-formulaire dans frmClientRservations et l'afficher en mode feuille de donnes. Indiquez les tiquettes suivantes pour les diffrents champs. Le numro de rservation No. Rs. La date de dbut de la rservation Arrive La date de fin de la rservation Dpart Le numro de la chambre correspondante No. Chambre Le numro de l'tage Etage Le type de la chambre Type Le standing de la chambre Standing Le prix par nuit de la chambre Prix par nuit Le prix total de la rservation Prix total

Affectez ensuite la valeur Datasheet la proprit Default View du formulaire. Ceci fait, le formulaire est toujours affich en mode feuille de donnes.

Pierre Stockreiser

256

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

4. Ouvrez le formulaire frmClientRservations en mode cration, et ajoutez un contrle pour un sous-formulaire (Icne de la bote d'outils).

Modifiez les proprits du sous-formulaire de faon ce qu'il affiche le formulaire fsubClientRservations avec uniquement les rservations qui ont t effectues par le client actuel du formulaire principal. Indiquez les proprits ainsi que les valeurs que vous avez affectes celles-ci. Proprit Description

Effacez l'tiquette du sous-formulaire. 5. Affichez le formulaire frmClientRservations en mode formulaire. Quel est le dsavantage de ce formulaire en ce qui concerne l'ajout et la modification de nouvelles rservations pour un client donn ?

6. Nous allons utiliser ce formulaire uniquement pour la consultation des rservations par client. A cette fin, nous allons bloquer toute possibilit d'ajout ou de modification de donnes. Pour cela, affectez la valeur Read Only la proprit Default Editing du formulaire. Essayez maintenant en mode formulaire d'ajouter ou de modifier des enregistrements. Qu'est-ce que vous remarquez ?

Pierre Stockreiser

257

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

PARTIE C : CRATION DU FORMULAIRE frmGestionRservations SANS ASSISTANT

Ce formulaire, nous permettant de consulter, d'ajouter et de modifier des rservations, devra nous prsenter les avantages suivants: Pour une nouvelle rservation, on peut uniquement slectionner une chambre, qui existe effectivement dans le systme. L'utilisateur slectionne simplement la chambre dans la zone de liste, et le numro de cette chambre sera automatiquement repris dans l'enregistrement correspondant de la table tblRservations. Ceci vite des erreurs de frappe lors de l'entre manuelle des informations concernant une chambre.

Mme remarque pour les clients.

La slection du bouton de commande fait apparatre le formulaire frmChambreRservations (voir Partie A), qui affiche pour la chambre actuellement saisie, toutes les rservations correspondantes. De cette faon, l'utilisateur du formulaire peut s'assurer que la chambre qu'il veut affecter une nouvelle rservation n'est pas dj occupe pendant la priode correspondante. Etapes de cration et d'adaptation du formulaire: Crer le formulaire avec les diffrents contrles, dont deux zones de liste se basant chacune sur une table diffrente. Ajouter un bouton l'aide duquel l'utilisateur peut afficher le formulaire frmChambreRservations.

1. Crez le nouveau formulaire frmGestionRservations, qui se base sur la table tblRservations, sans utiliser l'assistant. Ajoutez ensuite l'en-tte avec le titre ainsi que les champs concernant le numro de rservation ainsi que la date d'arrive et de dpart. 2. Ajoutez une zone de liste pour afficher les chambres en dsactivant l'assistant des zones de liste. Cette zone de liste doit en fait afficher tous les enregistrements de la table _________ . Lorsque l'utilisateur slectionne un enregistrement (une chambre), la valeur du champ idChambre doit automatiquement tre transfre dans le champ _________ de la table tblRservations.

Pierre Stockreiser

258

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Pour les rservations existantes, la chambre affecte une rservation est automatiquement slectionne dans la zone de liste. Afin de raliser ce comportement, vous devez vous servir des proprits suivantes de la zone de liste (Utilisez le systme d'aide en ligne pour avoir des informations sur les diffrentes proprits). Proprit Control Source Row Source Type Row Source Column Count Column Widths Bound Column Column Heads Nommez la zone de liste lstChambres, et n'oubliez pas de sauvegarder votre formulaire de temps en temps ! 3. Crer la zone de liste pour les clients simplement en faisant une copie de la zone de liste des chambres. Modifiez ensuite les proprits ncessaires pour que cette liste affiche tous les enregistrements de la table _______ . Lorsque l'utilisateur slectionne un enregistrement (un client), la valeur du champ idClient doit automatiquement tre transfre dans le champ ________ de la table tblRservations. Proprit Control Source Row Source Type Row Source Column Count Column Widths Bound Column Column Heads Valeur Valeur

4. Affichez votre formulaire en mode formulaire et testez son fonctionnement par exemple en ajoutant une nouvelle rservation. Vous allez remarquer que la manipulation des rservations est assez confortable, et que les erreurs de frappe sont minimises. Toutefois, le formulaire prsente encore le dfaut qu'on risque d'affecter une chambre une rservation, tandis que cette chambre est dj occupe pendant un ou plusieurs jours de la rservation. Au dbut de ce TP, nous avons cr le formulaire frmChambreRservations, qui nous affiche pour une chambre donne toutes les rservations. Nous allons dfinir un bouton de commande, afin d'afficher automatiquement ce formulaire sur besoin.

Pierre Stockreiser

259

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

5. En mode cration, activez l'assistant des contrles, et crez le bouton de commande, qui se trouve gauche de la zone de liste avec les chambres. Voici quelques indications importantes pour rpondre aux questions de l'assistant. Le bouton doit implmenter l'opration Ouvrir sur le formulaire frmChambreRservations. Le formulaire doit afficher tous les enregistrements (pour l'instant). Affichez l'image CueCards sur le bouton. Acceptez le nom que MS-Access propose pour le bouton de commande.

Testez le fonctionnement du bouton en mode formulaire. Comment est-ce qu'on pourrait encore amliorer le fonctionnement dans le sens de faciliter le travail de l'utilisateur ?

6. Pour ce faire, nous devons nous occuper un peu du concept des vnements. Chaque contrle connat un certain nombre d'vnements prdfinis tel que le fait de cliquer sur un bouton ou de modifier la valeur d'un champ d'un formulaire. On a la possibilit d'associer des procdures contenant du code Access Basic (VBA en Access97) un tel vnement. A titre d'exemple, lorsqu'on cre une procdure en AccessBasic, qui contient la commande MsgBox("Bonjour!"), et qu'on associe cette procdure l'vnement On Click d'un bouton de commande, une boite de dialogue avec le texte Bonjour sera affiche chaque fois que l'utilisateur clique sur le bouton, c..d. chaque fois que se passe vnement On Click pour le bouton en question. En mode cration, slectionnez la proprit On Click du bouton. Cette proprit est en fait lie un vnement. En cliquant sur le bouton vous pouvez voir le code actuel de cette procdure. Ce code a t cr automatiquement par l'assistant. La partie intressante du code est la suivante Dim DocName As String Dim LinkCriteria As String DocName="frmChambreRservations" DoCmd OpenForm DocName , , , LinkCriteria Les trois premires lignes devraient constituer du "Dj-vu" lorsque vous pensez la programmation de MS-Excel. On dfinit les deux variables DocName et LinkCriteria, toutes les deux du type String. Elles peuvent donc contenir du texte. La commande DoCmd OpenForm DocName , , , LinkCriteria ouvre le formulaire dont le nom est indiqu dans la variable DocName (donc frmChambreRservations). A l'aide de la valeur spcifie dans LinkCriteria, on peut dfinir quel enregistrement sera l'enregistrement actuel lorsque le formulaire frmChambreRservations est ouvert. La chambre affiche dans le formulaire frmChambreRservations devra correspondre la chambre actuellement slectionne dans la zone de liste correspondante. La valeur de

Pierre Stockreiser

260

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

idChambre dans frmChambreRservations devra donc correspondre la valeur actuelle de idChambre dans le zone de liste dans frmGestionRservations. A ces fins, ajoutez la ligne suivante avant la commande DoCmd OpenForm ...
LinkCriteria="[idChambre]=Forms!frmGestionRservations!lstChambres"

Sauvegardez le formulaire et testez le fonctionnement de votre formulaire en mode formulaire.

Pierre Stockreiser

261

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

PARTIE D :

AMELIORATION DE LA FONCTIONNALITE DU FORMULAIRE frmGestionRservations

Client

Vous voyez effectivement encore le mme formulaire, que celui de la partie prcdente, avec la seule exception qu'on n'a plus besoin du bouton de commande, parce que la zone de liste avec les chambres ne contient ds le dpart que les chambres qui ne sont pas encore occupes dans la priode entre la date d'arrive et la date de dpart. Etapes: Effacer le bouton de commande cr lors de la partie prcdente. Crer une requte paramtre (voir TP3), qui sera la base de la zone de liste avec les chambres. Attacher la requte paramtre la zone de liste. Prvoir une rexcution automatique de la requte dans certains cas. 1. Ouvrez le formulaire frmGestionRservations en mode cration et effacez le bouton de commande. 2. Crez via SQL la requte paramtre qselChambresLibres, qui affiche tous les champs des chambres non occupes pendant la priode indique par les dates d'arrive et de dpart du formulaire frmGestionRservations. Utilisez pour l'instant les deux paramtres [Entrez la date d'arrive] et [Entrez la date de dpart].

Pierre Stockreiser

262

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Testez le fonctionnement de la requte ! 3. En ce qui concerne la zone de liste avec les chambres, vous devez changer la proprit Row Source la valeur qselChambresLibres. Ceci fait, la zone affiche en principe les enregistrements de cette requte. Testez votre formulaire en mode formulaire. Qu'est-ce que vous remarquez ?

La requte qselChambresLibres attend deux valeurs entres comme paramtres avant de s'excuter. Comme ces deux valeurs se trouvent dj sur le formulaire frmGestionRservations (date d'arrive, date de dpart), on n'a pas envie de les spcifier encore une fois dans les botes de dialogue. Il existe un moyen pour dire MS-Access que les valeurs des paramtres proviennent directement d'un ou de plusieurs contrles du formulaire frmGestionRservations. Renommez sur le formulaire le champ qui contient la date d'arrive en txtArrive, et celui qui contient la date de dpart en txtDpart. Ouvrez ensuite la requte en mode SQL et remplacez les deux paramtres par la syntaxe suivante
[Entrez la date d'arrive]

et
[Entrez la date de dpart]

[Forms]![frmGestionRservations]![txtArrive] [Forms]![frmGestionRservations]![txtDpart]

4. Testez ensuite le formulaire. Vous remarquez que la zone de liste affiche en principe uniquement les chambres non occupes pendant le priode de la date d'arrive la date de dpart spcifie dans le formulaire. Toutefois, il existe encore deux petits problmes rsoudre. En gnral, la requte qselChambresLibres est excute une seule fois lors de l'ouverture du formulaire. A chaque fois qu'on modifie sur le formulaire soit la date d'arrive soit la date de dpart, ou qu'on passe un autre enregistrement (une autre rservation), MSAccess devrait en principe rexcuter la requte qselChambresLibres, pour afficher une nouvelle liste de chambres, qui correspond aux critres modifis. Comme cette mise--jour automatique ne se fait pas de faon automatique, il faudra indiquer Access le moment de la faire. Pour ce faire, nous allons encore une fois nous occuper des vnements1. Slectionnez la proprit After Update du champ txtArrive. Cette proprit spcifie en fait un vnement, qui est dclench chaque fois qu'un changement dans le champ est sauvegard dans le table tblRservations (p.ex. lorsqu'on quitte le champ aprs avoir effectu des modifications). Voici le code dj attach cet vnement:
Sub txtArrive_AfterUpdate () End Sub
1

Souvenez-vous que chaque contrle connat un certain nombre d'vnements prdfinis, et qu'on peut crer des procdures en Access Basic, qui sont attaches un vnement donn d'un contrle. Ces procdures sont automatiquement excutes chaque fois que l'vnement en question est dclench.

Pierre Stockreiser

263

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Sub resp. End Sub constituent le dbut et la fin d'une procdure (voir programmation

MS-Excel). Entre ces deux lignes nous pouvons maintenant spcifier notre code Access Basic. Hors, il nous suffit que la requte qselChambresLibres, attache la zone de liste lstChambres, soit rexcute lorsque l'vnement AfterUpdate du champ txtArrive est dclench. A ces fins, nous disposons de la commande <Nom d'un champ>.Requery, qui est capable de rexcuter une requte sur laquelle se base le champ en question Votre procdure sera donc:
Sub txtArrive_AfterUpdate () lstChambres.Requery End Sub

Procdez de la mme faon pour le champ txtDpart. Lorsque l'utilisateur change vers un autre enregistrement, l'vnement On Current du formulaire mme est dclench. Attachez donc galement une procdure contenant la commande lstChambres.Requery cet vnement. 5. Testez le formulaire. Vous allez remarquer que pour les rservations existantes, la chambre correspondant la rservation actuelle n'est jamais affiche. Expliquez ce fait !

6. Proposez une extension la requte qselChambresLibres, qui nous aide remdier cet inconvnient.

7. Testez et sauvegardez votre travail

Pierre Stockreiser

264

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

11.8

TP No 8 : Les rapports

DUREE APPROX : 2h. PRESENTATION Dans ce TP, nous allons nous baser sur la table tbltaxis (Taxis.mdb), cre lors du TP2. Nom du champ idTaxi fldMarque fldModle fldDateCirc fldKm fldCarburant Type de donnes Compteur Texte [15] Texte [15] Date Numrique Texte [10] Description Numro identificateur d'un taxi Marque du taxi Modle du taxi Date de la premire mise en circulation Kilomtrage actuel Essence/Diesel

D'abord nous utilisons l'"Assistant de Rapport Regroupements/Totaux" (angl. Groups/Totals Report Wizard) pour crer un rapport; qui affiche tous les taxis, groups par marque. Pour chaque groupe nous allons calculer le total des KM parcourus. Les taxis l'intrieur d'un groupe (d'une marque) sont tris par modle.

Ensuite, nous modifions le rapport de faon ce qu'il convienne exactement nos besoins, en adaptant par exemple l'emplacement de certains contrles. En plus, nous remplaons le calcul du total KM par un calcul de moyenne KM.

Pierre Stockreiser

265

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Modes Tout comme pour les autres composants d'une BD, l'utilisateur a le choix parmi plusieurs modes d'affichage pour n'importe quel rapport. Nous avons en principe pour chaque composant un mode structure et un mode utilisation. En ce qui concerne les rapports, Access propose deux modes. 1. Le mode "Cration" Ce mode est pareil au mode "Cration" des formulaires. On l'utilise pour dfinir des nouveaux rapports ou modifier des rapports existants. Par analogie aux formulaires, ce mode nous permet de placer les contrles sur le rapport et de dfinir les proprits des contrles et du rapport. 2. Le mode "Aperu avant Impression" (angl. Print Preview Mode)1 Comme les rapports sont gnralement imprims, et ne sont pas utiliss pour des dialogues interactifs avec l'utilisateur, le mode utilisation tel que nous le connaissons pour les autres composants, n'existe pas. Le mode "Aperu avant Impression" affiche le rapport exactement de la mme faon comme il sera imprim. Ce mode contient en plus toutes les options d'impression (p.ex. Configuration de l'imprimante, Prsentation des pages ).

Access connat encore le mode "Sample Preview", qui est analogue au mode "Aperu avant Impression", mais qui n'affiche pas tous les enregistrements disponibles.

Pierre Stockreiser

266

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

MANIPULATIONS IMPORTANTES Cration d'un rapport ACTION Crer un nouveau rapport en utilisant un assistant Crer un nouveau rapport sans utiliser un assistant Slectionner le mode Cration Slectionner Impression le mode Aperu avant COMMENT FAIRE ?

Impression d'un rapport Afin de pouvoir imprimer un rapport, vous devez slectionner le mode "Aperu avant Impression". ACTION Dfinir les paramtres d'impression Imprimer le rapport COMMENT FAIRE ?

Manipulation d'un rapport en mode "Cration" ACTION Afficher la fentre Tri et Regroupements (angl. Sorting and Grouping) Trier sur un champ Ajouter un groupe Ajouter une en-tte de groupe Ajouter un pied de groupe Activer le gnrateur d'expression COMMENT FAIRE?

Pierre Stockreiser

267

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

ACTIVITES 1. Ouvrez la BD taxis.mdb . 2. Crez un rapport du type "Regroupements/Totaux" (angl. Groups/Totals), bas sur la table tblTaxis en utilisant l'assistant correspondant. Voici les indications ncessaires pour rpondre aux questions de l'assistant: Le rapport devra contenir tous les champs dans leur ordre original. Groupez les taxis par leur marque (groupement normal). A l'intrieur de chaque groupe, les taxis sont tris par modle. Utilisez le style prdfini "Ledger", ainsi qu'une orientation "Portrait". Le titre sera "Tous nos taxis". Slectionnez l'option qui affiche tous les champs sur une page. Ne slectionnez pas l'option qui calcule des pourcentages. 3. Sauvegardez le nouveau rapport sous le nom rptTousTaxis. 4. Affichez le rapport en mode "Cration".

5. Affichez le rapport en mode "Aperu avant Impression".

Pierre Stockreiser

268

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Est-ce que le rapport cr par l'assistant reprsente tout fait ce que vous avez attendu ? Quels sont les inconvnients ?

6. Nous allons modifier le rapport rptTousTaxis de faon ce qu'il convienne exactement nos besoins. En plus, nous allons remplacer pour le champ fldKM, les calculs des sommes par des calculs de moyennes

7. Affichez le rapport rptTousTaxis en mode Cration. Quelles sections contient votre rapport ?

Quelle est la diffrence entre les contrles correspondants de la section dtail et ceux de l'en-tte de page ?

Pierre Stockreiser

269

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

8. Dans le pied de groupe, supprimez le contrle qui calcule la somme des numros de taxi (IdTaxi). Dans le pied du rapport, supprimez le contrle qui calcule la somme totale des numros de taxi (IdTaxi). 9. Affichez la fentre Tri et Regroupement. A quoi servent les indications de cette fentre ?

Ajoutez une en-tte de groupe la groupe fldMarque, et dplacez la zone de texte fldMarque de la section Dtail dans cette en-tte. Affichez le rapport en mode "Aperu" afin de vrifier l'effet de vos manipulations. Retournez en mode "Cration". 10. Dans le pied de groupe, slectionnez le contrle qui calcule le total des KM, et affichez les proprits de ce contrle1. Slectionnez la proprit Control Source. Quelle est l'expression indique ?

Slectionnez l'icone Fentre des expressions

afin d'ouvrir le gnrateur d'expressions.

Listes des objets

Les expressions servent crer des informations qui ne rsultent pas uniquement ou mme pas du tout des champs des tables de la BD. Utilises dans les formulaires et rapports, les expressions permettent de calculer la valeur d'un contrle. Chaque expression peut tre une combinaison d'oprateurs, de constantes, de noms de champs, de noms de contrles et de fonctions. Le gnrateur d'expressions (angl. Expression Builder) est un outil, qui nous facilite l'criture d'expressions. Le gnrateur contient en haut une fentre dans laquelle on peut construire une expression, soit en entrant le code de faon manuelle, soit en slectionnant
1

Pour afficher des proprits d'un objet, procdez de la mme faon que pour les formulaires.

Pierre Stockreiser

270

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

des objets dans une des trois listes en bas. Il s'agit ici d'une hirarchie de trois listes dpendant l'une de l'autre avec tous les objets notre disposition pour crer des expressions. La liste de gauche affiche toutes les catgories d'objets disponibles (Tables, Requtes, Formulaires, Rapports, Fonctions prdfinies etc.). Lorsqu'on slectionne une catgorie, les objets appartenant cette catgorie sont affichs dans la liste du milieu. Si tel est le besoin MS-Access nous affiche encore des informations dans la liste droite. Supprimez l'expression actuelle et remplacez la par une expression qui calcule la moyenne des KM pour les taxis faisant parti d'un groupe. Renommez le contrle en Moy_fldKM. Slectionnez la proprit Format et choisissez le format Fixed. Slectionnez la proprit Decimal Places, qui indique le nombre de dcimales afficher, et mettez cette valeur 0. 11. Dans le pied du groupe crez une tiquette qui affiche le texte "Moyenne des KM:" et placez cette tiquette gauche du contrle qui contient l'expression que vous venez de gnrer. Affichez le rapport en mode "Aperu" afin de vrifier l'effet de vos manipulations. Retournez en mode "Cration". 12. Dans le pied du rapport, modifiez le contrle, qui dtermine la somme totale des KM, de faon ce qu'il calcule la moyenne des Km pour tous les taxis, et renommez ce contrle en GrandMoy_fldKM. Slectionnez la proprit Format et choisissez le format Fixed. Slectionnez la proprit Decimal Places, et mettez cette valeur 0. Changez le texte de l'tiquette de "Grand Total:" vers "Moyenne gnrale:". 13. Le carburant est actuellement affich par son code numrique (1="Essence" et 2="Diesel"). Slectionnez le contrle qui affiche la valeur du champ carburant dans la section Dtail et affichez les proprits de ce contrle. Utilisez le gnrateur d'expressions pour modifier la proprit Control Source, de faon ce qu'elle contienne une expression conditionnelle (fonction IIF), qui affiche le texte "Essence" lorsque le code numrique vaut 1 et "Diesel" lorsque le code numrique vaut 2. Attention: Vous devez changer le nom du contrle (p.ex. en fldCarb) pour qu'il diffre avec le nom du champ correspondant de la table (fldCarburant) pour viter que MS-Access confonde les deux noms. En effet, dans une expression, le nom du contrle priorit sur le nom du champ en cas d'galit des deux noms.

Pierre Stockreiser

271

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

14. Voici le rapport final en mode Cration:

15. Imprimez votre rapport.

Pierre Stockreiser

272

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

11.9 TP No 9 : Les rapports bass sur plusieurs tables


DUREE APPROX : 2h. PRESENTATION Le but de ce TP est d'tendre les connaissances en ce qui concerne la cration d'un rapport, mais galement la combinaison de requtes, formulaires et rapports pour crer des applications personnalises. Nous allons nous baser sur les tables suivantes (Hotel.mdb), cres lors du TP4.

A la fin de ce TP, nous disposons du formulaire suivant.

Pas de marqueur d'enregistrement

Pas de boutons de navigation

La slection du bouton de commande "Liste des rservations" affiche automatiquement un rapport avec les coordonnes du client slectionn dans la zone de liste et avec les informations concernant toutes les rservations effectues par ce client.

Pierre Stockreiser

273

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Par analogie aux formulaires, il existe des situations o on doit baser un rapport sur une requte, afin de disposer de tous les champs ncessaires pour l'affichage. Le prsent rapport en est un exemple parfait, puisque les informations pour chaque rservation proviennent des tables tblRservations et tblChambres. Un rapport, tout comme un formulaire ne pouvant tre bas que sur un seul objet, il est dans ce cas indispensable de crer une requte, qui contient les champs ncessaires l'affichage. Etapes: Crer la requte sur laquelle sera bas le rapport. Crer le rapport. Crer le formulaire. Adapter le formulaire, en ajoutant un bouton de commande, qui nous permet d'ouvrir automatiquement le rapport avec les donnes concernant le client actuel.

ACTIVITES 1. Ouvrez la base Hotel.mdb . 2. Nous commenons par la cration de la requte qselClientRservations, qui sera la base du rapport. Cette requte, qui aura comme paramtre le numro d'un client, affiche pour chaque rservation de ce client:

Le numro de rservation; La date d'arrive; La date de dpart; Le numro de la chambre concerne; Le type de cette chambre; Le standing de cette chambre; Le prix par nuit de cette chambre; Le prix total de la rservation (Champ valeur calcule); Le numro du client; Le nom du client; Le prnom du client; L'adresse du client;

Pierre Stockreiser

274

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Le code postal du client; La localit du client; Le pays ou habite le client.

Crez et testez cette requte. 3. Crez ensuite le rapport rptListeRservations sans utiliser un assistant. Le rapport se base sur la requte qselClientRservations. Quelles sections envisagez-vous dans votre rapport?

Les rservations d'un client sont tries par ordre ascendant sur la date d'arrive. Vous devez effectuer ce tri dans le rapport mme, puisqu'un rapport en MS-Access ne reprend pas les informations de tri d'une requte. 4. A chaque fois que vous ouvrez le rapport en mode "Aperu avant Impression", vous devez d'abord indiquer le numro d'un client, avant de voir les rservations de ce client. Quel est le dsavantage de l'entre manuelle du numro de client ?

5. La dernire tape de ce TP consiste dans la cration du formulaire frmListeRservations, l'aide duquel l'utilisateur peut slectionner un client existant, et ouvrir par un clic de bouton le rapport rptListeRservations avec les donnes pour le client slectionn. Ce formulaire, qui ne se base sur aucune table, sera cr sans utiliser un assistant. 6. Comme le formulaire lui-mme n'affiche pas d'enregistrements (les enregistrements seront affichs dans une zone de liste), vous pouvez enlever les boutons de navigation et le marqueur d'enregistrement. Pour cela, affectez les valeurs NO aux proprits Navigation Buttons et Record Selectors du formulaire. Testez l'effet en mode formulaire. 7. Crez le titre dans l'en-tte du formulaire. Dsactivez l'assistant des contrles et insrez une zone de liste dans la section dtail du formulaire. Affectez le nom lstClients la zone de liste (au contrle). Trouvez une mthode pour afficher dans la zone de liste tous les clients tris par ordre alphabtique sur leur nom. 8. En vous servant de l'assistant des contrles, insrez le bouton de commande sur le formulaire. Donnez l'assistant les informations suivantes: L'assistant devra ouvrir le rapport rptListeRservations en mode "Aperu avant Impression";

Pierre Stockreiser

275

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Travaux sur logiciel

Le bouton de commande devra porter le libell "Liste des rservations"; Le nom du bouton (du contrle) sera cmdListe.

9. Testez le fonctionnement du bouton. Quel en est toujours le dsavantage ?

10. Modifiez la requte qselClientRservations; de faon ce que le paramtre de la requte provienne directement de la valeur actuelle slectionne dans la zone de liste lstClients.

Pierre Stockreiser

276

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Annexes

12. Annexes

Pierre Stockreiser

277

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Annexes

12.1Bibliographie
D.Nanci / B.Espinasse "Ingnierie des systmes d'information" 3me Edition Edition: Sybex ISBN: 2-7361-2209-7 P.A.Goupille / J.M.Rousse "Analyse informatique" Edition: Masson ISBN 2-225-84167-5 Mare / Ledant "SQL 2" Edition: A.Colin ISBN: 2-200-2144-1 S.Roman "Bases de donnes MS-Access / Conception et programmation" Edition: O'Reilly ISBN: 2-84177-054-0 H.F.Korth / A.Siberschatz "Systmes de gestion des bases de donnes" Edition: McGraw-Hill ISBN: 2-7042-1170-1 P.Bilke "Start mit Datenbanken und SQL" Edition: KnowWare ISBN: 3-931666-19-4 N.Boudjlida "Bases de donnes et systmes d'information" Support de cours Universit de Nancy 1 / Facult des Sciences / Dpartement informatique J.L.Viescas "Running Access 2" Edition: Microsoft Press ISBN: 1-55615-592-1

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

Pierre Stockreiser

278

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Annexes

[9]

Br / Bauder "Microsoft Access 2" Edition: Micro Application ISBN: 2-7429-0239-2 K.Getz / P.Litwin / G.Reddick "Access 2 Developer's Handbook" Edition: Sybex ISBN: 0-7821-1327-3 CNPI Document de rfrence "SQL-Matire traiter" Document de rfrence "Conception Vocabulaire" J.M. Jans "La modlisation des donnes selon la mthode Merise et avec l'outil Win'Design" Support de cours Formation SCRIPT Ministre de la Justice "Projet de Loi relative au respect du droit la vie prive l'gard du traitement des donnes caractre personnel" & "Expos des motifs" Ministre de la Justice "Loi du 31 mars 1979 rglementant l'utilisation des donnes nominatives dans les traitements informatiques" Textes extraits du Mmorial PC Magazin Spezial 5-98 "Kryptographie und Netzwerksicherheit"

[10]

[11]

[12]

[13]

[14]

[15]

Pierre Stockreiser

279

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Annexes

12.2Sites sur Internet


w3.restena.lu/proud-online/h_proud.htm www.pgpi.com w3.one.net/~jhoffman/sqltut.htm han2.cbe.wsu.edu/courseware/mis372/slides/Chap08/index.htm w3.restena.lu/proud-online/ti/infoappl/access/db_prd_0.htm www.win-design.com/ odyssey.apana.org.au/~abrowne/ www.oracle.com www.microsoft.com

Pierre Stockreiser

280

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Annexes

12.3Index1
A
After Update (proprit, vnement)....................263 AfterUpdate (proprit, vnement).............263, 264 Assistant..............................237, 252, 255, 258, 265 attributs (MLD).......................................................59 Auto- jointure.........................................................150

G
groupement de donnes.........................................181

H
3.3.11.4Historisation...............................................50 d'une entit..........................................................51 d'une proprit.....................................................51 d'une relation.......................................................51

B
Back Color (proprit).........................238, 246, 247 base de donnes.................................................16, 82 BD............................................................................82 Bound Column (proprit)....................................259 Bouton d'options....................................................173 Bouton de commande...........................................175

I
identifiant d'une entit..............................................24 identifiant relatif.......................................................49 Index d'une table....................................................106 information...............................................................10 informations.............................................................11 intgrit rfrentielle.............................227, 228, 229

C
Caption (proprit)................................................247 cardinalit maximale...............................................27 cardinalit minimale................................................27 Case cocher.........................................................174 champ d'une table d'une base de donnes.............100 CIF...........................................................................38 Cl trangre..........................................................105 Cl primaire (base de donnes).............................102 cl primaire (MLD).................................................59 Client/Serveur..........................................................96 Column Count (proprit).....................................259 Column Heads (proprit).....................................259 Column Widths (proprit)...................................259 condition de jointure..............................................146 contrainte d'intgrit des tables d'une base de donnes................................................................74 contrainte d'intgrit fonctionnelle..........................38 contrainte d'intgrit gnrale d'une base de donnes .............................................................................75 contrainte d'intgrit rfrentielle....................74, 228 contraintes d'intgrit d'une base de donnes..........74 Control Source (proprit)...........255, 259, 270, 271 Control Source (proprit)....................................247 contrles d'un formulaire.......................................173 contrles d'un rapport............................................184 Contrles graphiques.............................................184 critres de slection................................................114

J
jointure...................................................................143

L
langage de dfinition de donnes............................72 Les requtes imbriques........................................153 Link Child Fields (proprit)................................254 Link Master Fields (proprit)..............................254 Liste modifiable.....................................................174

M
MCD........................................................................16 MERISE...............................................16, 51, 78, 79 MLD........................................................................16 modle conceptuel des donnes..............................20 modle logique des donnes....................................57 modle physique des donnes.................................70 Mot de passe..........................................................190 MPD.........................................................................17

N
Navigation Buttons (proprit).............................275 NULL.....................................................................120

O
occurence d'une entit..............................................21 On Click (proprit, vnement)...........................260 On Click (proprit, vnement)...........................260 On Current (proprit, vnement).......................264 Option Value (proprit).......................................248 outil de modlisation...............................................78

D
Decimal Places (proprit)....................................271 Default Editing (proprit)....................................257 Default Value (proprit)......................................248 Default View (proprit)..............................247, 256 donnes.....................................................................11 Droits d'accs.........................................................190

P
patte..........................................................................26 proprit calcule.....................................................34 proprit d'une entit................................................22 Proprits d'une relation...........................................30

E
entit.........................................................................21 Etiquette.........................................................173, 184

Q
QBE........................................................................170 Query By Example................................................170

F
Font Name (proprit)...........................................247 Font Size (proprit)..............................................247 Font Weight (proprit).........................................247 Fore Color (proprit)...........................................247 Format (proprit).................................................271 formulaire..............................................................172 Formulaire Colonne Simple..................................176 Formulaire Tabulaire.............................................176
1

R
rapport....................................................................180 Record Selectors (proprit).................................275 relation...............................................................25, 26 Relation rflexive.....................................................48 Relations entre tables.............................................105 requte imbrique corrle....................................159 requtes..................................................................108 rseau informatique.................................................90 rle............................................................................48

Les entres d'index marques comme proprits font rfrence des proprits de certains objets de MS-Access, utilises lors des travaux sur logiciel.

Pierre Stockreiser

281

Lyce Technique d'Esch-s-Alzette

Informatique 13CG

Annexes

Row Source (proprit)................................259, 263 Row Source Type (proprit)...............................259

S
Sauvegarde des donnes........................................196 Schma Entit-Relation...........................................20 sections d'un rapport..............................................185 scurit des donnes..............................................188 serveur......................................................................91 SGBD......................................................................82 Source Object (proprit)......................................254 Special Effect (proprit)......................................247 SQL........................................................................110 Structured Query Language..................................110 systme de gestion de bases de donnes.................82 systmes d'information...........................9, 10, 11, 12 Systmes de Gestion de Bases de Donnes (SGBD) .............................................................................12

T
table (MLD).............................................................59 table d'une base de donnes.....................................98 types de donnes....................................................100

U
Unique Values (proprit).....................................211

V
valeur indtermine................................................120

Z
Zone de liste...........................................................174 Zone de texte.................................................173, 184

Pierre Stockreiser

282

Lyce Technique d'Esch-s-Alzette

Вам также может понравиться