Vous êtes sur la page 1sur 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 (chapitres 1 4)


PARTIE 2 : Exploitation des bases de donnes relationnelles (chapitres 5 9)
PARTIE 3 : Protection des donnes (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. Analyse des systmes d'information 8
1.1 Introduction 8
1.2 Dfinition de l'information et des systmes d'information 9
1.3 Les donnes, les traitements et les informations 10
1.4 La reprsentation informatique des donnes 11
2. Dmarche de modlisation des donnes 12
2.1 Le groupe d'tude (angl. Project group) 12
2.2 Les tapes 13
2.3 Sources d'information 14
3. Mthode de modlisation des donnes 15
3.1 Dfinition 15
3.2 Pourquoi modliser ? 17
3.3 Le modle conceptuel des donnes (MCD) 19
3.3.1 Dfinition 19
3.3.2 La notion de classe 20
3.3.3 La notion d'attribut 21
3.3.4 La notion d'identifiant 23
3.3.5 La notion d'association 24
3.3.5.1 Dfinition 24
3.3.5.2 Les multiplicits d'une association 25
3.3.5.3 Classe-association 29
3.3.6 Exemple "KaafKaaf" 32
3.3.7 Exemple "Gestion d'cole" 35
3.3.8 Lutilisation dune association ternaire 36
3.3.9 Exercices 39
3.3.10 Cas particuliers du MCD 47
3.3.10.1 Plusieurs associations diffrentes entre deux classes 47
3.3.10.2 Association rflexive et rle 47
3.3.10.3 Agrgation de composition 48
3.3.11 Exercices 50
3.4 Le modle logique des donnes (MLD) 55
3.4.1 Dfinition 55
3.4.2 Rgles de transformation du MCD au MLD 57
3.4.2.1 Transformation des classes 57
3.4.2.2 Transformation des associations binaires du type (x..*) (x..1) 57
3.4.2.3 Transformation des associations binaires du type (x..1) (x..1) 58
3.4.2.4 Transformation des associations binaires du type (x..*) (x..*) 59
3.4.2.5 Transformation des associations ternaires 59
3.4.2.6 Transformation de plusieurs associations entre 2 classes 60
3.4.2.7 Transformation des associations rflexives 60
3.4.2.8 Transformation de l'agrgation de composition 61
3.4.3 Exemple "KaafKaaf" 62
3.4.4 Exercices 63
3.5 Le modle physique des donnes (MPD) 65
3.5.1 Dfinition 65
3.5.2 Passage du MLD au MPD 65
4. Utilisation d'un outil de modlisation 69
4.1 Dfinition 69
4.2 Fonctionnalits 70
5. Les systmes de gestion de bases de donnes 72
5.1 Dfinitions 72
5.2 Un peu d'histoire 74
5.3 Les composants d'une base de donnes relationnelle 76
5.4 Structures physiques et logiques 78
5.5 Les rseaux informatiques 80
5.6 L'approche Client/Serveur 84
5.6.1 La priode des ordinateurs du type "Mainframe" 84
5.6.2 L'approche Client/Serveur 86
6. Les tables (angl. tables) 88
6.1 Dfinition 88
6.2 Les champs d'une table 90
6.3 Cl primaire 92
6.4 Relations entre tables - cl trangre 95
6.5 Index 96
7. Les requtes (angl. queries) 98
7.1 Dfinition 98
7.2 Introduction au langage SQL 100
7.2.1 Gnralits 100
7.2.2 Syntaxe SQL de base 101
7.2.3 Les critres de slection 104
7.2.4 Comparaison un filtre 106
7.2.5 Les oprateurs logiques 107
7.2.6 Valeur zro, chane vide et valeur indtermine (NULL) 110
7.2.7 Comparaison une fourchette de valeurs 112
7.2.8 Comparaison une liste de valeurs 113
7.2.9 Dfinir l'ordre d'une requte de slection 114
7.2.10 Les valeurs calcules 117
7.2.11 Les fonctions d'agrgation 118
7.2.12 Requtes sur les groupes 120
7.2.12.1 La clause GROUP BY 120
7.2.12.2 La clause HAVING 123
7.2.13 Exercices 125
7.3 Les requtes SQL multitable 139
7.3.1 La jointure 140
7.3.1.1 Exemple d'introduction 140
7.3.1.2 Cration d'une jointure 143
7.3.2 Auto- jointure 146
7.3.3 Les requtes imbriques 149
7.3.3.1 La requte imbrique renvoie une seule valeur 149
7.3.3.2 La requte imbrique renvoie un ensemble de valeurs 152
7.3.4 Exercices SQL 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. Les formulaires (angl. forms) 175
8.1 Dfinition 175
8.2 Types de formulaires 179
8.3 Cration d'un formulaire 181
9. Les rapports (angl. reports) 183
9.1 Dfinition 183
9.2 Cration d'un rapport 189
10. Scurit des donnes 191
10.1 Dfinition 191
10.2 Les manipulations malveillantes 191
10.2.1 Dfinition 191
10.2.2 La protection contre les manipulations malveillantes 192
10.3 Les accs non autoriss 193
10.3.1 Dfinition 193
10.3.2 La protection contre les accs non autoriss 193
10.3.2.1 Mot de passe 193
10.3.2.2 Droits d'accs aux objets d'une BD 193
10.3.2.3 Scurisation du systme d'exploitation 196
10.4 Les incohrences et pertes de donnes accidentelles 197
10.4.1 Dfinition 197
10.4.2 La protection contre les incohrences et pertes de donnes accidentelles 198
10.4.2.1 Les pertes provoques par des erreurs humaines 199
10.4.2.2 Les pertes des donnes en mmoire interne (RAM) 199
10.4.2.3 Les pertes des donnes stockes sur disque dur 199
10.4.3 Les mesures de prvention contre la perte de donnes 200
10.4.3.1 La sauvegarde des donnes (angl. backup) 200
10.4.3.2 La rplication du disque dur (angl. mirroring) 202
10.4.3.3 Rplication du serveur (angl. Backup server) 202
10.4.3.4 Les systmes RAID-5 202
11. Annexes 203
11.1 Bibliographie 204
11.2 Sites sur Internet 206
11.3 Index 207
Informatique 13CG Modlisation d'un systme d'information

Partie 1 : Modlisation d'un systme


d'information

Pierre Stockreiser 7 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 8 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 9 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.

1
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 du systme d'information actuel (Rapports,
Bons de commandes, Factures ).

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 Modle Cylindre Poids


BMW 525i 2500 1360
Ford Orion 1800 1080 Un enregistrement
BMW 320i 2000 1200
... ... ... ...

A laide dun exemple prcis, nous allons voir pourquoi il est important de bien rflchir sur
le nombre de tables dune base de donnes et sur la structure de chaque table.

Il sagit de crer une base de donnes pour une caisse de maladie. On veut stocker tous les
employs-membres de la caisse avec leur socit-employeur. Afin de faciliter lexercice, nous
allons uniquement stocker les informations suivantes pour chaque employ:

le numro de lemploy
le nom de lemploy
le prnom de lemploy
le numro de son entreprise
le nom de son entreprise
la localit o se trouve lentreprise

A premire vue, la solution suivante simpose :

NoEmp Nom_Emp Prnom_Emp NoEntr Nom_Entr Localit


102 Boesch Emil 1 Schaffgaer S. r.l. Differdange
103 Midd Erny 2 Gudjr Colmar Berg
104 Witz Evelyne 1 Schaffgaer S. r.l. Differdange
105 Kuhl Menn 1 Schaffgaer S. r.l. Differdange
106 Super Jhemp 2 Gudjr Colmar Berg
... ... ... ... ... ...

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

1
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 ci-
dessus.

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.

1
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 Forme abrge: 1 (utilise dans ce cours logiciel Win'Design 5.8.0)
0..* Forme abrge: *
1..*

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.

Rappel !!!
Une association peut
Attention implicitement tre
Un ou plusieurs des attributs d'une classe-association peuvent identifie par les
mme devenir une partie de l'identifiant de l'association. Les identifiants des classes
attributs concerns sont nots de la mme faon que les auxquelles elle est lie.
identifiants des autres classes.

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 classe-
association. 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. Facture No. 12345


12 avenue Goss
L-9876 Luxusbuerg

Luxusbuerg, le 31.08.2004

Client
Nom: Weber
Prnom: Jos
Adresse: 23 rue Principale
CodePostal: L-7654
Localit: Grevenmacher

Montant de la facture: 50

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. Facture No. 12345
12 avenue Goss
L-9876 Luxusbuerg

Luxusbuerg, le 31.08.2004

Client
Nom: Weber
Prnom: Jos
Adresse: 23 rue Principale
CodePostal: L-7654
Localit: Grevenmacher

NoArticle Libell PrixUnitaire Quantit Prix payer


234 Marteau 12 1 12
566 Tournevis 6 3 18
023 Pince tuyaux 20 1 20

Montant total de la facture: 50

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: _________________ Prnom: _____________


Adresse: _________________ CP: _____________
Localit: _________________ No. Tlphone: _____________

Votre commande :

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

Numro ISBN Titre


1
2
3
4
5

Cher membre

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 Sapeur

Echelle Magirus-Deutz Emilio Pegaso


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 SEJOUR
No Matricule: No Sjour:
Nom: Date Arrive:
Prnom: Date Dpart:
Adresse: Frais charge du patient:
Code Postal: No Chambre:
Localit: Etage:
Caisse de maladie: Classe:

INTERVENTION(S):
Code Description: Date: Code Mdecin: Nom: Prnom:
intervention:

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 Heure Code Aroport Nom Aroport Ville Pays


Dpart 24/08/98 7h45 FIN Findel Lux Lux
Arrive 24/08/98 9h00 LHR Heathrow Lon UK

Avion
No Marque Type Porte (km) Capacit Passagers
23 Boeing 737-400 3810 147

Commandant
No Nom Prnom Date de naissance Brevet
726 Weber Jos 13/06/65 PP-IFR/EP/DA

Co-pilote
No Nom Prnom Date de naissance Brevet
813 Meier Emil 23/04/73 PP-IFR

Personnel de cabine
No Nom Prnom
1072 Feller Nathalie
1014 Pinto Tania
1103 Weis 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 Situation Description


Texas Nord Imitation "Kloondike-City" avec Saloon, Sheriff Office . . .
Chine Est Chine traditionnelle avec temple, palais . . .
Hawa Sud-est Atmosphre tropicale avec palmiers, mer artificielle . . .
Camelot Sud Ambiance mdivale autour d'un magnifique chteau ...
Liliput Centre 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 Description Capacit Prix par nuit


A Bain ou douche / WC sp. / TV 3 30
B Bain et douche / WC sp. / TV / Terrasse 3 38
C Bain ou douche / WC sp. / TV 5 50
D Bain et douche / WC sp. / TV / Terrasse 5 58
E Bain et douche / WC sp. / TV / Terrasse 7 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 Description Prix (par personne)


par jour
01 Literie 3
02 Livraison domicile du petit djeuner 8
03 Livraison domicile du quotidien 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 Rservation
Numro: 340 No: 589
Nom: Weber Date d'arrive: 03/09/98
Prnom: Jos Date de dpart: 07/09/98
Adresse: 23, rue Principale Nombre de personnes: 4
Code postal: L-8765 Bungalow
Localit: Grevenmacher Zone: Liliput
Pays: Luxembourg Numro: 19
Catgorie: Bain et douche / WC sp. / TV /
No. Passeport: 87699
Terrasse
No. Tlphone: (Lux)+348845 Capacit: 5

Supplments
Code supplment Description
01 Literie
03 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:
Lettres
Classe "Entreprise" Table "Entreprise"
majuscules

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

Rappel: Les
Afin de reprsenter l'association, on duplique la cl primaire multiplicits d'une classe
de la table base sur la classe multiplicit (x..*) dans la table sont inscrites
base sur la classe multiplicit (x..1). Cet attribut est appel cl l'extrmit oppose de
trangre. La cl trangre est crite en couleur. l'association.
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:

L'attribut NOAUTEUR_{ID} qui est cl primaire de la table AUTEUR, devient cl trangre


dans la table LIVRE.

1
x peut prendre les valeurs 0 ou 1
2
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 de CODEPROF_{ID},


CODEMATIRE_{ID}, NOM_{ID} et ANNE_{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 Gnration d'une base de donnes
REM SQL Gnrique (SQL 2)
REM (6/9/2004 17:03:24)
REM -----------------------------------------------------------------------------
REM Nom de la base : Entreprises
REM Projet :
REM Auteur : Pierre Stockreiser
REM Date de dernire modification : 6/9/2004 17:03:13
REM -----------------------------------------------------------------------------
REM -----------------------------------------------------------------------------
REM TABLE : tblEntreprises
REM -----------------------------------------------------------------------------

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
plusieurs commandes dans un langage support par le SGBD cible.
2
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 fichier MS-Word


.xls 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 Composant logique de MS-Word


Feuille de calcul Composant logique de MS-Excel
Classeur 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: Chaque document (composant logique) correspond en principe un


fichier .doc (structure physique).
MS-Excel: 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.

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

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
par plate-forme, on entend l'ordinateur sur lequel est excut le SGBD
2
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: Oracle, Sybase, IBM-Informix, MS-SQL-Server, MySQL


Ct client: 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 Antonio Da Costa Emil Feller

DateNaissance: 22.08.70 DateNaissance: 07.12.74 DateNaissance: 28.03.67

Salaire: 2200 Salaire: 1750 Salaire: 2150

Service: Comptabilit Service: Informatique Service: Expdition

. . .

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

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

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

1
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 Modle Cylindre Poids


BMW 525i 2500 1360
Ford Orion 1800 1080
BMW 320i 2000 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 Description


Date/Heure Date et heure
Valeur boolenne Seulement les 2 valeurs Oui/Non (Yes/No) sont possibles
Texte Chanes de caractres
Numrique Nombres entiers ou dcimaux
Mmo 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:

1
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 fldMarque fldModle fldCylindre fldPoids


1 BMW 525i 2500 1360
2 Ford Orion 1800 1080
3 BMW 320i 2000 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 Type de Description
cl primaire champ donnes
(Cochez la
case si OUI )

Pierre Stockreiser 93 Lyce du Nord Wiltz


Informatique 13CG Exploitation des bases de donnes relationnelles

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

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

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

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 fldMarque fldModle fldCylindre fldPoids


1 BMW 525i 2500 1360
2 Ford Orion 1800 1080
3 BMW 320i 2000 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 fldModle
BMW 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. Requtes de slection.
2. Requtes d'insertion.
3. Requtes de modification.
4. 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>;

[ ] veut dire que la liste des


2. Requtes d'insertion. 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 25.3.1997

INSERT INTO tblEmploys


VALUES (20, 'Angela', 'Portante', 'ITA', 27, 'F', 'Comptabilit',
#3/25/97#);

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, fldNom, fldNationalit, fldAge, fldSexe,


fldService, fldEntreService
FROM tblEmploys;

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.

Exemple: Pour rechercher des personnes dont le nom est 'SCHMITZ' ou 'SCHMITT' ou
'SCHMIT' etc. on dfinit par exemple le filtre suivant : 'SCHMI%'

Exemple: Le filtre 'BL__' slectionne par exemple les valeurs 'BLEU' ou 'BLUE' mais pas
'BLANC'

Les filtres sont utiliss ensemble avec le mot rserv LIKE. Voici la syntaxe:
...
WHERE <Nom du champ> LIKE <Filtre>

Exemples:

1. Afficher le nom et le prnom des employs dont le prnom contient un trait d'union
(p.ex. Jean-Jacques)

SELECT fldNom, fldPrnom


FROM tblEmploys
WHERE fldPrnom LIKE '%-%';

2. Afficher le nom, le prnom et l'ge des employs dont le nom commence par 'W', est
compos de 5 lettres et se termine par 'R'

SELECT fldNom, fldPrnom, fldAge


FROM tblEmploys
WHERE fldNom LIKE 'W___R';

Remarque

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

SQL MS-Access
Squence de 0 ou plusieurs caractres % *
Un seul caractre quelconque _ ?

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. Dterminer le rsultat logique ('Vrai','Faux') des comparaisons (=, <, > etc.)
2. Effectuer les ngations (NOT)
3. Effectuer les AND
4. 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:
DATE() retourne la date actuelle
YEAR(<date>) retourne l'anne d'une date en format XXXX
MONTH(<date>) retourne le mois d'une date (1-12)
DAY(<date>) 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.

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 Champ


FROM tblLivres;
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 (*) Dtermine le nombre d'enregistrements du rsultat de la


requte. Tient compte de tous les enregistrements, y inclus
ceux contenant des valeurs NULL
COUNT (Nom d'un champ) Dtermine le nombre des enregistrements pour lesquels le
champ indiqu ne contient pas la valeur NULL
SUM (Nom d'un champ) Calcule pour tous les enregistrements slectionns, la
somme des valeurs du champ indiqu, pourvu que cette
valeur soit diffrente de NULL.
AVG (Nom d'un champ) Calcule pour tous les enregistrements slectionns, la
moyenne des valeurs du champ indiqu, pourvu que cette
valeur soit diffrente de NULL.
MAX (Nom d'un champ) Dtermine pour tous les enregistrements slectionns, la
plus grande des valeurs du champ indiqu, pourvu que
cette valeur soit diffrente de NULL.
MIN (Nom d'un champ) 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 SELECT DISTINCT fldLangue


FROM tblLivres FROM tblLivres;
GROUP BY fldLangue;

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 Type de donnes


idProduit Number (Long Integer) idProduit est la
fldLibell Text [20] cl primaire
fldCatgorie Text [20]
fldPrix Currency
fldQuantitDisponible Number (Long Integer)

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 fldLibell fldCatgorie fldPrix fldQuantitDisp.


16 Tirlititi Sucre 13,80 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 Type de donnes Description


idClient Numrique Numro du client
fldNom Texte Nom du client
fldPrnom Texte Prnom du client
fldSexe Texte Sexe du client. Valeurs possibles: 'F' et 'M'
fldAdresse Texte Rue et numro
fldCP Texte Code postal
fldLocalit Texte Localit
fldNoTel Texte Numro de tlphone
fldNoFax Texte Numro de fax
fldDateNaiss Date/Heure Date de naissance du client
fldBonClient Boolen (Logique) 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 Heinen Edmond M 12, Am Gaard

2021 Ettelbruck 217070 217071 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 Type de donnes Description


idConcert Numrique Numro d'identification (Cl primaire)
fldArtiste Texte Artiste ou groupe qui donne le concert
fldDate Date/Heure Date du concert
fldDbut Date/Heure Dbut du concert (Heure)
fldLocalit Texte Localit du concert
fldLieu Texte Lieu du concert
fldTypeLieu Texte (Centre Culturel , Hall Sportif , Club etc.)
fldPrixTicket Numrique Prix d'un ticket
fldPlaces Numrique Total des places disponibles pour le concert
fldTicketsVendus Numrique 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. Artiste Date Dbut Localit Lieu Type Lieu Places


112 Oasis 12/09/2005 20:00 Weiswampach Fte sous tente Autre 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 fldValeur fiClient


101 20000 3
106 48000 2
112 9000 3
125 5000 1

tblClients

idClient fldNom fldPrnom


1 Pegaso Emilio
2 Weber Jos
3 Muller Ketty

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


101 20000 Muller
106 48000 Weber
112 9000 Muller
125 5000 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 fldValeur fiClient idClient fldNom fldPrnom


101 20000 3 1 Pegaso Emilio
101 20000 3 2 Weber Jos
101 20000 3 3 Muller Ketty
106 48000 2 1 Pegaso Emilio
106 48000 2 2 Weber Jos
106 48000 2 3 Muller Ketty
112 9000 3 1 Pegaso Emilio
112 9000 3 2 Weber Jos
112 9000 3 3 Muller Ketty
125 5000 1 1 Pegaso Emilio
125 5000 1 2 Weber Jos
125 5000 1 3 Muller Ketty

tblComptes tblClients
2. Le produit cartsien contient un bon nombre d'enregistrements, qui ne donnent pas de
sens logique.

idCompte fldValeur fiClient idClient fldNom fldprnom


101 20000 3 1 Pegaso Emilio
101 20000 3 2 Weber Jos
101 20000 3 3 Muller Ketty
106 48000 2 1 Pegaso Emilio
106 48000 2 2 Weber Jos
106 48000 2 3 Muller Ketty
112 9000 3 1 Pegaso Emilio
112 9000 3 2 Weber Jos
112 9000 3 3 Muller Ketty
125 5000 1 1 Pegaso Emilio
125 5000 1 2 Weber Jos
125 5000 1 3 Muller 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 fldValeur fiClient idClient fldNom fldprnom


101 20000 3 3 Muller Ketty
106 48000 2 2 Weber Jos
112 9000 3 3 Muller Ketty
125 5000 1 1 Pegaso 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 fldValeur fldNom


101 20000 Muller
106 48000 Weber
112 9000 Muller
125 5000 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 fiAgence fldValeur fiClient


101 12 20000 3
106 24 48000 2
112 12 9000 3
125 30 5000 1

Pierre Stockreiser 144 Lyce du Nord Wiltz


Informatique 13CG Exploitation des bases de donnes relationnelles

tblClients

idClient fldNom fldPrnom fldAdresse fldCP fldLocalit


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

tblAgences

idAgence fldAdresse fldCP fldLocalit


12 15, bvd Royal 5377 Luxembourg
24 67, rue de l'Alzette 8765 Esch-s-Alzette
30 2, Grand Rue 6678 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 fiAgence fldValeur fiClient


101 12 20000 3
106 24 48000 2
112 12 9000 3
125 30 5000 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 Co1.fldValeur Co1.fiClient Co2.idCompte Co2.fiAgence Co2.fldValeur Co2.fiClient


101 12 20000 3 101 12 20000 3
106 24 48000 2 101 12 20000 3
112 12 9000 3 101 12 20000 3
125 30 5000 1 101 12 20000 3
101 12 20000 3 106 24 48000 2
106 24 48000 2 106 24 48000 2
112 12 9000 3 106 24 48000 2
125 30 5000 1 106 24 48000 2
101 12 20000 3 112 12 9000 3
106 24 48000 2 112 12 9000 3
112 12 9000 3 112 12 9000 3
125 30 5000 1 112 12 9000 3
101 12 20000 3 125 30 5000 1
106 24 48000 2 125 30 5000 1
112 12 9000 3 125 30 5000 1
125 30 5000 1 125 30 5000 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 Co1.fldValeur Co1.fiClient Co2.idCompte Co2.fiAgence Co2.fldValeur Co2.fiClient


101 12 20000 3 101 12 20000 3
106 24 48000 2 101 12 20000 3
112 12 9000 3 101 12 20000 3
125 30 5000 1 101 12 20000 3
101 12 20000 3 106 24 48000 2
106 24 48000 2 106 24 48000 2
112 12 9000 3 106 24 48000 2
125 30 5000 1 106 24 48000 2
101 12 20000 3 112 12 9000 3
106 24 48000 2 112 12 9000 3
112 12 9000 3 112 12 9000 3
125 30 5000 1 112 12 9000 3
101 12 20000 3 125 30 5000 1
106 24 48000 2 125 30 5000 1
112 12 9000 3 125 30 5000 1
125 30 5000 1 125 30 5000 1

Co1.idCompte Co1.fiAgence Co1.fldValeur Co1.fiClient Co2.idCompte Co2.fiAgence Co2.fldValeur Co2.fiClient


101 12 20000 3 112 12 9000 3
106 24 48000 2 112 12 9000 3
112 12 9000 3 112 12 9000 3
125 30 5000 1 112 12 9000 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 Co1.fldValeur Co1.fiClient Co2.idCompte Co2.fiAgence Co2.fldValeur Co2.fiClient


101 12 20000 3 112 12 9000 3
106 24 48000 2 112 12 9000 3
112 12 9000 3 112 12 9000 3
125 30 5000 1 112 12 9000 3

Co1.idCompte Co1.fiAgence Co1.fldValeur Co1.fiClient Co2.idCompte Co2.fiAgence Co2.fldValeur Co2.fiClient


101 12 20000 3 112 12 9000 3
106 24 48000 2 112 12 9000 3

3. Affichage des champs spcifis

La dernire tape consiste dans l'affichage des champs indiqus dans la clause SELECT

Co1.idCompte Co1.fldValeur
101 20000
106 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 fiAgence fldValeur fiClient


101 12 20000 3
106 24 48000 2
112 12 9000 3
125 30 5000 1

tblClients

idClient fldNom fldPrnom fldAdresse fldCP fldLocalit


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

Pierre Stockreiser 149 Lyce du Nord Wiltz


Informatique 13CG Exploitation des bases de donnes relationnelles

tblAgences

idAgence fldAdresse fldCP fldLocalit


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

La requte:

SELECT fldNom, fldPrnom


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

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 fiAgence fldValeur fiClient


101 12 20000 3
106 24 48000 2
112 12 9000 3
125 30 5000 1

tblClients

idClient fldNom fldPrnom fldAdresse fldCP fldLocalit


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

Pierre Stockreiser 152 Lyce du Nord Wiltz


Informatique 13CG Exploitation des bases de donnes relationnelles

tblAgences

idAgence fldAdresse fldCP fldLocalit


12 15, bvd Royal 5377 Luxembourg
24 67, rue de l'Alzette 8765 Esch-s-Alzette
30 2, Grand Rue 6678 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 fldValeur
101 20000
112 9000
125 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 sous-
requte, 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) Code


Allemagne ALL
Angleterre ANG
France FRA
Autriche AUT
Italie ITA
Suisse SUI
Russie 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. Interdiction des oprations C et D.
II. 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 Description Utilisation


Etiquette Affiche du texte fixe. Ce type de contrle n'est
(angl. Label) pas li un champ d'une
BD. Il sert uniquement
Exemple: fournir des informations
l'utilisateur.

Zone de texte Contient des donnes de la BD. Ce Peut reprsenter des


(angl. Text Box) contrle affiche par exemple la valeur champs de tout type.
d'un champ pour l'enregistrement actuel.
Exemple:

Bouton d'options Utiliss en groupe, ces boutons Ce contrle reprsente


(angl. Option Button ou permettent de choisir une seule valeur de prfrence des
Radio Button) parmi plusieurs possibles. Un bouton champs de type
slectionn signifie que la valeur associe numrique, texte ou
Exemple: ce bouton est slectionne comme date.
valeur pour le champ correspondant au On utilise des groupes
groupe de boutons. de boutons d'options
Les options dans un groupe reprsentent pour reprsenter des
donc les valeurs possibles pour UN champs pouvant
champ donn de la table. 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 Utilis pour afficher le contenu d'un Reprsente des champs
(angl. Check Box) champ de type Oui/Non (Yes/No). La valeurs logiques
diffrence par rapport aux boutons (Oui/Non).
Exemple: 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).
Zone de liste Permet d'afficher une liste de valeurs Ce contrle reprsente
(angl. List Box) parmi lesquelles l'utilisateur peut en de prfrence des
choisir une. champs de type
Exemple: On utilise des zones de liste pour numrique, texte ou
reprsenter des champs qui contiennent date.
plusieurs valeurs possibles. Lorsque la On utilise des zones de
nature des donnes fait que des nouvelles liste pour reprsenter
options deviennent indispensables, il des champs pouvant
suffit de les ajouter dans la liste et chaque contenir beaucoup de
utilisateur pourra les slectionner. valeurs qui ne changent
pas souvent ou pas du
tout comme par exemple
les noms des diffrents
pays de l'Europe.

Liste modifiable Combinaison entre une zone de liste et Ce contrle reprsente


(angl. Combo Box) une zone de texte. L'utilisateur peut de prfrence des
slectionner une valeur de la liste ou champs de type
Exemple: entrer un texte de son choix. 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 Excuter une ou plusieurs commandes Ce type de contrle n'est


(angl. Command Button) systmes respectivement lancer des pas li un champ d'une
modules de programmes crs par BD.
Exemples: 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 meilleure productivit.
2. Elimination de beaucoup de sources d'erreur.

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'en-
tte ) 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 Description Exemple


Zone de texte Affiche les donnes de la BD, ainsi
(angl. Text Box) 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.

Etiquette Affiche du texte fixe.


(angl. Label)

Contrles graphiques Ces contrles, dont le seul but est


(angl. Graphical l'amlioration de la prsentation
Controls) des rapports peuvent tre de types
diffrents, comme par exemple des
lignes , des lments graphiques
lmentaires tels que carrs ou
rectangles, mais galement des
images importes.

Nanmoins, beaucoup de SGBD prvoient galement l'utilisation d'autres contrles, comme


par exemple les boutons d'options ou les cases cocher.

Convention des noms:

Les noms des rapports sont prcds du prfixe rpt (angl.: report)

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

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

1
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
nom utilisateur & mot de passe l'aide duquel un utilisateur peut s'identifier au systme
2
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.

1
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 Utilisateur 2
UPDATE Employs
UPDATE Employs
SET fldSalaire=fldSalaire*1.1
SET fldDpartement="CPT"
WHERE fldDpartement="Comptabilit"
WHERE fldDpartement="Comptabilit";
AND fldDateNaiss<#1/1/70#;

Tous les employs du service comptabilit ns


Nouvelle codification pour le service de
avant le 1/1/70 , subissent une hausse de salaire
comptabilit.
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.

1
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 Caractristiques
Disquette
Stockage magntique en train de disparatre
Capacit1: 720KB/1.4MB (trs faible)
Lecture & criture rptitive des donnes
Vitesse d'accs assez lente

1
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). Celui-
ci doit donc s'assurer que les informations sur les diffrents disques soient jour en
permanence, de faon ce que l'on puisse continuer travailler en cas de panne d'un disque.

10.4.3.3 Rplication du serveur (angl. Backup server)

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

10.4.3.4 Les systmes RAID-5

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

Pierre Stockreiser 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
[1]
Edition: Sybex
ISBN: 2-7361-2209-7

P.A.Goupille / J.M.Rousse
"Analyse informatique"
[2]
Edition: Masson
ISBN 2-225-84167-5

Christian Soutou
"De UML SQL"
[3]
Edition: Eyrolles
ISBN 2-212-11098-7

J.M. Jans
[4]
"Modlisation conceptuelle des donnes avec le modle des classes UML

S.Roman
"Bases de donnes MS-Access / Conception et programmation"
[5]
Edition: O'Reilly
ISBN: 2-84177-054-0

H.F.Korth / A.Siberschatz
"Systmes de gestion des bases de donnes"
[6]
Edition: McGraw-Hill
ISBN: 2-7042-1170-1

P.Bilke
"Start mit Datenbanken und SQL"
[7]
Edition: KnowWare
ISBN: 3-931666-19-4

N.Boudjlida
"Bases de donnes et systmes d'information"
[8]
Support de cours
Universit de Nancy 1 / Facult des Sciences / Dpartement informatique

Pierre Stockreiser 204 Lyce du Nord Wiltz


Informatique 13CG Annexes

J.L.Viescas
"Running Access 2"
[9]
Edition: Microsoft Press
ISBN: 1-55615-592-1

Br / Bauder
"Microsoft Access 2"
[10]
Edition: Micro Application
ISBN: 2-7429-0239-2

K.Getz / P.Litwin / G.Reddick


"Access 2 Developer's Handbook"
[11]
Edition: Sybex
ISBN: 0-7821-1327-3

CNPI
[12]
"Dossier de l'enseignant"

PC Magazin Spezial 5-98


[13]
"Kryptographie und Netzwerksicherheit"

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 G
Agrgation de composition, 48 groupement de donnes, 184
Association entre classes, 24
Association rflexive, 47
Association ternaire, 36 I
Attribut calcul, 34
Attribut d'une classe, 21 Identifiant d'une classe, 23
attributs (MLD), 57 Index d'une table, 96
Auto- jointure, 146 information, 9
informations, 10
Instanciation, 20
B
base de donnes, 72, See BD J
BD. See base de donnes
Bouton de commande, 177 jointure, 140
Bouton d'options, 176
L
C
langage de dfinition de donnes, 67
Case cocher, 177 Langage de modlisation UML, 19
champ d'une table d'une base de donnes, 90 Les requtes imbriques, 149
Classe, 20 Liste modifiable, 177
Classe-association, 29
Cl trangre, 95
M
Cl primaire (base de donnes), 92
cl primaire (MLD), 57
MCD. See Modle conceptuel des donnes
Client/Serveur, 86
MLD. See Modle logique des donnes
condition de jointure, 143
modle conceptuel des donnes, 19
contrainte d'intgrit des tables, 168
Modle logique des donnes, 55
contrainte d'intgrit gnrale, 169
modle physique des donnes, 65
contrainte d'intgrit rfrentielle, 169
MONTH(<date>), 109
contrles d'un formulaire, 176
Mot de passe, 193
contrles d'un rapport, 187
MPD. See Modle physique des donnes
Contrles graphiques, 187
Multiplicit maximale, 26
critres de slection, 104
Multiplicit minimale, 26
Multiplicits d'une association, 25
D
N
DATE(), 109
DAY(<date>), 109
NULL. See Valeur indtermine
Diagramme de classes, 19
donnes, 10
Droits d'accs, 193 O
Objet, 20
E outil de modlisation, 69
Etiquette, 176, 187
Q
F QBE, 166
Query By Example. See QBE
Format (proprit), 133
formulaire, 175
Formulaire Colonne Simple, 179 R
Formulaire Tabulaire, 179
rapport, 183
Relations entre tables, 95

Pierre Stockreiser 207 Lyce du Nord Wiltz


Informatique 13CG Annexes

requte imbrique corrle, 154 types de donnes, 90


requtes, 98
requtes paramtres, 105
rseau. See Rseau informatique U
rseau informatique, 80
Rle, 47 UML. See Langage de modlisation UML

S V

Sauvegarde des donnes, 200 valeur indtermine, 110


sections d'un rapport, 188
scurit des donnes, 191
Y
serveur, 81
SGBD. See systme de gestion de bases de donnes
YEAR(<date>), 109
SQL, 100
Structured Query Language. See SQL
systme de gestion de bases de donnes, 72 Z
Systmes de Gestion de Bases de Donnes (SGBD),
11 Zone de liste, 177
systmes d'information, 8, 9, 10, 11 Zone de texte, 176, 187

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

Pierre Stockreiser 208 Lyce du Nord Wiltz

Vous aimerez peut-être aussi