Académique Documents
Professionnel Documents
Culture Documents
Cours13CGVersion3 1ManuelEleve PDF
Cours13CGVersion3 1ManuelEleve PDF
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.
Je remercie galement les personnes suivantes pour leur support respectivement leur
influence pendant le travail de recherche et de rdaction.
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.
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
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.
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.
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.
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. .
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.
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.
Informations Informations
Systme
d'information
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.
Exemples deSGBD:
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 reprsentant de la direction.
2. Cration d'une srie de modles qui permettent de reprsenter tous les aspects importants
Pour les projets qui se basent sur un systme dj partiellement informatis s'ajoute:
L'tude de l'application informatique existante.
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:
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:
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:
Voici donc les 4 tapes ncessaires pour traduire un systme d'information naturel en une base
de donnes:
Analyse
MCD
MLD
MPD
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.
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
1
voir cours de la classe 12CG
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 ?
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
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.
1
Dans la littrature on trouve galement la notion entit pour dsigner une classe.
Un attribut est unique dans un MCD et ne peut ainsi pas tre rattach plusieurs
classes diffrentes.
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.
L'attribut Nom prend p.ex. les valeurs "Meier", "Muller" et "Weber" dans les 3 objets ci-
dessus.
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
Exercice
3.3.5.1 Dfinition
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.
Exemple 1:
Se lit: Une commande est passe au minimum par un et au maximum par un client
Exemple 2:
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.
Exemple 4:
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.
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:
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.
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.
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:
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.
PARTIE 1
La socit "KaafKaaf" dsire informatiser son systme de facturation. Les factures devraient
se prsenter de la faon suivante:
Luxusbuerg, le 31.08.2004
Client
Nom: Weber
Prnom: Jos
Adresse: 23 rue Principale
CodePostal: L-7654
Localit: Grevenmacher
Montant de la facture: 50
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.
PARTIE 2
Luxusbuerg, le 31.08.2004
Client
Nom: Weber
Prnom: Jos
Adresse: 23 rue Principale
CodePostal: L-7654
Localit: Grevenmacher
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.
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.
PARTIE 1
Dans une cole, on veut informatiser le systme d'information qui gre les classes.
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.
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 :
Exercice
Essayez de montrer les limites/dfauts dun MCD qui reprsente lnonc de lexemple
prcdent en utilisant uniquement des associations binaires.
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 .
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.
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.
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.
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:
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 ?
Exercice 2
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.
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
Votre commande :
Indiquez s.v.p. pour chaque livre le numro ISBN et le titre (voir catalogue).
Cher membre
Les livres commands vous seront envoys le plus vite possible. Une facture vous parviendra
aprs livraison complte.
Exercice 5
PARTIE 1
Voici le rsultat de l'analyse prliminaire mene auprs des responsables de la brigade (p.ex.
le commandant, le sous-commandant )
Travail raliser:
PARTIE 2
Travail raliser:
Vhicule Sapeur
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.
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)
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.
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.
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.
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.
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.
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.
Exercice 2
Une socit arienne utilise prsent les fiches suivantes pour la gestion des ressources.
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.
Exercice 3
Aprs plusieurs runions avec les responsables de la gestion du parc, vous avez collectionn
les informations suivantes.
Pour l'ouverture du parc, les zones suivantes sont prtes accueillir des visiteurs.
Les bungalows sont parfaitement intgrs dans l'atmosphre correspondante de leur zone.
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.
Lors de la rservation d'un bungalow, le client a le choix entre les supplments suivants.
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
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.
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.
MCD
MLD
Exercice
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 ?
Nous allons dfinir les rgles de transformation pour le passage du MCD au MLD, en
respectant les diffrents cas qui se posent.
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
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:
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)
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:
Exemple:
Exemple:
ou
Soit on migre la cl primaire de la table ENTREPRISE dans la table SALARIE, soit on fait
l'inverse.
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:
Exemple:
Exemple:
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.
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.
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}.
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.
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
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.
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 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.
Pour ce faire, la plupart des SGBD actuellement sur le march nous offrent 2 possibilits.
Exemple:
Dfinition de la table des employs avec le champ idEmploy tant dfini comme cl
primaire.
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.
Exemple:
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 -----------------------------------------------------------------------------
REM -----------------------------------------------------------------------------
REM INDEX DE LA TABLE tblEntreprises
REM -----------------------------------------------------------------------------
REM -----------------------------------------------------------------------------
REM TABLE : tblEmployes
REM -----------------------------------------------------------------------------
REM -----------------------------------------------------------------------------
REM INDEX DE LA TABLE tblEmployes
REM -----------------------------------------------------------------------------
REM -----------------------------------------------------------------------------
REM CREATION DES REFERENCES DE TABLE
REM -----------------------------------------------------------------------------
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.
4.1 Dfinition
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.
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.
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 utilisateur utilise un SGBD pour accder aux donnes d'une base de donnes.
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.
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:
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)".
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
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.
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.
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.
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.
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.
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
Quelle est la relation entre une structure logique et sa structure physique correspondante ?
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.
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
Serveur ddi
" 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.
" 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.
Rseau public
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.
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".
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.
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.
DB2 de IBM
RDB de DEC
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.
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)
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.
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 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
... ... ... ... ...
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).
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.
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.
Voici, titre d'exemple, une table qui reprsente les taxis dans une BD:
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:
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".
Les noms des champs sont prcds du prfixe fld (angl.: field).
Par exemple: fldMarque, fldModle
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
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 !
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.
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.
1
pour une cl primaire compose de plusieurs champs, la combinaison des valeurs doit tre unique
Cl primaire
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 )
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 )
Exemple:
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.
6.5 Index
Une des utilisations frquentes des tables consiste dans la recherche et le tri des
enregistrements.
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.
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.
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 .
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:
Quelles sont les marques et modles des voitures ayant une cylindre suprieure 2000 ?
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.
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.
1. Requtes de slection.
2. Requtes d'insertion.
3. Requtes de modification.
4. Requtes de suppression.
Exercice
de slection :
d'insertion :
de modification :
de suppression :
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.
1. Requtes de slection.
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.
4. Requtes de suppression.
Soit une table des employs d'une entreprise avec la structure suivante:
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#
SELECT fldNationalit
FROM tblEmploys;
ou
SELECT *
FROM tblEmploys;
Remarque:
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 :
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.
= "est gal"
> "strictement suprieur"
< "strictement infrieur"
>= "suprieur ou gal"
<= "infrieur ou gal"
<> "est diffrent"
Exemples:
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
Quel problme se pose lorsqu'on excute cette mme requte encore une fois un an
plus tard ?
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>).
5. Afficher le nom, le prnom et l'ge de tous les employs entrs en service partir du
1.1.1995
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:
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)
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'
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 _ ?
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)
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"
Formulez une requte qui affiche exactement le mme rsultat, sans utiliser
l'oprateur NOT.
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'
4. Afficher le prnom et le nom des employs fminins (code=F) qui ne travaillent pas au
service marketing.
ou
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>).
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';
8. Afficher le numro, le nom et le prnom de tous les employs embauchs pendant le mois
de juillet 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;
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.
Exemple:
1. Vous devez ajouter un nouvel employ dans la BD. Voici les informations dont vous
disposez:
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.
ou
Exercice
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='';
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
Formulez une requte qui affiche exactement le mme rsultat, sans utiliser
l'oprateur BETWEEN ... AND ....
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;
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'.
Formulez une requte qui affiche exactement le mme rsultat, sans utiliser l'oprateur IN.
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');
L'ordre obtenu dans la rponse d'une requte de slection a t laiss jusqu' maintenant au
pur hasard.
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:
Exemple 1:
respectivement
Exemple 2:
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:
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;
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:
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:
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.
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.
Remarque: Il est conseill de renommer l'en-tte (AS ...) afin d'augmenter la lisibilit du
rsultat affich.
Exemples:
4. Dterminez le prix du roman anglais le plus cher qui est actuellement disponible.
Remarque:
Les fonctions d'agrgation admettent comme paramtre galement:
des expressions contenant plusieurs champs;
l'option DISTINCT.
Exemples:
A faire : Exercice 1
SELECT fldTitre,fldGenre,fldEnStock
FROM tblLivres;
Si on voulait connatre la quantit en stock par genre de livre, on aurait le rsultat suivant:
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.
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.
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.
Syntaxe:
Exemples:
1. Classez les genres de livres par ordre descendant et affichez pour chaque genre la
moyenne du prix.
3. Affichez pour chaque genre, le nombre de livres, ainsi que la quantit d'exemplaires en
stock.
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.
Exercice
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').
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:
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:
La clause HAVING
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:
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.
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.
7.2.13 Exercices
Affichez les diffrentes catgories de produits. Veillez ce que chaque catgorie ne soit
affiche qu'une seule fois.
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).
Affichez tous les champs disponibles pour les produits dont la quantit en stock est infrieure
100.
Affichez le numro de produit, le libell et la catgorie de tous les produits dont le nom de
catgorie contient le mot 'alcool'.
Affichez le libell, la catgorie et le prix de tous les produits dont le nom de catgorie contient
uniquement 4 lettres.
Affichez le libell et la quantit disponible de tous les produits l'exception des fromages.
Affichez toutes les informations pour les chocolats dont la quantit disponible est suprieure
ou gale 10.
Affichez le libell et le prix des produits plus chers que 25 qui ne sont pas des cafs.
Affichez le numro de produit, le libell et la catgorie pour les fromages et les boissons sans
alcool.
Affichez le libell, la catgorie et le prix pour les produits moins chers que 25 qui
appartiennent aux catgories 'Chocolat' ou 'Fromage'.
17 Smrebrd Pain ? 0
Crez une requte qui vrifie la prsence d'une valeur NULL pour le prix !
Affichez le numro, le libell et le prix pour tous les produits dont le prix varie entre 12 et
25.
Affichez toutes les informations pour les produits des catgories 'Caf', 'Boisson sans alcool',
'Fromage' et 'Chocolat'.
Affichez le numro, le libell et la quantit disponible de tous les produits. Triez la liste par
ordre ascendant sur la quantit disponible.
Affichez le libell et le prix des produits qui sont disponibles au moins 100 fois. Triez la liste
par ordre descendant sur le prix.
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.
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.
Affichez la moyenne des prix pour les produits moins chers que 25.
Calculez la valeur actuelle en stock pour tous les produits l'exception des chocolats.
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.
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.
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.
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.
tblClients
1. Affichez le nom, prnom, adresse, code postal et localit pour tous les clients habitant
Walferdange.
Indiquez la requte correcte pour ajouter ce client lorsque vous ignorez le numro de fax
Indiquez la requte correcte pour ajouter ce client lorsque vous savez que le client ne
possde pas de fax.
3. Affichez la liste de toutes les localits prsentes dans la table des clients.
4. Tous les clients habitant Ettelbruck, dans la Cit Patton, auront le nouveau code postal
8897. Remarque: Utilisez un filtre pour retrouver les adresses correctes.
5. Nous voulons 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.
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.
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.
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
tblConcerts
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.
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.
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
leur validit et le prix d'un nouveau ticket ne change pas. Effectuez les modifications
correspondantes dans la table.
Nous allons diffrencier 2 mthodes pour lier plusieurs tables dans une requte:
2. Les requtes imbriques, qui utilisent le rsultat d'une requte comme source d'une
autre.
7.3.1 La jointure
Voici deux tables qui reprsentent une gestion (trs simplifie) des comptes d'une banque:
tblComptes
tblClients
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.
Affichez pour tous les comptes, le numro de compte, la valeur actuelle, ainsi que le nom
du client correspondant.
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:
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.
tblComptes tblClients
2. Le produit cartsien contient un bon nombre d'enregistrements, qui ne donnent pas de
sens logique.
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.
3. Finalement SQL affiche uniquement les champs indiqus dans la clause SELECT.
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
peut encore s'crire d'une faon plus lisible en utilisant des alias pour les noms des tables.
Exemple:
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:
Au cas o il existerait uniquement une ambigut pour un certain nombre de champs, il suffit
de prfixer ceux-ci par un alias ou par le nom de la table correspondante.
Remarque:
La clause WHERE peut bien entendu dfinir des critres de slection en combinaison avec la
condition de jointure.
Exemple:
Affichez pour les comptes ayant une valeur actuelle >= 10000, le numro de compte, la
valeur actuelle, ainsi que le nom du client correspondant.
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:
Exemples:
tblComptes
tblClients
tblAgences
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.
En gnral, on a:
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.
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
Afficher le numro de compte, et la valeur pour les comptes ayant une valeur suprieure
celle du compte 112
Cette requte nous semble trange premire vue. Nous allons analyser les tapes d'excution
de la requte.
1. Produit cartsien
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.
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.
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.
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
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'.
Exemple:
tblComptes
tblClients
tblAgences
La requte:
retourne le nom et prnom du client qui est le propritaire du compte numro 106.
Le requte imbrique:
SELECT fiClient
FROM tblComptes
WHERE idCompte=106;
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.
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.
Exemples:
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.
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.
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.
Remarque:
Comme cet exemple nous le montre, on peut avoir plusieurs requtes imbriques dans une
seule clause WHERE.
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);
Exemple:
tblComptes
tblClients
tblAgences
La requte
retourne le numro de compte et la valeur actuelle pour les comptes dont le client habite
Luxembourg ou Diekirch
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].
idCompte fldValeur
101 20000
112 9000
125 5000
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:
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.
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 !!!
Exemple:
Affichez le nom et le prnom des clients ayant au moins un compte avec une valeur de
9000 .
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;
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;
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;
A faire : Exercice 5
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)
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.
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.
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 .
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 .
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.
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.
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.
4. Affichez toutes les informations de la table tblAuteurs concernant les auteurs ayant une
des nationalits suivantes.
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.
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' ?
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.
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'.
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.
11. Affichez le nom et le prnom, ainsi que le nom, le niveau et le cycle de leur classe
actuelle (anne = '97/98') de tous les lves qui n'ont jamais redoubl une classe dans
notre lyce.
12. Affichez parmi tous les profs, qui ont dj enseign la mme matire que le prof
numro 10001, ceux n'ayant pas encore enseign la mme matire au mme niveau que
le prof numro 10001 pendant les annes scolaires '96/97' et '97/98'.
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.
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.
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.
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.
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.
7.5.3 Exercices
Exercice 1
Soit la BD suivante.
Code
L-XXXX
Exercice 2
Soit la BD suivante.
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.
Voici titre d'exemple un formulaire, qui affiche toutes les donnes d'une table qui
contient des livres:
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).
Chaque formulaire est compos de contrles. Voici une liste non exhaustive des contrles
les plus rpandus dans les SGBD actuels:
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.
La plupart des SGBD offrent encore des contrles pour amliorer la prsentation des
formulaires (contrles graphiques, images, liens OLE ).
Les noms des formulaires sont prcds du prfixe frm (angl.: Form)
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)
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.
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.
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.
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.
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.
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.
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.
Avantages:
1. La rapidit de la saisie des donnes augmente meilleure productivit.
2. Elimination de beaucoup de sources d'erreur.
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.
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
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.
Exemple 4:
On pourrait envisager de reprsenter le mme groupement (genre & langue) d'une autre
faon.
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.
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:
Les noms des rapports sont prcds du prfixe rpt (angl.: report)
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.
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.
Exemple:
Exercice
1
programme de gestion des fichiers sous Windows
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).
Avantages:
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.
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)
Il existe un certain nombre de mesures de protection contre les accs non autoriss.
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.
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.
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
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.
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 .
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
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:
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.
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.
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.
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.
Un SGBD, tout comme les autres applications informatiques, utilise les services d'un systme
d'exploitation.
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.
Au niveau d'un PC, qui contient une BD locale, la plupart des systmes d'exploitation
prvoient deux types de mot de passe:
Avantages:
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
10.4.1 Dfinition
Par incohrence accidentelle, on entend toute coupure non intentionnelle des liens
logiques entre les donnes d'une BD.
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#;
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.
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
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
une requte n'est excute qu'au moment o la requte prcdente a termin son excution
Ce type de pertes est difficilement matrisable. Toutefois, une bonne formation des
utilisateurs d'un systme aide rduire le nombre de telles pannes.
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.
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.
Une mthode prventive contre la perte de donnes sur disque dur est la sauvegarde rgulire
des donnes du (des) disque(s).
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.
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
Bande magntique
Stockage magntique
Capacit: p.ex. 120 GB (leve)
Lecture & criture rptitive des donnes
Vitesse d'accs trs lente
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
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.
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.
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.
11. 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
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
CNPI
[12]
"Dossier de l'enseignant"
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
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
S V
T
table (MLD), 57
table d'une base de donnes, 88