You are on page 1of 208

LES SYSTEMES DE GESTION DE BASES DE DONNEES

VERSION 3.1

MANUEL DE L'LVE

Pierre Stockreiser

Septembre 2006

Je tiens remercier M. Sylvain PIREN, Professeur-Ingnieur au Lyce Technique d'Esch-s-Alzette, pour avoir essentiellement contribu la rdaction de la version initiale de ce cours. Un grand Merci M. Jean-Marie JANS, Professeur-Ingnieur au Lyce Technique Ecole de Commerce et Gestion, pour les nombreux conseils en matire de modlisation des donnes. 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 OTTELE, 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 trois parties: PARTIE 1 : Modlisation d'un systme d'information PARTIE 2 : Exploitation des bases de donnes relationnelles PARTIE 3 : Protection des donnes (chapitres 1 4) (chapitres 5 9) (chapitre 10)

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. Symboles utiliss l'intrieur de cet ouvrage: Paragraphe important Exercice

Table des matires:


1.
1.1 1.2 1.3 1.4

Analyse des systmes d'information


Introduction Dfinition de l'information et des systmes d'information Les donnes, les traitements et les informations La reprsentation informatique des donnes

8
8 9 10 11

2.
2.1 2.2 2.3

Dmarche de modlisation des donnes


Le groupe d'tude (angl. Project group) Les tapes Sources d'information

12
12 13 14

3.
3.1 3.2

Mthode de modlisation des donnes


Dfinition Pourquoi modliser ?

15
15 17 19 19 20 21 23 24 24 25 29 32 35 36 39 47 47 47 48 50 55 55 57 57 57 58 59 59 60 60 61 62 63 65 65 65

3.3 Le modle conceptuel des donnes (MCD) 3.3.1 Dfinition 3.3.2 La notion de classe 3.3.3 La notion d'attribut 3.3.4 La notion d'identifiant 3.3.5 La notion d'association 3.3.5.1 Dfinition 3.3.5.2 Les multiplicits d'une association 3.3.5.3 Classe-association 3.3.6 Exemple "KaafKaaf" 3.3.7 Exemple "Gestion d'cole" 3.3.8 Lutilisation dune association ternaire 3.3.9 Exercices 3.3.10 Cas particuliers du MCD 3.3.10.1 Plusieurs associations diffrentes entre deux classes 3.3.10.2 Association rflexive et rle 3.3.10.3 Agrgation de composition 3.3.11 Exercices 3.4 Le modle logique des donnes (MLD) 3.4.1 Dfinition 3.4.2 Rgles de transformation du MCD au MLD 3.4.2.1 Transformation des classes 3.4.2.2 Transformation des associations binaires du type (x..*) (x..1) 3.4.2.3 Transformation des associations binaires du type (x..1) (x..1) 3.4.2.4 Transformation des associations binaires du type (x..*) (x..*) 3.4.2.5 Transformation des associations ternaires 3.4.2.6 Transformation de plusieurs associations entre 2 classes 3.4.2.7 Transformation des associations rflexives 3.4.2.8 Transformation de l'agrgation de composition 3.4.3 Exemple "KaafKaaf" 3.4.4 Exercices 3.5 Le modle physique des donnes (MPD) 3.5.1 Dfinition 3.5.2 Passage du MLD au MPD

4.
4.1 4.2

Utilisation d'un outil de modlisation


Dfinition Fonctionnalits

69
69 70

5.
5.1 5.2 5.3 5.4 5.5

Les systmes de gestion de bases de donnes


Dfinitions Un peu d'histoire Les composants d'une base de donnes relationnelle Structures physiques et logiques Les rseaux informatiques

72
72 74 76 78 80 84 84 86

5.6 L'approche Client/Serveur 5.6.1 La priode des ordinateurs du type "Mainframe" 5.6.2 L'approche Client/Serveur

6.
6.1 6.2 6.3 6.4 6.5

Les tables (angl. tables)


Dfinition Les champs d'une table Cl primaire Relations entre tables - cl trangre Index

88
88 90 92 95 96

7.
7.1

Les requtes (angl. queries)


Dfinition 7.2 Introduction au langage SQL 7.2.1 Gnralits 7.2.2 Syntaxe SQL de base 7.2.3 Les critres de slection 7.2.4 Comparaison un filtre 7.2.5 Les oprateurs logiques 7.2.6 Valeur zro, chane vide et valeur indtermine (NULL) 7.2.7 Comparaison une fourchette de valeurs 7.2.8 Comparaison une liste de valeurs 7.2.9 Dfinir l'ordre d'une requte de slection 7.2.10 Les valeurs calcules 7.2.11 Les fonctions d'agrgation 7.2.12 Requtes sur les groupes 7.2.12.1 La clause GROUP BY 7.2.12.2 La clause HAVING 7.2.13 Exercices 7.3 Les requtes SQL multitable 7.3.1 La jointure 7.3.1.1 Exemple d'introduction 7.3.1.2 Cration d'une jointure 7.3.2 Auto- jointure 7.3.3 Les requtes imbriques 7.3.3.1 La requte imbrique renvoie une seule valeur 7.3.3.2 La requte imbrique renvoie un ensemble de valeurs 7.3.4 Exercices SQL

98
98 100 100 101 104 106 107 110 112 113 114 117 118 120 120 123 125 139 140 140 143 146 149 149 152 156

7.4

La mthode QBE

166

7.5 Les contraintes d'intgrit 168 7.5.1 Dfinition 168 7.5.2 Les types de contraintes d'intgrit 168 7.5.2.1 La contrainte d'intgrit des tables (angl. Table Integrity Constraint) 168 7.5.2.2 La contrainte d'intgrit rfrentielle (angl. Referential Integrity Constraint)169 7.5.2.3 La contrainte d'intgrit gnrale (angl. General Integrity Constraint) 169 7.5.3 Exercices 170

8.
8.1 8.2 8.3

Les formulaires (angl. forms)


Dfinition Types de formulaires Cration d'un formulaire

175
175 179 181

9.
9.1 9.2

Les rapports (angl. reports)


Dfinition Cration d'un rapport

183
183 189

10.
10.1

Scurit des donnes


Dfinition

191
191 191 191 192 193 193 193 193 193 196 197 197 198 199 199 199 200 200 202 202 202

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

11.
11.1 11.2 11.3

Annexes
Bibliographie Sites sur Internet Index

203
204 206 207

Informatique 13CG

Modlisation d'un systme d'information

Partie 1 : Modlisation d'un systme d'information

Pierre Stockreiser

Lyce du Nord Wiltz

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 standard 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 du Nord Wiltz

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 des 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

Lyce du Nord Wiltz

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 d 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 Informations

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 ainsi que 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

10

Lyce du Nord Wiltz

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. Exemples deSGBD:

Pierre Stockreiser

11

Lyce du Nord Wiltz

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

12

Lyce du Nord Wiltz

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

13

Lyce du Nord Wiltz

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

14

Lyce du Nord Wiltz

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. Le dveloppement de ces modles se fait selon une mthode qui prvoit une conception par niveaux. Nous retenons 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, MySQL, Oracle ). Ce niveau est reprsent par le: Modle physique des donnes (MPD)

Pierre Stockreiser

15

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

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

Analyse

MCD

MLD

MPD

Pierre Stockreiser

16

Lyce du Nord Wiltz

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
102 103 104 105 106 ...

Nom_Emp
Boesch Midd Witz Kuhl Super ...

Prnom_Emp
Emil Erny Evelyne Menn Jhemp ...

NoEntr
1 2 1 1 2 ...

Nom_Entr
Schaffgaer S. r.l. Gudjr Schaffgaer S. r.l. Schaffgaer S. r.l. Gudjr ...

Localit
Differdange Colmar Berg Differdange Differdange Colmar Berg ...

voir cours de la classe 12CG

Pierre Stockreiser

17

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

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. Or, bien que cette solution soit correcte dans le sens le plus large du terme, elle 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

18

Lyce du Nord Wiltz

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 celui du langage de modlisation UML (Unified Modeling Language). A l'aide de ce langage nous pouvons crer un diagramme de classes qui se base autour de 3 concepts principaux, les classes, les associations et les attributs. Voici par exemple un MCD / Diagramme de classes qui reprsente une entreprise avec ses employs.

Classe

Attribut

Association

Pour la suite de ce cours, MCD et diagramme de classes sont synonymes.

Pierre Stockreiser

19

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.3.2 La notion de classe


Une classe1 permet de modliser un ensemble d'objets concrets ou abstraits de mme nature. Dans l'exemple du chapitre prcdent, la classe Entreprise spcifie donc l'ensemble des entreprises, qui nous intressent dans le contexte de notre systme d'information. De mme, la classe Employ reprsente tous les employs de notre systme d'information. Une classe est caractrise par son nom et ses attributs. Reprsentation graphique:

Prenons par exemple une classe Client:

Voici quelques exemples de clients: 3 objets (instanciations) de la classe Client

Chacun de ces clients reprsente un objet ou une instanciation de la classe Client.

Dans la littrature on trouve galement la notion entit pour dsigner une classe.

Pierre Stockreiser

20

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.3.3 La notion d'attribut


Un attribut reprsente une donne lmentaire d'une classe. Un attribut est unique dans un MCD et ne peut ainsi pas tre rattach plusieurs classes diffrentes. Reprsentation graphique d'un attribut: Le nom de l'attribut est indiqu l'intrieur de la classe laquelle il est rattach.

Voici quelques exemples d'attributs: Pour une classe Client: Nom du client NoTl du client Pour une classe Salari: Nom du salari NoMatricule Salaire mensuel Pour une classe Contrat d'assurance: NoContrat Type d'assurance Montant assur

A l'intrieur des objets (des instanciations) d'une classe, les attributs prennent des valeurs Exemple: La classe Client est dfinie par les attributs suivants:

A l'intrieur de chaque objet, chaque attribut 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

21

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

L'attribut Nom prend p.ex. les valeurs "Meier", "Muller" et "Weber" dans les 3 objets cidessus. A lintrieur de chaque objet, chaque attribut ne prend quune seule valeur au maximum. Le client 002 par exemple ne peut pas avoir 2 adresses.

Pierre Stockreiser

22

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.3.4 La notion d'identifiant


Afin de pouvoir distinguer les diffrents objets d'une mme classe, la classe doit tre dote d'un identifiant. L'identifiant est compos d'un ou de plusieurs attributs de la classe. Chaque objet dune classe doit avoir une valeur diffrente pour lidentifiant Comme choix pour l'identifiant d'une classe nous distinguons gnralement 3 possibilits: 1. Un attribut naturel Exemple: Le nom d'un pays pour une classe Pays 2. Un attribut artificiel qui est invent par le crateur du MCD Exemple: Le numro d'un client pour une classe Client 3. Un identifiant compos de plusieurs attributs naturels Exemple: Le nom et la localit pour une classe Entreprise Reprsentation graphique de l'identifiant d'une classe: Le ou les attributs qui constituent l'identifiant d'une classe sont crits en couleur et suivis de l'indication {id}

Exercice
Indiquez graphiquement les classes qui reprsentent : 1. les passagers dune socit arienne. 2. les rsultats sportifs de lentranement dun coureur ; 3. les mdicaments dune pharmacie.

Pierre Stockreiser

23

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.3.5 La notion d'association


3.3.5.1 Dfinition
Une association dcrit un lien entre deux ou plusieurs classes. Chaque association possde un nom, gnralement un verbe l'infinitif. Nous distinguons deux types d'associations: les associations binaires, qui sont lies 2 classes; les associations ternaires, qui sont lies 3 classes.

Exemple d'une association binaire:

L'instanciation d'une association est reprsente par les instanciations des classes lies l'association. Voici quelques instanciations de l'association Ecrire.

Rappel !!! Instanciation = Objet

Cette instanciation de l'association crire p.ex. nous dit que l'auteur Twain a crit le livre Tom Sawyer. Cette instanciation peut tre identifie par l'identifiant compos A002/L0031

Bien qu'une association n'ait pas d'identifiant propre, elle peut implicitement tre identifie par les identifiants des classes auxquelles elle est lie. Pour chaque instanciation dune association, lidentifiant doit tre unique.

Comme chaque livre est uniquement crit par un seul auteur, on peut galement identifier linstanciation de lassociation par le seul NoLivre L003.

Pierre Stockreiser

24

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.3.5.2 Les multiplicits d'une association


Sur les extrmits d'une association on indique les multiplicits. Les multiplicits expriment le nombre minimum et maximum d'objets d'une classe qui peuvent tre associs des objets de l'autre classe. Exemple 1: Se lit: Un client passe au minimum 1 et au maximum plusieurs commandes

Se lit: Une commande est passe au minimum par un et au maximum par un client

Les multiplicits concernant une classe sont inscrites l'extrmit oppose de l'association. Exemple 2:

Interprtez les multiplicits concernant la classe Employ.

Interprtez les multiplicits concernant la classe Ordinateur.

Y a-t-il des employs qui n'utilisent pas d'ordinateurs ?

Y a-t-il des ordinateurs qui ne sont pas du tout utiliss ?

Pierre Stockreiser

25

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

Y a-t-il des employs qui utilisent plusieurs ordinateurs ?

Y a-t-il des ordinateurs utiliss par plusieurs employs ?

De faon gnrale, on peut dire: La multiplicit minimale indique si un objet d'une classe peut exister sans participer l'association. Cette multiplicit est 0 ou 1. Multiplicit minimale = 0 : Un objet de la classe concerne peut exister sans participer l'association. Multiplicit minimale = 1 : Un objet de la classe participe au moins une fois l'association. La multiplicit maximale indique si un objet d'une classe peut participer plusieurs fois l'association. Cette multiplicit est 1 ou *, avec * reprsentant une valeur >1 mais non connue priori. Multiplicit maximale = 1 : Un objet de la classe participe au maximum une seule fois l'association. Multiplicit maximale = * : Un objet de la classe peut participer plusieurs fois l'association. Comme nous indiquons pour chaque classe relie une association les multiplicits sous la forme: <Multiplicit minimale> .. <Multiplicit maximale>, nous avons les possibilits suivantes: 0..1 1..1 0..* 1..* Forme abrge: 1 (utilise dans ce cours Forme abrge: * logiciel Win'Design 5.8.0)

En pratique, afin de dterminer les bonnes multiplicits, 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 minimum 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 (*) 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.

Pierre Stockreiser

26

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

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

Laquelle des deux modlisations est correcte ?

Exemple 4:

Interprtez cette modlisation :

On dit que Elve est une classe indpendante par rapport l'association effectuer (multiplicit minimale = 0) , tandis que Stage est une classe dpendante par rapport l'association effectuer (multiplicit minimale = 1). Un lve (= un objet de la classe Elve) peut donc trs bien exister dans la base de donnes sans qu'un stage ne lui soit associ, mais un stage ne peut jamais exister sans lve associ. La multiplicit minimale nous indique donc si une classe est indpendante ou dpendante par rapport une association.

Pierre Stockreiser

27

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

On dit qu'une classe est indpendante par rapport une association lorsque sa multiplicit minimale vaut 0, et dpendante par rapport une association lorsque sa multiplicit minimale vaut 1. Exemple 5:

Interprtez cette modlisation :

Que peut-on dire de cette modlisation ?

Si les multiplicits de deux classes lies l'aide d'une association ont la valeur 1 (1..1) des deux cts, on transforme les deux classes en une seule et on omet ainsi l'association.

Pierre Stockreiser

28

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.3.5.3 Classe-association
Exemple:
Un objet resp. une instanciation de la classe TypeDiplme serait p.ex. le type de diplme Matrise en Informatique du niveau Bac+4.

Interprtez cette modlisation :

Il s'agit maintenant d'tendre le modle ci-dessus de faon reprsenter galement l'anne depuis laquelle un tudiant possde un type de diplme. Proposez une solution!

Pierre Stockreiser

29

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

Voici la solution propose pour reprsenter l'anne depuis laquelle un tudiant possde un type de diplme.

Classe-association

Une association avec un ou plusieurs attributs est reprsente l'aide d'une classe qu'on appelle classe-association. Cette classe-association contient le ou les attributs correspondants et elle est connecte au lien de l'association par une ligne en pointill. Par convention, la classe-association porte le mme nom que l'association concerne.

Attention Un ou plusieurs des attributs d'une classe-association peuvent mme devenir une partie de l'identifiant de l'association. Les attributs concerns sont nots de la mme faon que les identifiants des autres classes.

Rappel !!! Une association peut implicitement tre identifie par les identifiants des classes auxquelles elle est lie.

Exemple:

Comme un professeur peut avoir la mme classe pendant plusieurs annes (p.ex. Jos Weber 12CG2), l'identifiant implicite de l'association enseigner (NoMatricule_{id}/CodeClasse_{id}) n'est pas suffisant, puisquil ne garantit pas lunicit. On y ajoute Anne_{id}. L'association enseigner est ainsi identifie par la combinaison d'attributs NoMatricule_{id} / CodeClasse_{id} / Anne_{id}. Cette combinaison doit donc tre unique pour chaque instanciation de l'association.

Pierre Stockreiser

30

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

Attention Une association multiplicits 1 (1..1) n'est jamais reprsente l'aide d'une classeassociation. Dans ce cas, les attributs en question migrent dans la classe concerne par les multiplicits 1 (1..1). Exemple: Cette modlisation n'est pas correcte !!!

Effectivement, chaque facture ne possde qu'une et une seule date d'mission, ce qui fait que l'attribut DateEmission doit migrer dans la classe Facture. Voici la modlisation correcte:

Pierre Stockreiser

31

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.3.6 Exemple "KaafKaaf"


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

KaafKaaf S. r.l. 12 avenue Goss L-9876 Luxusbuerg

Facture No. 12345

Luxusbuerg, le 31.08.2004 Client Nom: Prnom: Adresse: CodePostal: Localit: Weber Jos 23 rue Principale L-7654 Grevenmacher 50

Montant de la facture:

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 cet attribut artificiel la classe Client, et de le dfinir comme identifiant de cette classe. Cela nous empche de devoir dfinir un identifiant compos de trop d'attributs.

Pierre Stockreiser

32

Lyce du Nord Wiltz

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: KaafKaaf S. r.l. 12 avenue Goss L-9876 Luxusbuerg Facture No. 12345

Luxusbuerg, le 31.08.2004 Client Nom: Prnom: Adresse: CodePostal: Localit: NoArticle 234 566 023 Weber Jos 23 rue Principale L-7654 Grevenmacher Libell Marteau Tournevis Pince tuyaux PrixUnitaire 12 6 20 Quantit 1 3 1 Prix payer 12 18 20 50

Montant total de la facture:

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

Pierre Stockreiser

33

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

Remarques: La classe Facture ne contient plus l'attribut Montant. Il existe une rgle gnrale de conception qui dit: Aucun attribut qui peut tre calcul partir d'autres attributs existants dans le modle, ne devra tre reprsent 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 classe-association qui contient l'attribut Quantit. En fait, l'attribut 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 la classe abstraite LigneDeFacture, qui reprsente une ligne de dtail d'une facture, p.ex. celle pour le marteau.

Pierre Stockreiser

34

Lyce du Nord Wiltz

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 code 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 du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.3.8 Lutilisation dune association ternaire


Lors de lintroduction des associations (voir chapitre 3.3.5.1) nous avons dj mentionn la notion d'association ternaire. Une association ternaire est une association lie 3 classes. Bien que dans la pratique la plupart des associations soient binaires (2 classes) il existe cependant des situations o lutilisation dune association ternaire simpose. Exemple : A partir des 3 classes Professeur(CodeProf_{id}, Nom, Prnom); Matire(CodeMatire_{id}, Libell) et Classe(Nom_{id} ,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 associations binaires.

Solution de lexemple prcdent : Voici une solution avec une association ternaire

Une association ternaire est reprsente par un losange.

Pierre Stockreiser

36

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

On peut lire/interprter ce modle de trois faons diffrentes: Chaque couple d'instanciations Professeur / Matire est associ au minimum 0 et au maximum plusieurs Classes ( Multiplicits 0..* du ct Classe). Chaque couple d'instanciations Matire / Classe est associ au minimum 0 et au maximum plusieurs Professeurs ( Multiplicits 0..* du ct Professeur). Chaque couple d'instanciations Classe / Professeur est associ au minimum 0 et au maximum plusieurs Matires ( Multiplicits 0..* du ct Matire)

Attention: Selon ce modle, plusieurs professeurs peuvent enseigner la mme matire dans une mme classe pendant une anne scolaire. Si on veut reprsenter le fait quune matire est enseigne dans une classe par au maximum un seul professeur, il suffit de changer les multiplicits du ct Professeur en 0..1 .

Solution qui permet la gestion sur plusieurs annes scolaires.

On peut dire que chaque instanciation de l'association 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 professeur. L'identifiant de l'association enseigner est le quadruple CodeProf_{id} / CodeMatire_{id} / Nom_{id} / Anne_{id}. Il nest pas toujours facile de dterminer quand il faut utiliser une association ternaire. Gnralement, on peut affirmer que si plusieurs des classes lies une association ternaire possdent une multiplicit maximale de 1, la modlisation nest pas optimise dans le sens quil faudrait mieux dcomposer l'association ternaire, c..d. la reprsenter par 2 associations binaires.

Pierre Stockreiser

37

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

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 amen proposer la modlisation suivante.

On peut lire/interprter ce modle de trois faons diffrentes: Chaque couple d'instanciations Client / Htel est associ au minimum 0 et au maximum plusieurs Sjours ( Multiplicit 0..* du ct Sjour). (On considre techniquement chaque combinaison Client / Htel possible). Chaque couple d'instanciations Client / Sjour est associ au minimum 0 et au maximum un Htel ( Multiplicit 0..1 du ct Htel). Chaque couple d'instanciations Sjour / Htel est associ au minimum 0 et au maximum un Client ( Multiplicit 0..1 du ct Client).

Chaque instanciation de l'association effectuer associe donc un sjour un client et un htel. Or, cette modlisation porte une contrainte supplmentaire, puisque les multiplicits 0..1 nous indiquent que pour chaque instanciation de Sjour il ne peut exister qu'une et une seule instanciation de l'association. Donc chaque sjour est associ une et une seule fois une combinaison client/htel. Dans ce cas il vaut mieux dcomposer l'association ternaire en deux associations binaires:

Pierre Stockreiser

38

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.3.9 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. Un client est considr comme tel partir de son premier contrat. 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. Quels en seraient les inconvnients ?

Crez le modle conceptuel des donnes correspondant cette situation

Pierre Stockreiser

39

Lyce du Nord Wiltz

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. Il existe au minimum un exemplaire de chaque film. 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

40

Lyce du Nord Wiltz

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 directement programmer des sances pour le film en question. Comme le mme film n'est jamais montr 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 l'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. Chaque systme son est au moins support par une salle et au moins utilis par un film. 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 accueille 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 dans une seule salle, est identifie par un numro courant. Crez le modle conceptuel des donnes

Pierre Stockreiser

41

Lyce du Nord Wiltz

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 renvoie 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,

Pierre Stockreiser

42

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

FRA ...), le nom de l'auteur, le prix de vente et le nombre d'exemplaires disponibles en stock. 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

43

Lyce du Nord Wiltz

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, sa date de naissance 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

44

Lyce du Nord Wiltz

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

45

Lyce du Nord Wiltz

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 caractrises en plus par 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

46

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.3.10 Cas particuliers du MCD


3.3.10.1 Plusieurs associations diffrentes entre deux classes
Exemple:

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 association spare et le fait d'habiter dans une maison par une association spare.

3.3.10.2 Association rflexive et rle


Exemple 1:

Une association rflexive, est une association, dont les deux extrmits sont lies une mme classe. La signification des extrmits d'une association rflexive doit tre clarifie par l'indication d'un rle. Nous avons donc:

Interprtation des rles: Une socit est la socit-mre d'au minimum 0 et d'au maximum plusieurs autres socits. Une socit est une socit-filiale d'au minimum 0 et d'au maximum plusieurs autres socits.

Pierre Stockreiser

47

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

Une association rflexive peut en mme temps tre une classe-association.

Cette modlisation permet de reprsenter le pourcentage du capital d'une socit-filiale qui est dtenu par la socit-mre. 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.

Contrairement au multiplicits, les rles concernant une classe ne sont pas inscrits l'extrmit oppose de l'association. L'exemple prcdent se lit donc: Un brevet suit au minimum 0 et au maximum 1 autre brevet. Un brevet prcde au minimum 0 et au maximum plusieurs autres brevets.

3.3.10.3 Agrgation de composition


Certaines classes ont une existence compltement dpendante d'une autre classe. Ainsi, une classe A est compltement dpendante d'une classe B, c..d. qu'un objet de la classe A ne peut pas exister sans tre reli un et un seul objet de la classe B, si les multiplicits concernant la classe A sont 1 (1..1). Exemple:

La classe Tche est compltement dpendante de la classe Projet. Une tche ne peut pas exister sans tre relie un et un seul projet.

Pierre Stockreiser

48

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

L'exemple ci-dessus reprsente en plus de cette dpendance encore la notion de composition. En effet, un projet est compos de tches. La suppression d'un projet entrane la suppression de toutes les tches qui le composent. Dans ce cas on peut utiliser une agrgation de composition qui est reprsente en UML par un losange noirci du ct de la classe Projet.

Ainsi, une tche n'est plus identifie uniquement par un NoTche_{id} mais par une combinaison NoProjet_{id} / NoTche_{id}. Ou, pour le dire autrement, la numrotation des tches recommence 1 pour chaque nouveau projet. Le mme numro de tche est donc susceptible d'apparatre dans plusieurs projets. Toutefois, on peut affirmer qu'en relation un certain numro de projet, le numro de tche est unique. L'agrgation de composition reprsente le fait que les objets d'une classe (composite) sont composs d'objets d'une autre classe (composant). Les objets de la classe composante sont implicitement identifis par l'identifiant de cette mme classe et par l'identifiant de la classe composite.

Pierre Stockreiser

49

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.3.11 Exercices

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

50

Lyce du Nord Wiltz

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 employs et avions 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. Crez le MCD correspondant.

Pierre Stockreiser

51

Lyce du Nord Wiltz

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 Prix par nuit


3 3 5 5 7 30 38 50 58 75

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. Stockez galement la superficie de chaque bungalow dans le systme. 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

52

Lyce du Nord Wiltz

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


3 8 2

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

53

Lyce du Nord Wiltz

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. Un client est uniquement considr comme tel partir de la premire fois qu'il effectue une rservation.

Crez le modle conceptuel.

Pierre Stockreiser

54

Lyce du Nord Wiltz

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. Or, le MCD ne connat pas la notion de table, tandis qu'une base de donnes ne connat pas le concept des classes relies entre-elles via des associations avec des multiplicits. 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
En vous rfrant l'exemple prcdent, rpondez brivement aux questions suivantes. 1. Comment est-ce qu'on traduit une classe du MCD dans le MLD ?

Pierre Stockreiser

55

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

2. Comment est-ce qu'on traduit un attribut d'une classe du MCD dans le MLD ?

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

4. Comment est-ce qu'on traduit l'association crire avec ses multiplicits du MCD dans le MLD ?

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

Pierre Stockreiser

56

Lyce du Nord Wiltz

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 classes


Toute classe est transforme en table. Les attributs de la classe deviennent les attributs de la table. L'identifiant de la classe devient la cl primaire de la table. La cl primaire est souligne. Exemple: Classe "Entreprise" Lettres majuscules Table "Entreprise"

3.4.2.2 Transformation des associations binaires du type1 (x..*) (x..1)


Afin de reprsenter l'association, on duplique la cl primaire de la table base sur la classe multiplicit (x..*) dans la table base sur la classe multiplicit (x..1). Cet attribut est appel cl trangre. La cl trangre est crite en couleur. Les deux tables sont lies par une flche nomme selon l'association, qui pointe de la table cl trangre vers la table qui contient la cl primaire correspondante. Lorsque l'association contient elle-mme des attributs2 (classe-association), ceux-ci deviennent galement attributs de la table dans laquelle a t ajoute la cl trangre. Exemple: Rappel: Les multiplicits d'une classe sont inscrites l'extrmit oppose de l'association.

L'attribut NOAUTEUR_{ID} qui est cl primaire de la table AUTEUR, devient cl trangre dans la table LIVRE.
1 2

x peut prendre les valeurs 0 ou 1 Bien que ce cas n'apparaisse que trs rarement, il est possible pour les multiplicits (x..*) - (0..1)

Pierre Stockreiser

57

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.4.2.3 Transformation des associations binaires du type (x..1) (x..1)


Nous devons distinguer plusieurs cas. Sachant qu'une association binaire du type (1..1)-(1..1) ne doit pas exister il nous reste les 2 cas suivants: Association binaire (0..1)-(1..1) On duplique la cl primaire de la table base sur la classe multiplicit (0..1) dans la table base sur la classe multiplicit (1..1). Exemple:

Le NOCOMMANDE_{ID}, qui est cl primaire de la table COMMANDE, devient cl trangre dans la table FACTURE. Association binaire (0..1)-(0..1) !!! Ne figure actuellement pas au programme de la classe 13CG On duplique la cl primaire d'une des tables dans l'autre. Lorsque l'association contient elle-mme des attributs (classe-association), ceux-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 SALARIE, soit on fait l'inverse.

Pierre Stockreiser

58

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.4.2.4 Transformation des associations binaires du type (x..*) (x..*)


On cre une table supplmentaire, portant le nom de l'association et ayant comme cl primaire une cl compose des cls primaires des 2 tables. Lorsque l'association contient elle-mme des attributs (classe-association), ceux-ci deviennent attributs de la table supplmentaire. Un attribut d'une classe-association qui fait parti de l'identifiant devra appartenir la cl primaire compose de la table supplmentaire. Exemple 1:

On cre une table CONCERNER, qui contient comme cl primaire une cl compose de NOCOMMANDE_{ID} et CODEARTICLE_{ID}. Elle contient galement l'attribut QUANTIT issu de l'association concerner. Exemple 2:

3.4.2.5 Transformation des associations ternaires


On cre une table supplmentaire, portant le nom de l'association ternaire et ayant comme cl primaire une cl compose des cls primaires de toutes les tables relies. Cette rgle s'applique de faon indpendante des diffrentes multiplicits. Lorsque l'association contient elle-mme des attributs (classe-association), ceux-ci deviennent attributs de la table supplmentaire. Un attribut d'une classe association qui fait parti de l'identifiant devra appartenir la cl primaire compose de la table supplmentaire. Exemple:

La table ENSEIGNER contient une cl compose CODEMATIRE_{ID}, NOM_{ID} et ANNE_{ID}.

de

CODEPROF_{ID},

Pierre Stockreiser

59

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.4.2.6 Transformation de plusieurs associations entre 2 classes


Les rgles gnrales s'appliquent Exemple:

L'association habiter du type (x..*)-(x..1), est traduite par la migration de l'attribut ADRESSE_{ID} dans la table PERSONNE. L'association possder du type (x..*)-(x..*) 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 associations rflexives


Nous appliquons les rgles gnrales, avec la seule diffrence que les deux extrmits de l'association sont relies la mme classe.

Exemple 1:

Comme il s'agit d'une association (x..*)-(x..*), une table supplmentaire DTENIR est cre. Cette table contient comme cl primaire compose, la cl des "deux" classes relies. Comme la mme classe est lie 2 fois l'association, on ne peut pas utiliser 2 fois le mme nom pour les cls migres. Ainsi, il convient d'intgrer les rles du MCD dans le nom des cls migres. Remarque pour les paresseux : On peut laisser de ct le rle dans le nom d'une des deux cls migres.

Pierre Stockreiser

60

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

Exemple 2:

Comme il s'agit d'une association (x..*)-(x..1), nous devons dupliquer la cl primaire, tout en veillant ce que le mme nom ne soit pas utilis pour la cl primaire et la cl trangre. Attention: Soit un brevet Y qui suit un brevet X. Alors, dans Y, la valeur de NOBREVET_{ID}_SUIT est X. En fait, et ceci peut prter confusion, NOBREVET_{ID}_SUIT contient soit le numro du brevet prcdent soit rien.

3.4.2.8 Transformation de l'agrgation de composition


Sachant que la classe dpendante est toujours lie l'association par les multiplicits (1..1), nous appliquons dj les rgles gnrales. Ainsi, la table issue de la classe dpendante contient donc comme cl trangre, la cl primaire de l'autre table. L'agrgation de composition est reprsente par le fait que la table issue de la classe dpendante contient une cl primaire compose, constitue de la cl primaire transforme de l'identifiant de cette classe et de la cl trangre. Exemple:

Tout en respectant les rgles gnrales du passage MCD MLD, la cl primaire de la table PROJET migre comme cl trangre dans la table TCHE. L'agrgation de composition est reprsente par le fait que la table TCHE contient une cl primaire compose de NOTCHE_{ID} et NOPROJET_{ID}.

Pierre Stockreiser

61

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

3.4.3 Exemple "KaafKaaf"


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

Pierre Stockreiser

62

Lyce du Nord Wiltz

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.9 et les exercices 1 3 du chapitre 3.3.11 en MLD.

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

Remarque: 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". Les instanciations de cette classe reprsentent plutt des types de rapports mdicaux standardiss et non pas des rapports mdicaux prcis.

Pierre Stockreiser

63

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

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

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.

Pierre Stockreiser

64

Lyce du Nord Wiltz

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

65

Lyce du Nord Wiltz

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

66

Lyce du Nord Wiltz

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/2004 17:03:24) ----------------------------------------------------------------------------Nom de la base : Entreprises Projet : Auteur : Pierre Stockreiser Date de dernire modification : 6/9/2004 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

Pierre Stockreiser

67

Lyce du Nord Wiltz

Informatique 13CG

Modlisation d'un systme d'information

ON UPDATE RESTRICT ON DELETE RESTRICT); 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

68

Lyce du Nord Wiltz

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 UML est trs rpandue, il est vident qu'il existe un certain nombre d'outils bass sur UML. 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 UML. Notons que Win'Design 5.8.0 a t utilis pour crer les modles conceptuels et logiques prsents dans cet ouvrage.

Pierre Stockreiser

69

Lyce du Nord Wiltz

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. classes, associations, attributs, identifiants, tables, cls etc.). Vrification des rgles de construction des diffrents modles (p.ex. Une association ne peut pas tre lie deux classes via des multiplicits 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, MySQL), 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. classes, associations, attributs, identifiants, tables, 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

70

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Partie 2 : Exploitation des bases de donnes relationnelles

Pierre Stockreiser

71

Lyce du Nord Wiltz

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

72

Lyce du Nord Wiltz

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 au 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

73

Lyce du Nord Wiltz

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)".

Pierre Stockreiser

74

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des 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 Filemaker PARADOX Aujourd'hui, les bases de donnes relationnelles se rjouissent d'une grande popularit. Surtout le domaine de la gestion des donnes l'intrieur des entreprises 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

75

Lyce du Nord Wiltz

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 aux 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

76

Lyce du Nord Wiltz

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

77

Lyce du Nord Wiltz

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. Linux, Windows2000, WindowsXP ), 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

78

Lyce du Nord Wiltz

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: MS-Access Exercice Discutez les avantages et dsavantages des deux concepts d'implmentation possibles pour les composants d'une BD.

Pierre Stockreiser

79

Lyce du Nord Wiltz

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 des cbles, 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 d'entreprise (RLE) (angl. LAN = Local Area Network).

Poste de travail

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

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

Pierre Stockreiser

80

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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 gnralement 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. 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 au 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.

Pierre Stockreiser

81

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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

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

Pierre Stockreiser

82

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

rseau tlphonique public, d'un ensemble de lignes loues (lignes ddies), d'un rseau de cbles en fibres optiques, 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

83

Lyce du Nord Wiltz

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". 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:

Pierre Stockreiser

84

Lyce du Nord Wiltz

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. Le "mainframe" tant sous la seule gestion du service informatique, les utilisateurs peuvent uniquement accder aux 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 taient 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

85

Lyce du Nord Wiltz

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 un maximum possible de 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.

1 2

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

Pierre Stockreiser

86

Lyce du Nord Wiltz

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 standard, ce qui cre un march multivendeur et une offre de produits quilibre.

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

Pierre Stockreiser

87

Lyce du Nord Wiltz

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 DateNaissance: 22.08.70 Salaire: 2200 Service: Comptabilit Antonio Da Costa DateNaissance: 07.12.74 Salaire: 1750 Service: Informatique Emil Feller DateNaissance: 28.03.67 Salaire: 2150 Service: Expdition

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

Table: tblEmploys
Nom Weber DaCosta Feller ... Prnom Jos Antonio Emil ... DateNaissance 22/08/1970 07/12/1974 28/03/1967 ... Salaire 2200 1750 2150 ... Service Comptabilit Informatique Expdition ... Un enregistrement

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 occurrence1 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 ).

Correspond aux termes instanciation et objet utiliss dans le chapitre 3 (Modlisation de donnes).

Pierre Stockreiser

88

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Convention des noms: 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 ne considrons pas 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

89

Lyce du Nord Wiltz

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 diffrents, les SGBD offrent des types de donnes standard 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 longs)

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

90

Lyce du Nord Wiltz

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.

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

91

Lyce du Nord Wiltz

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 sr galement une cylindre de 2000 ccm et un poids de 1200 kg. Dans ce cas nous avons 2 enregistrements 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 seul, 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 o la socit achte une 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 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

92

Lyce du Nord Wiltz

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

93

Lyce du Nord Wiltz

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

94

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

6.4 Relations entre tables - cl trangre


Une base de donnes bien conue est rarement compose d'une seule table, mais d'un ensemble de tables, entre lesquelles il existe certaines relations (voir chapitre 3:Mthode de modlisation de donnes). 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, foreign identifier). Ainsi sont dfinies les relations entre les tables.

Pierre Stockreiser

95

Lyce du Nord Wiltz

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 EMPLOYES DU SERVICE INFORMATIQUE ! Il serait aussi intressant de trier les employs sur leur nom de famille. Au cas o 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)

Pierre Stockreiser

96

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Voici quelques rgles qui nous aident dterminer les champs d'une table qui ont besoin d'tre indexs: 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'index 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

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

Pierre Stockreiser

97

Lyce du Nord Wiltz

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). fldMarque BMW . fldModle 525i

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.

Pierre Stockreiser

98

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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

99

Lyce du Nord Wiltz

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, malgr la prsence de standards internationaux tels que SQL-86, SQL-89, SQL-92 (SQL2) ou SQL3 chaque SGBD sur le march utilise un peu son propre dialecte du langage SQL.

Pierre Stockreiser

100

Lyce du Nord Wiltz

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 d'un champ>, <Nom d'un champ>, ... FROM <Nom de la table> WHERE <Critres de slection>;

2. Requtes d'insertion.

[ ] veut dire que la liste des champs est optionnelle.

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}, <Nom d'un champ>={valeur}, . . WHERE <Critres de slection>;

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

A faire : Exercice pratique - Introduction SQL (chap. 7.2.13)

Pierre Stockreiser

101

Lyce du Nord Wiltz

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


27, 'F',

25.3.1997
'Comptabilit',

INSERT INTO tblEmploys VALUES (20, 'Angela', #3/25/97#);

'Portante',

'ITA',

Remarques: Les valeurs sont spares par des virgules. 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 l'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

102

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

4. Afficher tous les champs pour tous les employs


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

ou
SELECT * FROM tblEmploys;

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

Pierre Stockreiser

103

Lyce du Nord Wiltz

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: = > < >= <= <> "est gal" "strictement suprieur" "strictement infrieur" "suprieur ou gal" "infrieur ou gal" "est diffrent"

Exemples: 1. Afficher le prnom et le nom de tous les employs du service "Marketing"


SELECT fldPrnom, fldNom FROM tblEmploys WHERE fldService='Marketing';

Remarque Les critres du type texte sont insensibles la casse des caractres. 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 ?

Pierre Stockreiser

104

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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

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 o 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';

5. Afficher le nom, le prnom et l'ge de tous les employs entrs en service partir du 1.1.1995
SELECT fldNom, fldPrnom, fldAge FROM tblEmploys WHERE fldEntreService>=#1/1/95#;

Les requtes paramtres Imaginez que de temps en temps on voudrait rexcuter cette requte avec une date d'entre en service diffrente. Au lieu de modifier chaque fois le critre de slection on peut dans la plupart des SGBD dfinir une requte paramtre, c..d. une requte qui ne contient pas directement une valeur (ici: date d'entre en service) comme critre de slection mais un paramtre. Ce paramtre est reprsent par un texte entour de crochets. Ainsi, la requte suivante provoque d'abord l'affichage d'une bote de dialogue:
SELECT fldNom, fldPrnom, fldAge FROM tblEmploys WHERE fldEntreService>=[Indiquez une date d'entre au service];

L'utilisateur de la requte indique ensuite une date dans la bote de dialogue et slectionne le bouton OK Finalement la requte est excute avec comme date la valeur entre par l'utilisateur. Une requte peut contenir plusieurs paramtres.

Pierre Stockreiser

105

Lyce du Nord Wiltz

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

Exemple: Exemple:

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

106

Lyce du Nord Wiltz

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

107

Lyce du Nord Wiltz

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 NOT fldNom 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 le 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';

Remarque: Cette requte peut provoquer des rsultats imprvus au cas o 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>).

Pierre Stockreiser

108

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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 ?

8. Afficher le numro, le nom et le prnom de tous les employs embauchs pendant le mois de juillet 1997.
SELECT idEmploy, fldNom, fldPrnom FROM tblEmploys WHERE fldEntreService >= #7/1/97# AND fldEntreService <=#7/31/97#;

ou
SELECT idEmploy, fldNom, fldPrnom FROM tblEmploys WHERE MONTH(fldEntreService)=7 AND YEAR(fldEntreService)=1997;

SQL met notre disposition certaines fonctions qui nous facilitent la gestion des dates: retourne la date actuelle retourne l'anne d'une date en format XXXX retourne le mois d'une date (1-12) retourne le jour d'une date (1-31) <date> peut tre: - une date entre manuellement - le nom d'un champ qui contient une date En plus, on peut calculer la diffrence entre deux dates l'aide de l'oprateur arithmtique - . Attention: Cette diffrence est exprime en jours.
DATE() YEAR(<date>) MONTH(<date>) DAY(<date>)

9. Afficher toutes les informations pour les employs masculins embauchs pendant les 15 derniers jours.
SELECT * FROM tblEmploys WHERE fldSexe='M' AND DATE()-fldEntreService<=15;

Pierre Stockreiser

109

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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

Gnralement, chaque champ dans une table possde une valeur bien dfinie. Il existe pourtant des situations spciales. 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. Lorsqu'un nouveau client n'a pas de fax, on peut affecter la chane vide au champ. Si par contre le client possde un numro de fax, mais pour une raison ou l'autre on l'ignore encore, on devrait plutt affecter la valeur NULL au champ. 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. 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.

Pierre Stockreiser

110

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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

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', '', DATE());

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

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 ( valeur NULL pour le 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 ( chane vide pour le champ fldService). 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='';

Pierre Stockreiser

111

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.7 Comparaison une fourchette de valeurs

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

112

Lyce du Nord Wiltz

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. De mme, l'oprateur NOT IN (<Liste de valeurs>) permet de dterminer si la valeur d'un champ donn n'appartient pas 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

113

Lyce du Nord Wiltz

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 d'un champ>, <Nom d'un champ>, ... FROM <Nom de la table> WHERE <Critres de slection> ORDER BY <Nom d'un champ>[ASC/DESC], <Nom d'un champ>[ASC/DESC], ;

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

114

Lyce du Nord Wiltz

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

115

Lyce du Nord Wiltz

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

116

Lyce du Nord Wiltz

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

Si le nom du champ valeur calcule contient des espaces, on doit l'entourer d'apostrophes. p.ex. ... AS 'Prix TTC'

Remarque: On peut utiliser un champ valeur calcule pour renommer l'en-tte d'un champ affich dans une requte. Exemple:
SELECT idLivre AS ISBN , fldTitre FROM tblLivres;

Champ valeur calcule

Remarque Un champ valeur calcule n'est pas confondre avec des 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

117

Lyce du Nord Wiltz

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

Remarque: Il est conseill de renommer l'en-tte (AS ...) afin d'augmenter la lisibilit du rsultat affich. Exemples: 1. Affichez la moyenne des prix des livres allemands.
SELECT AVG(fldPrix) AS 'Moyenne des prix' FROM tblLivres WHERE fldLangue='ALL';

Pierre Stockreiser

118

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

2. Affichez la quantit totale des exemplaires des romans allemands.


SELECT SUM(fldEnStock) AS 'Exemplaires de romans allemands' FROM tblLivres WHERE fldGenre='Roman' AND fldLangue='ALL';

3.

Combien de livres d'histoire existent en langue franaise ?


SELECT COUNT(*) AS 'Livres d'histoire en langue franaise' FROM tblLivres WHERE fldGenre='Histoire' AND fldLangue='FRA';

4. Dterminez le prix du roman anglais le plus cher qui est actuellement disponible.
SELECT MAX(fldPrix) AS 'Prix du roman anglais le plus cher' 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; l'option DISTINCT. Exemples: 1. Calculez la valeur actuelle du stock
SELECT SUM(fldPrix * fldEnStock) AS 'Valeur actuelle du stock' FROM tblLivres;

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


SELECT COUNT(DISTINCT fldLangue) AS Langues FROM tblLivres;

A faire : Exercice 1

Pierre Stockreiser

119

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.12 Requtes sur les groupes


7.2.12.1 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

120

Lyce du Nord Wiltz

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 prcdent:
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'. L'affichage des groupes se fait par dfaut de manire ascendante ( utiliser ORDER BY pour changer l'ordre). 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 et 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

121

Lyce du Nord Wiltz

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) AS 'Moyenne du prix' FROM tblLivres GROUP BY fldGenre ORDER BY fldGenre DESC;

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


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

3. Affichez pour chaque genre, le nombre de livres, ainsi que la quantit d'exemplaires en stock.
SELECT fldGenre, COUNT(*) AS Titres, SUM(fldEnStock) AS Quantit 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) AS 'Valeur en stock' 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

122

Lyce du Nord Wiltz

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

123

Lyce du Nord Wiltz

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(*) AS Titres, SUM(fldEnStock) AS Quantit FROM tblLivres GROUP BY fldLangue HAVING SUM(fldEnStock)>0;

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


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

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(*) AS Titres 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

124

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.2.13 Exercices Exercice pratique - Introduction SQL


Prparation
1. Crez en Access une base de donnes Supermarch.mdb qui contiendra uniquement la table suivante. Nom du champ idProduit fldLibell fldCatgorie fldPrix fldQuantitDisponible Type de donnes Number (Long Integer) Text [20] Text [20] Currency Number (Long Integer)

idProduit est la cl primaire

2. Sauvegardez la table sous le nom tblProduits 3. Entrez les donnes suivantes

4. Crez les requtes suivantes en Access Onglet Queries / Bouton New / Design View & OK / Bouton Close / Icne Sauvegardez les requtes (Requte1, Requte2, etc.)

Requte 1 (correspond l'exemple 1 chap. 7.2.2)


Affichez le libell et le prix de tous les produits.

Pierre Stockreiser

125

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Requte 2 (correspond l'exemple 2 chap. 7.2.2)


Insrez le produit suivant. idProduit 16 fldLibell Tirlititi fldCatgorie Sucre fldPrix 13,80 fldQuantitDisp. 19

Requte 3 (correspond l'exemple 3 chap. 7.2.2)


Affichez les diffrentes catgories de produits. Veillez ce que chaque catgorie ne soit affiche qu'une seule fois.

Requte 4 (correspond l'exemple 4 chap. 7.2.2)


Affichez tous les champs disponibles pour tous les produits.

Requte 5 (correspond l'exemple 1 chap. 7.2.3)


Affichez le libell, le prix et la quantit disponible de tous les fromages. Transformez ensuite la requte en requte paramtre (voir exemple 5 chap. 7.2.3).

Requte 6 (correspond l'exemple 2 chap. 7.2.3)


Affichez tous les champs disponibles pour les produits dont la quantit en stock est infrieure 100.

Pierre Stockreiser

126

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Requte 7

(correspond l'exemple 3 chap. 7.2.3)

Augmentez de 10 la quantit disponible du produit 'Schmiri'

Requte 8

(correspond l'exemple 4 chap. 7.2.3)

Effacez tous les produits de la catgorie 'Lait'.

Requte 9

(correspond l'exemple 1 chap. 7.2.4)

Affichez le numro de produit, le libell et la catgorie de tous les produits dont le nom de catgorie contient le mot 'alcool'.

Requte 10

(correspond l'exemple 2 chap. 7.2.4)

Affichez le libell, la catgorie et le prix de tous les produits dont le nom de catgorie contient uniquement 4 lettres.

Requte 11

(correspond l'exemple 1 chap. 7.2.5)

Affichez le libell et la quantit disponible de tous les produits l'exception des fromages.

Requte 12

(correspond l'exemple 3 chap. 7.2.5)

Affichez toutes les informations pour les chocolats dont la quantit disponible est suprieure ou gale 10.

Pierre Stockreiser

127

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Requte 13

(correspond l'exemple 4 chap. 7.2.5)

Affichez le libell et le prix des produits plus chers que 25 qui ne sont pas des cafs.

Requte 14

(correspond l'exemple 5 chap. 7.2.5)

Affichez le numro de produit, le libell et la catgorie pour les fromages et les boissons sans alcool.

Requte 15

(correspond l'exemple 7 chap. 7.2.5)

Affichez le libell, la catgorie et le prix pour les produits moins chers que 25 qui appartiennent aux catgories 'Chocolat' ou 'Fromage'.

Requte 16

(correspond l'exemple 1 chap. 7.2.6)

Insrez le produit suivant. 17 Smrebrd Pain ? 0

Crez une requte qui vrifie la prsence d'une valeur NULL pour le prix !

Pierre Stockreiser

128

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Requte 17

(correspond l'exemple 1 chap. 7.2.7)

Affichez le numro, le libell et le prix pour tous les produits dont le prix varie entre 12 et 25.

Requte 18

(correspond l'exemple 1 chap. 7.2.8)

Affichez toutes les informations pour les produits des catgories 'Caf', 'Boisson sans alcool', 'Fromage' et 'Chocolat'.

Requte 19

(correspond l'exemple 1 chap. 7.2.9)

Affichez le numro, le libell et la quantit disponible de tous les produits. Triez la liste par ordre ascendant sur la quantit disponible.

Requte 20

(correspond l'exemple 2 chap. 7.2.9)

Affichez le libell et le prix des produits qui sont disponibles au moins 100 fois. Triez la liste par ordre descendant sur le prix.

Requte 21

(correspond l'exemple 3 chap. 7.2.9)

Affichez une liste avec le libell, la catgorie et le prix de tous les produits l'exception des fromages. Triez la liste par ordre alphabtique sur la catgorie et pour chaque catgorie par ordre dcroissant (descendant) sur le prix.

Pierre Stockreiser

129

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Requte 22

(correspond au chap. 7.2.10)

Affichez le numro, le libell et la valeur en stock de tous les cafs et boissons sans alcool. La valeur en stock d'un produit s'obtient par la multiplication de la quantit disponible avec le prix.

Requte 23

(correspond l'exemple 1 chap. 7.2.11)

Affichez la moyenne des prix pour les produits moins chers que 25.

Requte 24

(correspond l'exemple 2 chap. 7.2.11)

Affichez la quantit totale des fromages en stock.

Requte 25

(correspond l'exemple 3 chap. 7.2.11)

Combien de produits existent qui cotent plus chers que 30 ?

Requte 26

(correspond au chap. 7.2.11)

Calculez la valeur actuelle en stock pour tous les produits l'exception des chocolats.

Pierre Stockreiser

130

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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 23 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 N exemplaires en stock. La valeur N est indiquer par l'utilisateur de la requte. 10. Supprimez tous les romans anglais.

Pierre Stockreiser

131

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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. 12. Ajoutez 15% au prix pour tous les livres techniques dont le titre contient le mot 'Windows 98'. 13. Affichez 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 15 et 25. 15. Affichez une liste qui contient toutes les langues dont il existe au moins un roman plus cher que 8. 16. Affichez le prix moyen des romans anglais

Pierre Stockreiser

132

Lyce du Nord Wiltz

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.

Pierre Stockreiser

133

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

5. Nous voulons faire le mnage dans 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 partir du 1.1.1978. 7. Affichez 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 le nombre de clients par localit. En vous basant sur les donnes de la table, indiquez le rsultat de la requte dans la grille.

9. Affichez par sexe, le nombre de clients ns aprs le 31/12/1969. En vous basant sur les donnes de la table, indiquez le rsultat de la requte dans la grille.

10. Affichez 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 ?

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

Pierre Stockreiser

134

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

12. Affichez pour chaque localit le nombre de bons clients 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. 13. Dterminez la date de naissance du client le plus vieux habitant dans une ville qui est indiquer par l'utilisateur de la requte. 14. Afficher le numro, le nom et le prnom des clients ayant au moins 18 ans la date actuelle. Nous supposons: 1 anne = 365 jours

Pierre Stockreiser

135

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exercice 3: Gestion de concerts


Une agence de concerts utilise la table suivante: tblConcerts 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

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 et la date des concerts qui se sont tenus Luxembourg pendant la deuxime moiti de l'anne 2005. 3. Affichez le nombre de concerts par type de lieu. Triez la liste de faon dcroissante sur le nombre de concerts. En vous basant sur les donnes de la table, indiquez le rsultat de la requte dans la grille.

Pierre Stockreiser

136

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

4. Insrez le concert suivant:


No. 112 Artiste Oasis Date 12/09/2005 Dbut 20:00 Localit Weiswampach Lieu Fte sous tente Type Lieu Autre Places 1000

5. 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/2005. Triez cette liste par ordre ascendant sur les types des lieux et l'intrieur d'un type par ordre descendant sur le prix. 6. Quel est le prix moyen pour un concert au mois X de l'anne Y ? On ne tiendra pas compte des ftes sous tente. Crez une requte paramtre. 7. Classez les localits par ordre descendant sur le montant des recettes des concerts pour l'anne 2005 (Recette d'un concert=Tickets vendus*Prix d'un ticket). Ignorez les localits pour lesquelles il n'y a pas encore de recettes. 8. Comptez le nombre de localits dans lesquelles a eu lieu un concert pendant les mois de juillet et aot 2005. 9. Effacez tous les concerts qui ont eu lieu avant le 1/8/2005. 10. 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 2005. 11. 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. 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 modifier ensuite la table de faon ce qu'elle reflte la vente des 2 tickets pour le concert correspondant. Quel problme constatez-vous en ce qui concerne les valeurs des champs fldPlaces et fldTicketsVendus pour l'enregistrement 103 (voir exemples d'enregistrements) ?

12. Affichez la liste des localits, l'exception de Luxembourg, dans lesquelles ont eu lieu au moins 2 concerts pendant la deuxime moiti de l'anne 2005. Indiquez pour chaque localit le nombre de concerts. En vous basant sur l'ensemble de donnes dans l'nonc, indiquez le rsultat de la requte dans la grille.

13. Le concert numro 108 (voir exemples d'enregistrements) aura lieu au club "Den Atelier" Luxembourg la date et l'heure prvues initialement. Les tickets dj vendus gardent

Pierre Stockreiser

137

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

leur validit et le prix d'un nouveau ticket ne change pas. Effectuez les modifications correspondantes dans la table.

Pierre Stockreiser

138

Lyce du Nord Wiltz

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

139

Lyce du Nord Wiltz

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:

tblComptes 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;

Pierre Stockreiser

140

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

La clause FROM contient les deux tables impliques dans la jointure. 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 tables 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

141

Lyce du Nord Wiltz

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

Pierre Stockreiser

142

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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;

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.

Pierre Stockreiser

143

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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. Exemples: Soient les 3 tables suivantes:

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

Pierre Stockreiser

144

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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;

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 o 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

145

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.3.2 Auto- jointure


Il est possible de dfinir une jointure d'une table avec elle-mme. Dans ce cas, il faut obligatoirement utiliser des alias. Exemple: Soit la table tblComptes 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 nous semble trange premire vue. Nous allons analyser les tapes d'excution de la requte. 1. Produit cartsien
Co1.idCompte Co1.fiAgence 101 106 112 125 101 106 112 125 101 106 112 125 101 106 112 125 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 Co2.idCompte Co2.fiAgence Co2.fldValeur Co2.fiClient 3 2 3 1 3 2 3 1 3 2 3 1 3 2 3 1 101 101 101 101 106 106 106 106 112 112 112 112 125 125 125 125 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.

Pierre Stockreiser

146

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

2. Slection des enregistrements 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 Co1.fiAgence 101 106 112 125 101 106 112 125 101 106 112 125 101 106 112 125 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 Co2.idCompte Co2.fiAgence Co2.fldValeur Co2.fiClient 3 2 3 1 3 2 3 1 3 2 3 1 3 2 3 1 101 101 101 101 106 106 106 106 112 112 112 112 125 125 125 125 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 Co1.fiAgence 101 106 112 125 12 24 12 30

Co1.fldValeur 20000 48000 9000 5000

Co1.fiClient Co2.idCompte Co2.fiAgence Co2.fldValeur Co2.fiClient 3 2 3 1 112 112 112 112 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

147

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Co1.idCompte Co1.fiAgence 101 106 112 125 12 24 12 30

Co1.fldValeur 20000 48000 9000 5000

Co1.fiClient Co2.idCompte Co2.fiAgence Co2.fldValeur Co2.fiClient 3 2 3 1 112 112 112 112 12 12 12 12 9000 9000 9000 9000 3 3 3 3

Co1.idCompte Co1.fiAgence 101 106 12 24

Co1.fldValeur 20000 48000

Co1.fiClient Co2.idCompte Co2.fiAgence Co2.fldValeur Co2.fiClient 3 2 112 112 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 de celle du 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

148

Lyce du Nord Wiltz

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 La requte imbrique renvoie une seule valeur


Exemple: Soient les trois tables suivantes.

tblComptes 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

149

Lyce du Nord Wiltz

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. Utilisez un des oprateurs =, <>, <, >, <=, >=. 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 Une requte imbrique peut galement tre utilise dans une clause HAVING.

Pierre Stockreiser

150

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exemples: Reprenons les 3 tables tblComptes, tblClients et tblAgences 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

151

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

5. Affichez le numro, le nom et l'avoir total en banque des clients dont l'avoir total est infrieur l'avoir moyen de tous les comptes.
SELECT idClient, fldNom, SUM(fldValeur) AS 'Avoir total' FROM tblComptes, tblClients WHERE fiClient=idClient GROUP BY idClient, fldNom HAVING SUM(fldValeur) < (SELECT AVG(fldValeur) FROM tblComptes);

7.3.3.2 La requte imbrique renvoie un ensemble de valeurs


Exemple: Reprenons les trois tables suivantes

tblComptes 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

152

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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

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

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

153

Lyce du Nord Wiltz

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 (ou HAVING) 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. Utilisez l'oprateur IN. 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: 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. !!! Les requtes imbriques corrles ne figurent actuellement pas au programme de la classe 13CG !!!

Pierre Stockreiser

154

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exemple: Affichez le nom et le prnom des clients ayant au moins un compte avec une valeur de 9000 .
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. 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

155

Lyce du Nord Wiltz

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)

Pierre Stockreiser

156

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Utilisez le mcanisme des jointures afin de rpondre aux questions suivantes. 1. Affichez pour les contrats qui ne couvrent pas l'Italie comme pays de destination, le numro du contrat et le nom de l'agent. En vous basant sur les donnes des tables, indiquez le rsultat de la requte dans la grille.

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 au moins une partie de la priode entre le 14 juillet et le 20 juillet 2005 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. 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 o 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. Au cas o un client a conclu des contrats avec plusieurs agents diffrents, vous devez afficher un groupe pour chaque agent. En vous basant sur les donnes des tables, indiquez le rsultat de la requte dans la grille.

7. En vous basant sur les donnes de l'nonc, 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;

Pierre Stockreiser

157

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

8. Elaborez une liste qui affiche pour chaque agent son nom ainsi que le nombre de contrats par pays de destination. En vous basant sur les donnes des tables, indiquez le rsultat de la requte dans la grille.

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

Pierre Stockreiser

158

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exercice 5: Facturation (Les requtes imbriques)


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

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 de facture, la date de facture ainsi que le nom et prnom du client pour toutes les factures ayant un montant total plus grand que le prix de l'article le plus cher. 6. 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. 7. 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 300 . Exprimez la mme requte sans utiliser les requtes imbriques

Pierre Stockreiser

159

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

8. Affichez le nom, le prnom, l'adresse, le code postal et la localit de tous les clients ayant uniquement achet des articles plus chers que 300 . Proposez une solution alternative en vous servant du mcanisme de la requte imbrique corrle. 9. Affichez le nom, le prnom, l'adresse, le code postal et la localit de tous les clients ayant dj achet pour une somme > 30 par facture. Utilisez au maximum possible les requtes imbriques. 10. 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

160

Lyce du Nord Wiltz

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 'bd' , indiquant que le membre habite sur un boulevard.

Pierre Stockreiser

161

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

4. Affichez toutes les informations de la table tblAuteurs concernant les auteurs ayant une des nationalits suivantes. Nationalit (Pays d'origine) Allemagne Angleterre France Autriche Italie Suisse Russie Code 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. Affichez le numro, le nom et le prnom des membres dont le prt avec la plus grande dure a dur moins longtemps que la dure moyenne d'un prt. Ignorez les prts pour lesquels l'exemplaire emprunt n'a pas encore t retourn la bibliothque. 12. 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. 13. Quels sont les auteurs (Nom et prnom) ayant dj crit un livre ensemble avec l'auteur 'Margaret Gibson' ? 14. Quels sont les auteurs (Nom et prnom) n'ayant pas encore crit un livre ensemble avec l'auteur 'Margaret Gibson' ?

Pierre Stockreiser

162

Lyce du Nord Wiltz

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

163

Lyce du Nord Wiltz

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.

Pierre Stockreiser

164

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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

165

Lyce du Nord Wiltz

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 les socits BORLAND et ensuite COREL. Actuellement, tous les SGBD qui tournent sous une interface graphique du type Windows offrent le systme QBE. Citons 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:

Pierre Stockreiser

166

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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

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:

Pierre Stockreiser

167

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.5 Les contraintes d'intgrit


7.5.1 Dfinition
Une modlisation correcte et cohrente est sans doute une condition ncessaire pour crer une BD fonctionnelle, mais ne vaut pas grande chose lorsque le SGBD utilis pour implmenter la base ne garantit pas l'intgrit de celle-ci lors du travail journalier avec les donnes. Contrairement aux requtes de slection, qui ne modifient pas le contenu d'une base de donnes, les requtes d'insertion, de modification et de suppression peuvent par leur nature endommager l'intgrit des donnes. Pour viter ce cas les SGBD nous offrent le mcanisme de vrification automatique des contraintes d'intgrit. Les contraintes d'intgrit constituent l'ensemble des rgles qui vrifient que les donnes d'une BD: correspondent tout moment aux prmisses dfinies par la modlisation de la base; sont tout moment cohrentes, c'est dire sans perte d'information et sans contradiction. 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.

Afin de mieux pouvoir regrouper les diffrents scnarios qui peuvent se poser nous distinguons gnralement 3 types de contraintes d'intgrit.

7.5.2 Les types de contraintes d'intgrit


7.5.2.1 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. Il sagit simplement de la dfinition-mme de la cl primaire. Exemples de violation de cette contrainte A. L'ajout d'une valeur de cl primaire qui existe dj dans la table. B. La modification d'une valeur de cl primaire vers une valeur qui existe dj dans la table. C. L'ajout d'une valeur indtermine (NULL) pour une cl primaire. D. 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 lors d'une insertion ou modification d'une valeur dans la table.

Pierre Stockreiser

168

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

7.5.2.2 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 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 rfrence par une ou plusieurs valeurs d'une cl trangre. D. La modification d'une cl primaire rfrence par une ou plusieurs valeurs d'une cl trangre. 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. Les oprations A et B sont interdites doffice car elles conduiraient directement une violation des contraintes dintgrit. En ce qui concerne les oprations C et D, il existe des alternatives. I. II. 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 !

III. Affectation d'une valeur par dfaut aux cls trangres concernes par une opration du type C ou D. IV. Affectation d'une valeur indtermine (NULL) aux cls trangres concernes par une opration du type C ou D. En pratique, les mthodes 1 et 2 sont utilises dans la majorit des cas. Pour cette raison nous allons ignorer les mthodes 3 et 4 dans les exercices en classe de 13CG.

7.5.2.3 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

Pierre Stockreiser

169

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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 Le 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. 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. Mthodes pour vrifier cette contrainte d'intgrit dans un SGBD En principe, tout SGBD moderne devrait offrir des moyens pour spcifier les proprits dun champ de table, en tenant compte des contraintes ci-dessus.

7.5.3 Exercices Exercice 1


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

170

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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 ? Par quel moyen est-ce que le SGBD peut vrifier le domaine de valeurs du champ fldQuantit?

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

171

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Exercice 2
Soit la BD suivante.

Pour chaque relation, la vrification de la contrainte d'intgrit rfrentielle est active en mode "Interdiction", l'exception de la relation entre les tables tblMembres et tblPrts o la contrainte est active en mode "Cascade" pour la suppression et la modification. Voici les donnes actuelles de la BD.

Pierre Stockreiser

172

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

Prcisez comment le systme de gestion de bases de donnes ragit aux manipulations suivantes. Indiquez pour chaque cas la contrainte concerne. a) Ajoutez l'auteur suivant 4 Preston Thomas ANG

b) Supprimez l'auteur numro 6.

c) Changez en 1015 le numro du livre 1001.

d) Supprimez l'exemplaire numro 100001.

e) Supprimez l'exemplaire numro 100002.

Pierre Stockreiser

173

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

f) Changez en 3 le numro du prt 5.

g) Changez en 111 le numro du membre 100.

h) Supprimez le membre 103.

i)

Supprimez le membre 102.

Pierre Stockreiser

174

Lyce du Nord Wiltz

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

175

Lyce du Nord Wiltz

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.

Utiliss en groupe, ces boutons Bouton d'options (angl. Option Button ou permettent de choisir une seule valeur parmi plusieurs possibles. Un bouton Radio Button) slectionn signifie que la valeur associe ce bouton est slectionne comme Exemple: 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 Exemple: Le bouton Fminin slectionn prdfinies, qui ne veut dire que le sexe de cet employ est changent pas souvent ou fminin. pas du tout comme par exemple le sexe (masculin/fminin), le rsultat d'un examen (Admin/Ajourn/Ecart) etc. .

Pierre Stockreiser

176

Lyce du Nord Wiltz

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.

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.

Pierre Stockreiser

177

Lyce du Nord Wiltz

Informatique 13CG

Exploitation des bases de donnes relationnelles

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

178

Lyce du Nord Wiltz

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

179

Lyce du Nord Wiltz

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

Pierre Stockreiser

180

Lyce du Nord Wiltz

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

181

Lyce du Nord Wiltz

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 2. Elimination de beaucoup de sources d'erreur. meilleure productivit.

Pierre Stockreiser

182

Lyce du Nord Wiltz

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

183

Lyce du Nord Wiltz

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

184

Lyce du Nord Wiltz

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

185

Lyce du Nord Wiltz

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'entte ) sont stockes dans la dfinition du rapport.

Pierre Stockreiser

186

Lyce du Nord Wiltz

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)

Ces contrles, dont le seul but est Contrles graphiques (angl. Graphical l'amlioration de la prsentation des rapports peuvent tre de types Controls) 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

187

Lyce du Nord Wiltz

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

188

Lyce du Nord Wiltz

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 ?

Pierre Stockreiser

189

Lyce du Nord Wiltz

Informatique 13CG

Protection des donnes

Partie 3 : Protection des donnes

Pierre Stockreiser

190

Lyce du Nord Wiltz

Informatique 13CG

Protection des donnes

10. Scurit des donnes 10.1 Dfinition


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.2 Les 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.

programme de gestion des fichiers sous Windows

Pierre Stockreiser

191

Lyce du Nord Wiltz

Informatique 13CG

Protection des donnes

10.2.2 La protection contre les manipulations malveillantes


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

192

Lyce du Nord Wiltz

Informatique 13CG

Protection des donnes

10.3 Les 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.

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

Pierre Stockreiser

193

Lyce du Nord Wiltz

Informatique 13CG

Protection des donnes

Certains utilisateurs autoriss de la base peuvent tre limits, dans leur accs, quelques tables de celle-ci. 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 login1 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

194

Lyce du Nord Wiltz

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.

Pierre Stockreiser

195

Lyce du Nord Wiltz

Informatique 13CG

Protection des donnes

Dsavantage de la gestion des droits d'accs: 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

Pierre Stockreiser

196

Lyce du Nord Wiltz

Informatique 13CG

Protection des donnes

10.4 Les 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

Pierre Stockreiser

197

Lyce du Nord Wiltz

Informatique 13CG

Protection des donnes

requte 2 ne 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.

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

Pierre Stockreiser

198

Lyce du Nord Wiltz

Informatique 13CG

Protection des donnes

10.4.2.1 Les pertes provoques par des erreurs humaines

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 caus une incohrence de certaines donnes; une panne d'un disque.

Pierre Stockreiser

199

Lyce du Nord Wiltz

Informatique 13CG

Protection des donnes

10.4.3 Les mesures de prvention contre la perte de donnes


10.4.3.1 La sauvegarde des donnes (angl. backup)
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 en train de disparatre 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

200

Lyce du Nord Wiltz

Informatique 13CG

Protection des donnes

Bande magntique Stockage magntique Capacit: p.ex. 120 GB (leve) Lecture & criture rptitive des donnes Vitesse d'accs trs lente

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

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

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

Disque dur externe Stockage magntique Capacit: p.ex. 200GB (leve) Lecture & criture rptitive des donnes Vitesse d'accs rapide

Pierre Stockreiser

201

Lyce du Nord Wiltz

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). Celuici 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

202

Lyce du Nord Wiltz

Informatique 13CG

Annexes

11. Annexes

Pierre Stockreiser

203

Lyce du Nord Wiltz

Informatique 13CG

Annexes

11.1 Bibliographie
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 Christian Soutou "De UML SQL" Edition: Eyrolles ISBN 2-212-11098-7 J.M. Jans "Modlisation conceptuelle des donnes avec le modle des classes UML 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

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

Pierre Stockreiser

204

Lyce du Nord Wiltz

Informatique 13CG

Annexes

[9]

J.L.Viescas "Running Access 2" Edition: Microsoft Press ISBN: 1-55615-592-1 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 "Dossier de l'enseignant" PC Magazin Spezial 5-98 "Kryptographie und Netzwerksicherheit"

[10]

[11]

[12]

[13]

Pierre Stockreiser

205

Lyce du Nord Wiltz

Informatique 13CG

Annexes

11.2 Sites sur Internet


http://w3.restena.lu/proud-online www.pgpi.com www.win-design.com/ www.oracle.com www.microsoft.com http://www.iutc3.unicaen.fr/~moranb/cours/acsi/static2/stat1.h tm

Pierre Stockreiser

206

Lyce du Nord Wiltz

Informatique 13CG

Annexes

11.3 Index
A
Agrgation de composition, 48 Association entre classes, 24 Association rflexive, 47 Association ternaire, 36 Attribut calcul, 34 Attribut d'une classe, 21 attributs (MLD), 57 Auto- jointure, 146

G
groupement de donnes, 184

I
Identifiant d'une classe, 23 Index d'une table, 96 information, 9 informations, 10 Instanciation, 20

B
base de donnes, 72, See BD BD. See base de donnes Bouton de commande, 177 Bouton d'options, 176

J
jointure, 140

L C
Case cocher, 177 champ d'une table d'une base de donnes, 90 Classe, 20 Classe-association, 29 Cl trangre, 95 Cl primaire (base de donnes), 92 cl primaire (MLD), 57 Client/Serveur, 86 condition de jointure, 143 contrainte d'intgrit des tables, 168 contrainte d'intgrit gnrale, 169 contrainte d'intgrit rfrentielle, 169 contrles d'un formulaire, 176 contrles d'un rapport, 187 Contrles graphiques, 187 critres de slection, 104 langage de dfinition de donnes, 67 Langage de modlisation UML, 19 Les requtes imbriques, 149 Liste modifiable, 177

M
MCD. See Modle conceptuel des donnes MLD. See Modle logique des donnes modle conceptuel des donnes, 19 Modle logique des donnes, 55 modle physique des donnes, 65 MONTH(<date>), 109 Mot de passe, 193 MPD. See Modle physique des donnes Multiplicit maximale, 26 Multiplicit minimale, 26 Multiplicits d'une association, 25

D
DATE(), 109 DAY(<date>), 109 Diagramme de classes, 19 donnes, 10 Droits d'accs, 193

N
NULL. See Valeur indtermine

O
Objet, 20 outil de modlisation, 69

E
Etiquette, 176, 187

Q F
QBE, 166 Query By Example. See QBE

Format (proprit), 133 formulaire, 175 Formulaire Colonne Simple, 179 Formulaire Tabulaire, 179

R
rapport, 183 Relations entre tables, 95

Pierre Stockreiser

207

Lyce du Nord Wiltz

Informatique 13CG

Annexes

requte imbrique corrle, 154 requtes, 98 requtes paramtres, 105 rseau. See Rseau informatique rseau informatique, 80 Rle, 47

types de donnes, 90

U
UML. See Langage de modlisation UML

S
Sauvegarde des donnes, 200 sections d'un rapport, 188 scurit des donnes, 191 serveur, 81 SGBD. See systme de gestion de bases de donnes SQL, 100 Structured Query Language. See SQL systme de gestion de bases de donnes, 72 Systmes de Gestion de Bases de Donnes (SGBD), 11 systmes d'information, 8, 9, 10, 11 valeur indtermine, 110

Y
YEAR(<date>), 109

Z
Zone de liste, 177 Zone de texte, 176, 187

T
table (MLD), 57 table d'une base de donnes, 88

Pierre Stockreiser

208

Lyce du Nord Wiltz

You might also like