Excel

94
UNIVERSITE DU LITTORAL Maˆ ıtrise AES Informatique de Gestion Daniel DE WOLF Dunkerque, Octobre 2003

description

Cours d'Excel

Transcript of Excel

Page 1: Excel

UNIVERSITE DU LITTORAL

Maıtrise AES

Informatique de Gestion

Daniel DE WOLF

Dunkerque, Octobre 2003

Page 2: Excel
Page 3: Excel

Table des matieres

I La pratique d’un tableur 7

1 Introduction aux tableurs 9

1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.2 La notion de tableur . . . . . . . . . . . . . . . . . . . . . . . . 10

1.3 Modeles et tableaux . . . . . . . . . . . . . . . . . . . . . . . . 11

1.4 Composition d’une feuille de calcul . . . . . . . . . . . . . . . . 12

1.5 Le tableur EXCEL . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.6 Modifications d’un modele de calcul . . . . . . . . . . . . . . . . 16

1.7 Les references circulaires . . . . . . . . . . . . . . . . . . . . . 19

1.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2 Le solveur d’EXCEL. 23

2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.2 La valeur cible . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.3 Le solveur d’EXCEL . . . . . . . . . . . . . . . . . . . . . . . . 24

2.3.1 Resolution graphique du probleme . . . . . . . . . . . . 26

2.3.2 Resolution avec le solveur d’Excel . . . . . . . . . . . . 28

2.4 Les rapports du solveur . . . . . . . . . . . . . . . . . . . . . . 31

2.4.1 Le rapport des reponses . . . . . . . . . . . . . . . . . . 31

2.4.2 Le rapport de sensibilite . . . . . . . . . . . . . . . . . . 32

2.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3 Etude de cas : Optimisation du plan directeur de production 37

3

Page 4: Excel

4 Table des matieres

II Introduction aux bases de donnees 39

4 Concepts des bases de donnees 41

4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.2 Notions de table, ligne et colonne . . . . . . . . . . . . . . . . . 42

4.3 Roles d’une colonne . . . . . . . . . . . . . . . . . . . . . . . . 42

4.4 Structure d’une base de donnees . . . . . . . . . . . . . . . . . . 46

4.5 Exemple de base de donnees relationnelle . . . . . . . . . . . . . 48

4.6 Modifications et contraintes d’integrite . . . . . . . . . . . . . . 49

4.7 Les systemes de gestion de donnees . . . . . . . . . . . . . . . . 54

4.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5 Le langage SQL 57

5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.2 Definition d’une base de donnees . . . . . . . . . . . . . . . . . 59

5.2.1 Creation d’une table . . . . . . . . . . . . . . . . . . . . 59

5.2.2 Suppression d’une table . . . . . . . . . . . . . . . . . . 61

5.2.3 Ajout et retrait d’une colonne . . . . . . . . . . . . . . . 62

5.3 Consultation et extraction de donnees . . . . . . . . . . . . . . . 62

5.3.1 Principes de base . . . . . . . . . . . . . . . . . . . . . 62

5.3.2 Requetes sur une seule table . . . . . . . . . . . . . . . . 62

5.4 Conditions de selection plus complexes . . . . . . . . . . . . . . 64

5.4.1 Conditions elementaires . . . . . . . . . . . . . . . . . . 64

5.4.2 Donnees extraites et donnees derivees . . . . . . . . . . . 65

5.4.3 Les fonctions agregatives . . . . . . . . . . . . . . . . . 66

5.5 Les sous-requetes . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.6 Les quantificateurs ensemblistes . . . . . . . . . . . . . . . . . . 69

5.7 Extraction de donnees de plusieurs tables . . . . . . . . . . . . . 70

5.8 Requetes sur des donnees cycliques . . . . . . . . . . . . . . . . 73

5.9 Sous-requete ou jointure ? . . . . . . . . . . . . . . . . . . . . . 75

5.10 Extraction de donnees groupees . . . . . . . . . . . . . . . . . . 77

Page 5: Excel

Table des matieres 5

5.11 Comment interpreter une requete ? . . . . . . . . . . . . . . . . . 80

5.12 Une introduction a Microsoft Access pour Windows . . . . . . . . 81

5.12.1 Demarrage de Microsoft Access . . . . . . . . . . . . . . 81

5.12.2 Creation d’une table . . . . . . . . . . . . . . . . . . . . 82

5.12.3 Comment creer une requete ? . . . . . . . . . . . . . . . 83

5.12.4 Introduction de la notion de cle primaire . . . . . . . . . 85

5.12.5 Notion de contrainte referentielle . . . . . . . . . . . . . 85

5.12.6 Requetes sur plusieurs tables . . . . . . . . . . . . . . . 85

5.13 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6 Etude de cas 2 : voyages aeriens 91

Page 6: Excel
Page 7: Excel

Partie I

La pratique d’un tableur

7

Page 8: Excel
Page 9: Excel

Chapitre 1

Introduction aux tableurs

1.1 Introduction

Le but de ce cours d’informatique de gestion est de donner une introduction al’utilisation de l’outil informatique pour resoudre des problemes de gestion, par-ticulierement dans le domaine des transports. On poursuivra un double objectif :il s’agit, d’une part, de pouvoir modeliser des problemes de gestion et, d’autrepart, une fois la modelisation faite, de pouvoir mettre en œuvre a l’aide d’unlogiciel approprie les modeles ainsi formules.

Comme ouvrage de reference, on utilisera l’ouvrage en langue francaise deJ-L. Hainaut [4]. Pour ce qui est de la modelisation, on fera reference au livreen langue anglaise de Williams [14]. Bien sur, pour la partie mise en œuvre al’aide d’un logiciel adapte on fera reference aux manuels d’utilisation des logicielsutilises dans ce cours : Microsoft Excel [2] et Microsoft Access.

Le cours est divise en deux parties principales. La premiere partie estconsacree a la pratique d’un tableur. La seconde partie est une introductiona l’utilisation des bases de donnees relationnelles. Chaque partie du cours seraprolongee par une etude de cas.

Le plan du cours est le suivant.Partie I. La pratique d’un tableur.

1. La pratique d’un tableur (Microsoft Excel).Dans ce chapitre, nous introduirons les principales fonctionnalites d’un ta-bleur. Nous verrons la notion de modele de calcul ainsi que son implemen-tation au moyen de feuilles de calcul Excel.

2. Utilisation d’un solveur (solveur d’Excel).Dans ce chapitre, nous introduirons, d’une part, la notion de valeur ciblequi permet de calculer la valeur d’un parametre afin de donner une valeur

9

Page 10: Excel

10 Chapitre 1. Introduction aux tableurs

predefinie a une formule de calcul dependant du parametre. Nous verrons,d’autre part, l’utilisation du solveur qui permet de faire de l’optimisation(maximisation d’une fonction sous contraintes).

3. Etude de cas : optimisation d’un plan directeur de production.

Partie II. Bases de donnees relationnelles.

1. Conception d’une base de donnees.Dans ce chapitre, nous verrons comment definir le schema conceptuel d’unebase de donnees relationnelle.

2. Exploitation d’une base de donnees.Dans ce chapitre, nous verrons comment exploiter une base de donneesrelationnelle grace a l’utilisation du langage SQL.

3. Etude de cas : les voyages aeriens.

1.2 La notion de tableur

On peut donner la definition suivante pour un tableur.

Definition 1.1 Un tableur est un logiciel permettant de calculer des resultats apartir de formules donnees avec une implantation directe des donnees, des formuleset des resultats dans une grille de cellules a l’ecran.

Une notion tres importante dans les tableurs est celle de feuille de calcul. Ils’agit de la simulation d’une feuille quadrillee reperant a la fois les donnees et lesformules de calcul dans les cellules du quadrillage. C’est d’ailleurs la premiereoperation a effectuer lorsqu’on lance la plupart des tableurs : creer une nouvellefeuille de calcul vierge ou ouvrir une feuille de calcul deja creee.

Une particularite tres importante des tableurs est qu’il s’agit de logiciels aexecution immediate : le logiciel evalue automatiquement toute formule rangeedans une case et y place le resultat.

Comme exemples de tableurs classiques, on peut citer Lotus 1-2-3 (disponiblesur PC compatible), Microsoft EXCEL (disponible PC compatible et Macintosh)ou encore Microsoft WORKS (disponible sur PC compatible et Macintosh).

Parmi les nombreux avantages de l’utilisation de tableurs, le plus importantest certainement l’integration sous forme naturelle d’un modele sans devoir recouriraux etapes classiques que sont :

Page 11: Excel

Section 1.3. Modeles et tableaux 11

• choix d’une structure de donnees;

• choix d’un algorithme;

• programmation de celui-ci.

Une autre notion tres importante est celle de modele de calcul. Il s’agit de ladefinition du probleme :

• Quelles informations cherche-t-on a obtenir ?

• De quelles donnees dispose-t-on ?

• Comment calculer ces informations a partir des donnees disponibles ?

Nous reviendrons plus en details sur la notion de modele de calcul a la sectionsuivante en l’illustrant sur un exemple.

1.3 Modeles et tableaux

La notion fondamentale des modeles de calcul est celle de tableau.

Definition 1.2 Un tableau est simplement une feuille sur laquelle les informationssont reprises sous la forme de lignes et colonnes.

On peut illustrer la notion de tableau par l’exemple du bilan financier illustre autableau 1.1. On observera, en particulier, dans ce tableau les resultats de calcul

2002 2003 2004 Totaux

Entrees 123 142 168 433

Sorties 112 130 174 416

Soldes 11 12 -6 17

Tableau 1.1: Un exemple de tableau financier.

suivant :

• Le solde annuel qui est la difference entre les entrees et les sorties de l’annee;

• Le total qui est, pour chaque ligne, la somme sur les annees.

Page 12: Excel

12 Chapitre 1. Introduction aux tableurs

L’implantation informatique de la notion de tableau se fait au moyen d’unefeuille de calcul qui est donc simplement un quadrillage en lignes, indicees pardes chiffres, et en colonnes, indicees par des lettres. Ceci est illustre au tableau1.2.

A B C D E F

1

2

3 X X X

4 X X X

5 X

6

7

Tableau 1.2: Implantation informatique

Une cellule d’un tableau (ou de la feuille de calcul qui est sa representation in-formatique) est a l’intersection d’une ligne et d’une colonne. On parle de d’adressed’une cellule : ainsi la cellule B5 (voir tableau 1.2) est a l’intersection de la co-lonne B et de la ligne 5. On parle aussi de plage pour designer un ensemble decellules : ainsi la plage D3:F4 est constituee de l’ensemble des cellules inscritesdans le rectangle de diagonale principale D3 a F4 (voir tableau 1.2) .

1.4 Composition d’une feuille de calcul

Voyons maintenant la composition d’une feuille de calcul sur l’exemple illustre autableau 1.1. Son implantation informatique est donnee au tableau 1.3.

Les elements d’une feuille de calcul sont au nombre de trois :

• Il y a tout d’abord les libelles dont le role est d’ameliorer la lisibilite dumodele de calcul. Par exemple, le titre qui est attribue a chaque colonne etchaque ligne (cfr l’implantation du bilan financier au tableau 1.3).

• Le deuxieme element est constitue des donnees du probleme : il s’agit desinformations qui serviront aux calculs. Dans l’exemple, il s’agit des entreeset sorties de chaque annee.

Page 13: Excel

Section 1.4. Composition d’une feuille de calcul 13

A B C D E

1 2002 2003 2004 TOTAUX

2 ENTREES 123 142 168 433

3 SORTIES 112 130 174 416

4

5 SOLDES 11 12 -6 17

6

Tableau 1.3: Implantation du tableau financier.

• Enfin, le troisieme element constitutif d’une feuille de calcul sont les resul-tats de calcul : il s’agit evidemment des informations calculees a partir desdonnees. Dans l’exemple, il s’agit du solde de chaque annee et des totaux.

Insistons ici sur le fait que les resultats ne sont pas introduits par le clavier maison introduit la formule de calcul qui permet d’arriver au resultat voulu dans la casecorrespondante. L’avantage est que si les entrees sont modifiees, automatiquementle solde est recalcule !

Une formule de calcul commence toujours par le signe d’egalite et est suiviede la formule qui fait usage des references des cellules de donnees. Par exemple,le solde de 2002 (cellule B5) resulte de la formule :

solde 2002 = entrees 2002 - sorties 2002

Il est introduit sous la forme d’une formule entre references des cases :

= B2 -B3,

formule qui est mise dans la cellule B5.

Comme autre exemple, prenons le total des entrees qui doit etre mis en celluleE2 :

= B2 + C2 + D2

On peut egalement rentrer cette formule en utilisant la fonction predefinie

=SOMME(B2:D2)

Remarquer que la formule pour le total des sorties qui doit etre mis dans la cellulejuste en dessous (E3) est similaire :

= B3 + C3 + D3

Page 14: Excel

14 Chapitre 1. Introduction aux tableurs

Elle peut etre generee a partir de la precedente en recopiant tout simplement celle-ci vers le bas. De meme, la formule de calcul du solde pour les annees 2003 et2004 est generee a partir de celle de 2002 par un recopier vers la droite. On obtientle tableau dont le contenu est illustre au tableau 1.4.

A B C D E

1 2002 2003 2004 TOTAUX

2 ENTREES 123 142 168 =B2+C2+D2

3 SORTIES 112 130 174 =B3+C3+D3

4

5 SOLDES =B2-B3 =C2-C3 =D2-D3 =E2-E3

6

Tableau 1.4: Contenu reel du tableau.

1.5 Le tableur EXCEL

Lors du lancement du logiciel, une feuille de calcul vierge est produite et le curseurse trouve dans la cellule courante.

Pour introduire des donnees ou une formule, il suffit de selectionner la celluleavec le pointeur et de taper le contenu (donnees ou formule) via le clavier, enfin,de taper ”ENTER” ou selectionner une autre cellule pour terminer la saisie ducontenu de la case selectionnee.

Les formules de calcul en Excel commencent toujours par “=”. Elles utilisentles adresses des cellules ainsi que les operateurs arithmetiques (+,-,*,/). Ellespeuvent utiliser des parentheses ainsi que des fonctions mathematiques.

Voici quelques exemples de formules en Excel :

=B2+C2

=2*C2+1/(1-D4)

=log(A2-D4)

=PI*SIN(D6)

La plupart des fonctions mathematiques sont deja programmees en Excel.Ainsi on peut utiliser les fonctions suivantes :

Page 15: Excel

Section 1.5. Le tableur EXCEL 15

ABS(nombre) : valeur absolue

ARRONDI(nombre;no_chiffre) : arrondi a no_chiffre decimales

ENT(nombre) : partie entiere du nombre

RACINE(nombre) : racine carree du nombre

SIGNE(nombre) : signe du nombre

TRONQUE(nombre;no_chiffre) : tronque a no_chirre decimales

Un certain nombre de fonctions agregatives sont egalement disponibles. Unefonction agregative est une fonction dont l’argument est constitue d’une plage decellules et dont le resultat est une valeur elementaire. Les fonctions suivantes sontdisponibles :

PRODUIT(E1:E17) : produit des arguments

SOMME(A2;D1:D17) : somme des arguments

MAX(D1;E2;F3) : maximum parmi les arguments

MOYENNE(B3:C10) : moyenne des arguments

ECARTYPE(E1:E17) : ecart type des arguments

SOMMEPROD(A1:D3;E1:H3) : somme des produits des

elements correspondant des deux matrices

Enfin, un nombre limite de fonctions de consultation de tables sont definiesen Excel. Illustrons ceci sur l’exemple suivant : un achat de 0 a 499 donne unereduction de 0 %; un achat de 500 a 2009 donne une reduction de 5 %; etc. . . Cesdonnees peuvent etre rentrees sous la formule du tableau de reduction illustre en1.5.

A B

1 ACHAT REDUCTION

2 0 0

3 500 5

4 2 000 10

5 3 000 12

6 5 000 14

7 10 000 15

Tableau 1.5: Tableau de reduction

La fonction RECHERCHEV(valeur;table;no_index_col) recherche dans lapremiere colonne de la table table la plus grande valeur qui soit inferieure ou

Page 16: Excel

16 Chapitre 1. Introduction aux tableurs

egale a valeur et renvoie la valeur situee, dans la meme ligne, dans la colonneno_index_col.

Ainsi, l’expression RECHERCHEV(2350;A2:B7;2) renvoie la valeur de la re-duction correspondant dans la table A2:B7 a la plus grande valeur inferieure ouegale a 2350. On peut tester les exemples suivant :

RECHERCHEV(400;A2:B7;2) donne 0

RECHERCHEV(2350;A2:B7;2) donne 10

RECHERCHEV(3500;A2:B7;2) donne 12

RECHERCHEV(7500;A2:B7;2) donne 14

RECHERCHEV(11000;A2:B7;2) donne 15

Il est a noter que les valeurs dans la premiere colonne de la matrice doiventetre classees par ordre croissant. Ces valeurs peuvent etre purement numeriquesou alphanumeriques.

Excel permet egalement l’utilisation d’expressions conditionnelles. Ainsi, lafonction

SI(test;valeur_si_oui;valeur_si_non)

evalue la condition du test et renvoie valeur_si_oui si le test est verifie,valeur_si_non dans le cas contraire.

Dans l’exemple du tableau de reductions 1.5, la formule

SI(A2=B2;1;0) renvoie 1

SI(A3=B3;1;0) renvoie 0

La formule renvoie donc la valeur 1 s’il y a egalite entre les valeurs des deux cases,et 0 dans le cas contraire.

On peut utiliser dans un test les operateurs logiques suivant (qui renvoientVRAI ou FAUX) :

ET(expr_log1;expr_log2)

FAUX

NON(expr_log)

OU(expr_log1;expr_log2)

1.6 Modifications d’un modele de calcul

Une premiere categorie tres importants de commandes qui permettent de modifieraisement une feuille de calcul sont les commandes de copie.

Page 17: Excel

Section 1.6. Modifications d’un modele de calcul 17

La commande Copier permet de copier une cellule ou une plage vers un autreendroit de meme dimension. L’effet est de copier identiquement le contenu s’ils’agit d’une donnee ou d’un commentaire, et de copier la formule en adressesrelatives s’il s’agit d’une formule de calcul. Ainsi la formule mise en cellule E2 “=B2 + C2 + D2” s’interprete en adresse relative : dans la meme ligne, additionner lestrois colonnes precedentes. Si cette formule est recopiee en cellule E3, apparaıtraalors la formule suivante : “= B3 + C3 + D3”.

Les commandes Recopier vers le bas et Recopier vers la droite sont utiliseeslorsque l’on veut recopier le contenu d’une cellule dans plusieurs autres cellulessituees juste en dessous ou a droite. La plage selectionnee doit contenir la cellulede depart et la plage de destination. Dans l’exemple ci-dessus, on peut recopier laformule en cellule E2 vers le bas en cellule E3.

La commande Copie speciale permet de copier, non pas des formules, mais leresultat de leur evaluation. Ceci est particulierement utile si on veut transmettre,par exemple, les resultats d’un calcul sans devoir egalement transmettre toutes lesdonnees a partir desquelles les calculs sont effectues. Dans ce cas, il suffit de colleruniquement les valeurs.

Il importe egalement de bien distinguer les concepts d’adresses relatives etd’adresses absolues. Illustrons ce concept sur l’exemple illustre au tableau 1.6donnant l’evolution de differents montants places a taux fixe. La formule en cellule

A B C D

1 Taux : 0,0525

2

3 Montant 1000 2000 5000

4 1 an : =B3*(1+B1) =C3*(1+B1) =D3*(1+B1)

5 2 ans : =B4*(1+B1) =C4*(1+B1) =D4*(1+B1)

6 3 ans : =B5*(1+B1) =C5*(1+B1) =D5*(1+B1)

Tableau 1.6: Taux fixe

B4 est exprimee en adresse relative : dans la formule qui assigne a la cellule B4

la valeur =B3*(1+B1), l’adresse B3 est a comprendre “la cellule situee, dans lameme colonne, une place plus haut”.

On peut alors simplement taper la premiere formule (celle en cellule B4) etensuite copier vers la droite dans les cellules C4 et D4 cette formule. On peut alorscopier vers les bas chacune de ces formules. On obtient les formules presentees

Page 18: Excel

18 Chapitre 1. Introduction aux tableurs

au tableau 1.7.

A B C D

1 Taux : 0,0525

2

3 Montant 1000 2000 5000

4 1 an : =B3*(1+B1) =C3*(1+C1) =D3*(1+D1)

5 2 ans : =B4*(1+B2) =C4*(1+C2) =D4*(1+D2)

6 3 ans : =B5*(1+B3) =C5*(1+C3) =D5*(1+D3)

Tableau 1.7: Adresses relatives et adresses absolues.

On voit tout de suit le probleme suscite par cette manœuvre : l’adresse fixe B1est devenue B2,B3,C1,C2,. . . Aussi doit-on imposer pour B1 une adresse absolue.Pour forcer une adresse absolue, on la precede de $. Ainsi

$B$1

ne sera jamais ajuste, ni au point de vue colonne ($ devant le B), ni au point de vueligne ($ devant le 1).

On tape donc la formule :

=B3*(1+$B$1)

que l’on peut recopier vers la droite et vers le bas.

Bien d’autres modifications d’une feuille de calcul sont possibles en Excel.Citons les plus importantes :

• specifier le format d’affichage des nombres, des dates;

• modifier la largeur d’une colonne;

• inserer une nouvelle colonne (ou ligne) en deplacant les colonnes suivantes;

• supprimer une colonne (ou une ligne);

• effacer le contenu d’une cellule.

Page 19: Excel

Section 1.7. Les references circulaires 19

1.7 Les references circulaires

Une reference circulaire est la situation d’une formule qui depend directementou indirectement de la cellule ou elle est rangee. Illustrons les deux cas de figure :

• Exemple 1 : une formule qui depend directement de sa cellule :

dans C4 : =(C1-C4)/2

• Exemple 2 : une formule qui depend indirectement de sa cellule :

dans C2 : =2*C3

dans C3 : =C4+C5

dans C4 : =C2/2

La consequence d’une reference circulaire est evidemment de faire uneboucle sans fin. Le logiciel Excel signale l’anomalie. Mais on peut etre interesse,dans certains modeles recursifs, a l’utilisation volontaire des references circu-laires. Excel permet ceci. Dans le menu “Outils”, on selectionne le sous menu“mode de calcul” et on active l’option “iterations” en precisant :

• N , le nombre maximum d’iterations;

• ε, la difference maximum entre deux valeurs successives en dessous de la-quelle on arrete les calculs.

Ainsi le modele fait un certain nombres d’iterations et la boucle sans fin devientune boucle iterative. Au depart la valeur initiale est mise a zero.

Un exemple d’utilisation volontaire de ces references circulaires est la methodede GAUSS-SEIDEL pour resoudre un systeme d’equations lineaires du type :

a11x1 + a12x2 + a13x3 = b1

a21x1 + a22x2 + a23x3 = b2

a31x1 + a32x2 + a33x3 = b3

Dans cette methode, on tire xi de la l’equation numero i, ce qui donne :

x1 = (b1 − a12x2 − a13x3)/a11

x2 = (b2 − a21x1 − a23x3)/a22

x3 = (b3 − a31x1 − a32x2)/a33

qui peut etre resolu en utilisant les references circulaires.

Page 20: Excel

20 Chapitre 1. Introduction aux tableurs

1.8 Exercices

1.1. Calcul d’evolution de capital. A partir des trois parametres taux d’interet,precompte mobilier (en %), et capital initial (en F), donner le tableau,pour une periode de 10 ans, de l’evolution annuelle du capital, des interetsbruts de l’annee ecoulee ainsi que des interets nets. Prendre a titre d’exempleun capital de 1 million de francs avec un taux d’interet de 6 % l’an et unprecompte mobilier de 15 %. Le precompte mobilier est l’impot retenu a lasource sur les interets verses annuellement. On suppose que les interets netsde precompte immobilier sont immediatement reinvestis en capital.

(a) Formuler en un modele de calcul.

(b) Mettez ce modele en œuvre sur une feuille de calcul en Excel.

(c) Donnez la solution obtenue par Excel.

1.2. Moyenne de notes. Les du controle continu pour les etudiants sont donneesau tableau 1.8.

NOM note 1 note 2 note 3 note 4 note 5(sur 4) (sur 4) (sur 4) (sur 4) (sur 4)

Alain 0 0 0 0 0

Bernard abs. just. 3,0 2,0 1,5 abs. just.

Celine 2,5 1,5 2,0 3,5 4,0

Damien 4,0 3,5 3,0 2,0 abs. just.

Jerome 3,5 2,5 3,5 3,5 3,5

Tableau 1.8: Notes au controle continu.

(a) Ecrire la formule qui calcule la moyenne sur 20 points des 5 notes enarrondissant au demi-point.

(b) Mettez ce modele en œuvre sur une feuille de calcul en Excel.

(c) Donnez le resultat pour les cinq etudiants repris au tableau ci-dessus.

1.3. Methode de Gauss-Seidel. La methode de Gauss-Seidel est une methodeiterative de resolution de systemes de n equations a n inconnues a dominance

Page 21: Excel

Section 1.8. Exercices 21

diagonale tel que le systeme suivant :

30x1 + 4x2 + 7x3 = 12

4x1 + 70x2 + 9x3 = 18

5x1 + 8x2 + 100x3 = 4

Elle consiste a tirer x1 de la premiere equation, x2 de la seconde, etc. . .Partant d’une solution de depart nulle, on itere jusqu’a convergence.

(a) Formulez en un modele de calcul.

(b) Utilisez les references circulaires d’EXCEL pour mettre en œuvre lamethode.

(c) Donnez la solution du systeme obtenue par EXCEL.

1.4. Calcul de la paie. Le bareme de salaire d’un employe est fonction de sonniveau de qualification. Ce montant est alors indexe pour obtenir le salairebrut. Sur ce salaire brut est retenue une cotisation de securite sociale quiest un pourcentage du salaire brut. En deduisant cette cotisation du brut,on obtient la base imposable sur laquelle une retenue d’impot a la sourceest pratiquee (apres abattement forfaitaire de 10 et de 20 %). Cette retenueest progressive (avec des taux marginaux augmentant par tranches). Ondemande de calculer, pour chaque employe, le montant de son brut, de sacotisation sociale, de son imposable, de sa retenue d’impot a la source ainsique son net a payer, c’est-a-dire de calculer tous les elements de sa fiche desalaire. Prendre a titre d’exemple, une retenue de securite sociale de 13 %,une retenue a la source de 0 % jusqu’a 5.000 F, de 15 % de 5.000 a 15.000F, de 25 % au dela. L’index de ce mois est 1,14.

NOM niveau

Brasseur A

Dupont A

Durant B

Fontaine C

Tableau 1.9: Categories des membres du personnel

Les trois categories sont A, B, et C. Les montants de base de la remunerationsont donnes ci-apres.

Page 22: Excel

22 Chapitre 1. Introduction aux tableurs

Categorie salaire de base

A 9.000 F

B 14.000 F

C 20.000 F

Tableau 1.10: Salaires de base (hors index)

(a) Formuler en un modele de calcul.

(b) Mettez ce modele en œuvre sur une feuille de calcul en Excel.

(c) Donnez la solution obtenue par Excel.

Page 23: Excel

Chapitre 2

Le solveur d’EXCEL.

2.1 Introduction

Le solveur d’EXCEL est un resolveur d’equation ainsi qu’un optimiseur exploitantles techniques de la programmation lineaire, de la programmation en nombresentiers et de la programmation non lineaire.

Expliquons quelques points de la terminologie utilisee dans le solveur Excel.Dans un modele de calcul, on repere :

• une cellule resultat R, dite cellule cible;

• des cellules de donnees Di, dites cellules variables.

Les problemes solubles par Excel sont les suivants :

• Trouver les valeurs des donnees Di qui conduisent a donner une valeur fixeea la cible R = v, ou v est une valeur constante fixee.

• Determiner les valeurs des donnees Di qui rendent minimum (maximum) lavaleur de la cible R.

• Determiner les valeurs des donnees Di qui rendent minimum (maximum) lavaleur de R, de telle maniere que des contraintes specifiques soient verifiees.

• Trouver des valeurs des donnees Di qui satisfont les contraintes specifiees.

Lorsque le solveur a termine, les cellules R et Di contiennent les valeurs quiresolvent le probleme pose.

Pour faire le lien avec la programmation mathematique, la cellule R contient laformule de calcul de la fonction objectif tandis que les cellules Di correspondentaux variables du probleme de programmation mathematique.

23

Page 24: Excel

24 Chapitre 2. Le solveur d’EXCEL.

2.2 La valeur cible

Le probleme de la valeur cible peut s’enonce ainsi : si la cellule C2 (le resultat)est calculee a partir de la cellule C1 qui contient une donnee, quelle devrait etre lavaleur de la donnee C1 pour obtenir une valeur donnee du resultat C2 ?

Illustrons ceci sur l’exemple du bilan financier rappele au tableau 2.1.

A B C D E

1 1992 1993 1994 TOTAUX

2 ENTREES 123 142 168 433

3 SORTIES 112 130 174 416

4

5 SOLDES 11 12 -6 17

Tableau 2.1: Bilan financier

La question qui se pose ici est la suivante : quelle est la valeur des sorties de1994 (D3) pour que le total des soldes (E5) soit egal a 20 ?

Le solveur d’Excel permet de repondre a cette question. La mise en œuvre aumoyen d’Excel s’effectue par les operations suivantes :

1. Selectionner la cellule contenant la formule pour laquelle on souhaite unresultat donne (ici E5).

2. Choisir dans le menu “Outils”, le sous-menu “Valeur cible”.

3. Dans la zone “valeur a atteindre”, mettre la valeur cible (ici 20).

4. Dans la zone “cellule a modifier”, mettre la reference de la cellule dontEXCEL doit modifier la valeur (ici D3) .

Et le solveur d’Excel mettra automatiquement la bonne valeur des sorties de 1994(soit 171) dans la case D3.

2.3 Le solveur d’EXCEL

Nous allons nous interesser ici au module d’optimisation sous contraintes d’Excel.

Illustrons ceci sur un exemple tire de Hillier et Lieberman [5]. Le problemes’enonce ainsi : une entreprise de fabrication de chassis envisage la mise en pro-duction de deux nouveaux modeles, le chassis en aluminium et le chassis en bois,

Page 25: Excel

Section 2.3. Le solveur d’EXCEL 25

au moyen des capacites residuelles de ses trois ateliers : a savoir l’atelier 1, ousont fabriques les cadres en aluminium, l’atelier 2, ou sont fabriques les cadres enbois et l’atelier 3 ou le montage du verre sur le chassis est realise pour les deuxtypes de chassis.

Le nombre d’heures necessaires par produit et le nombre d’heures encore dispo-nibles par semaine sont donnes au tableau 2.2.

Atelier Chassis Chassis Capacite

aluminium bois disponible

1 1 h 0 h 4 h/semaine

2 0 h 2 h 12 h/semaine

3 3 h 2 h 18 h/semaine

Tableau 2.2: Temps necessaires et capacites residuelles

Les marges unitaires sont de 3 $ pour le chassis en aluminium et de 5 $ pourle chassis en bois

On se pose la question suivante : combien produire de chassis de chaque typepar semaine pour maximiser le profit net ?

La formulation de tout probleme d’optimisation est une operation en troisetapes :

1. choix des variables de decision,

2. expression de l’objectif en fonction de ces variables,

3. expression des contraintes en fonction de ces variables.

Definition 2.1 On appelle variable du probleme toute quantite utile a la resolutiondu probleme dont le modele determine la valeur.

Le choix est ici particulierement simple : on pose x1, le nombre de chassis enaluminium fabriques par semaine et x2, le nombre de chassis en bois fabriques parsemaine.

Definition 2.2 On appelle fonction objectif le critere de choix entre les solutionspossibles.

Il s’agit donc de la fonction que l’on veut minimiser ou maximiser. Dans notreexemple, on veut maximiser le profit de l’entreprise donc l’objectif s’exprimecomme :

max z = 3x1 + 5x2

Page 26: Excel

26 Chapitre 2. Le solveur d’EXCEL.

Definition 2.3 On appelle contrainte du probleme toute relation limitant le choixdes valeurs possibles des variables.

Ces relations peuvent etre de simples bornes sur les variables. Par exemple, lesquantite produites ne peuvent etre negatives. Mathematiquement :

x1, x2 ≥ 0.

Elles peuvent etre plus complexes comme les contrainte de capacite de produc-tion. Le temps pour assembler 1 chassis de type 1 dans l’atelier 1 est de 1 heureou il reste 4 heures disponibles. D’ou la contrainte de capacite de l’atelier 1 :

x1 ≤ 4

Semblablement, on peut construire les contraintes de capacites des deux autresateliers :

2x2 ≤ 12

3x1 + 2x2 ≤ 18

Il est alors tres utile de reprendre sous une forme condensee la formulationcomplete du probleme. Ici, on obtient la formulation suivante :

max z = 3 x1 + 5 x2

s.c.q.

x1 ≤ 4

2x2 ≤ 12

3x1 + 2x2 ≤ 18

x1 ≥ 0

x2 ≥ 0

(2.1)

2.3.1 Resolution graphique du probleme

Pour un probleme lineaire a deux variables, on peut determiner sa solution optimalegraphiquement (voir cours de Recherche Operationnelle). Il s’agit egalement d’uneprocedure en trois etapes :

1. Representation de la region realisable.

2. Representation de l’objectif.

3. Determination du point optimum.

Page 27: Excel

Section 2.3. Le solveur d’EXCEL 27

La premiere etape de la resolution consiste a representer graphiquement laregion realisable.

Definition 2.4 On appelle region realisable, l’ensemble des valeurs de variablesde decision qui satisfont toutes les contraintes.

Dans le cas de l’exemple, c’est l’ensemble des points (x1, x2) satisfaisant lesinegalites de (2.1). Graphiquement une inegalite telle que 3x1 + 2x2 ≤ 18 corres-pond a un demi-plan limite par la droite obtenue en prenant l’inequation a l’egalite(3x1 + 2x2 = 18). Lorsque l’on fait l’intersection des cinq demi-plans corres-pondant aux cinq inegalites de (2.1), on obtient le polygone hachure a la figure2.1.

Pour pouvoir representer la fonction objectif, il faudrait une dimension de pluscar la variable z fait que l’on se trouve dans R

3. On va donc fixer quelques valeursde z et on obtient ainsi quelques droites d’isovaleur de la fonction objectif :

z = 3x1 + 5x2 = k.

Ce qui correspond graphiquement a des droites paralleles. Les points d’une de cesdroites sont donc le lieu de tous les points donnant la meme valeur du profit (d’oule nom de droite d’isovaleur de la fonction objectif). Ceci est fait a la figure 2.1ou l’on a represente z = 10, 20 et 36.

10

8

6

4

2

0 2 6 8 x1

x2

z = 36

z = 20z = 10

(2,6)

(4 ,3)

Figure 2.1: Droites d’isoprofit.

Enfin, et c’est la troisieme etape de la resolution, l’optimum sera determinegraphiquement comme le plan de production situe sur la droite d’isoprofit la plus

Page 28: Excel

28 Chapitre 2. Le solveur d’EXCEL.

elevee, c’est-a-dire celle qui donne le profit le plus eleve. On voit a la figure 2.1qu’il s’agit du point

x∗ = (2, 6).

2.3.2 Resolution avec le solveur d’Excel

Nous allons maintenant resoudre le probleme de chassis au moyen du solveurd’Excel. La premiere chose a faire est de rentrer les donnees numeriques duprobleme et les formules de calcul de la fonction objectif ainsi que du membre degauche des contraintes. Pour la clarte du modele, il est indispensable de mettreegalement des commentaires. Comme le probleme est lineaire, on peut rentrer, lescoefficients numeriques sous forme d’une matrice. On remarquera au tableau 2.3que les coefficients d’une meme equation ainsi que sa formule de calcul ont ete

A B C D E

1 x1 x2 b

2

3 Profit : 3 5 =B3*$B$2+C3*$C$2

4 Atelier 1 : 1 0 =B4*$B$2+C4*$C$2 4

5 Atelier 2 : 0 2 =B5*$B$2+C5*$C$2 12

6 Atelier 3 : 3 2 =B6*$B$2+C6*$C$2 18

7 x1 positif : 1 0 =B7*$B$2+C7*$C$2 0

8 x2 positif : 0 1 =B8*$B$2+C8*$C$2 0

Tableau 2.3: Exemple de probleme lineaire

ranges dans une meme ligne qui contient comme commentaire le nom de l’equation(Atelier 1, Atelier 2, . . . ). De meme, les coefficients se rapportant a une memevariable ont ete range en colonne sous le nom de la variable (x1, x2). Remarquezici, pour comprendre les formules, que l’on a choisi de placer la valeur de x1 encellule $B$2$ tandis que celle de x2 est placee en cellule $C$2.

Il reste maintenant a indiquer a Excel, ou se trouvent les variables, la fonctionobjectif, le membre de gauche, de droite et le sens des contraintes. Ceci peut etremis en œuvre en Excel de la maniere suivante :

1. Dans le menu “Outils”, choisir le sous-menu “Solveur”.

2. Dans la zone “Cellule a definir”, mettre la reference de la cellule de calculde l’objectif (ici $D$3).

Page 29: Excel

Section 2.3. Le solveur d’EXCEL 29

3. Dans la zone “Egale a”, choisir Max ou Min (ici Max).

4. Dans la zone “Cellules variables”, mettre les references des cellules conte-nant les variables (ici $B$2:$C$2) .

5. Dans la zone “Contraintes”, choisir “ajouter une contrainte” et pour chaquecontrainte :

• Dans la zone “Cellule” mettre la reference de la cellule contenant laformule de calcul du membre de gauche (par exemple, pour l’atelier 1 :$D$4).

• Dans la zone “Relation” mettre le sens de la contrainte (par exemple,pour l’atelier 1 : <=).

• Dans la zone “Contrainte” mettre la reference de la cellule contenantle membre de droite (par exemple, pour l’atelier 1 : $E$4).

6. Dans ”Option”, choisir ”Modele suppose lineaire”.

7. Lancer la commande “Resoudre”.

On obtient alors le modele illustre par la copie d’ecran de la figure 2.2

Figure 2.2: Parametres du solveur

Plusieurs remarques sur les particularites d’Excel s’imposent ici :

1. Pour modifier le modele on peut utiliser :

• la commande “supprimer la contrainte”;

• la commande “modifier la contrainte”.

Page 30: Excel

30 Chapitre 2. Le solveur d’EXCEL.

2. Il est important de bien choisir le nom de la contrainte et le nom des variablespour une presentation claire du rapport (voir a la section suivante commentExcel determine le nom des variables et des contraintes).

3. La solution est mise dans les cellules variables.

4. Les contraintes de positivite des variables doivent etre entrees explicite-ment, ceci contrairement a la convention de beaucoup d’optimiseurs quiconsiderent par defaut des variables non negatives. Remarquez que l’onpeut directement entrer la contrainte sous la forme suivante :

$B$2:$C$2 >= 0

On peut, dans ce cas, supprimer les lignes 7 et 8 du tableau 2.3.

5. Seules les variables non calculees (les variables independantes du modele)doivent etre rentrees dans la section variables. Ainsi, si l’on avait calcule dansune cellule le nombre d’heures passees dans l’atelier 1, cette cellule contien-drait une variable (au sens mathematique du terme) mais ne devrait pas etrerentree dans les cellules variables pour Excel, sans quoi Excel considereraitqu’il s’agit d’une variable independante et effacerait sa formule de calcul.

6. Si le modele est lineaire (contraintes lineaires et fonction objectif lineaire),on a tout interet a selectionner l’option “Modele suppose lineaire”, ce quideclenchera l’algorithme du Simplexe plutot qu’un algorithme general deprogrammation non lineaire.

7. Remarquez enfin que on peut rentrer d’une seule commande tout un groupede contraintes ayant le meme sens. Ainsi, dans l’exemple, on aurait purentrer les trois contraintes de capacites par la commande suivante :

$D$4:$D$6 <= $E$4:$E$6

La solution du solveur est illustree a la table 2.4. On retrouve bien les valeursoptimales determinees graphiquement, a savoir

x∗1 = 2

x∗2 = 6

et la valeur optimale de l’objectif, a savoir :

z∗ = 36

Page 31: Excel

Section 2.4. Les rapports du solveur 31

A B C D E

1 x1 x2 b

2 2 6

3 Profit : 3 5 36

4 Atelier 1 : 1 0 2 4

5 Atelier 2 : 0 2 12 12

6 Atelier 3 : 3 2 18 18

7 x1 positif : 1 0 2 0

8 x2 positif : 0 1 6 0

Tableau 2.4: Solution du probleme lineaire

2.4 Les rapports du solveur

Lorsque le solveur a termine, soit qu’il ait trouve la solution optimale, soit qu’ilne parvienne pas a en trouver (probleme non realisable ou non convergence del’algorithme de resolution), la boıte de dialogue illustree a la figure 2.3 apparaıt.Elle laisse le choix entre garder dans les cellules variables la solution obtenue par

Figure 2.3: Rapports possibles du solveur

le solveur soit retablir la solution initiale (generalement zero partout). Cette boıtepermet egalement de generer trois types de rapport : le rapport des reponses, lerapport de sensibilite et le rapport des limites. Ce dernier est sans utilite pour cecours.

2.4.1 Le rapport des reponses

Le rapport des reponses (voir figure 2.4) fournit :

• la valeur originale et finale de la “cellule cible (a Maximiser)”;

Page 32: Excel

32 Chapitre 2. Le solveur d’EXCEL.

• la valeur originale et finale des “cellules variables”;

• les informations suivantes sur les contraintes : la cellule, le nom, la valeurfinale du membre de gauche, la formule de calcul, son status (active ou nona la solution finale), ainsi que la marge (valeur de l’ecart entre les deuxmembres de l’inegalite).

Figure 2.4: Rapports des reponses

Remarquez que pour determiner le nom, Excel fait, dans chaque cas, la conca-tenation du premier commentaire rencontre dans la meme ligne que la cellule etdu premier commentaire rencontre dans la meme colonne que la cellule. Ceciest particulierement utile si l’on a des variables a deux indices comme dans unprobleme de transport. En effet, les variables seront stockees dans un tableau ou leslignes correspondront, par exemple, aux origines et les colonnes, aux destinations.Il suffira de mettre “de i” a gauche de la ligne et “vers j” en haut de la colonne pourque le nom de la variable a l’intersection de la ligne et la colonne se voit attribuerle nom “de i vers j” par le rapport d’Excel. On peut d’ailleurs tester la chose enmettant ici en A2, ”Production de chassis” et en B1, ”en aluminium” tandisqu’en C1, on met ”en bois”.

2.4.2 Le rapport de sensibilite

Le rapport de sensibilite (voir figure 2.5) fournit :

• les informations sur les variables : la reference de la cellule, le nom de lavariable determine tel qu’explique ci-dessus, la valeur finale de la variable,le cout reduit, le coefficient dans la fonction objectif, l’accroissement et la

Page 33: Excel

Section 2.4. Les rapports du solveur 33

Figure 2.5: Rapport de sensibilite

diminution maximale de ce coefficient avant qu’une variable ne change devaleur.

Nous rappelons ci-dessous la definition du cout reduit vue au cours de re-cherche operationnelle.

Definition 2.5 Le cout reduit d’une variable hors base (c’est-a-dire fixee azero) mesure l’accroissement de l’objectif par unite d’accroissement de lavariable.

Pour un produit non fabrique, il est negatif indiquant ainsi une perte de profitpar unite du produit non rentable qui serait fabriquee. C’est exactement lavaleur minimum de laquelle il faut reduire le cout de production du produitpour qu’il devienne rentable. D’ou le nom de cout reduit.

• les informations sur les contraintes : la reference de la cellule, le nom de lacontrainte, la valeur finale du membre de gauche de la contrainte, le prix dual,la valeur du membre de droite, l’augmentation et la diminution maximumde ce membre de droite telles que le prix dual reste le meme.

Nous rappelons ci-dessous la definition du prix dual vue au cours de re-cherche operationnelle.

Definition 2.6 Le prix dual, ou encore prix cache, mesure l’accroissementde l’objectif par unite d’accroissement du membre de droite de la contrainte.

Autrement dit, le prix dual donne ici le supplement de profit pour une unitede capacite en plus dans l’atelier. C’est donc le prix maximum que l’on estpret a debourser pour acquerir une unite de plus de capacite. D’ou le nomde prix dual.

Page 34: Excel

34 Chapitre 2. Le solveur d’EXCEL.

2.5 Exercices

2.1. Valorisation des dechets. Une societe de tri de dechets et recyclage depapier peut se fournir en dechets aupres de deux villes. Son role consiste aseparer les listes d’ordinateur et les journaux. La repartition entre menageset societes est differente d’une ville a l’autre expliquant un pourcentagedifferent de listes d’ordinateur et de journaux dans les dechets. Ces pour-centages ainsi que la quantite maximum de dechets que peuvent fournir paran ces deux villes sont reprises au tableau 2.5. La societe offre aux villes

Ville Listes Journaux Offre Prix

% % tonnes par an $ par tonne

Ville 1 5 20 10.000 35

Ville 2 15 30 20.000 35

Tableau 2.5: Valorisation des dechets

un prix de 35 $ par tonne de dechet. Elle doit decider du montant optimalde dechets a acheter a chaque ville pour minimiser son cout d’achat. Pourcouvrir ses frais fixes, la societe doit au moins collecter 1.500 tonnes delisting d’ordinateur par an. Au dela de 6.000 tonnes de journaux mis sur lemarche par an, le prix que la societe recoit pour la vente de journaux chuteet donc la compagnie ne desire pas vendre plus que cette quantite. Combienla societe doit-elle acheter de dechets par an a chacune des villes ?

2.2. Choix d’investissements. Un epargnant peut investir 1000 F. Il a le choixentre 3 investissements possibles : A, B et C. Les valeurs attendues et lesvaleurs minimales garanties apres un an sont, pour un franc :

Type valeur valeurd’investissement attendue garantie

A 1, 4 0, 9

B 1, 2 1, 2

C 1, 6 0, 5

L’epargnant souhaite un interet minimum garanti de 5% l’an. L’interet mi-nimal doit porter sur la somme disponible. Cependant, il a promis d’investirau moins 600 F sur B et C ensemble. Comment pourrait-il repartir soninvestissement pour maximiser la valeur attendue globale apres un an ?

2.3. Decoupe de bobines meres. Les papetiers fabriquent des rouleaux de papierdont la largeur est fixee par les caracteristiques des machines de production

Page 35: Excel

Section 2.5. Exercices 35

qu’ils utilisent. Leur clients peuvent leur reclamer des rouleaux de diverseslargeurs et de diverses longueurs. Comme il est frequent que ni la largeur nila longueur des bobines meres ne soient des multiples de celles de rouleauxcommandes, il y a des pertes connues sous le nom de chutes. La largeur desbobines meres est de 215 cm et leur longueur de 250 m. Les commandesacceptees par le papetier sont reprises au tableau 2.6.

Largeur longueur nombre de rouleaux

(en cm) (en m)

64 250 360

60 250 180

35 250 180

Tableau 2.6: Commandes acceptees

Comme la longueur des rouleaux commandes est identique a celle des bo-bines meres, il suffit d’assurer la coupe transversale d’un certain nombre debobines meres. Pour satisfaire les commandes acceptees, le papetier peut,par exemple, combiner trois coupes de largeur 64 cm dans la meme bobine,mais aussi, par exemple, deux de largeur 64 et deux de largeur 35. Toutesles possibilites sont reprises au tableau 2.7. On veut determiner comment

Largeur 1 2 3 4 5 6 7 8 9 10

64 3 2 2 1 1 1 0 0 0 0

60 0 1 0 2 1 0 3 2 1 0

35 0 0 2 0 2 4 1 2 4 6

Chute 23 27 17 31 21 11 0 25 15 5

Tableau 2.7: plans de coupe

satisfaire les commandes acceptees avec le minimum de bobines meres.

(a) Formuler le probleme (choix des variables, expression de l’objectif etdes contraintes).

(b) Ecrire le modele de calcul EXCEL.

(c) Resoudre avec EXCEL.

2.4. Calcul d’un pret personnel. Une banque fait une promotion sur les pretspersonnels. A partir des caracteristiques du pret, c’est-a-dire,

• le montant emprunte,

Page 36: Excel

36 Chapitre 2. Le solveur d’EXCEL.

• le taux d’interet mensuel,

• le taux de l’assurance ”solde restant du” obligatoire,

• la duree du pret,

elle vous demande de concevoir une feuille de calcul qui calcule, mois parmois,

• le montant des interets payes le mois (ils portent sur le capital restantdu);

• le montant de l’assurance payee le mois (elle porte sur le capital restantdu);

• le capital restant du.

Vous devez egalement determiner le montant de la mensualite constante apayer chaque mois.

(a) Ecrire le modele de calcul.

(b) En utilisant les donnees particulieres suivantes (emprunt de 10.000EURO rembourses en 60 mois avec un taux d’interet annuel de 6,50% (ce qui correspond a un taux mensuel de 0,541667 %) et un tauxd’assurance annuel de 0,54 % portant sur le solde restant du), mettreen œuvre votre modele en EXCEL.

Page 37: Excel

Chapitre 3

Etude de cas : Optimisation du plandirecteur de production

Une societe voudrait etablir son plan directeur de production, c’est-a-dire les quan-tites a produire chaque trimestre ainsi que les ressources a mobiliser chaque tri-mestre pour pouvoir satisfaire la demande a cout total annuel minimum. La de-mande pour les 12 prochains mois est donnee par trimestre au tableau 3.1. On

Trimestre Demandes Stock minimum Jours ouvrables

1 180 000 55 000 62

2 400 000 85 000 64

3 190 000 50 000 55

4 390 000 100 000 59

Tableau 3.1: Optimisation du plan directeur de production

suppose qu’un ouvrier peut produire 150 unites par jour ouvrable. Le nombre dejours ouvrables est repris au tableau 3.1. Il y a un effectif initial de 32 ouvriers etun stock initial de 0. Le cout d’embauche d’un ouvrier est de 20 000 F. Le cout delicenciement est de 50 000 F. Le cout de stockage d’une unite pendant un trimestreest de 10 F. On suppose que les licenciements et les embauches de personnel nepeuvent se realiser qu’en debut de chaque trimestre. De plus, pour des raisonscommerciales, on souhaite avoir un niveau minimum de stock en fin de chaquetrimestre. Ceci afin de faire face aux demandes du debut du trimestre suivant.

On demande de determiner les engagements et licenciements de debut dechaque trimestre, de maniere a ce que l’effectif du mois soit suffisant pour sa-tisfaire la demande (aucune rupture de stock n’est permise) a cout total minimum(somme du cout d’embauche, du cout de licenciement et du cout de stockage). Oncalculera egalement le niveau de l’effectif en debut de chaque trimestre et le niveaude stock en fin de trimestre.

37

Page 38: Excel

38Chapitre 3. Etude de cas : Optimisation du plan directeur de production

Une particularite de ce modele est qu’il y a ici des variables independanteset des variables dependantes.

Definition 3.1 Une variable dependante est une variable donc la valeur est cal-culee a partir de celles d’autres variables.

Si, dans la formulation mathematique, la distinction entre variables dependanteset variables independantes est sans objet, il n’en va pas de meme dans un modelede calcul Excel. En effet, rappelons que seules des variables independantesdoivent etre indiquees comme variables au modele de calcul Excel. Les variablesdependantes sont de simples formules de calcul. Si on indique la reference de descases de ces formules de calcul a Excel comme etant la reference de ”variables”,Excel efface le contenu de la case, c’est-a-dire la formule de calcul de la variabledependante.

On demande ici de

1. formuler mathematiquement le probleme (choix des variables independan-tes, des variables dependantes, expression de l’objectif, expression des cont-raintes),

2. mettre sous la forme d’un modele de calcul en Excel la formulation ainsiobtenue,

3. donner la solution obtenue par EXCEL.

Page 39: Excel

Partie II

Introduction aux bases de donnees

39

Page 40: Excel
Page 41: Excel

Chapitre 4

Concepts des bases de donnees

4.1 Introduction

Soulignons l’importance d’une bonne organisation des donnees dans de nom-breuses applications. Que ce soit dans l’enregistrement de donnees simples tellesque la tenue d’un repertoire d’adresses de clients, dans la tenue d’un fichier dereferences bibliographiques, dans la tenue d’un catalogue de pieces de rechange.Dans ce cas simple, les donnees peuvent etre enregistrees dans un fichier ou cesdonnees seront structurees en enregistrements. Par exemple, un enregistrement dufichier clients correspond a la fiche d’un client, composee des differents champsque sont le nom, l’adresse et le numero de telephone du client.

Que ce soit egalement dans l’enregistrement de donnees complexes qui sontenregistrees dans plusieurs fichiers. Par exemple, dans une entreprise, on peut avoirle fichier clients, le fichier produits, le fichier commandes, le fichier factures,. . . etc.Bien sur, il existe des relations entre ces fichiers. Par exemple, la commande vientd’un client enregistre dans le fichier clients, porte sur des produits du catalogue etdonnera lieu a une facture qui se retrouvera dans le fichier facture.

Les buts principaux des systemes de gestion de base des donnees sont aunombre de trois :

• Il s’agit tout d’abord de garantir la fiabilite des donnees : Est-ce que l’infor-mation stockee est bien celle qu’on a entre ? Comment eviter qu’une panneinformatique n’efface le contenu des fichiers ? . . . etc.

• Il s’agit ensuite de garantir leur coherence : Est-ce qu’a chaque commandelivree correspond une facture ? Est-ce que le nom du client permet univo-quement de le determiner ? . . . etc.

• Il s’agit enfin de permettre leur acces simultanement par plusieurs utilisa-teurs. Par exemple, le service commandes ou le service facturation doivent

41

Page 42: Excel

42 Chapitre 4. Concepts des bases de donnees

pouvoir travailler simultanement sur la meme base de donnees.

4.2 Notions de table, ligne et colonne

Une notion fondamentale dans les systemes de gestion de bases de donnees est lanotion de table.

Definition 4.1 Une table contient une suite de lignes stockees sur un support telqu’un disque dur. Une ligne (ou enregistrement) est une suite de plusieurs valeursde types bien determines.

En consequence, toutes les lignes presentes dans une table on le meme format.Chaque ligne se rapporte a une entite ou un fait du monde reel.

Illustrons ceci par un exemple tire de Hainaut [4]. Dans la table PERSONNES(voir tableau 4.1), chaque ligne est l’enregistrement d’un NOM, d’une ADRESSE,d’une VILLE, d’une valeur d’un COMPTE.

Definition 4.2 Une colonne (ou champs) represente donc une propriete des entitesde la table. Une colonne est definie par nom, le type de ses valeurs et sa longueurmaximum

Dans l’exemple, la colonne NOM de la table PERSONNES contient l’ensembledes noms de clients. La colonne est definie par :

• son nom : NOM;

• le type de ses valeurs : des alphanumeriques;

• sa longueur maximum : 12 caracteres.

4.3 Roles d’une colonne

Nous allons illustrer les differentes roles que peut prendre une colonne sur undeuxieme exemple. Les fournisseurs de la table 4.2 peuvent livrer les pieces derechanges de la table 4.3 aux prix donnes au tableau 4.4.

On distingue, en general, trois types de colonnes :

1. L’ identifiant ou cle (key) de la table : il s’agit de la colonne permet-tant d’identifier univoquement une entite. Dans notre exemple, il s’agit duchamps NUMF pour la table FOURNISSEURS. Chaque element d’une tellecolonne doit evidemment etre different.

Page 43: Excel

Section 4.3. Roles d’une colonne 43

PERSONNES

NOM ADRESSE VILLE COMPTE

Hansenne 23, A. Dumont Poitiers 1250.0

Mercier 25, r Lemaitre Namur -2300.0

Monti 112, r. Neuve Geneve 0.0

Toussaint 5, r. Godefroid Poitiers 0.0

Vanbist 180, r. Florimont Lille 720.0

Vanderka 3, av. des roses Namur -4580.0

Gillet 14, r. de l’Ete Toulouse 8700.0

Goffin 72, r. de la Gare Namur -3200.0

Ferard 65, r. du Tertre Poitiers 350.0

Avron 8, ch. de la Cure Liege -1700.0

Neuman 40, r. Bransart Toulouse 0.0

Poncelet 17, r. des Erables Toulouse 0.0

Franck 60, r. de Wepion Namur 0.0

Guillaume 14, ch des Roses Paris 0.0

Nadoy 201, bvd du Nord Toulouse 0.0

Jacob 78, ch. du Moulin Bruxelles 0.0

Tableau 4.1: Contenu de la table personnes

FOURNISSEURS

NUMF NOMF VILLEF

152 MERCIER TOURS

174 CHARLES NEVERS

81 DUMONT PARIS

376 RENIER NEVERS

259 CHARLES LIEGE

46 GARCIN PARIS

Tableau 4.2: Contenu de la table FOURNISSEURS

Page 44: Excel

44 Chapitre 4. Concepts des bases de donnees

PIECES

NUMP TYPE

14 BOULON

57 ECROU

15 BOULON

Tableau 4.3: Contenu de la table PIECES

LIVRE

NUMFL NUMPL PRIX

152 15 46.

174 57 32.

152 14 62.

81 14 65.

81 15 48.

152 57 34.

46 15 46.

46 57 32.

Tableau 4.4: Contenu de la table LIVRE

Page 45: Excel

Section 4.3. Roles d’une colonne 45

2. Les cles etrangeres (foreign key) : il s’agit d’une colonne d’identifiantd’une autre table. Dans notre exemple, le champs NUMFL est une cleetrangere de la table LIVRE.

3. Les informations complementaires : il s’agit d’une colonne apportant uneinformation complementaire. Dans notre exemple, les colonnes NOMF,VILLEF, TYPE, PRIX sont des colonnes d’informations complementaires.

Un identifiant d’une tableau peut etre constitue de plus d’une colonne : onparle alors d’identifiant multicomposant. Par exemple, l’identifiant de la tableLIVRE pourrait etre le couple (NUMFL,NUMPL).

On peut imposer plusieurs identifiant a une meme table. Un seul sera choisicomme identifiant primaire (primary key), les autres etant des identifiant secon-daires. Par exemple, dans un fichier de securites sociale, NUMERO URSAF etNUMERO CARTE IDENTITE peuvent etre deux identifiants, un des deux peutetre choisi comme identifiant primaire.

Enfin une notion fondamentale des bases de donnees relationnelles est la notionde contraintes referentielles : toute valeur d’une cle etrangere (faisant referencea la table A) presente dans une table B, on impose par la contrainte referentiellequ’il y ait une ligne dans la table A correspondant a cette valeur. Illustrons cettenotion sur l’exemple. Toute valeur de NUMFL dans LIVRE doit etre presentedans FOURNISSEUR comme une valeur de la colonne NUMF.

On introduit cette contrainte referentielle sur NUMFL de LIVRE de sorte qu’ilsera interdit d’introduire la ligne suivante :

(NUMFL:93,NUMPL:57,PRIX:32)

puisqu’il n’y a pas de valeur 93 de fournisseur.

Lorsque l’information d’une colonne peut etre omise lorsque l’on rentre desenregistrements, on parle de colonnes facultatives. Par exemple, on apprend qu’unnouveau fournisseur 259 peut livrer la piece 15 mais on ne connaıt pas encore sonprix. On introduit :

(NUMFL:259,NUMPL:15,PRIX:-)

La colonne PRIX est ainsi declaree facultative.

Il est evident que la colonne de tout identifiant primaire est obligatoire. Ainsi,la colonne NUMF de la table FOURNISSEUR est elle obligatoire.

Page 46: Excel

46 Chapitre 4. Concepts des bases de donnees

4.4 Structure d’une base de donnees

Pour une base de donnees, on distinguera clairement les deux choses que sont : sastructure et son contenu.

Le schema d’une base de donnees en defini sa structure en termes de :

• ses tables,

• leurs colonnes (avec le type de valeurs, le caractere obligatoire ou facultatif),

• leurs identifiant primaires et secondaires,

• les contraintes referentielles.

Le schema correspondant a l’exemple des fournisseurs est illustre sans les liensentre tables au tableau 4.5. La structure d’une base de donnees est en general stable

FOURNISSEURS

NUMF NOMF VILLEF

PIECES

NUMP TYPE

LIVRE

NUMFL NUMPL PRIX

Tableau 4.5: Schema de la base de donnees

dans le temps.

Par contre, le contenu d’une base de donnees est beaucoup plus volumineuxet est susceptible d’evoluer constamment. Dans notre exemple, les fournisseurspeuvent changer a tout moment.

Completons maintenant ce schema par quelques conventions la representationgraphique d’un schema conceptuel d’une base de donnees.

• Une table et ses colonnes sont representees par un cartouche contenant lenom de la table et celui de chaque colonne.

LIVRE

NUMFL NUMPL PRIX

Page 47: Excel

Section 4.4. Structure d’une base de donnees 47

• On souligne d’un trait continu les noms des colonnes de l’identifiant primaireet d’un trait pointille ceux de chaque identifiant secondaire.

LIVRE

NUMFL|NUMPL PRIX

• Le nom d’une colonne facultative est mis entre parentheses.

LIVRE

NUMFL|NUMPL (PRIX)

• Une reference etrangere vers un identifiant a plusieurs composants est sou-ligne par une accolade.

ARTICLE

NUMA NUMFL ANNEE|SAISON︸ ︷︷ ︸• Une contrainte referentielle sera representee par une fleche qui part de la

colonne de reference (ou de l’accolade d’un groupe de reference) et quipointe vers le cartouche de la table de reference.

On obtient ainsi le schema conceptuel complet tel que celui illustre a la figure4.1.

FOURNISSEUR

NUMFL NOMF VILLEF

CATALOGUE

ANNEE SAISON EDITEUR

ARTICLE

NUMA NUMFL ANNEE SAISON︸ ︷︷ ︸

Figure 4.1: Schema conceptuel complet

Page 48: Excel

48 Chapitre 4. Concepts des bases de donnees

4.5 Exemple de base de donnees relationnelle

Nous allons maintenant introduire un troisieme exemple de base de donnees qui vanous servir dans la suite de ce chapitre et au chapitre suivant consacre aux requetesque l’on peut faire sur une base de donnees. Il s’agit d’un exemple de base dedonnees enregistrant les commandes des differents produits d’une societe par sesdifferents clients. Son schema conceptuel est donne a la figure 4.2

CLIENT

NCLI NOM ADRESSE VILLE (CAT) COMPTE

PRODUIT

NPRO LIBELLE PRIX QSTOCK

COMMANDE

NCOM NCLI DATE

LIGNECOM

NCOM NPRO QCOM

Figure 4.2: Enregistrement des commandes de clients

Les differentes tables qui constituent cette base de donnees sont les suivantes :

• La table CLIENT ou chaque ligne est un enregistrement correspondant a unclient. Les differents champs de cette table sont :

– NCLI : le numero du client;

– NOM : son nom;

– ADRESSE : son adresse;

– VILLE : sa localite;

– COMPTE : l’etat de son compte;

L’identifiant primaire est NCLI.

• La table PRODUIT ou chaque ligne correspond a un produit vendu par lasociete. Les champs de cette table sont :

Page 49: Excel

Section 4.6. Modifications et contraintes d’integrite 49

– NPRO : le numero du produit;

– LIBELLE : son libelle;

– PRIX : son prix unitaire;

– QSTOCK : la quantite en stock;

L’identifiant primaire est NPRO.

• La table COMMANDE ou chaque ligne correspond a une commande enre-gistree. Les champs de cette table sont :

– NCOM : le numero de la commande;

– NCLI : le numero du client qui a passe commande;

– DATE : la date de passation de commande;

L’identifiant primaire est NCOM.NCLI est une reference etrangere vers la table CLIENT.

• La table LIGNECOM ou chaque ligne correspond a une ligne dans unecommande, donc a une partie de commande. Les champs de cette tablesont :

– NCOM : le numero de la commande a laquelle la ligne appartient;

– NPRO : le numero du produit commande;

– QCOM : la quantite commandee.

L’identifiant primaire est (NCOM,NPRO).NCOM et NPRO sont deux references etrangeres vers les tables COM-MANDE et PRODUIT respectivement.

Le contenu de la table CLIENT est donne a la table 4.6.

Le contenu de la table COMMANDE est donne a la table 4.7.

Le contenu de la table PRODUIT est donne a la table 4.8.

Le contenu de la table LIGNECOM est donne a la table 4.9.

4.6 Modifications et contraintes d’integrite

Le principe general est le suivant : Les proprietes structurelles (identifiant, cont-rainte referentielle, colonne obligatoire/facultative) associes aux donnees doiventetre respectees a tout instant, en particulier :

Page 50: Excel

50 Chapitre 4. Concepts des bases de donnees

CLIENT

NCLI NOM ADRESSE VILLE COMPTE

B112 Hansenne 23, A. Dumont Poitiers 1250

C123 Mercier 25, r Lemaitre Namur -2300

B332 Monti 112, r. Neuve Geneve 0

F010 Toussaint 5, r. Godefroid Poitiers 0

K111 Vanbist 180, r. Florimont Lille 720

S127 Vanderka 3, av. des roses Namur -4580

B512 Gillet 14, r. de l’Ete Toulouse -8700

B062 Goffin 72, r. de la Gare Namur -3200

C400 Ferard 65, r. du Tertre Poitiers 350

C003 Avron 8, ch. de la Cure Liege -1700

K729 Neuman 40, r. Bransart Toulouse 0

F011 Poncelet 17, r. des Erables Toulouse 0

L422 Franck 60, r. de Wepion Namur 0

S712 Guillaume 14, ch des Roses Paris 0

D063 Nadoy 201, bvd du Nord Toulouse -2250

F400 Jacob 78, ch. du Moulin Bruxelles 0

Tableau 4.6: Contenu de la table CLIENT

COMMANDE

NCOM NCLI DATE

178 K111 12/03/96

179 C400 12/02/96

182 S127 14/03/96

184 C400 27/03/96

185 F011 02/04/96

186 C400 02/04/96

188 B512 03/04/96

Tableau 4.7: Contenu de la table COMMANDE

Page 51: Excel

Section 4.6. Modifications et contraintes d’integrite 51

PRODUIT

NPRO Libelle PRIX QSTOCK

CS262 CHEV. SAPIN 200x6x2 75 45

CS264 CHEV. SAPIN 200x6x4 120 2690

CS464 CHEV. SAPIN 400x6x4 320 450

PA45 POINTE ACIER 45 (1K) 105 580

PA60 POINTE ACIER 60 (1K) 95 134

PH222 PL. HETRE 200x20x2 230 782

PS222 PL. SAPIN 200x20x2 185 1220

Tableau 4.8: Contenu de la table PRODUIT

LIGNECOM

NCOM NPRO QCOM

178 CS464 25

179 PA60 20

179 CS262 60

182 PA60 30

184 CS464 120

184 PA45 20

185 PA60 15

185 PS222 600

185 CS464 260

186 PA45 3

188 PA60 70

188 PH222 92

188 CS464 180

188 PA45 22

Tableau 4.9: Contenu de la table LIGNECOM

Page 52: Excel

52 Chapitre 4. Concepts des bases de donnees

• lors de l’ajout d’une ligne;

• lors de la suppression d’une ligne;

• lors de la modification de donnees d’une ligne.

Dans le cas contraire, on dit que les donnees ont perdu leur integrite !

Examinons les proprietes a respecter a tout moment :

• Un identifiant impose une contrainte d’unicite : a tout instant, les lignesd’une table possedent des valeurs distinctes dans la colonne correspondanta l’identifiant de la table. Par exemple, la colonne NCLI de la table client.Les proprietes suivantes sont a respecter :

– Lors de la creation d’une ligne, il ne peut exister de ligne possedant lememe identifiant.

– Lors de la suppression d’une ligne, il n’y a pas de contrainte pour latable en question.

– Lors de la modification de l’identifiant d’une ligne, il ne peut existerde ligne possedant la nouvelle valeur de l’identifiant dans la table enquestion.

• Une contrainte referentielle precise que certaines colonnes d’une table(les cles etrangeres) doivent a tout instant, pour chaque ligne, contenir desvaleurs que l’on retrouve comme identifiant primaire d’une ligne dans uneautre table.

Par exemple, la table COMMANDE (cfr figure 4.3) est soumise a une cont-rainte referentielle suivante : toute valeur de NCLI doit identifier une lignede CLIENT.

Examinons les proprietes a respecter lors des diverses operations de modifi-cation de COMMANDE :

– Lors de la creation d’une ligne de COMMANDE, la valeur de NCLIde cette ligne doit etre presente dans la colonne NCLI d’une ligne deCLIENT.

– Lors de la suppression d’une ligne de COMMANDE, il n’y a pas decontrainte (du moins dans sa relation avec CLIENT).

– Lors de la modification de la valeur de NCLI d’une ligne de COM-MANDE, la nouvelle valeur de NCLI de la ligne doit etre presente dansla colonne NCLI d’une ligne de CLIENT.

Page 53: Excel

Section 4.6. Modifications et contraintes d’integrite 53

CLIENT

NCLI NOM ADRESSE VILLE (CAT) COMPTE

PRODUIT

NPRO LIBELLE PRIX QSTOCK

COMMANDE

NCOM NCLI DATE

LIGNECOM

NCOM NPRO QCOM

Figure 4.3: Les commandes des clients

Examinons les proprietes a respecter lors des diverses operations de modifi-cation de CLIENT :

– Lors de la creation d’une ligne de CLIENT, il n’y a pas de restriction.

– Lors de la suppression d’une ligne de CLIENT, si ce client possede descommandes dans COMMANDE, on peut soit

1. refuser la suppression de la ligne CLIENT afin d’eviter des lignesde COMMANDE orphelines;

2. supprimer la ligne de CLIENT et toutes les lignes de COMMANDEqui la referencent;

3. si NCLI de COMMANDE est facultative, effacer la valeur de lacolonne NCLI des lignes de COMMANDE correspondantes.

– Lors de la modification de NCLI d’une ligne CLIENT, si des lignes deCOMMANDE y font reference, soit :

1. cela a le meme effet sur COMMANDE qu’une suppression de laligne CLIENT;

2. cela va modifier la valeur de NCLI en meme temps dans la ligne deCLIENT et dans les lignes de COMMANDE qui y font reference.

• Si une colonne est declaree obligatoire, chaque ligne doit posseder unevaleur. Lors de la creation ou de la modification, chaque ligne doit recevoirune valeur significative. Par exemple, dans la table CLIENT, il est permisde cree une ligne sans valeur pour CAT, mais pas sans valeur pour VILLE.

Page 54: Excel

54 Chapitre 4. Concepts des bases de donnees

4.7 Les systemes de gestion de donnees

Il existe deux types de logiciels a vocation bien differentes :

• Les systemes de gestion de fichiers;

• Les systemes de gestion de base de donnees.

Les logiciels de gestion de fichiers permettent a l’utilisateur non specialisede resoudre des problemes simples relatifs a des donnees non complexes. Ils nepermettent souvent que de gerer un seul fichier a la fois. Les fonctions offertessont :

• la construction d’un nouveau fichier;

• la consultation de ses enregistrements;

• la modification des donnees (ajout, suppression, modification);

• le tri;

• la production de rapports sur des donnees extraites du fichier.

Nous avons vu un exemple d’un tel logiciel dans la premiere partie du cours : ils’agit du tableur Excel.

Les logiciels de gestion de base de donnees s’adressent egalement au deve-loppeur d’applications. Ils permettent de travailler simultanement sur plusieurstables en relation entre elles. En plus, des fonctions des systemes de gestion defichiers, ils disposent :

• de fonctions de consultation et de manipulation des donnees tres evoluees;

• d’un langage de programmation qui permet le developpement de program-mes complexes (le langage SQL).

C’est ce que nous verrons au chapitre suivant.

Nous verrons egalement comment utiliser un des logiciels les plus connus : ils’agit de Microsoft Access.

Page 55: Excel

Section 4.8. Exercices 55

4.8 Exercices

4.1. Les animaux du zoo. Les animaux du zoo suivent chacun un regime ali-mentaire. Un regime est constitue d’un melange d’ingredients, chacun enquantite determinee. Le regime d’un animal peut varier d’un jour a l’autre.Chaque animal est caracterise, en fonction de son espece, par ses besoinsminima et maxima en nutriment (calcium, proteines, etc.), exprimes en mgpar unite de poids de l’animal. Ces besoins sont fonction de l’espece del’animal. On connaıt la teneur de chaque ingredient en nutriment, exprimeeen mg par kg d’ingredient. Chaque ingredient a un cout unitaire. Chaqueanimal requiert des soins qui sont evalues en francs par jour. On demandede construire le schema conceptuel de la base de donnees.

4.2. Gestion d’un bibliographie. On desire gerer une bibliographie constitueed’articles (code identifiant, type, titre). Chaque article est ecrit par un nombrequelconque d’auteurs. Chaque auteur est caracterise par son nom (supposeidentifiant) et l’organisme dont il depend. En outre, chaque article est tired’un ouvrage dont on donne le titre, l’editeur, la date de parution, ainsiqu’un numero identifiant. Dans cet ouvrage, chaque article commence enhaut d’une page dont on connaıt le numero. Exemple : l’article de code13245, du type “THEORIE”, intitule “Non-monotonic reasoning in opera-tional research”, ecrit par Baxter (Standford Univ.) et Randon (Bell Labs)est extrait (page 340) de l’ouvrage numero 556473, intitule “Advanced To-pics in Decision Support Systems”, publie par North-Holland en 1988. Ondemande de traduire ce schema en structure de tables.

4.3. Les prescriptions medicales. Les patients d’un hopital son repartis dansles services (caracterises chacun par un nom identifiant, sa localisation, saspecialite) de ce dernier. A chaque patient peuvent etre prescrits des remedes.Un remede est identifie par son nom et caracterise par son type et son fabri-cant. Chaque prescription d’un remede a un patient est faite par un medecina une date donnee pour une duree determinee. Chaque patient est identifiepar un numero d’inscription. On en connaıt le nom, l’adresse et la date denaissance. Chaque medecin appartient a un service. Il est identifie par sonnom et son prenom. On demande de traduire ce schema en structure detables. On sera particulierement attentif a la notion de prescription.

4.4. Flotte de vehicules. Une entreprise de distribution dispose d’un certainnombre de vehicules (identifies par leur numero et caracterises par leurcapacite et le nom du conducteur). Chaque jour, chaque vehicule effectue une(et une seule) tournee de distribution, d’une longueur determinee. Durantcette tournee, le vehicule emporte des colis (decrits chacun par un numero

Page 56: Excel

56 Chapitre 4. Concepts des bases de donnees

identifiant et un poids) . Chaque colis doit etre livre a un destinataire. Undestinataire est identifie par un numero de destinataire et caracterise parun nom et une adresse. On demande de traduire ce schema conceptuel unstructure de tables. On fera attention a l’identifiant concernant les tournees.

Page 57: Excel

Chapitre 5

Le langage SQL

5.1 Introduction

Le langage SQL, pour Structured Query Langage, est un langage, utilise par laplupart des SGBD, qui permet d’adresser des requetes a une base de donnees.

Une base de donnees SQL est organisee en :

• tables (tables);

• colonnes (columns);

• identifiants primaires (primary key);

• colonnes de references (foreign keys).

Les operations envisageables en SQL sont les operations de modifications debase que sont :

• le rajout d’une ligne;

• la suppression d’une ligne;

• la modification d’une ligne.

Mais le langage SQL permet aussi :

• le rajout d’une table a la base donnees;

• la suppression d’une table de la base;

• le rajout d’une colonne dans une table.

• la suppression d’une colonne dans une table.

57

Page 58: Excel

58 Chapitre 5. Le langage SQL

L’acces aux donnees et leur manipulation s’effectuent a partir du langage SQL.Le resultat d’une requete SQL se presente sous la forme d’une table (eventuellementreduite a une seule ligne ou une seule colonne). Generalement, les donnees de cettetable resultante sont

• soit un sous-ensemble d’une table existante;

• soit construites a partir d’extraits de plusieurs tables, mises en correspon-dance sur base de valeurs communes dans certaines colonnes. On presenteraplus loin des exemples.

Les donnees extraites sont generalement presentees sous forme d’un rapportqui peut :

• etre lu a l’ecran;

• etre imprime;

• etre stocke dans une nouvelle table de la base.

D’autres fonctions plus specifiques existent dans la plupart des SGDB SQLtelles que :

• la definition des vues;

• la protection contre les incidents;

• la gestion des acces concurrents;

• le controle d’acces;

• . . .

En conclusions, le langage SQL permet donc de :

• definir la structure de la base de donnees;

• manipuler le contenu des tables de cette base.

Chaque instruction SQL constitue une requete qui peut etre introduite de maniereinteractive, au terminal, soit peut etre generee via un programme ecrit en Pascal,C ou Cobol. Nous considererons ici seulement la version interactive.

Page 59: Excel

Section 5.2. Definition d’une base de donnees 59

5.2 Definition d’une base de donnees

5.2.1 Creation d’une table

Illustrons la creation de la table sur l’exemple introduit au chapitre 4 et dont leschema conceptuel rappele a la figure 5.1.

CLIENT

NCLI NOM ADRESSE VILLE (CAT) COMPTE

PRODUIT

NPRO LIBELLE PRIX QSTOCK

COMMANDE

NCOM NCLI DATE

LIGNECOM

NCOM NPRO QCOM

Figure 5.1: Enregistrement des commandes de clients

En SQL, on creera la table CLIENT par les commandes suivantes :

create table CLIENT ( NCLI char(4),

NOM char(12),

ADRESSE char(20),

LOCALITE char(12),

CAT char(2),

COMPTE decimal (9,2))

Cette operation a pour effet de produire une table vide (c’est-a-dire sans ligne).On specifie donc :

• le nom de la table;

• le nom de chaque colonne de la table;

Page 60: Excel

60 Chapitre 5. Le langage SQL

• le type des valeurs de chaque colonne;

• la longueur de chaque colonne.

Les differents types possibles sont :

• SMALLINT : pour les entiers cours (16 bits),

• INTEGER : pour les entiers longs (32 bits),

• DECIMAL(m,n) : pour les decimaux de m chiffres dont n apres point decimal,

• FLOAT : pour les reels flottants,

• CHAR(n) : pour une chaıne fixe de n caracteres,

• VARCHAR : pour une chaıne variable de n caracteres au plus, n < 256,

• LONG VARCHAR : pour une chaıne variable de moins de 32768 caracteres,

• DATE : pour une date.

On completera la declaration de la table par la clause primary key :

create table CLIENT ( NCLI char(4),

NOM char(12),

ADRESSE char(20),

LOCALITE char(12),

CAT char(2),

COMPTE decimal (9,2),

primary key (NCLI) )

Remarquez les parentheses autour de la cle primaire. Ceci est necessaire pourpouvoir specifier des cles primaires composees de plusieurs champs telles quecelle de la table LIGNECOM :

create table LIGNECOM (NCOM char(4),

NPRO char(5),

QCOM decimal(4),

primary key (NCOM, NPRO))

Les identifiants secondaires seront declares par la clause unique comme dansl’exemple du numero d’affiliation a la securite sociale et du numero d’identite :

Page 61: Excel

Section 5.2. Definition d’une base de donnees 61

create table ASSURE ( NUM_AFFIL char(4),

NUM_IDENT char(5),

NOM char(25),

primary key (NUM_AFFIL),

unique (NUM_IDENT) )

Voyons maintenant comment exprimer d’une contrainte referentielle enSQL. On declarera une cle etrangere et la table referencee par la clause foreignkey en y indiquant vers quelle table pointe la cle etrangere :

create table LIGNECOM (NCOM char(4),

NPRO char(5),

QCOM decimal(4),

primary key (NCOM, NPRO),

foreign key (NCOM) references COMMANDE,

foreign key (NPRO) references PRODUIT)

Voyons maintenant comment exprimer le caractere obligatoire/facultatifd’une colonne. Par defaut, toute colonne est facultative. Le caractere non nul estdeclare par la clause not null :

create table LIVRE (NUMFL char(4) not null,

NUMPL char(5) not null,

PRIX decimal(4),

primary key (NUMFL, NUMPL),

foreign key (NUMFL) references FOURNISSEUR,

foreign key (NUMPL) references PIECE)

5.2.2 Suppression d’une table

Toute table peut etre supprimee par :

drop table LIGNECOM

Si la table contient des lignes, elles sont prealablement supprimees. Par exemple,la suppression de la table COMMANDE entraınerait la suppression de toutes leslignes de LIGNECOM (mais pas de la table) afin que les contraintes d’integritesoient respectees.

Page 62: Excel

62 Chapitre 5. Le langage SQL

5.2.3 Ajout et retrait d’une colonne

La commande suivante ajoute la colonne POIDS a la table PRODUIT :

alter table PRODUIT

add POIDS smallint

La commande suivante elimine la colonne PRIX de la table PRODUIT :

alter table PRODUIT

drop PRIX

5.3 Consultation et extraction de donnees

5.3.1 Principes de base

L’execution d’une requeteselectproduit un resultat qui est une table. Une requetecontient trois parties :

• la clause select precise les valeurs (nom des colonnes, valeurs derivees)qui constituent chaque ligne du resultat,

• la clause from indique la ou les tables desquelles on tire les valeurs,

• la clause where donne la condition de selection que doivent satisfaire leslignes qui fournissent le resultat.

Illustrons ceci sur quelques exemples.

5.3.2 Requetes sur une seule table

La requete la plus simple consiste a selectionner la valeur de certaines colonnesd’une table. Ainsi, la requete

select NCLI, NOM, VILLE

from CLIENT

Page 63: Excel

Section 5.3. Consultation et extraction de donnees 63

demande les valeurs de NCLI, NOM et VILLE des lignes de la table CLIENT. Lareponse se presente ainsi :

NCLI NOM VILLE

B112 Hansenne Poitiers

C123 Mercier Namur

B332 Monti Geneve

F010 Toussaint Poitiers

K111 Vanbist Lille

S127 Vanderka Namur

B512 Gillet Toulouse

B062 Goffin Namur

C400 Ferard Poitiers

C003 Avron Liege

K729 Neuman Toulouse

F011 Poncelet Toulouse

L422 Franck Namur

S712 Guillaume Paris

D063 Nadoy Toulouse

F400 Jacob Bruxelles

Si on veut les valeurs de toutes les colonnes, on peut simplifier la clause selectcomme suit :

select *

from CLIENT

Supposons maintenant que l’on veuille selectionner les informations NCLI etNOM de la table CLIENT uniquement pour les clients de Toulouse. La requeteSQL correspondante est :

select NCLI,NOM

from CLIENT

where VILLE = ’Toulouse’

Page 64: Excel

64 Chapitre 5. Le langage SQL

Le resultat est la table suivante :

NCLI NOM

B512 Gillet

K729 Neuman

F011 Poncelet

D063 Nadoy

Le resultat d’une requete contient autant de lignes qu’il n’y a, dans la tablede depart, de lignes verifiant la condition de selection. Si l’identifiant primairen’est pas repris dans la clause select, il se peut que le resultat contienne plusieurslignes identiques :

select VILLE

from CLIENT

where CAT = ’C1’

Donne le resultat suivant :VILLEPoitiersNamurPoitiersNamurNamur

On peut eliminer les lignes en double par la clause distinct. Ainsi, la requeteSQL :

select distinct VILLE

from CLIENT

where CAT = ’C1’

donne le resultat suivant :VILLEPoitiersNamur

5.4 Conditions de selection plus complexes

5.4.1 Conditions elementaires

On peut, dans la clause where, utiliser des expressions booleennes au moyendes operateurs and, or, not. Par exemple, on peut selectionner les NOM,

Page 65: Excel

Section 5.4. Conditions de selection plus complexes 65

ADRESSE et COMPTE des clients de Toulouse ayant un compte debiteur parla commande SQL suivante :

select NOM, ADRESSE, COMPTE

from CLIENT

where VILLE = ’Toulouse’ and COMPTE <= 0

Une condition elementaire peut porter sur la presence ou non d’une valeur pourun champ non obligatoire tel que le champ CAT de la table client :

where CAT is null

where CAT is not null

Une condition elementaire peut aussi porter sur l’appartenance a une liste :

where CAT in (’C1’,’C2’,’C3’)

where VILLE not in (’Toulouse’, ’Namur’)

Une condition elementaire peut porter sur l’appartenance a un intervalle de va-leurs :

where COMPTE between 1000 and 4000

Une condition elementaire peut porter sur la presence de certains caracteres dansun nom. On utilise un alors masque :

where CAT like ’_1’

where ADRESSE not like ’%Neuve%’

Dans le masque ’_1’, le sigle “_” signifie un caractere quelconque. Par exemple,“A1”, “B1”, “C1” conviennent. Dans le masque ’%Neuve%’, le sigle “%” si-gnifie une suite quelconque de caracteres (suite eventuellement vide). Ainsi”137 rue Neuve” convient.

5.4.2 Donnees extraites et donnees derivees

La clause select permet de specifier des donnees derivees, c’est-a-dire des valeurscalculees et non plus simplement extraites des tables. Ainsi, la requete SQLsuivante :

Page 66: Excel

66 Chapitre 5. Le langage SQL

select ’TVA de ’, NPRO,’ = ’,0.19*PRIX*QSTOCK

from PRODUIT

where QSTOCK > 500

produit un tableau donnant les montants de TVA des articles dont la quantite enstock est superieure a 500 unites. Le resultat est le suivant :

TVA de NPRO = 0.19*PRIX*QSTOCK

TVA de CS264 = 61332TVA de PA45 = 11571TVA de PH222 = 34173TVA de PS222 = 42883

5.4.3 Les fonctions agregatives

Un certain nombres de fonctions agregatives existent en SQL. Elles permettentde calculer un resultat unique a partir de l’ensemble des valeurs d’une colonned’une table. Ainsi,

• la requete count(*) compte le nombre de lignes trouvees dans une table,

• la requete avg(nom-colonne) calcule la moyenne de la colonne,

• la requete sum(nom-colonne) calcule la somme de la colonne,

• la requete min(nom-colonne) calcule le minimum de la colonne,

• la requete max(nom-colonne) calcule le maximum de la colonne.

Par exemple, la requete calculant la moyenne et le nombre des comptes desclients de NAMUR s’ecrit en SQL :

select ’Namur’,avg(COMPTE),count(*)

from CLIENT

where VILLE~: ’Namur’

Remarquez que l’argument ”nom-colonne” dans les fonctions agregatives peutetre remplace par toute expression a valeur numerique. Ainsi la requete SQLsuivante :

select sum(QSTOCK*PRIX)

from PRODUIT

where LIBELLE like ’%SAPIN%’

Page 67: Excel

Section 5.5. Les sous-requetes 67

calcule la valeur du stock des produits en SAPIN.

Remarquez aussi que la clause distinct peut etre utilisee dans l’argumentd’une fonction agregative. Par exemple, pour obtenir le nombre de clients differentsenregistres dans la table COMMANDE, on utilisera la requete SQL suivante :

select count(distinct NCLI)

from COMMANDE

5.5 Les sous-requetes

On parle de sous-requetes lorsque les donnees sont extraites d’une seule table,mais que les conditions de selection porte sur des donnees d’autres tables.

Par exemple, supposons que l’on veuille trouver les commandes des clients quihabitent Namur. On peut trouver les numeros des clients de Namur par la requeteSQL suivante :

select NCLI

from CLIENT

where VILLE = ’Namur’

dont l’execution donne :NCLI

C123

S127

B062

L422

Les commandes des clients de Namur sont alors obtenues par :

select NCOM,DATE

from COMMANDE

where NCLI in (’C123’,’S127’,’B062’,’L422’)

Mais il vaut mieux utiliser la structure emboıtee suivante :

select NCOM,DATE

from COMMANDE

where NCLI in (select NCLI

from CLIENT

where VILLE = ’Namur’)

Page 68: Excel

68 Chapitre 5. Le langage SQL

Definition 5.1 Une structure select-from dans une clause where est appeleeune sous-requete.

Bien sur, une sous-requete peut contenant une sous-requete. Par exemple,pour trouver les produits qui ont ete commandes par au moins un client de Namur,on peut ecrire les sous-requetes emboıtees suivantes :

select *

from PRODUIT

where NPRO in

(select NPRO

from LIGNECOM

where NCOM in

(select NCOM

from COMMANDE

where NCLI in

(select NCLI

from CLIENT

where VILLE = ’Namur’

)

)

)

Une table peut apparaıtre plus d’une fois dans une requete. Illustrons cecisur les deux exemples suivants.

Exemple 5.1 Quels sont les clients qui habitent dans la meme localite que le clientB512 ?

La reponse est fournie par la requete SQL suivante :

select *

from CLIENT

where VILLE in (select VILLE

from CLIENT

where NCLI = ’B512’)

Exemple 5.2 Quelles sont les commandes qui specifient une quantite de produitPA60 inferieure a celle de la commande 182 ?

La reponse est fournie par la requete SQL suivante :

Page 69: Excel

Section 5.6. Les quantificateurs ensemblistes 69

select *

from COMMANDE

where NCOM in (select NCOM

from LIGNECOM

where NPRO = ’PA60’

and QCOM < (select QCOM

from LIGNECOM

where NPRO = ’PA60’

and NCOM = ’182’))

Remarquons que lorsqu’un meme nom de colonne appartient dans plusieurstables (comme NCOM), par defaut, on fait toujours reference a la requete la plusemboıtee dont la table contient une colonne de ce nom. Si deux tables ont deuxcolonnes de meme nom et que l’on veut lever l’ambiguıte, on peut prefixer le nomde la colonne du nom de la table :

CLIENT.NCLI ou COMMANDE.NCLI

Remarquez enfin que, pour raccourcir les commandes SQL, on peut donner unsynonyme au nom de la table apparaissant dans le from et utiliser ce synonyme :

select *

from PRODUIT P1

where P1.PRIX>123

5.6 Les quantificateurs ensemblistes

Une condition peut porter sur l’existence (exists) ou la non existence (notexists) d’au moins une ligne dans le resultat d’une sous-requete. Illustrons cecisur l’exemple suivant.

Exemple 5.3 Quels sont les produits qui ne sont pas commandes pour l’instant ?

select *

from PRODUIT P

where not exists ( select NPRO

from LIGNECOM

where NPRO = P.NPRO)

Le quantificateur existentielany signifie qu’au moins un element de l’ensemblesatisfait la condition. Illustrons ceci sur l’exemple suivant.

Page 70: Excel

70 Chapitre 5. Le langage SQL

Exemple 5.4 Quelles sont les lignes de commandes de PA60 dont la quantitecommandee n’est pas minimale ?

select *

from LIGNECOM

where QCOM > any (select QCOM

from LIGNECOM

where NPRO = ’PA60’)

and NPRO = ’PA60’

Le quantificateur universelall signifie que que tous les elements de l’ensemblesatisfont la condition. Illustrons ceci sur l’exemple suivant.

Exemple 5.5 Quelles sont les lignes de commandes specifiant la quantite minimumdu produit PA60 ?

select *

from LIGNECOM

where QCOM <= all (select QCOM

from LIGNECOM

where NPRO = ’PA60’)

and NPRO = ’PA60’

5.7 Extraction de donnees de plusieurs tables

On parle de jointure de plusieurs tables lorsque les donnees sont extraites deplusieurs tables pour etre presentees dans une table. On doit preciser le nomdes tables dont sont extraites les donnees et la regle d’association des lignes desdifferentes tables. Illustrons ce concept sur l’exemple suivant.

Exemple 5.6 Pour chaque commande, on demande joindre les informations surle client a l’origine de la commande.

Ceci peut etre fait au moyen de la jointure des tables COMMANDE et CLIENT :

select NCOM,CLIENT.NCLI,DATE,NOM,ADRESSE

from COMMANDE,CLIENT

where COMMANDE.NCLI = CLIENT.NCLI

Page 71: Excel

Section 5.7. Extraction de donnees de plusieurs tables 71

NCOM NCLI DATE NOM ADRESSE

178 K111 12/03/96 Vanbist 180 r. Florimont

179 C400 12/03/96 Ferard 65 r. du Tertre

182 S127 14/03/96 Vanderka 3 av. des Roses

184 C400 27/03/96 Ferard 65 r. du Tertre

185 F011 02/04/96 Poncelet 17 clos des Erables

186 C400 02/04/96 Ferard 65 r. du Tertre

188 B512 03/04/96 Gille 14 r. de l’Ete

Tableau 5.1: Jointure des tables COMMANDE et CLIENT

dont le resultat est donne a la table 5.1.

Expliquons le principe de construction du resultat d’une jointure. Concep-tuellement, le resultat est obtenu comme suit :

1. On construit une table en accouplant chaque ligne de la premiere table achaque ligne de la seconde :

from COMMANDE, CLIENT

2. On selectionne, parmi les lignes obtenues, celles qui verifient la conditiond’association :

where COMMANDE.NCLI = CLIENT.NCLI

3. On ne retient que les colonnes demandees :

select NCOM, NCLI, DATE, NOM, ADRESSE

Remarquons que les SGBD ne procedent pas de la sorte : une enumeration detoutes les jointures possibles est tres inefficace, mais, d’un point de vue conceptuel,le resultat est le meme.

Remarquons aussi que, dans une jointure, on peut omettre la condition dejointure. On obtient alors n × m lignes dans le resultat.

Remarquons aussi que la jointure ne preserve pas toutes les lignes des ar-guments. Ainsi les clients n’ayant pas de commandes n’apparaıtront pas dans leresultat. Si on veut, en plus des lignes avec les clients n’ayant pas de commande,on peut utiliser la commande UNION :

Page 72: Excel

72 Chapitre 5. Le langage SQL

select NCOM,CLIENT.NCLI,DATE,NOM,ADRESSE

from COMMANDE,CLIENT

where COMMANDE.NCLI = CLIENT.NCLI

UNION

select null, NCLI, null, NOM, ADRESSE

from CLIENT

where NCLI not in (select NCLI

from COMMANDE)

Il en resultera la table 5.2.

NCOM NCLI DATE NOM ADRESSE

178 K111 12/03/96 Vanbist 180 r. Florimont179 C400 12/03/96 Ferard 65 r. du Tertre182 S127 14/03/96 Vanderka 3 av. des Roses184 C400 27/03/96 Ferard 65 r. du Tertre185 F011 02/04/96 Poncelet 17 des Erables186 C400 02/04/96 Ferard 65 r. du Tertre188 B512 03/04/96 Gillet 14 r. de l’Etenull B112 null Hansenne 23 A. Dumontnull C123 null Mercier 25 r Lemaitrenull B332 null Monti 112 r. Neuvenull F010 null Toussaint 5 r. Godefroidnull B062 null Goffin 72 r. de la Garenull C003 null Avron 8 ch. de la Curenull K729 null Neuman 40 r. Bransartnull L422 null Franck 60 r. de Wepionnull S712 null Guillaume 14 ch des Rosesnull D063 null Nadoy 201 bvd du Nordnull F400 null Jacob 78 ch. du Moulin

Tableau 5.2: Illustration de la commande UNION

Enfin, on peut combiner des conditions de jointure avec des conditions deselection. Par exemple, on peut combiner la condition de jointure

COMMANDE.NCLI = CLIENT.NCLI

avec des conditions de selection. Illustrons ceci sur l’exemple suivant.

Page 73: Excel

Section 5.8. Requetes sur des donnees cycliques 73

Exemple 5.7 Quelles sont les commandes avec adresse du client, en se limitantaux clients de la categorie C1 et aux commandes anterieures au 15/03/96 ?

select NCOM,CLIENT.NCLI,DATE,NOM,ADRESSE

from COMMANDE,CLIENT

where COMMANDE.NCLI = CLIENT.NCLI

and CAT = ’C1’

and DATE < 15/03/96

5.8 Requetes sur des donnees cycliques

On qualifie de cyclique ou recursive un structure de donnees qui fait, directementou indirectement, reference a elle-meme. Illustrons ceci sur un exemple de latable PERSONNE (voir tableau 5.3) ou chaque personne est caracterisee par sonmatricule et peut avoir eventuellement un responsable.

PERSONNE

MATRICULE NOM (RESPONSABLE)

p1 Mercier

p2 Durant

p3 Noirons p1

p4 Dupont p1

p5 Verger p4

p6 Dupont p4

p7 Dermiez p6

p8 Anciers p2

Tableau 5.3: Exemple de donnees cycliques

Dans table PERSONNE, la colonne RESPONSABLE est une cle etrangerevers la table PERSONNE elle-meme. Elle designe le responsable de la personnequi peut elle aussi avoir un responsable.

Cette table peut etre creee par la requete SQL suivante :

create table PERSONNE (

MATRICULE char(4) not null,

NOM char(25) not null,

Page 74: Excel

74 Chapitre 5. Le langage SQL

RESPONSABLE char (4),

primary key (MATRICULE),

foreign key (RESPONSABLE) references

PERSONNE)

Supposons maintenant que l’on veuille repondre a la question suivante :

Exemple 5.8 Pour chaque personne nommee Dupont, donner son matricule et lenom de son responsable.

Ceci peut etre fait par la requete SQL suivante :

select D.MATRICULE, R.MATRICULE, R.NOM

from PERSONNE D, PERSONNE R

where R.MATRICULE = D.RESPONSABLE

and D.NOM = ’Dupont’

Illustrons le meme concept sur un autre exemple de structure recursiveillustree au tableau 5.4.

COMPOSITION

COMPOSE | COMPOSANT | QUANTITE↓ ↓

PRODUIT

NPRO LIBELLE (PRIX) (POIDS)

Tableau 5.4: Exemple de structure cyclique

La table COMPOSITION permet de donner la composition d’un produit enterme de ses sous-produits, ceux-ci pouvant aussi etre decomposes. Cette structurepermet de representer, par exemple, le fait qu’une unite de produit 123 contient0,5 unites du produit 432 et 1,2 du produit 551. Il suffit en effet, d’enregistrerdans la table ”COMPOSITION”, les deux lignes d’entrees suivantes :

COMPOSITION

COMPOSE COMPOSANT QUANTITE

123 432 0,5

123 551 1,2

Page 75: Excel

Section 5.9. Sous-requete ou jointure ? 75

5.9 Sous-requete ou jointure ?

On a parfois le choix d’ecrire une requete de maniere alternative en utilisant leconcept de sous-requete ou le concept de jointure. Illustrons ceci sur les deuxexemples suivants :

Exemple 5.9 Determiner les commandes des clients habitant Namur.

La requete peut s’ecrire comme une sous-requete de la maniere suivante :

select NCOM,DATE

from COMMANDE

where NCLI in (select NCLI

from CLIENT

where VILLE = ’Namur’)

Elle peut s’ecrire comme une jointure sous la forme suivante :

select NCOM,DATE

from COMMANDE, CLIENT

where COMMANDE.NCLI = CLIENT.NCLI

and VILLE = ’Namur’

Illustrons ceci egalement sur l’exemple 5.2 dont l’enonce est rappele ci-dessous.

Exemple 5.2. Quelles sont les commandes qui specifient une quantite de produitPA60 inferieure a celle de la commande 182 ?

Cette requete peut etre ecrite en utilisant le concept de sous-requete comme suit :

select *

from COMMANDE

where NCOM in (select NCOM

from LIGNECOM

where NPRO = ’PA60’

and QCOM < (select QCOM

from LIGNECOM

where NPRO = ’PA60’

and NCOM = ’182’))

Mais peut s’ecrire de maniere equivalente en utilisant le concept de jointurecomme :

Page 76: Excel

76 Chapitre 5. Le langage SQL

select C.NCOM, DATE, NCLI

from COMMANDE C, LIGNECOM L1, LIGNECOM L2

where C.NCOM = L1.NCOM

and L1.NPRO = ’PA60’

and L2.NCOM = ’182’

and L2.NPRO = ’PA60’

and L1.QCOM < L2.QCOM

Expliquons cette seconde forme :

• La condition C.NCOM = L1.NCOM associe a chaque commande de la tableCOMMANDE “C” chacune de ses lignes dans LIGNECOM “L1”.

• La conditions L1.NPRO = ’PA60’ retient les lignes LIGNECOM “L1” quispecifient le produit PA60.

• Les conditions L2.NCOM=182 and L2.NPRO=’PA60’ designent la ligne dereference de LIGNECOM “L2” : il s’agit de celle concernant la commandedu produit PA60 dans la commande 182.

• La condition L1.QCOM<L2.QCOM etablit le critere de selection des lignesLIGNECOM “L1” par rapport a la ligne de reference de LIGNECOM “L2”.

La jointure permet egalement d’effectuer des calculs sur des quantites extraitesde plusieurs tables. Illustrons ceci sur l’exemple suivant.

Exemple 5.10 Quelle est le montant de la commande a payer ?

On peut y repondre par la requete SQL suivante faisant la jointure de la tableLIGNECOM (pour chercher la quantite commandee et la reference du produit) etla table PRODUIT (pour chercher le prix) :

select NCOM, L.NPR, QCOM*PRIX

from LIGNECOM L, PRODUIT P

where L.NPRO = P.NPRO

Enfin, on peut bien sur utiliser la clause distinct si l’on veut eviter lesdoublons dans une jointure de plusieurs tables. Illustrons ceci sur l’exemple suivantavec plusieurs jointures :

select VILLE,LIBELLE

from CLIENT CLI, COMMANDE COM,

Page 77: Excel

Section 5.10. Extraction de donnees groupees 77

LIGNECOM L, PRODUIT P

where CLI.NCLI = COM.NCLI

and COM.NCOM = L.NCOM

and L.NPRO = P.NPRO

Le resultat contient autant de lignes de couples (VILLE,LIBELLE) qu’il n’y en adans LIGNECOM. Or un meme produit peut etre commande par plusieurs clientsd’une meme ville. L’ajout de la clause distinct dans la clause select donneraitl’ensemble des couples (v,l) lorsque dans la ville v, on a commande au moinsune fois le produit l. Ceci est fait par la requete suivante :

select distinct VILLE,LIBELLE

from CLIENT CLI, COMMANDE COM,

LIGNECOM L, PRODUIT P

where CLI.NCLI = COM.NCLI

and COM.NCOM = L.NCOM

and L.NPRO = P.NPRO

5.10 Extraction de donnees groupees

Definition 5.2 La clause group by permet de regrouper en sous-ensemble leslignes d’une table en fonction de la valeur d’un champ.

Illustrons ce concept sur l’exemple suivant

Exemple 5.11 Pour chaque groupe de client regroupes par localite, donner lenombre de clients du groupe et le montant moyen des avoirs en compte.

La reponse a cette question est fournie par la requete SQL suivante :

select VILLE, count(*), avg(COMPTE)

from CLIENT

group by VILLE

dont le resultat est donne a la table 5.5.

Deux remarques tres importantes s’imposent ici :

1. On ne peut mettre dans la clause select que des noms de champ pourlesquels il n’existe qu’une seule valeur par groupe. Par exemple, on n’auraitpas pu specifier le NOM ni la CAT. En effet, dans le resultat, il n’y a qu’uneseule ligne par groupe.

Page 78: Excel

78 Chapitre 5. Le langage SQL

VILLE count(*) avg(COMPTE)

Poitiers 3 533.33Namur 4 -2520.00Geneve 1 0.00Lille 1 720.00Toulouse 5 -2530.00Paris 1 0.00Bruxelles 1 0.00

Tableau 5.5: Exemple d’extraction de donnes groupees

2. La colonne citee dans la clause group by doit etre presente dans la clauseselect. Ceci, bien sur afin de servir de cle primaire a la table resultat.

On peut egalement imposer des conditions de selection aux groupes par laclause having qui est un peu l’equivalent de la clause where pour le select.Illustrons ceci sur l’exemple suivant.

Exemple 5.12 Donner les memes informations uniquement pour les groupes d’aumoins trois clients.

La reponse est fournie par la requete SQL suivante :

select VILLE, count(*), avg(COMPTE)

from CLIENT

group by VILLE

having count(*) >= 3

Dont le resultat est donne a la table 5.6.

VILLE count(*) avg(COMPTE)

Poitiers 3 533.33Namur 4 -2520.00Toulouse 5 -2530.00

Tableau 5.6: Exemple de condition de selection aux groupes.

On peut egalement utiliser dans une meme requete SQL les concepts de groupeset jointures. Illustrons ceci sur l’exemple suivant.

Exemple 5.13 On veut obtenir la quantite totale de PA60 que chaque client acommande, par groupement sur la jointure de COMMANDE et LIGNECOM.

Page 79: Excel

Section 5.10. Extraction de donnees groupees 79

Comme les donnees a afficher (NCLI et somme des QCOM) appartiennent a deuxtables differentes, il faudra faire la jointure de ces deux tables :

select C.NCLI, count(*), sum(QCOM)

from COMMANDE C, LIGNECOM L

where C.NCOM = L.NCOM

and NPRO = ’PA60’

group by C.NCLI

having count(*) >= 2

Pour terminer signalons que l’on peut specifier l’ordre des lignes d’un resultatpar la clause order by. Illustrons ceci sur l’exemple suivant.

Exemple 5.14 Donner les informations sur les CLIENTS, classees par VILLE, etensuite par CATegorie.

Ceci peut etre fait en utilisant la clause order by de la maniere suivante :

select NCLI, NOM, VILLE, CAT

from CLIENT

order by VILLE,CAT

Les clients vont apparaıtre classes par VILLE, puis dans chaque VILLE, classespar categorie. Par defaut, le classement se fait par ordre ascendant. On peutspecifier un ordre par (asc) pour ascendant et (desc) pour descendant. Ainsi, larequete suivante :

select *

from PRODUIT

where LIBELLE like ’%SAPIN%’

order by QSTOCK (desc)

va donner les informations sur les produits en sapin classes par ordre decroissantde quantite en stock.

On peut specifier le nom de la colonne sur laquelle porte le tri soit sa placedans la clause select. Ainsi, la requete suivante :

select VILLE, count(*), sum(COMPTE)

from CLIENT

group by VILLE

order by 2 (desc)

a pour effet de presenter les VILLE par ordre decroissant de population.

Page 80: Excel

80 Chapitre 5. Le langage SQL

5.11 Comment interpreter une requete ?

En presence d’une seule table, on procedera ainsi :

• on considere la table specifiee dans la clause from;

• on selectionne les lignes sur base de la clause where;

• on classe ces lignes en groupes comme specifie par group by;

• on ne retient que les groupes qui verifient la clause having;

• de chacun des groupes retenus, on extrait les valeurs demandees dans laclause select;

• les valeurs demandees sont ordonnees selon la clause order by.

En presence de plusieurs tables, on procedera ainsi :

• on considere les tables specifiees dans la clause from;

• on effectue la jointure de ces tables selon le critere de jointure de la clausewhere;

• on selectionne les lignes de la jointure sur la base des autres conditions dela clause where;

• on classe ces lignes en groupes comme specifie par group by;

• on ne retient que les groupes qui verifient la clause having;

• de chacun de ces groupes retenus, on extrait les valeurs demandees dans laclause select;

• les valeurs demandees sont ordonnees selon la clause order by eventuelle.

Appliquons cette procedure sur l’exemple suivant :

6 : select NCLI, count(*), sum(QCOM)

1 : from COMMANDE C, LIGNECOM L

2 : where C.NCOM = L.NCOM

3 : and NPRO = ’PA60’

4 : group by NCLI

5 : having count(*) >= 2

7 : order by NCLI

Page 81: Excel

Section 5.12. Une introduction a Microsoft Access pour Windows 81

1. On considere les tables specifiees dans la clause from : ici, il s’agit destables COMMANDE et LIGNECOM.

2. On effectue la jointure de ces tables selon le critere de jointure de la clausewhere : on va donc ici, pour chaque commande, aller chercher les lignes dela commande dans LIGNECOM.

3. On selectionne les lignes de la jointure sur la base des autres conditions dela clause where : ici, on ne retient que les commandes de ‘PA60’.

4. On classe ces lignes en groupes comme specifie par group by : ici, on lesgroupe par client.

5. On ne retient que les groupes qui verifient la clause having : donc ici, lesclients ayant au moins deux commandes de “PA60”.

6. De chacun de ces groupes retenus, on extrait les valeurs demandees dans laclause select : donc ici le numero du client, le nombre de commandes de“PA60”, la somme des quantites commandees de “PA60”.

7. Les valeurs demandees sont ordonnees selon la clause order by eventuelle :ici par ordre croissant du client.

Donc cette requete affiche le numero du client, le nombre de commandes de“PA60”, la somme des quantites commandees de “PA60” pour les clients ayantau moins deux commandes de “PA60”, classes par ordre croissant du client.

5.12 Une introduction a Microsoft Access pour Windows

5.12.1 Demarrage de Microsoft Access

On demarrera Microsoft Access pour Windows de la maniere suivante :

• cliquer sur le bouton demarrer en bas a gauche de l’ecran;

• pointer sur le menu programme;

• selectionner le sous-menu Microsoft Access.

On se retrouve dans la fenetre initiale d’Access. On peut soit :

1. Ouvrir une base de donnees existante :

Page 82: Excel

82 Chapitre 5. Le langage SQL

• si elle se trouve dans la liste, en cliquant deux fois dessus;

• sinon, en choisissant autres fichiers. On se trouve alors dans la boıtede dialogue Ouvrir et lorsque l’on a repere le bon fichier, on fait ok.

2. Soit creer une nouvelle base de donnees. On a le choix entre :

• creer une nouvelle base de donnees seul;

• creer une base de donnees avec l’assistant de creation d’application.

Ici, on va selectionner la premiere solution, c’est-a-dire Nouvelle base dedonnees. Dans la fenetre Fichier nouvelle base de donnees, on doit indiquerle nom que l’on veut donner a la nouvelle base de donnees :

• dans nom de fichier, on indique a la place de bd1.mdb, par exemple,Adresses, pour introduire un fichier d’adresses. L’extension .mdbpour microsoft data base s’ajoute automatiquement.

• on clique sur ok.

La fenetre base de donnees s’affiche alors. On y trouve six onglets corres-pondant aux six types d’objets que l’on peut rencontrer dans une base dedonnees :

• les Tables qui contiennent toutes les informations;

• les Requetes qui permettent de selectionner des informations;

• les Formulaires qui servent a la saisie des donnees et a l’affichage desresultats;

• les Etats qui servent a imprimer les donnees;

• les Macro qui servent a automatiser certaines operations;

• les Modules qui sont des procedures ecrites en Visual Basic.

Nous ne nous interesserons qu’aux deux premiers concepts : les tables et lesrequetes.

5.12.2 Creation d’une table

Pour creer une table, on se met dans l’onglet Tables et on clique sur le boutonNouveau. A nouveau, on a le choix entre :

• creer directement la table en choisissant le mode creation;

• creer la table avec l’Assistant Table.

Page 83: Excel

Section 5.12. Une introduction a Microsoft Access pour Windows 83

C’est la premiere solution, la solution directe, que nous choisissons en cliquant surmode creation puis sur ok.

Une fenetre Table1 s’affiche avec trois colonnes :

• Le Nom de champ pour preciser les noms choisis pour designer les champs;

• Le Type de donnees pour preciser le type et la longueur des donnees;

• Une Description eventuelle du contenu du champ.

Dans Nom de champ, on tape, par exemple, pour un fichier d’adresses :

Numero

Nom

Prenom

Rue

Code

Ville

Pays

On peut alors modifier les types de donnees qui sont par defaut Texte, en cliquantsur la case correspondante et en utilisant le menu deroulant de droite pour choisirle bon type : numerique, date, etc. . .

On enregistre alors la table en cliquant sur l’icone de la disquette. On doit alorsdonner un nom a la table. Par exemple, taper Adresses puis ok.

Pour quitter le mode creation, cliquez sur le bouton de fermeture, en haut adroite de la fenetre. On se retrouve alors sur l’onglet table avec le nom de toutesles tables ainsi definies.

Pour les remplir, il suffit de double-cliquer sur l’icone d’une table et apparaıtalors une feuille de calcul avec en entete le nom des champs. Il suffit de rentrer lesenregistrements, ligne par ligne.

5.12.3 Comment creer une requete ?

Les requetes servent a extraire des donnees d’une ou plusieurs tables, donneesqui satisfont a certains criteres. Pour creer une requete, dans la fenetre generaleBase de donnees, on clique sur l’onglet Requetes, puis sur le bouton Nouveau. Anouveau, on a le choix du mode :

• en Mode creation;

Page 84: Excel

84 Chapitre 5. Le langage SQL

• avec Assistant Requete Simple;

Pour une requete sur une seule table, on choisit Assistant Requete Simple. Dans lafenetre Assistant Requete Simple apparaıt :

• La table sur laquelle porte la requete;

• Dans la rubrique Champs disponibles sont enumeres tous les champs surlesquels peut porter la requete.

Pour creer la requete, on procedera comme suit :

1. Selectionner les champs que l’on souhaite voir figurer dans le resultat encliquant sur le champ et en le deplacant vers la droite en cliquant sur ”>”.Le champ apparaıt alors dans ”Champs Selectionnes”.

Selectionner, par exemple, Nom,Prenom,Telephone pour constituer un car-net des numeros de telephones. Apres avoir selectionne tous les champsvoulus, cliquez sur Suivant.

2. Puis a nouveau sur Suivant et donner un nom a la requete. Ici, par exemple,repertoire.

3. Vous pouvez modifier la requete en selectionnant l’option Modifier la struc-ture de la requete. Dans la partie superieure se trouve affichee la table surlaquelle porte la requete. Dans la partie inferieure se trouvent affiches, enpremiere ligne, les champs selectionnees avec, en deuxieme ligne, le nomde la Table dont ils sont extraits.

• Pour trier les noms par ordre croissant, cliquer sur la ligne Tri en dessousdu champ nom et choisir croissant dans le menu deroulant.

• Pour indiquer un critere de selection, on clique sur la ligne Critere endessous du champ. Par exemple, si on tape "Namur" dans le champville, on se restreint aux personnes dont la ville est Namur.

• On peut ne pas vouloir afficher certains champs (par exemple, ceuxqui ne servent qu’a introduire un critere de selection). Il suffit de lesdeselectionner dans la ligne Afficher en enlevant le ”v”.

4. Pour executer la requete, il suffit de la fermer et de cliquer sur son icone,elle s’execute automatiquement.

Page 85: Excel

Section 5.12. Une introduction a Microsoft Access pour Windows 85

5.12.4 Introduction de la notion de cle primaire

Pour rappel, on appelle cle primaire un champ dont toutes les valeurs doivent etredifferentes. Cette cle primaire permet de differencier sans ambiguıte les differentsenregistrements d’une table. On a le choix entres deux solutions :

1. soit ajouter le champ Numero-Auto qui va ajouter des numeros consecutifschaque fois que l’on rentre un nouvel enregistrement dans la base. Par defautce numero servira de cle primaire de la table.

2. soit choisir un champ de la table comme cle primaire en selectionnant cechamp au moment ou l’on definit la structure de la table et en cliquant surl’icone de la cle.

5.12.5 Notion de contrainte referentielle

Une cle etrangere indique, par exemple, que le numero de client NCLI dans la tableCOMMANDE doit correspondre a un des numeros de clients enregistres comme unedes valeurs de la cle primaire NCLI de la table CLIENT.

On parle de relation 1 a n entre la table CLIENT et et la table COMMANDE. En effet,un numero NCLI peut apparaıtre une seule fois dans la table CLIENT et plusieursfois dans la table COMMANDE.

Pour indiquer une relation 1 a n entre deux tables, on procedera comme suit :

1. Cliquer sur l’icone relations en haut a droite de l’ecran. Une fenetre relationsapparaıt.

2. Ajouter toutes les tables sur lesquelles vont porter les relations.

3. Il s’agit d’une relation 1 a n entre le champ NCLI de la table CLIENT etle champ NCLI de la table commande. On clique sur le champ NCLI de latable CLIENT et on le deplace par glissement sur le champ NCLI de la tableCOMMANDE. La relation 1 a n est automatiquement creee entre les deuxtables.

5.12.6 Requetes sur plusieurs tables

L’Assistant de requete simple ne permet que de definir des requetes sur une seuletable. Si vous voulez en faire par jointure de plusieurs tables, il faut selectionnerle mode creation de la maniere suivante :

Page 86: Excel

86 Chapitre 5. Le langage SQL

• activer l’onglet requete;

• cliquez sur Nouveau;

• double-cliquez sur mode creation.

Apparaıt la fenetre Ajouter une table.

• On selectionne toutes les tables voulues. Elles apparaissent dans la partiesuperieure de la fenetre avec une condition de jointure indiquee par lafleche entre les deux champs qui doivent se correspondre dans les deuxtables.

• On selectionne les champs en double-cliquant sur leurs noms. Ils se reportentautomatiquement dans la liste de la partie inferieure de la fenetre.

• Si on veut faire des calculs, plutot que de la simple extraction,

1. On clique sur l’icone operation∑

qui aura pour effet d’ajouter uneligne Operations entre la ligne Table et la ligne Tri.

2. On active la ligne operation pour le champ pour lequel on veut effectuerle calcul.

3. On choisit le calcul possible parmi le menu deroulant : somme, mo-yenne, min, max, compte, ecartype, var.

4. On peut aussi entrer directement la formule de calcul dans le nom duchamp. Par exemple, dans le champ chiffre-aff que l’on cree on indique

chiffre-aff:[quantite]*[Prix]

• Dans la ligne critere, on peut indiquer un des criteres de choix suivant :

Champ Critere Signification

Pays ”France” le pays doit etre la France

Date Entre #01/01/95# Et #31/03/95# etre entre les deux dates

Pays Comme ”S” doit commencer par S

Quantite > 1000 etre superieure a 1000

Nom Comme ”*info*” le nom doit contenir info.

Page 87: Excel

Section 5.13. Exercices 87

5.13 Exercices

5.1. Definition d’une base de donnees. Pour le schema de la base de donneesillustre a la figure 5.2,

CLIENT

NCLI NOM ADRESSE VILLE (CAT) COMPTE

PRODUIT

NPRO LIBELLE PRIX QSTOCK

COMMANDE

NCOM NCLI DATE

LIGNECOM

NCOM NPRO QCOM

Figure 5.2: Enregistrement des commandes de clients

(a) donner sa definition du sous la forme d’une suite de requetes SQL;

(b) mettre en œuvre au moyen de microsoft Access.

5.2. Requete SQL. Pour cette meme base de donnees,

(a) ecrire la requete SQL qui permet de donner la liste des numeros desclients qui ont passe au moins une commande;

(b) ecrire la requete SQL qui permet de donner le solde moyen des comptesdes clients de la ville de Namur;

(c) ecrire la requete SQL qui permet d’extraire de la table des commandes,les commandes des clients de Namur.

(d) Donner, sous la forme d’une requete SQL, la liste des clients n’ayantaucune commande actuellement enregistree dans la base.

(e) mettre en œuvre au moyen de microsoft Access.

5.3. Jointure de deux tables. Pour cette meme base de donnees,

Page 88: Excel

88 Chapitre 5. Le langage SQL

(a) ecrire la requete SQL donnant les commandes avec adresse du client,classees par villes en se limitant aux commandes passee avant le 1eravril 1996;

(b) mettre en œuvre au moyen de microsoft Access.

5.4. Resultat d’une requete SQL. On applique aux donnees du tableau 5.3 larequete SQL suivante :

select D.MATRICULE, R.MATRICULE, R.NOM

from PERSONNE D, PERSONNE R

where R.MATRICULE = D.RESPONSABLE

and D.NOM = ’Dupont’

(a) Expliquer ce que fait cette requete et ecrire le resultat de cette requeteSQL;

(b) Verifier ce resultat en mettant en œuvre la requete au moyen d’Access.

5.5. Donnees groupees. Donner la liste des clients ayant commande exactementune fois le produit PA60.

5.6. Groupement sur une jointure. Par groupement sur une jointure, donner larequete qui etablit, pour chaque client de NAMUR, le montant total de sescommandes.

5.7. Societe de formation. Une societe de formation desire informatiser la ges-tion des inscriptions aux sessions qu’elle organise, ainsi que la facturation.Il existe un certain nombre de seminaires de formation, chacun consacre aun theme determine et facture a un tarif determine. Un seminaire peut etreorganise plus d’une fois, ce qui correspond a autant de sessions. Les sessionsd’un seminaire se tiennent a des dates differentes. Des entreprises inscri-vent certains de leurs employes a certaines sessions. Il existe un nombremaximum de participants par session pour chaque seminaire (ce maximumest independant de la date de la session). Tous les mois, la societe facture achaque entreprise concernee le montant correspondant a la participation deses employes aux sessions du mois ecoule.

(a) Traduire ce schema en structure de tables (sans inclure la facturation).

(b) Ecrire une requete SQL qui verifie la contrainte sur le nombre de partici-pants a chaque session en recherchant les anomalies. Plus precisement,pour chaque session, calculer le nombre d’inscrits et l’afficher en regarddu nombre maximum.

Page 89: Excel

Section 5.13. Exercices 89

(c) Ecrire une requete SQL qui, entreprise par entreprise, calcul le montantde sa facture du mois courant.

5.8. Societe de formation. Une societe de formation desire informatiser la ges-tion des inscriptions aux sessions qu’elle organise, ainsi que la facturation.Il existe un certain nombre de seminaires de formation, chacun consacre aun theme determine et facture a un tarif determine. Un seminaire peut etreorganise plus d’une fois, ce qui correspond a autant de sessions. Les sessionsd’un seminaire se tiennent a des dates differentes. Des entreprises inscri-vent certains de leurs employes a certaines sessions. Il existe un nombremaximum de participants par session pour chaque seminaire (ce maximumest independant de la date de la session). Tous les mois, la societe facture achaque entreprise concernee le montant correspondant a la participation deses employes aux sessions du mois ecoule.

(a) Traduire ce schema en structure de tables (sans inclure la facturation).

(b) Ecrire une requete SQL qui verifie la contrainte sur le nombre de partici-pants a chaque session en recherchant les anomalies. Plus precisement,pour chaque session, calculer le nombre d’inscrits et l’afficher en regarddu nombre maximum.

(c) Ecrire une requete SQL qui, entreprise par entreprise, calcul le montantde sa facture du mois courant.

5.9. Flotte de vehicules. Pour l’exercice 4.4, donner, sous la forme d’une requeteSQL, pour chaque vehicule de livraison, le nombre clients habitant Parisauxquels on doit livrer un colis excedent 100 kg. On presentera les lignesdu resultat par ordre decroissant du poids moyen des livraisons a des clientsparisiens de colis excedent 100 kg.

5.10. Societe de transport. Une societe de transport desire informatiser la gestionde son parc de vehicules. Elle dispose de 8 camions de capacite identique.Chaque camion est conduit a une date determinee par un chauffeur identifiepar son numero. Le chauffeur est responsable des infractions commisesce jour-la par le vehicule. Chaque vehicule, achete neuf, est soumis a uncontrole technique tous les ans, a partir de sa quatrieme annee. La liste deschauffeur est la suivante :

Fichier CHAUFFEUR

NO NOM PRENOM RUE CODE VILLE

1 LEDRU YVES Rue des Affrouettes 23 69000 LYON

2 HENNEAUX PAUL Avenues des comble 12 45000 ORLY

3 STEEN LOUIS Avenue du General 118 3000 MOUTIERS

Page 90: Excel

90 Chapitre 5. Le langage SQL

4 VANLAYES ROBERT Avenue du port 15 59000 LILLE

5 LATOUR GEORGE Rue des crocus 45 38000 GRENOBLE

6 CATTOIR LOUIS Rue du petit prince 2 75000 PARIS

7 LAPORTE JEAN Boulevard Leopold 3 3000 MOUTIERS

8 LABBE JULES Rue de Nivelles 38000 GRENOBLE

9 DELARUE JACQUES Route du bourg 34 42990 ST FOY

10 RENAULT ALBAN Place du village 1 69000 LYON

La liste des vehicules avec leur date d’achat et le numero du conducteurpour les trois derniers mois sont donnes ci-dessous (une barre signifie quele camion est reste au depot ce jour-la :

Fichier CAMION

IMMATR DATEACHA ... 19/05/99 20/05/99

5687UV69 12.03.96 ... 1 1

6725UY69 2.12.98 ... - 10

7845MP03 25.02.90 ... 4 3

1459FK03 15.04.95 ... 6 7

5647UK38 18.05.89 ... 5 5

9023IM38 01.04.92 ... 8 -

1443LK75 13.05.97 ... 2 2

3602OL42 12.06.94 ... 9 8

On doit conserver la trace du chauffeur qui a conduit le camion non seulementpour le jour courant mais aussi pour les trois derniers mois afin de pouvoiridentifier le responsable lorsqu’une contravention parvient par la suite al’entreprise de transport. On veut donc pouvoir, pour toute date vielle demoins de trois mois, dire qui conduisait chaque camion (premiere exigence).

De meme, on veut pouvoir a tout moment identifier les camions qui vont etresoumis au controle technique dans le mois qui vient (seconde exigence).

(a) Proposez une structure de donnees sous forme de tables avec leurs clesprimaires et les relations entre tables qui permette de repondre a cesdeux engeances. On donnera sa reponse sous forme graphique.

(b) Ecrire une requete SQL qui donne la liste des vehicules ayant a passerle controle technique dans le courant du mois de juin 99.

(c) Ecrire, pour le jour courant (20/05/99), une requete SQL qui permetd’identifier, a partir du numero d’immatriculation d’un camion, les nomet prenom de son chauffeur ce jour.

Page 91: Excel

Chapitre 6

Etude de cas 2 : voyages aeriens

Le domaine d’application concerne des vols organises par une compagnie aerienne,et dont on veut determiner la structure du cout. On considere donc qu’un vol reliedeux aeroports en passant par un certain nombre d’etapes, qui sont egalement desaeroports. Un aeroport porte un nom, mais sera le plus souvent designe par un codestandard propre aux compagnies aeriennes. Une meme ligne peut etre desserviea des dates differentes par des appareils differents. Un appareil, designe par sonmodele, est caracterise par la capacite de ses reservoirs (en kilos de carburant) ainsique la consommation a vide, equipage compris (en kilos de carburant par km). Onconnaıt aussi sa charge utile maximale et sa consommation supplementaire parkilo de charge (en kilos de carburant par kilo de charge et par km). Il est a notercependant que la consommation a vide n’inclut pas le transport du carburant lui-meme. On admet que la charge utile (fret et passagers) est constante pour toute laduree du vol, mais qu’elle peut varier d’une date a l’autre. On connaıt la longueurde chaque etape, c’est-a-dire la distance entre deux aeroports consecutifs de ce vol.On supposera que la consommation en vol est une fonction lineaire de la chargeemportee (charge utile + carburant).

A chaque escale, l’appareil est ravitaille en carburant. Celui-ci est achete autarif local (en dollars par kilo). Le tarif local depend de la date et de l’aeroport.Lorsque l’appareil atterrit a la fin de son vol, ainsi qu’a l’aeroport de depart, sesreservoirs peuvent contenir une quantite residuelle non consommee lors du par-cours du troncon precedent. Pour effectuer le troncon suivant, il est generalementnecessaire d’ajouter au reservoir une quantite qui permet d’atteindre l’escale oul’aeroport suivant. Il est cependant possible d’emporter une quantite superieurea ce qui est strictement necessaire. Ce supplement peut etre interessant si le ta-rif local est particulierement bas et si le troncon suivant n’est pas trop long. Onfera l’hypothese que la valeur financiere d’une quantite residuelle est a calculerau tarif de l’endroit ou cette quantite est observee, donc a l’atterrissage (=valeurde revente). On notera que l’appareil est presume devoir consommer la quantiteresiduelle a l’aeroport de depart et qu’il faut donc la lui imputer, mais qu’il n’a pas

91

Page 92: Excel

92 Chapitre 6. Etude de cas 2 : voyages aeriens

consomme celle qui subsiste apres l’atterrissage final, et qu’il ne faut donc pas lalui imputer puisqu’elle n’aura pas servi au vol.

6.1. Construire le schema conceptuel de la base de donnees qui permet le calculdu cout des vols.

6.2. Produire le schema SQL correspondant.

6.3. Pour un vol donne (ID) a une date donnee (D) et pour une quantite residuelleinitiale dans les reservoirs (QRES INIT), etablir le modele de calcul quipermet le calcul du cout total du vol (CoutVol).

6.4. Ecrire les commandes SQL qui permettent d’aller extraire les donnees ne-cessaires de la base de donnees.

6.5. Implementer en EXCEL le modele de calcul pour les donnees suivantes :

ESCALECODE TARIFBAH 0,27CDG 0,348HLP 0,33LAX 0,35NOU 0,4PPT 0,335SIN 0,3

TRONCONNUM.TR DISTANCE CODE.DE QEMP

1 4900 CDG 90000,002 5500 BAH 112000,003 2700 SIN 42000,004 4200 HLP 75000,005 2100 NOU 30000,006 5300 PPT 103000,00

Tableau 6.1: Les tarifs et les troncons du vol considere.

La QRESDEPART vaut 10 000, la CHARGE vaut 30 000, la CAP.RESvaut 120 000, la CONS.VIDE vaut 7, la CONS CH vaut 0,000 15 et leCODE ARR est LAX.

Page 93: Excel

Bibliographie

[1] Michel BRINGER et Jean-Francoise DAUX, Informatique appliquee a lagestion, Travaux pratiques, Editions Foucher, Paris, 1994.

[2] EXCEL, Guide de l’utilisateur, Microsoft, 1992.

[3] Vincent GIARD, Gestion de la production et des flux, Economica, Paris,2003.

[4] Jean-Luc HAINAUT, Base de donnees et modeles de calcul, Interedition,1994.

[5] F.S. HILLIER et G.S. LIEBERMAN, Introduction to Operations Research,6eme edition, Mac Graw-Hill International Editions, Singapour, 1995.

[6] F.S. HILLIER, M.S. HILLIER et G.S. LIEBERMAN, Introduction to Mana-gement Sciences, 1ere edition, Mac Graw-Hill International Editions, Boston,2000.

[7] LACAZE Dominique, Optimisation appliquee a la gestion et a l’economie,Economica, 1990.

[8] D. G. LUENBERGER, Linear and NonlinearProgramming, Addison-Wesley,1984.

[9] Yves NOBERT, Roch OUELLET et Regis PARENT, La recherche opera-tionnelle, Gaetan Morin Editeur, Montreal, 1995.

[10] Jean-Francois PHELIZON, Informatique Operationnelle I, methodes rele-vant de l’optimisation, Economica 1976.

[11] Jean-Francois PHELIZON, Informatique Operationnelle II, modeles condui-sant a la simulation, Economica 1977.

[12] Gerard REBOUL, Informatique de gestion, Analyse et modele relationnel,Collection Express, Dunod, Paris, 1997.

93

Page 94: Excel

94 Bibliographie

[13] SIMMONARD Michel, La programmation lineaire, Dunod 1972.

[14] M.P. WILLIAMS, Model building in Mathematical Programming, John Wi-ley, 1990.

[15] M.P. WILLIAMS, Model solving in Mathematical Programming, John Wiley,1992.

[16] XPRESS-MP, User Guide and Reference Manual, Dash Associates, Nor-thants, 1997.