Excel
-
Upload
siddiq-abu -
Category
Documents
-
view
45 -
download
0
description
Transcript of Excel
UNIVERSITE DU LITTORAL
Maıtrise AES
Informatique de Gestion
Daniel DE WOLF
Dunkerque, Octobre 2003
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
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
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
Partie I
La pratique d’un tableur
7
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
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 :
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.
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.
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
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 :
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
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.
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
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.
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.
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
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.
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.
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
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,
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
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.
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
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).
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”.
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
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)”;
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
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.
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
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,
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.
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
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.
Partie II
Introduction aux bases de donnees
39
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
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.
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
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
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.
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
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
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 :
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 :
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
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
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.
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.
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.
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
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.
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
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.
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;
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 :
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.
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
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’
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,
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 :
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%’
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’)
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 :
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.
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
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 :
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.
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,
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
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 :
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,
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.
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.
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.
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
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 :
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.
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;
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.
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 :
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.
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,
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.
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
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.
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
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.
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
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.