Fondamentale de Lille
Bases de Donnees
(De Merise a JDBC)
Philippe Mathieu
Version 1.3
le 04/05/1999
c
IUT-ALille,LIFL,USTL
UNIVERSITEDES SCIENCESET TECHNOLOGIES DE LILLE
Preface
Presentation du livre
J'ai entrepris la realisation de ce livre lorsque j'ai pris la responsabilite du cours de Bases de donnees al'IUTinformatique de l'universitedeLille 1enseptembre1997. Je cherchais alors
aconseiller un livrea mes etudiantset je me suis vite rendu al'evidence qu'iln'existait aucun recueil qui leur convenait. Il y a pourtant de nombreux livres tres bien faits dans ce domaine (la bibliographieen cite quelquesuns) maisils sontgeneralementtrop specialises.Ilaurait fallu en acheter 10 et ne lire que 3 ou 4 chapitres de chacun! Les etudiants n'avaient pas besoin de conna^tretouslesdetailsdelamethodeMerisecommedans[Gab89],touteslessubtilitesdeSQL2 commedans[Del95],touteslesnotionstheoriqueslieesauxlangagesd'interrogationcommedans [Ull88]ouledetaild'implementationd'unserveurd'applicationscommedans[Ree97].Illeurfallait unlivre d'introduction(enfrancais:-) qui presente larealitedes bases dedonneesd'aujourd'hui etleurmette lepied al'etrierpour^etreensuitecapablesdetirer pleinementpartideslivrescites en bibliographie. Ce livre est donc volontairement incomplet dans chacun des chapitres qui le constituent.Nevousattendezpasaytrouverlesnotionsde\modele conceptueldetraitement", lasyntaxecompletedel'ordreSQLCREATEdanslesdierentsSGBDdumarche,l'ensembledes ordresVBApermettantl'ecrituredecurseurssousMS-ACCESSoum^emelesmethodesnecessaires
al'implementationd'unserveurd'applicational'aidedesRMI.
A qui s'adresse ce livre?
Celivres'adresseatouslesetudiantsetdeveloppeursdansledomainedesbasesdedonneesqui cherchentaavoirunevued'ensembledesdierentestechnologieslieesacesujet,sanspourautant rentrerdanslesdetailsprofondsdechaquesous-domaine.Ilpeut^etreindieremmentluetetudie pardesetudiantsd'IUT,de MIAGEou m^emedeDESSselonlesspecialites.Lesrappelsdebase en informatiquene sontpas faitsdans celivre, aussiunniveauminimum d'au moinsune annee eninformatiqueestnecessaire.Celivrenes'adressepasauxpersonnesayantdejaunebonnevue d'ensemblesurledomaineetquicherchentunespecialisationpousseedansunsous-domaine,aux personnesquidebutenteninformatiqueetauxpersonnesquicherchentunn-iemeguide\comment fairemesformulairesavecMS-ACCESS".
En quoi sont implementes les exemples?
J'aicherche,enecrivantcelivre,arendretouslesexemplesaccessiblesauplusgrandnombre. A priori vousn'avez pasbesoind'un SGBDparticulier pour comprendreet traiter lesexemples detailles.Neanmoins,and'illustrerlesdierentespartiesj'aiutiliseMS-ACCESSpoursa convi-vialiteetsasimplicited'utilisationetORACLEv7(etparfoisunAS400)pourlesaccesen Client-Serveur. Celadit, jepensem'^etredetacheaumaximumd'unquelconque systemeet avoirfourni
Pourquoi est-ce disponible sur le WEB?
Depuisl'avenementd'Internet,une vaguedegratuitesansprecedentsestapparue.Ontrouve deplusenplusdesystemesd'exploitation,delogicielsetm^emedelivresremarquablesdisponibles gratuitement.
Pourlelecteur,ce mondeidylliqueaunrevers:vousdevez savoirchargercechier,imprimer un chier Postscript et relier le resultat vous-m^eme avec une belle couverture cartonnee pour avoirl'equivalentd'un livre en librairie.Pour l'auteur, aucun espoirde royalties n'esta esperer de ce travail. Ce monde du freeware a parcontre plusieursavantages: tousmes etudiants vont l'obtenir(tousn'acheterontpasunlivrea350F!),jepeuxesperertoucherdenombreuxinternautes interesses,maissurtoutjepeuxespereravoirdesretourspermettantdel'ameliorer!Peut-^etrequ'un jour,quandjeseraipersuadequecelivreestdevenuassezcomplet,jemedecideraiacontacterun
editeur,maiscan'estpaspourdemain:-)
Le domaine des bases de donnees est en evolution permanente, ce livre n'est certainement pas complet et de plus, il y a sans doute des parties diÆciles a lire pour certains lecteurs qui necessitentd'^etreplusdetaillees.EnlelaissantsurleWEB,j'aidonclapossibiliteenpermanence, d'ameliorer,ajouteret corrigerdespassagesdece livre.Pourcelaj'aibesoindevous.
N'hesitez pas:Si vousavezdesremarqueset critiques(m^emepositives:-)aformulersurce livre,envoyezlesal'adresseemailmathieu@lifl.fr.Laderniereversiondecelivreestdisponible surInternetal'URLhttp://www.lifl.fr/~mathieu/bdd
etsivousutilisezcepoly,envoyezmoijusteunpetit mail,cafaittoujoursplaisir...
Remerciements
Merci a Pierre-Yves Gibello (INRIA) pour son aide sur RMI-JDBC, a Anne-cecile Caron, Mireille Clerbout, Christophe Gransart et Fabrice Descamps (LIFL) pour la relecture et leurs ideesd'ameliorationset avous... sivouscontribuezaameliorercelivre..
Bugs
Cettesectionestdestineeadispara^tre:-)
{ IlmanqueunchapitresurlestechniquesdeHachageetd'indexation.Ilmanqueunchapitre surlesBDDobjetsetdeductives(PMathieu).
{ Chapitre 2; Intersection;laremarque en basde page surintentionnel-extensionnelest mal exprimee,ellenecessited'^etrereecriteetdetaillee(E.Wegrzyno).
{ Chapitre 10; lapartie ODBC traited'unetable totoalorsquelapartie JDBCtraited'une table client;Ilfaudraittraiterlem^emeexempledanslesdeux cas(C.Gransart).
{ Chapitre 5 SQL; quelques resultats devraient ^etre donnes notamment pour les requ^etes complexes(A. Taquet).
SaisiavecL A
Table des matieres
1 Presentationgenerale 11
1.1 Qu'estcequ'unebasededonnees . . . 11
1.2 Objectifsetavantages . . . 11
1.3 Dierentstypesdebasesdedonnees . . . 13
1.4 Quelquessystemesexistants . . . 14
1.5 LesniveauxANSI/SPARC. . . 14
1.6 Modeliserlesdonnees . . . 15
1.7 ExempledeMCD. . . 18
1.8 Lemodelerelationnel . . . 18
1.9 Exempledebasededonneesrelationnelle . . . 19
1.10 PassageduMCDauxtables relationnelles . . . 20
2 Presentationdes donnees 25 2.1 Lesformulaires . . . 25
2.2 Lesetats. . . 26
3 L'algebre relationnelle 29 3.1 Lesoperationsdebase . . . 29
3.1.1 Operationsensemblistes . . . 29
3.1.2 Operationsunaires . . . 31
3.2 Operationsderivees. . . 32
3.3 Lesoperationsdecalcul . . . 34
3.4 Expressionsdel'algebrerelationnelle . . . 35
3.4.1 Pourquoiunerequ^eteest-ellemeilleurequ'uneautre? . . . 36
3.5 Quelquesremarquessurl'algebrerelationnelle . . . 37
4 Lescontraintes d'integrite 39 4.1 Contraintes decle . . . 39
4.2 Contraintes detypesdedonnees . . . 39
4.3 Contraintes d'integritereferentielle . . . 39
5 Lelangage QBE 43 6 Lelangage SQL 45 6.1 Lamanipulationdesdonnees:leDML . . . 46
6.1.1 L'obtentiondesdonnees . . . 46
6.1.2 Recapitulatif . . . 56
6.1.3 Lamise ajourd'informations . . . 58
6.2 Ladenitiondesdonnees:LeDDL . . . 59
6.2.1 Lestypesdedonnees. . . 59
6 TABLEDESMATIERES
6.2.4 ScriptDDLdecreationdebase . . . 62
6.2.5 Lacreationdevues. . . 63
6.2.6 Lacreationd'index. . . 65
6.2.7 Modicationetsuppressiondetable,devueoud'index . . . 66
6.2.8 Commenter unetable . . . 67
6.3 L'aspectmulti-utilisateurs:leDCL . . . 67
6.3.1 Lacondentialitedesdonnees. . . 67
6.3.2 Accorderlesdroits . . . 68
6.3.3 Retirerlesdroits . . . 68
6.4 Lecatalogue. . . 70
7 SQLIntegre 73 7.1 LiensentreSQLet lelangageapplicatif . . . 73
7.2 ExempledeprogrammeSQLIntegre . . . 77
7.2.1 ProgrammeC. . . 78
7.3 ProgrammeCOBOL . . . 79
7.4 ProgrammeVBAsousACCESS. . . 81
8 Lagestiondes transactions 83 8.1 Latoleranceauxpannes . . . 83
8.2 L'accesconcurrentauxdonnees . . . 85
8.2.1 Lesproblemesliesal'accesconcurrent . . . 86
8.2.2 Caracteriserlesexecutionscorrectes . . . 87
8.2.3 Lesystemedeverrouillage. . . 89
8.2.4 Leprotocoleadeuxphases . . . 91
9 Normalisationdes Relations 95 9.1 LebesoindeNormalisation. . . 95
9.2 LaPremiereFormeNormale. . . 96
9.3 Notiondedependancefonctionnelle:DF. . . 96
9.3.1 Proprietesdesdependancesfonctionnelles.. . . 97
9.3.2 Notionsdefermeture. . . 97
9.3.3 Notiondecouvertureirredondante. . . 98
9.4 Decompositiond'unerelationensous-relations. . . 100
9.4.1 Decompositionajonctionconservative.. . . 100
9.4.2 Decompositionavecpreservationdesdependancesfonctionnelles. . . 100
9.5 LaDeuxiemeFormeNormale.. . . 101
9.6 TroisiemeFormeNormale. . . 102
9.6.1 AlgorithmedeNormalisation. . . 103
9.7 LaTroisiemeFormeNormale deBoyce-Codd. . . 103
9.7.1 AlgorithmedeDecomposition. . . 104
9.8 Methodologie . . . 105
9.9 LesDependancesMultivaluees. . . 106
9.9.1 LaQuatriemeFormeNormale. . . 107
9.10 LesDependancesHiearchiques. . . 108
9.10.1 Dependances Produit. . . 109
10 Lesbases de donneesde type reseau 113
10.1 Notionsdebase . . . 114
10.2 LeSGBDdetypeCODASYLIDS-II(IntegratedDataStore) . . . 115
10.2.1 Ladenitiondesdonnees . . . 115
10.2.2 Lemodederattachementdesarticles . . . 115
10.2.3 Leplacementdesarticles . . . 116
10.2.4 Lelangagedemanipulation dedonnees . . . 116
10.2.5 Recherched'articles . . . 116
10.2.6 Echangesd'articles . . . 116
10.2.7 Lamiseajour . . . 116
10.2.8 Ouvertureet fermeture . . . 116
10.3 Utilisation . . . 116
10.3.1 Denitionsimplieeduschema . . . 118
10.3.2 Exemplesdemanipulationdelabase. . . 119
10.4 Avantages etinconvenientsdesbasesdedonneesdetypereseau. . . 121
11 Lemode Client-Serveur 123 11.1 ODBC . . . 125
11.2 JDBC . . . 127
11.2.1 Qu'estcequeJDBC? . . . 128
11.2.2 Structured'uneapplicationJDBC . . . 128
11.2.3 Quelquesexemplesd'applications. . . 131
11.2.4 Dierentspilotes . . . 135
11.2.5 Lesrequ^etespre-compilees. . . 135
11.2.6 CommitetRollback . . . 136
11.2.7 Lameta-base . . . 136
11.2.8 Unexemplegraphique . . . 138
11.3 WEBetBasesdedonnees . . . 138
11.3.1 AppletsouServlets? . . . 139
11.3.2 Principed'ecrituredeServlets . . . 140
11.3.3 Larecuperationdesparametres . . . 144
11.3.4 Congurationdel'environnementd'execution . . . 145
11.3.5 LeJSDK . . . 146
11.3.6 PubliersurleWEBl'annuairedesasociete . . . 146
12 Lesserveurs d'applications 151 12.1 Lesuividesession . . . 151
12.2 LesJavaServerPages: JSP . . . 152
12.2.1 LesJSP directives . . . 153 12.2.2 LesJSP expressions . . . 153 12.2.3 LesJSP scriptlets . . . 154 12.2.4 LesJSP declarations . . . 154 12.2.5 LesJSP Beans . . . 156 12.2.6 L'annuairerevisite . . . 158
12.3 Lesserveursd'applications. . . 161
A Installationd'un environnementpour lesServlets 163 A.1 Installationpourlacompilation . . . 163
A.2 Installationdesserveurs . . . 163
8 TABLEDESMATIERES
B RappelsHTML 167
B.0.1 Lelangage . . . 167
B.0.2 Formatagedetexte. . . 168
B.0.3 Exempledepagesimple . . . 168
B.0.4 Listesetenumerations . . . 168
B.0.5 Lesaccents . . . 169
B.0.6 Lesliens hypertextes . . . 169
B.0.7 Lesancres . . . 170 B.0.8 RappelURL . . . 170 B.0.9 Lesimages . . . 171 B.0.10 Lestableaux . . . 171 B.0.11 Lesframes . . . 172 B.0.12 LesApplets . . . 173 B.0.13 LesForms . . . 173 B.0.14 ExempledeForm. . . 173 B.0.15 Quelquesconseils . . . 173 C Glossaire 175
Table des gures
1.1 Lemodelea3couches . . . 12
1.2 UnebaseAccess . . . 14
1.3 LemodeleAnsi/Sparc . . . 15
1.4 Representationd'uneentite . . . 16
1.5 Representationd'uneassociation . . . 16
1.6 Representationdescardinalites . . . 17
1.7 ExempledeMCD. . . 18
1.8 Visualisationd'unetableAccess. . . 20
1.9 MCDaveclienhierarchique . . . 21
1.10 MCDaveclienmaille . . . 21
1.11 MLDcorrespondantalaFig.1.10 . . . 23
1.12 MCDFournisseur-Produits-Commandes . . . 23
1.13 Structured'unetablesousAccess . . . 23
2.1 Structured'unformulairesousAccess . . . 25
2.2 Formulairerudimentaire . . . 25
2.3 Structured'unformulaireavecsous-formulaire . . . 26
2.4 Formulaireavecsous-formulaire . . . 26
2.5 Structured'unetatsousAccess . . . 27
2.6 etatrudimentaire . . . 27
2.7 structured'etatavecregroupement . . . 28
2.8 etatavecregroupementetchampscalcules. . . 28
3.1 L'operateurUnion . . . 29
3.2 L'operateurDierence . . . 30
3.3 L'operateurProduit . . . 30
3.4 L'operateurProjection . . . 31
3.5 L'operateurRestriction . . . 31
3.6 L'operateurIntersection . . . 32
3.7 L'operateurQuotient. . . 33
3.8 L'operateurJointure . . . 33
3.9 L'operateurCompte . . . 34
3.10 L'operateurSomme. . . 35
3.11 Arbresderequ^etes . . . 36
3.12 Dierentsarbrespourlam^emerequ^ete. . . 37
4.1 AÆchagedescontraintesreferentiellesdansAccess . . . 40
4.2 GestiondescontraintesreferentiellesdansACCESS. . . 40
5.1 Requ^eteQBEsousAccess . . . 44
6.3 OrdresdejointureappportesparSQL2 . . . 50
6.4 fonctionsstatistiquesprincipales . . . 51
6.5 contraintesdecolonne . . . 61
6.6 contraintesdetable. . . 62
6.7 attributiondedroits . . . 68
6.8 LesdroitssousAccess . . . 69
6.9 Propositiondemeta-base . . . 71
7.1 Ordresdegestiondecurseurs . . . 76
8.1 graphedestransactionsprecedentes . . . 89
8.2 Matricedescompatibilitesdeverrouillage . . . 90
8.3 graphedestransactionsprecedentesavecverrou . . . 91
9.1 Formesnormales . . . 104
10.1 Representationdesliens reseau . . . 113
10.2 Representationd'unlienreseau . . . 114
10.3 Instanciationd'unlien . . . 114
10.4 exemple . . . 115
10.5 Representationdugraphedelabase"CONVENTION" . . . 117
10.6 Representationpartielledesarticles. . . 117
11.1 lemodeClient-Serveur . . . 124
11.2 numerosdeportstandard . . . 124
11.3 Quemettredans leClientetquemettredansleserveur? . . . 125
11.4 Principedefonctionnementd'ODBC . . . 125
11.5 Denitiond'unnouveauDSN . . . 126
11.6 Denitiond'unesourcededonnees . . . 127
11.7 ConversionsprincipalesSQL -Java. . . 130
11.8 MethodesJDBCprincipales . . . 131
11.9 Requ^eteaunserveurHTTP. . . 138
11.10Executiond'uneServlet . . . 140
11.11ExecutiondelaServlet. . . 142
11.12AÆchagedusourcesurleposteclient . . . 143
11.13OutilsnecessairesaudeveloppementdeServlets. . . 145
11.14ArchitectureminimaledegestiondesServlets . . . 145
11.15formulaireannuaire.html . . . 147
11.16Servletannuaire.java . . . 149
12.1 Executiond'uneJSP . . . 154
12.2 Architecture2-Tier . . . 156
12.3 Architecture3-Tier . . . 157
B.1 PageHTMLrudimentaire . . . 169
B.2 PageHTMLavecliens . . . 170
B.3 PageHTMLcontenantuntableau . . . 171
B.4 PageHTMLcontenantuneframe . . . 172
Chapitre 1
Presentation generale
1.1 Qu'est ce qu'une base de donnees
IlestassezdiÆcilededenircequ'estunebasededonneessicen'estquedediretrivialement que tout systeme d'information peut ^etre qualie de base de donnees. Il semble plus facile de denirl'outilprincipaldegestiond'unebasededonnees:lesystemedegestiondebasesdedonnees (SGBD)
1
{ C'est unoutil permettant d'inserer,de modier et de recherchereÆcacementdes donnees speciquesdansunegrandemassed'informations.
{ C'est une interface entre les utilisateurs et la memoire secondaire facilitant le travail des utilisateurs en leur donnant l'illusion que toute l'information est comme ils le souhaitent. Chacundoitavoirl'impressionqu'ilestseulautiliserl'information.
LeSGBDest composedetroiscouchessuccessives: { Lesystemedegestiondechiers.
Il gere le stockagephysique de l'information.Ilest dependantdumaterielutilise(type de support,facteurdeblocage,etc...).
{ LeSGBDinterne.
Ils'occupeduplacementetdel'assemblagedesdonnees,gestiondesliensetgestiondel'acces rapide.
{ LeSGBDexterne.
Ils'occupedelapresentationetdelamanipulationdesdonneesauxconcepteurset utilisa-teurs.Ils'occupedelagestiondelangagesderequ^eteselaboresetdesoutilsdepresentation (etats,formes,etc...)
1.2 Objectifs et avantages
Un systeme d'information peut toujours ^etre realisesans outil specique. On peut alors se demanderquelssontlesobjectifs etavantagesdel'approcheSGBDparrapportauxchiers clas-siques.Lareponsetientenneufpointsfondamentaux:
1. Independancephysique.
Les disques, la machine, les methodes d'acces, les modes de placement, les methodes de tris, lecodagedes donnees nesontpasapparents.Le SGBD oreune structurecanonique permettantlarepresentationdesdonneesreellessanssesoucierdel'aspect materiel.
12 CHAPITRE1. PRESENTATIONGENERALE
Disques
SGBD externe
D’application
Programmes
Terminaux
Gestionnaire de fichiers
SGBD interne
Fig.1.1{Lemodele a3couches
2. Independancelogique.
Chaque groupe de travaildoit pouvoir se concentrer sur ce qui l'interesse uniquement. Il doitpouvoirarrangerlesdonneescommeillesouhaitem^emesid'autresutilisateursontune vue dierente. L'administrateur doit pouvoir faireevoluer le systeme d'informations sans remettreencauselavuedechaquegroupedetravail.
Exemple:unebase dedonneescontientlesinformationssuivantes: vehicule(num-vehicule, marque, type, couleur)
personne(num-ss, nom, prenom)
proprietaire(num-ss, num-vehicule, date-achat)
Un groupedetravailnes'interesseraqu'auxpersonnesquipossedentunevoiture: personne(num-ss, nom, prenom, num-vehicule)
Un autregroupenes'interesseraqu'auxvehiculesvendus aunecertainedate: voiture(num-vehicule, type, marque, date-achat)
3. Manipulablepardesnon-informaticiens.
Le SGBDdoitpermettred'obtenirlesdonneespardeslangagesnon proceduraux.Ondoit pouvoirdecrirecequel'onsouhaitesansdecrirecommentl'obtenir.
4. AccesauxdonneeseÆcace.
Les accesdisque sontlentsrelativemental'accesa lamemoire centrale. Ilfaut doncorir lesmeilleursalgorithmesderecherchededonneesal'utilisateur.
Remarque:lesystemedegestiondechiersyrepondparfoispourdesmono-chiers(ISAM, VSAM etc...)maisdanslecasd'intercroisementsentredierentschiersceladevient beau-couppluscomplexeetparfoism^emecontextuelalarechercheeectuee.
5. Administration centraliseedesdonnees.
LeSGBDdoitorirauxadministrateursdesdonneesdesoutilsdevericationdecoherence desdonnees,derestructurationeventuelledelabase,desauvegardeoudereplication. L'ad-ministration est centralisee et est reservee a un tres petit groupe de personnes pour des
6. Nonredondancedesdonnees.
Le SGBDdoitpermettred'eviterladuplication d'informationsqui, outrelapertedeplace memoire,demandedesmoyenshumainsimportantspoursaisiretmaintenirajourplusieurs foislesm^emesdonnees.
7. Coherencedesdonnees.
Cette coherenceest obtenue par la verication des contraintes d'integrite. Une contrainte d'integriteestune contraintesurlesdonneesdelabase,qui doittoujours^etreverieepour assurerlacoherencedecettebase.Lessystemesd'informationsontsouventremplisdetelles contraintes,leSGBDdoitpermettreunegestionautomatiquedecescontraintes d'integrite surlesdonnees.Parexemple:
{ Un identiantdoittoujours^etresaisi.
{ Lesalairedoit^etrecomprisentre4000et100000F.
{ Le nombre decommandes duclientdoit correspondreavec le nombrede commandes danslabase.
{ L'emprunteurd'unlivredoit^etreunabonneduclub.
Dans unSGBDlescontraintesd'integritedoiventpouvoir^etreexprimeeset gerees dansla base etnonpasdanslesapplications.
8. Partageabilitedesdonnees.
Le SGBD doit permettre aplusieurs personnes (ou applications)d'accedersimultanement aux donnees tout en conservantl'integritede labase. Chacundoit avoirl'impressionqu'il est seulautiliserlesdonnees.
9. Securitedesdonnees.
Lesdonneesdoivent^etreprotegeesdesaccesnonautorisesoumalintentionnes.Ildoitexister des mecanismes permettant d'autoriser, contr^oler et enlever des droits d'accesa certaines informations pourn'importequel usager.Parexempleunchef deservice pourra conna^tre les salairesdespersonnesqu'ildirige, maispas detoutel'entreprise. Le systemedoit aussi ^
etre tolerant aux pannes: si une coupure de courant survient pendant l'execution d'une operationsurlabase,leSGBDdoit^etrecapabledereveniraunetatdanslequellesdonnees sontcoherentes.
Remarque: ces neufpoints,bien que caracterisantassez bien ce qu'estune base de donnees, nesontquerarementreunisdanslesSGBDactuels.C'estune vueidealedesSGBD.
1.3 Dierents types de bases de donnees Ilexisteactuellement5grandstypesdebasesdedonnees: { Lesbaseshierarchiques.
Ce sont les premiers SGBD apparus (notamment avec IMS d'IBM). Elles font partie des bases navigationnellesconstituees d'unegestion de pointeursentre les enregistrements.Le schemadelabasedoit^etrearborescent.
{ Lesbasesreseaux.
Sansdoutelesbaseslesplusrapides,ellesonttresvitesupplantelesbaseshierarchiquedans lesannees70(notammentavecIDSII d'IBM).Cesontaussidesbasesnavigationnellesqui gerentdespointeursentrelesenregistrements.Cettefois-cileschemadelabaseestbeaucoup plusouvert.
{ Lesbasesrelationnelles.
Al'heureactuellelesplusutilisees.Lesdonneessontrepresenteesentables.Ellessontbasees surl'algebrerelationnelleetunlangagedeclaratif(generalementSQL).
{ Lesbasesdeductives.
14 CHAPITRE1. PRESENTATIONGENERALE { Lesbasesobjets.
Lesdonneessontrepresenteesentantqu'instancesdeclasseshierarchisees.Chaquechampest unobjet.Decefait,chaquedonneeestactiveetpossedesespropresmethodesd'interrogation etd'aectation.L'heritageestutilisecommemecanismedefactorisationdelaconnaissance. La repartition du parc des SGBD n'est pas equitable entre ces 5 types de bases.75% sont relationnelles, 20%reseaux,les 5% restantsetant partages entre les bases deductiveset objets. Ces chires risquent neanmoins d'evoluer d'ici quelques annees et la frontiere entre les bases relationnelleset objetsrisqued'^etreelimineeparl'introductiond'unecoucheobjetssurlesbases relationnelles.
Fig.1.2{Une baseAccess
1.4 Quelques systemes existants { Oracle(http://www.oracle.com)
{ DB2(IBM,http://www.software.ibm.com) { Ingres
{ Informix
{ Sybase(http://www.sybase.com)
{ SQL Server(Microsoft,http://www.microsoft.com) { O2
{ Gemstone
{ etsurmicros:Access97(http://www.microsoft.com),Paradox8.0(http://www.corel.com), Visual Dbase (http://www.borland.com), FoxPro (http://www.microsoft.com), FileMaker 4.0(http://www.claris.fr),4D,Windev(http://www.pcsoft.fr)
Ilexisteaussiquelquessharewaresquel'onpeuttrouversurInternetpours'initierauxbasesde
donneesrelationnellescommeMySQL(http://web.tryc.on.ca/mysql/),MSQL(http://Hughes.com.au/), Postgres(http://www.postgresql.org)ouInstantDB(http://www.instantdb.co.uk)qui est
entierementecritenJava.
1.5 Les niveaux ANSI/SPARC
Pour assurer lesobjectifs precedemment decrits, 3 niveaux de descriptionontete distingues parlegroupeANSI/X3/SPARCen1975.
Il correspond a ce que l'on retrouvedans la methode Merise avec les modeles de donnees (MCD 2 ,MLD 3 ). { Leniveau interne.
Ilcorrespondalastructuredestockagedesdonnees:typesdechiersutilises,caracteristiques des enregistrements (longueur, composants), chemins d'acces aux donnees (types d'index, cha^nagesetc..).
{ Leniveau externe.
Ilestcaracteriseparl'ensembledesvuesexternesqu'ontlesgroupesd'utilisateurs.
Schema interne
Schema conceptuel
modele externe
modele externe
modele externe
modeles externes
Fig.1.3{Lemodele Ansi/Sparc
1.6 Modeliser les donnees
Avantdes'attaqueratoutprobleme,ilest toujoursnecessairede re echirprofondementaux tenantset aboutissantsdece quel'on veutrealiser.Laphasede conceptionnecessite souventde nombreux choixqui aurontparfoisdes repercussions importantespar lasuite. Laconception de basesdedonneesnefaitpasexceptionalaregle.Lestheoriciensdel'informationontdoncpropose desmethodespermettantdestructurersa pensee etpresenterdemaniereabstraiteletravailque l'onsouhaiterealiser.Cesmethodesontdonnenaissanceaunediscipline,l'analyse,etunmetier, l'analyste.
L'analyseestladisciplinequietudieet presentedemaniereabstraiteletravailaeectuer. La phased'analyse est tresimportante puisque c'est elle qui sera validee parles utilisateurs avantlamiseenuvredusystemeconcret.Ilexistedenombreusesmethodesd'analyse(AXIAL, OMT etc ...), la plus utilisee en France etant la methode Merise. Merise separe les donnees et les traitements a eectuer avec le systeme d'information en dierents modeles conceptuels et physiques.Celuiquinousinteresseparticulierementiciest leMCD.
16 CHAPITRE1. PRESENTATIONGENERALE LeMCD(modele conceptuelde donnees) estun modeleabstrait delamethode Merise per-mettantderepresenterl'informationd'unemanierecomprehensibleauxdierentsservicesde l'en-treprise.Ilpermetunedescriptionstatiquedusystemed'informationsal'aided'entiteset d'asso-ciations.
Letravaildeconceptiond'unebasededonneesparl'administrateurcommencejusteaprescelui desanalystesqui ontetablileMCD.
CommenconsparquelquesdenitionspropresauMCD:
Lapropriete est unedonneeelementaireetindecomposabledusystemed'information.Par exempleunedatededebutdeprojet,lacouleurd'unevoiture,une noted'etudiant.
L'entite estlarepresentationdanslesystemed'informationd'unobjetmaterielouimmateriel ayantuneexistencepropreetconformeauxchoixdegestiondel'entreprise.L'entiteestcomposee deproprietes.Parexempleunepersonne,unevoiture,unclient,unprojet.
liste des proprietes
nom de l’entite
Fig.1.4{Representation d'une entite
L'associationtraduitdanslesystemed'informationlefaitqu'ilexisteunlienentredierentes entites.Lenombred'intervenantsdanscetteassociationcaracterisesa dimension:
{ re exivesurunem^emeentite. { binaireentredeuxentites. { ternaireentretroisentites. { n-aireentre nentites.
Personne
Service
Travaille dans un
Fig.1.5{Representationd'une association
Desproprietespeuvent^etreattacheesauxassociations.Parexemple,unemployepeutpasser 25%de son temps dans un serviceet 75%de son temps dans un autre. L'association \travaille
Lescardinalites caracterisentlelienentreuneentiteetuneassociation.Lacardinalited'une associationest constitueed'uneborne minimaleetd'uneborne maximale:
{ minimale:nombreminimumdefoisqu'uneoccurrenced'uneentiteparticipeauxoccurrences del'association,generalement0ou1.
{ maximale: nombre maximum de fois qu'une occurrence d'une entite participe aux occur-rencesdel'association,generalement1oun.
Lescardinalitesmaximalessontnecessairespourlacreationde labase dedonnees. les cardi-nalitesminimalessontnecessairespourexprimerlescontraintesd'integrites.
Personne
Service
1,n
1,n
Travaille dans un
Volume
Fig.1.6{Representation descardinalites
De ce schema on en deduit que \une personne peut travailler dans plusieurs services". On constate deplusque\danschaqueserviceil yaaumoins 1personnemais qu'ilpeut yenavoir plusieurs".Enn,unemesuredu\volumedetravail"eststockeepourchaquepersonnetravaillant dansunservicedonne.
Remarque:ilexisteunenotation\al'americaine"danslaquelleonnenotequelescardinalites maximum.DansleschemaFig1.6lanotationamericaineseraitn:m
un lien hierarchiqueest unlien1:nennotationamericaine. un lien mailleest unlien n:mennotationamericaine.
Identiant: l'identiantd'une entiteest constitued'uneouplusieursproprietesdel'entite tellesqu'achaquevaleurdel'identiantcorrespondeuneetune seuleoccurrencedel'entite. L'identiantd'uneassociationestconstituedelareuniondesidentiantsdesentitesquiparticipent
al'association.
18 CHAPITRE1. PRESENTATIONGENERALE
1.7 Exemple de MCD
Fig.1.7{Exemple de MCD
1.8 Le modele relationnel
Lessystemesdegestiondebasesdedonneesrelationnellesorganisentlesdonneesentables(a lamaniered'untableur).
Ilestsimple,facileacomprendreetdeleauncadremathematique(l'algebrerelationnelle). Leconceptmathematique sous-jacentestceluide relationdelatheoriedesensembles,qui se denitcommeunsous-ensembleduproduitcartesiendeplusieursdomaines.
Un domaine est unensemble ni ou inni de valeurspossibles. Le domaine des entiers, le domainedesbooleens,ledomainedescouleursdudrapeaufrancaisfbleu, blanc,rougegetc...
Onutilise alorsle produit cartesiend'un ensemble dedomaines pour denir unensemble de n-uplets.
Le produit cartesiend'un ensemblede domainesD 1
;D 2
;:::;D n
. quel'on ecrit D 1
D 2
:::D estl'ensembledesn-uplets(outuples)<V ;V ;:::;V >telsqueV 2D .
Exemple:
LeproduitcartesiendesdomainesD1=fdurand,lefebvre,martinget D2=fchristian,franckgdonne durand christian durand franck lefebvre christian lefebvre franck martin christian martin franck
Leproduitcartesienestuneoperationplusgeneralequelasimpleapplicationadesdomaines, on peut par exemple l'appliquer aussi ades ensembles de tuples, ce que nous ferons en algebre relationnelle.
Unetablerelationnelle 4
estunsous-ensembleduproduitcartesiend'unelistededomaines. Elleestgeneralementcaracteriseeparunnom permettantdel'identierclairement.
Anderendrel'ordredescolonnessansimportancetout enpermettantplusieurscolonnesde m^emedomaine,onassocieunnomachaquecolonne.
personne D1 D2
lefebvre christian martin franck durand franck
Lescolonnesconstituentcequel'onappellelesattributsdelatablerelationnelle.
Remarque: comme pour toute denition d'ensembles, il existe en fait deux possibilitespour denir une relation: en intention ou en extension. La forme intentionnelle est utilisee dans les basesdedonneesdeductives,parexemplef(x;y;z)2(N;Z ;Q)telsquex+y>zg,maispasdans lesbasesrelationnellesniobjets.Laformeextensionnellequiconsisteaspecierunauntousles tuplesdelarelationest laseule forme utilisabledanslesbasesdedonnees relationnelles.Elleest biens^urutiliseeaussidanstouslesautrestypesdebases.
Le schema d'unetablerelationnelleestconstituedel'ensembledesattributsdelatable.Par extension,leschemadelabasededonneesest constituedel'ensembledetouteslestables.
Unebasededonneesrelationnelleestunebasededonneesdontleschemaestunensemble deschemasdetablesrelationnellesetdontlesoccurrencessontdestuplesdeces tables.
1.9 Exemple de base de donnees relationnelle
A titre d'exemple voici une base de donnees relationnelle rudimentaire, utilisant 3 tables representantlescommandesdeproduitsadesfournisseurs.
Cetexempleserautilisedenombreusesfoisparlasuitepourillustrerl'ecriturederequ^etes. produits pno design prix poids couleur
102 fauteuil 1500 9 rouge 103 bureau 3500 30 vert 101 fauteuil 2000 7 gris 105 armoire 2500 35 rouge 104 bureau 4000 40 gris 107 caisson 1000 12 jaune 106 caisson 1000 12 gris 108 classeur 1500 20 bleu
20 CHAPITRE1. PRESENTATIONGENERALE fournisseurs fno nom adresse ville
10 Dupont Lille 15 Durand Lille 17 Lefebvre Lille 12 Jacquet Lyon 14 Martin Nice 13 Durand Lyon 11 Martin Amiens 19 Maurice Paris 16 Dupont Paris
commandes cno fno pno qute
1001 17 103 10 1003 15 103 2 1005 17 102 1 1007 15 108 1 1011 19 107 12 1013 13 107 5 1017 19 105 3 1019 14 103 10 1023 10 102 8 1029 17 108 15
Leschemadecettebaseestdonc:
produits(pno, design, prix, poids, couleur) fournisseurs(fno, nom, adresse, ville) commandes(cno, fno, pno, qute)
Fig.1.8{Visualisationd'une table Access
1.10 Passage du MCD aux tables relationnelles
UnefoisleMCDecritparlesanalystes,letravailduconcepteurdebasesdedonneesconsiste
a traduire ce modele en un modele plus proche du SGBD utilise: le MLD (modele logique de donnees). Dans le MLD relationnel, l'unique type d'objet existant est la table. La methode de
Traitementdesentites:
{ chaqueentitedevientune table.
{ chaqueproprieted'uneentitedevientunecolonnedecette table.
{ l'identiant d'une entite devient lacle primaire de la table correspondante (creation d'un index).
Traitementdesassociations:
{ une association (0,n)-(0,1) (lien hierarchique) provoque la migration d'une cle etrangere (l'identiantc^ote0,n)verslatabledel'entitec^ote(0,1).Si desproprietesetaientsur l'asso-ciationellesmigrentc^ote(0,1)(Fig. 1.9et1.10).
Relation
E
A
B
D
C
Entite 1
Entite 2
0,1
0,n
Fig.1.9{MCD aveclienhierarchique
A
B
D
C
E
C
Table 1
Table 2
{ uneassociation(0,n)-(0,n)(lienmaille)donnenaissanceaunenouvelletable.Lesidentiants desentitesauxquellesl'associationestrelieemigrentdanscettetable.lacleprimairedecette nouvelletableestconstitueedelareuniondecesidentiants.Sidesproprietesetaientportees parl'association,ellesmigrentdanslanouvelletable(Fig. 1.10et 1.11).
Relation
E
A
B
0,n
0,n
D
C
Entite 1
Entite 2
Fig.1.10{MCDaveclienmaille
22 CHAPITRE1. PRESENTATIONGENERALE LesschemasduMLD contiennent generalementdes echesindiquant lesreportsde cle(cles
etrangeres).Ces echessontpresentesatitreinformatif,enaucuncasces echesnecorrespondent
aunpointeurphysique.Lestablesrelationnellessonttoutesphysiquementindependantes. Dansle casFournisseur-Produits-Commandes(g.1.12), l'association commandesest unlien mailleporteur d'unepropriete.Il y adonc creation d'une table commandesavec report des cles desentitesliees,ce quinousdonnebienles3tables vuesprecedemment.
Rappel:Seules lescardinalitesmaximalesserventadenir lenombrede tables et lesreports de cles. Les cardinalitesminimales ne servent qu'a preciser par la suite si les colonnes peuvent prendrelavaleurnulloupas.
A
B
D
C
A
E
C
Table 1
Table 3
Table 2
Fig.1.11{MLDcorrespondantala Fig.1.10
Fournisseur
Commandes
Produits
fno
adresse
ville
pno
design
prix
poids
couleur
nom
1,n
1,n
qute
Fig.1.12{MCD Fournisseur-Produits-CommandesChapitre 2
Presentation des donnees
2.1 Les formulaires
26 CHAPITRE2. PRESENTATIONDESDONNEES
Fig.2.3{Structured'unformulaire avecsous-formulaire
Fig.2.4{Formulaireavec sous-formulaire
Fig.2.5{Structured'unetat sous Access
28 CHAPITRE2. PRESENTATIONDESDONNEES
Fig.2.7{structured'etat avecregroupement
Chapitre 3
L'algebre relationnelle
L'algebre relationnelle aeteintroduite par Codd en 1970 pour formaliser les operations sur les ensembles. Il existe deux familles d'operations: lesoperations ensemblistes et les operations unaires.
Enguised'exemplenousillustreronslesoperationsdecritesdanslesprochainespagesal'aide desdeuxrelationsRetSsuivantes:
R A B C a b c d a f c b d S A B C b g a d a f
3.1 Les operations de base
Trouverl'ensembledesoperationsdebaseconsisteatrouverunensembleminimald'operations au sens ou aucune d'entre elles ne peut s'ecrire par combinaison des autres. Il existe plusieurs ensemblesminimauxpourl'algebrerelationnelle.Celuiquenouspresentonssebasesur3operations ensemblisteset 2operationsunaires.
3.1.1 Operations ensemblistes
Lesoperationsensemblistesdebasesontl'union,ladierenceetleproduit.
L'union de deux relations R et S de m^eme schema est une relation T de m^eme schema contenantl'ensembledestuplesappartenantaR, aSouauxdeux.
OnnoteraT =(R[S)ouT=union(R,S).
30 CHAPITRE3. L'ALGEBRERELATIONNELLE R[S A B C a b c d a f c b d b g a
LadierenceentredeuxrelationsRetSdem^emeschemadansl'ordre(R S)estlarelation T dem^emeschemacontenantlestuples appartenantaR etn'appartenantpasaS.
OnnoteraT =(R S)ouminus(R,S)
Fig.3.2 {L'operateur Dierence
R S A B C
a b c
c b d
LeproduitcartesiendedeuxrelationsRetSdeschemaquelconqueestunerelationTayant pourattributs laconcatenationdes attributs de R et de S et dontles tuples sont constitues de touteslesconcatenationsd'untupledeRauntupledeS.
OnnoteraT =(RS)ouT=product(R,S)
Fig.3.3{L'operateur Produit
RS A B C D E F a b c b g a a b c d a f d a f b g a d a f d a f c b d b g a
3.1.2 Operations unaires
Les operations unairesontpour objectif de permettre l'eliminationde colonnes ou de lignes danslatable relationnelle.Cesdeuxoperationssontlaprojectionet larestriction.
Laprojectiond'unerelationRdeschema(A 1
;A 2
;:::;A n
)surlesattributsA i1 ;A i2 ;:::;A ip (aveci j 6=i k
etp<n)estunerelationR 0 deschema(A i1 ;A i2 ;:::;A ip
)dontlestuplessontobtenus pareliminationdesattributsdeRn'appartenantpasaR
0
etparsuppressiondesdoublons. OnnoteraT = X 1 ;:::;X n (R )ouT =proj X 1 ;:::;X n (R )
T
R
X 1 ;:::;X nFig.3.4{L'operateurProjection
A;C (R ) A C a c d f c d
Larestriction (ouselection)delarelationRparunequalicationQest unerelationR 0
de m^emeschemadontlestuplessontceuxdeRsatisfaisantlaqualicationQ.
LaqualicationQ peut^etreexprimeeal'aidede constantes, comparateursarithmetiques (> ;;<;;=;6=)et operateurslogiques(_;^;:).
OnnoteraT = Q (R )ouT =select Q (R )
R
Q
T
32 CHAPITRE3. L'ALGEBRERELATIONNELLE B= 0 b 0(R ) A B C a b c c b d
Lescinqoperationsprecedentes(union,dierence,produit,projection,restriction)formentun ensemblecoherentet minimal. Aucune d'entre-ellesnepeuts'ecrireal'aidedes autres.A partir deces cinqoperationselementaires,d'autresoperations(sans doutepluspratiques) peuvent^etre denies.
3.2 Operations derivees
Lesoperationsderiveessontconstruitesapartirdescinqoperationsdebase.Nouspresentons iciquelquesoperationsadditionnellesmaiscettelisten'estpaslimitative.Biend'autrespourraient ^
etreajoutees.
L'intersectiondedeuxrelationsRetS dem^emeschemaestunerelationT dem^emeschema contenantlestuplesappartenantalafoisaR etaS.
OnnoteraT =(R\S)ouT =inter(R ;S).
R
T
S
\
Fig.3.6{L'operateurIntersection
R\S A B C
d a f
L'intersectionpeuts'ecrireal'aidedesoperationsdebase: R\S=R (R S)=S (S R )
Remarque: il existe3typesd'intersection danslatheoriedesensembles.L'intersection entre deux ensemblesextensionnels, entre deux ensembles intentionnels et entre un intentionnel et un extensionnel.L'algebrerelationnellen'encodequedeux:l'intersectionentredeuxensembles exten-sionnels(parl'intersectionprecedemmentdenie)etl'intersectionentreunensembleextensionnel et unensembleintentionnel(parlarestrictionavecune qualication). Onnepeutpas faire,par exemple,l'intersectionentrel'ensembledesnombrespairsetl'ensembledesmultiples de3.
Le quotient(oudivision) delarelationR deschemaR (A 1 ;A 2 ;:::;A n )parlasous-relation S deschemaS(A p+1 ;:::;A n
)estlarelationT de schemaT(A 1
;A 2
;A p
)formee detouslestuples quiconcatenesachaquetuple deS donnenttoujoursuntupledeR .
R
S
T
%
Fig.3.7{L'operateurQuotient
R A B C D a b c d a b e f b c e f e d c d e d e f a b d e S C D c d e f R =S A B a b e d
Lequotientpeuts'ecrireal'aidedesoperationsdebase:si l'onnoteV =A i ;A 2 ;:::;A p alors R =S= V (R ) V (( V (R )S) R )
Lequotientpermetconcretementderechercherl'ensembledetouslessous-tuplesd'unerelation satisfaisantunesous-relationdecriteparl'operationdiviseur.Ilpermetdechercher\lestuplesde Rquiverienttout lestuplesdeS.Chercherparexempletouslesproduitsquiexistentdansune gammedecouleurs et/ouune gammedeprix.
La jointurede deux relationsR et S selonune qualication Qest l'ensemble destuples duproduitcartesienRS satisfaisantlaqualicationQ.
LaqualicationQ peut^etreexprimeeal'aidede constantes, comparateursarithmetiques (> ;;<;;=;6=)et operateurslogiques(_;^;:).
OnnoteraT =(R1 Q )S ouT =join Q (R ;S)
T
R
S
Fig.3.8{L'operateur Jointure
R A B C 1 2 3 4 5 6 S D E 3 1 6 2 R1 B<D S A B C D E 1 2 3 3 1 1 2 3 6 2
34 CHAPITRE3. L'ALGEBRERELATIONNELLE La jointurepeuts'ecrireal'aidedesoperationsdebase:
R1 Q
S= Q
(RS)
Cetteoperationestessentielledanslessystemesrelationnelsetpermetl'utilisationraisonnable duproduitcartesien.
L'equi-jointureest une jointureavecpourqualicationl'egaliteentredeuxcolonnes. La jointure naturelleest une equi-jointurede R et S surtousles attributs de m^emenom suiviedelaprojectionquipermetdeconserverunseuldecesattributsegauxdem^emenom.
Lajointurenaturelleestlajointurelaplusutiliseedemanierepratique,elles'ecritsimplement R1S etpeutsedeniraveclesoperationsdebase:
R1S= V ( C (RS)) R A B C a b c d b c b b f c a d S B C D b c d b c e a d b R1S A B C D a b c d a b c e d b c d d b c e c a d b
3.3 Les operations de calcul
En plus des operations decrites precedemment, certains auteurs ajoutent des operations de calculsurlesrelations.Cetajoutestjustieparlefaitquedenombreusesrequ^etesontbesoinde ce typed'operationsqui d'ailleurssontimplementeesdanstousleslangages d'interrogation.Ces operateursde calcul forment doncune extension aux operateursdebase et ne peuvent pas^etre exprimesal'aidedeceux-ci.
Compteestuneoperationcourantequipermetdedenombrerleslignesd'unerelationquiont une m^emevaleurd'attributsen commun.La relationresultante ne contient queles attributs de regroupementX
i
choisisavecleursoccurrencesdanslarelation. OnnoteraT =Compte X 1 ;:::;X n (R )ouT =Count X 1 ;:::;X n (R ),lesX 1 ;:::;X n
etantsles attri-butsderegroupement.
Siaucunattributderegroupementn'estprecise,l'operationrenvoiealorsuniquementlenombre detuplesdelarelation.
R
T
Count X 1 ;:::;X nR A B C a n 17 b o 14 c n 9 d p 13 e m 20 f m 10 Compte B (R ) B Compte n 2 m 2 o 1 p 1 Compte(R ) Compte 6
Sommeest uneoperationquipermetdefairelasommecumuleedesvaleursd'unattributY pourchacune desvaleursdierentes desattributs de regroupementX
1 ;:::;X
n
. Y doitbien s^ur ^
etrenumerique.Larelation resultante necontientquelesdierentes valeursdes attributs X i
de regroupementchoisisainsiquelasommecumuleedesY correspondants.
OnnoteraT =Somme X1;:::;Xn
(R ;Y)ouT =Sum X1;:::;Xn
(R ;Y)
Siaucunattribut deregroupementn'estprecise,l'operationrenvoie alorslasommede toutes lesvaleursdelacolonneY.
R
T
Sum
X1;:::;Xn (Y)
Fig.3.10{L'operateur Somme
R A B C a n 17 b o 14 c n 9 d p 13 e m 20 f m 10 Somme B (R ;C) B Somme n 26 m 30 o 14 p 13 Somme(R ;C) Somme 83
Cetteoperationsegeneralisefacilementad'autresoperationscommelecalculdelamoyenne, duminimumoudumaximumd'unecolonne.
3.4 Expressions de l'algebre relationnelle
Une fois les operateurs relationnels identies il est alors facile de combiner ces operations
elementairespour construire desexpressions del'algebrerelationnelle permettant de fournir les reponsesadesquestionscomplexessurlabase.
Nous reprendronscomme exempleles trois tables representantles commandesde produits a desfournisseurspresenteesprecedemment.
36 CHAPITRE3. L'ALGEBRERELATIONNELLE commandes(cno,fno,pno,qute)
{ Determinerlesnumerosdefournisseursdesdierents`Dupont'. proj fno (select nom= 0 Dupont 0 (fournisseurs)) { Determinerlesnumerosdefournisseursqui ontmoinsde3commandes.
proj fno (select compte<3 (compte fno (commandes)))
Delam^ememanierequel'ondessinedesarbresd'expressionspourlesexpressionsarithmetiques, onpeutrepresenterlesexpressionsdel'algebrerelationnellesousformed'arbres.Lesfeuilles sont
etiqueteesparlestablesaexploitertandisquechaquenudestconstitued'unoperateur relation-nel.
nom=’Dupont’
fno
fournisseurs
fno, compte
compte < 3
commandes
compte fno ()Fig.3.11{Arbresde requ^etes
3.4.1 Pourquoi une requ^ete est-elle meilleure qu'une autre?
Unerequ^eten'estengeneralpasl'uniquesolutiond'unproblemecommelemontrelaquestion precedente.Danscecas, silarelationobtenueestidentiqueaveclesdeuxrequ^etes,l'eÆcaciteest rarementla m^eme.D'ou l'utilited'algorithmes d'optimisation automatiquede requ^etes quel'on trouvedanslesSGBDdignesdecenom.
Par exemple la requ^ete consistant a \determiner les references, prix et quantites des pro-duits commandesenplus de 10exemplaires parcommande" peut s'ecrirede plusieursmanieres dierentesplusoumoinseÆcaces.
{ (A) proj pno;prix;qute (select qute>10 (join produits:pno=commandes:pno (commandes;produits))) { (B)proj pno;prix;qute (join produits:pno=commandes:pno (produits;select qute>10 (commandes))) { (C)proj pno;prix;qute (join p:pno=c:pno (proj pno;prix (produits);proj pno;qute (select qute>10 (commandes)))) Prenonspourhypothesesimplicatricequechaquecolonnenecessite10caracteresenmemoire.
qute > 10
Commandes
=pno
Produits
produits.pno,prix,qute
=pno
qute > 10
Commandes
Produits
produits.pno,prix,qute
Commandes
=pno
produits.pno,prix,qute
qute > 10
Produits
pno, prix
pno, qute
(C)
(B)
(A)
Fig.3.12{Dierentsarbrespourla m^emerequ^ete
Interessonsnousalarequ^ete(A).Elle necessite une operationde Jointurequi est engeneral co^uteuse. En eet, la table temporaire la plus volumineuse pour eectuer cette requ^ete est en-gendreeparleproduit cartesiendesdeuxtablesproduitetcommandesnecessaireaucalculdela jointure.Cettetable temporairepossedeunvolumede400400=160000caracteres.
Si l'oneectue lesprojectionset restrictionsleplust^ot possible commedansla requ^ete(C), onneconservealorsquelecouple(pno,prix)delatableproduitce quidonne8210=160 caractereset le couple(pno,qute)de latable commandespourles quantitessuperieuresa10ce quidonne2210=40caracteres.Lajointureengendreunetabletemporairede40160=6400 caracteres, d'ou ungainde 75%(facteur 25)en taille memoire necessaire(et ungainen vitesse
evidemmentproportionnel).
Les tables utilisees dans cet exemple sonttrespetites et larequ^ete encore tres simple,mais onimaginefacilementce quece genred'optimisationpermet degagnersurdesrequ^etesa3ou4 jointuressurdestablesdemilliersd'enregistrements!
3.5 Quelques remarques sur l'algebre relationnelle
{ L'algebrerelationnellepermetl'etudedesoperateursentreeux(commutativite,associativite, groupesd'operateursminimaux etc ...). Cetteetudepermet de demontrer l'equivalence de certaines expressions et de construire des programmes d'optimisation qui transformeront toutedemande ensaformeequivalentelapluseÆcace.
{ D'une manierepratique,lesoperationslesplusutiliseessontlaprojection,larestrictionet lajointurenaturelle.
38 CHAPITRE3. L'ALGEBRERELATIONNELLE nombre de tuples du resultat et peut atteindre mn tuples avec m et n les nombres de tuplesdesdeuxrelationsjointes.
{ And'avoirdesrequ^eteseÆcacesentempsilesttoujourspreferabledefairelesrestrictions leplust^otpossibleandemanipulerdestableslesplusreduitespossibles
1 .
{ Les operations de l'algebre relationnelle sont deles a certaines lois algebriques: commu-tativite, associativite etc... pour peu que l'ordre des colonnes soit sans importance. C'est pourquoilescolonnessonttoujoursnommees.
Chapitre 4
Les contraintes d'integrite
Lagestionautomatiquedescontraintesd'integriteestl'undesoutilslesplusimportantsd'une base de donnees. Elle justie a elle seule l'usage d'un SGBD. Selon les contraintes, dierentes anomalies que nous allons passer en revue peuvent se declencher des qu'un acces aux donnees (saisie,modication,eacement)esteectue.
Desqu'unaccesnonconformeauxcontraintesspecieesdanslabasesurvient,l'actioneectuee estautomatiquementrejeteepuissoitpresenteeal'utilisateursiletraitementsefaiteninteractif, soitrangeedansunetabled'erreurssiletraitementsefaitenbatch.
4.1 Contraintes de cle
Lepremiertypedecontraintesd'integritetraiteparunSGBDpermet deverierlapresence de cles uniques pour chacune des tables. Cette cle est nommee cle primaire de la table. Il ne peutyenavoirqu'uneseulepartable.Unecleprimairepeutbiens^ur^etreconstitueedeplusieurs colonnes.Quellequesoitlatable,siunecleprimaireestdenie,elledoit^etrepresentepourchaque enregistrement,elledoit^etre uniqueet aucunde sesconstituantsnepeut^etreNULL.Si lacleest omise,si elle est alavaleur NULLousi ellea dejaetesaisie pourun autreenregistrementde la table,uneanomaliedecleest declenchee.
Plusieursregroupementsd'attributspeuventengeneralpretendrea^etrecleprimaire.Ce sont les cles candidates. Lescles candidatesqui n'ontpas^ete choisiescomme cleprimaire sont alors declareesaveclacontrainteUNIQUE.
4.2 Contraintes de types de donnees
Lesecondtypedecontraintesd'integritetraiteparunSGBDpermetensuitedeverierlestypes des donnees saisies (entiers,reels, dates, cha^nes de caracteres, booleensetc ...) et les domaines de validite pour chacune de ces donnees (date posterieure au 01/01/1980 pour la gestion des commandesd'uneentreprisecreeeacettedate, entier comprisentre0et20pourrepresenterune noted'etudiant,etc...).
4.3 Contraintes d'integrite referentielle
La gestion des contraintes d'integritepermet aussi de verierautomatiquement la presence de donnees referencees dans des tables dierentes. Ce type de contrainte est appele contrainte d'integrite referentielle. Une contrainte d'integrite referentielle peut s'appliquer des qu'une cle primaire d'une table est utilisee comme reference dans une autre table. On la nomme alors cle
40 CHAPITRE4. LESCONTRAINTESD'INTEGRITE debus.Concretement,lesclesetrangeressetrouventdanstoutes lestablespossedantunchamp issu d'associationsduMCD. Commepourlacleprimaire,une cleetrangerepeut^etreconstituee deplusieurscolonnes. Contrairementauxclesprimaires,lavaleurNULLestaccepteedansunecle
etrangere.Ce casseproduitnotammentavecune contraintesdutypeON DELETE SET NULLque nousverronsparlasuite.
Fig.4.1{AÆchage descontraintesreferentiellesdansAccess
Bienevidemment,ilestanormalqu'unecleetrang ereapparaissedanslabasededonneestandis quelacleprimaireassocieen'estpaspresente.Onn'imaginepassaisirunecommanded'unproduit dontla referencen'est paspresentedans la table desproduits. Dela m^eme maniere il ne serait pastreslogiquedemettreunenoteaunetudiantquinegurepasdanslatabledesetudiants.Si untelcasseproduit,labaseest diteincoherente.
Reprenonsparexempleles3tables fournisseurs,commandes,produitspresenteespage19. Lenumerodeproduit estunecleprimairedelatabledesproduitsetcleetrangeredelatable descommandes.De m^eme, lenumero defournisseurest cleprimairedelatable desfournisseurs etcleetrangeredelatabledescommandes.
Dierentesanomaliespeuventseproduire:
{ Anomalie de suppression: si on supprimele fournisseur Lefebvre(numero 17), 3 com-mandes de la table des commandes deviennent incoherentes. Elles doivent donc^etre sup-primees.
{ Anomaliede modication:sionmodielenumerodufauteuilrougequel'ontransforme de102a112,lesdeuxenregistrementsdelatabledescommandesleconcernantdoivent^etre modies.
{ Anomalied'ajout:siontented'ajouterunecommandequireferenceleproduit111,l'ajout est refusepuisqueceproduit n'existepasdanslatable desproduits.Ileniradem^emesile fournisseur delacommande referencelenumero14qui n'existe pasnon plusdanslatable desfournisseurs.
Gr^acealagestion descontraintesd'integrite,leSGBD s'occupeautomatiquement, achaque action sur les donnees (saisie, modication, eacement), de verier la coherence de la base de donnees.
Cettevericationpeutsefairedetroismanieresdierentesselonlessouhaitsduconcepteur: 1. Simplesignalementd'uneanomaliedepresence.Danscecasunmessageappara^tetlamise
ajourestrefusee.
2. Eacementautomatiquedes tuplesqui referencentunobjetqui n'existe plusdanslatable principale.
3. Mise ajourautomatiquedes tuplesutilisantlacleetrangerequireferenceune cleprimaire venantdechangerdevaleur.
SelonlesSGBDutilises,d'autrestypesdecontraintespeuventencore^etregerees,notamment viades procedureslancees automatiquementen casd'ajout, de modication oud'eacement de donnees(triggers).L'importantestde noterquel'avantagequ'apporteunSGBDsur unsysteme classique est queces contraintes sonttraiteesau niveaudes donnees et non pasplaceesdans les traitements.
Remarque:Lasemantiquedevericationdescontraintesestdierentselonquel'onconsidere un environnement transactionnel ou non. Quand une transaction est en cours d'execution, les contraintes doivent-elles^etreverieesapreschaquemiseajour oubienuniquementalandela transaction?Nousreparleronsdeceproblemelorsquenousaborderonslestransactions.
Chapitre 5
Le langage QBE
LelangageQBE,abreviationde \QuerybyExample"aeteinventeparIBMen 1978(Zlo) pourfaciliterlaconstructionderequ^etesrelationnellesgr^aceaunaspectgraphique.
L'ideedebaseconsisteafaireformulerlaquestional'utilisateurparunexempled'unereponse possiblealaquestionsouhaitee. Leprincipedeconstructionsuiviest constituededeuxetapes:
1. AÆcherleschemadestablesnecessairesal'expressiondelarequ^ete. 2. Remplirlescolonnesaveclescriteresrecherches.
L'expressiond'unerequ^eteelementairedans lescolonnes sefait en respectantlespoints sui-vants
1
{ Lesattributs aprojetersontdenisparunP(Print)danslacolonneassociee.
{ Lesconstantessonttapeesdirectementdanslacolonnedel'attributconcerne,precedeesde l'operateurde comparaisonnecessaire(=,,,>,<,6=).Siaucun operateurn'estspecie,le systemeconsiderequ'ils'agitd'uneegalite(lesymbole=peutdonc^etreomis).
{ Laliaisonentre deuxtablessefaitparl'utilisationdevaleursexemplessoulignees(sortede variablesducalculdespredicat).QBEassociealorsautomatiquementdeuxvaleursexemples identiquesdansdeuxtablesdierentes.
{ Pardefaut,QBEelimine lesdoublons.Sionsouhaiteconserverlesdoublons,lemotcleALL doit^etreplacesurlaligneduPconcerne(c'estlecontrairedeSQL).
{ Les operateurslogiques ET, OU, NON,peuvent^etreutilisesdans les colonnes pour exprimer desliaisonsentre criteresderestriction.
{ LesoperateursarithmetiquesSomme,Moyenne,Compte,Maximum,Minimumpeuvent^etre uti-lisesdans lescolonnescomme desconstantes.Desqu'unedeces operationsest utilisee, les autrescolonnesselectionneessansoperationarithmetiquesontautomatiquementconsiderees commedescolonnesderegroupement.
{ les trisdes resultatsse font en mettantl'attribut AO(Ascendentorder) ouDO (descendent order)surlaligneduPcorrespondant.
Gr^ace a ce simple mecanisme graphique, il est alors possible d'exprimer tres facilement un grandnombrederequ^etes.Envoiciquelquesexemples.
1. listerlesnumeroset nomsdesfournisseurs. fournisseurs fno nom adresse ville
2. listerlesdesignationsdeproduits dontlepoidsest superieura15. produits pno design prix poids couleur
P >15
3. listerlesnomsdesfournisseursaveclesnumerosdeproduitscommandesainsiquelaquantite commandee.
commandes cno fno pno qute
X P P
fournisseurs fno nom adresse ville
X P
4. aÆcherlesproduits avecleurs couleursrespectives,triessur lenom croissantet lacouleur decroissante.
produits pno design prix poids couleur
P.AO P.DO
5. AÆcherlasommedesquantitescommandeesparnumerodefournisseur. commandes cno fno pno qute
P somme()
ContrairementaSQL,QBEn'estpasstandardiseetchaqueSGBDenfaitsapropreimplementation. Chaqueimplementationpermet l'expressiondetoutes lesrequ^etesdel'algebrerelationnelle avec une syntaxe quiluiest propre.Ilest doncdiÆcile depresentericine serait-ceque lesapproches lesplusfrequentes.
Fig.5.1{Requ^eteQBEsousAccess
Silesrequ^etescourantes(projections,restrictionsetjointures)s'exprimentfacilementenQBE,il fautbienreconna^trequedesquelarequ^etesecomplique,l'expressionenQBEdevienttresdelicate.
Chapitre 6
Le langage SQL
SQLest un langagede denition et de manipulation debases de donnees relationnelles.Son nomest uneabreviationde\Structured QueryLanguage"(langaged'interrogationstructure).
SQLest unstandardqui aetenormaliseparl'organismeANSI.Ilexistepourchaqueproduit SQLrealisedesdierencesoudescomplementsparrapportalanorme.
Historiquement,apresladecouvertedumodelerelationnelparE.F.Codden1970,plusieurs lan-gagesrelationnelssontapparusdanslesanneessuivantesdontSEQUELd'IBM,puisSEQUEL/2 pourleSystem/Rd'IBMen1977,langagequidonnanaissanceaSQL.L'annee1981avulasortie dupremierSGBDrelationnelimplementantSQL,lesystemeOracle.Cen'estqu'en1983qu'IBM sortit DB2,heritier duSystem/R, lui aussiavec un langage detype SQL. Le langage a ensuite
etenormaliseen1986 pourdonnerSQL/86puislegerementmodieen1989 pourdonnerSQL/89 laversionlaplusutiliseeactuellement.En1992denombreusesameliorationsonteteapporteesa lanorme pourdonner SQL/92que l'on nomme generalementSQL2,beaucoup plus verbeuse que laprecedente.Actuellementune versionSQL3est encours de redaction.Elle integreune couche objetssupplementairemaisn'estpasencorereconnuecommenormealadated'aujourd'hui.
SQLcontientunlangagededenitiondedonnees,leDDL 1
,permettantdecreer,modierou supprimerlesdenitionsdestablesdelabaseparl'intermediairedesordresCreate,Drop,etAlter. Ilcontientaussiunlangagedemanipulation dedonnees,leDML
2
,parl'intermediairedesordres Select,Insert,Update,Delete.Ilcontient enn unlangagedegestion desprotectionsd'acces aux tables en environnementmulti-utilisateurspar l'intermediaire des ordres Grant,Revoke, le DCL
3 .
DDL DML DCL
ALTER DELETE GRANT
CREATE INSERT REVOKE
COMMENT SELECT
DESCRIBE UPDATE
DROP RENAME
Fig.6.1{OrdresSQLprincipaux
Une requ^ete SQL peut ^etre utilisee de maniere interactive ou incluse dans un programme d'application(quelquesoit lelangage).
Toutes les instructionsSQLse terminentpar unpoint-virgule (;).Un commentairepeut^etre introduitdansunordreSQLparlessignes/*et*/ouparlecaractere%qui traitetoutelande lignecommecommentaire.
1.DataDenitionLanguage 2.DataManipulationLanguage
6.1 La manipulation des donnees: le DML
Toutd'abord,pourquoicommencerparleDML?Lareponseestsimple.Deplusenplusd'outils commeMS-ACCESSpermettentdecreerdestables\alasouris".Pourdenombreuxutilisateurs, leDML est donclepremiercontactqu'ilsontavecSQL, c'est pourquoinous commenceronspar lui.Ilestneanmoinsevidentquel'ordrechronologiqued'utilisationd'unebasededonneesnecessite l'usageduDDLavantleDML.
Danscettesectiononparleratout d'aborddel'ordreSELECTqui estsansdouteleplusutilise detouslesordresSQL,puisdesordresINSERT,UPDATEetDELETE.
6.1.1 L'obtention des donnees
L'obtentiondesdonneessefaitexclusivementparl'ordreSELECT.Lasyntaxeminimaledecet ordreest:
SELECT <liste des noms de colonnes> FROM <liste des noms de tables> ;
Nous verrons qu'elle peut ^etre enrichie, de tres nombreuses clauses permettant notamment d'exprimerlesprojections,lesrestrictions,lesjointures,lestrisetc...
FROM WHERE GROUPBY HAVING ORDERBY
Fig.6.2 {Ordresdesclauses duSELECT
Expression des projections La projectiond'une table en vue de l'obtention d'un ensemble decolonnesdecettetable sefaitsimplementen speciantlesnomsdescolonnesdesirees.Sil'on souhaiteobtenirtouteslescolonnesd'unetablelecaractere`*'peut^etreutiliseavantageusement
alaplacedelalistedesnomsdecolonnes. R1listerla table fournisseurs
SELECT * FROM fournisseurs ;
R2 listerlesnumerosetnoms desfournisseurs SELECT fno, nom FROM fournisseurs ;
SQL n'elimine pas les doubles a moins que ca ne soit explicitement precise par le mot cle DISTINCT.
R3 listerlesdierentesdesignationsde produits SELECT DISTINCT design FROM produits;
result design fauteuil bureau armoire caisson
Expressiondesrestrictions Larestrictions'exprimeal'aidedelaclauseWHEREquel'onajoute
alarequ^etejusteapreslalistedestablesutilisees.
R4 listerlesdonneessurlesproduits dontlepoidsestsuperieura15 SELECT * FROM produits
WHERE poids>15 ;
Biensur,l'associationprojection-restrictionest triviale:
R5 listerlesdesignations de produits dierentes dontlepoidsest superieur a15 SELECT DISTINCT design FROM produits
WHERE poids > 15 ;
Ilestpossibled'exprimerdesqualicationscomplexesal'aidedescomparateursarithmetiques >,>=,<,<=,=,<>etdesoperateurslogiquesAND, OR, NOT.
R6 listerlesproduits dontlepoids estcompris entre15 et40 SELECT * FROM produits
WHERE poids > 15 AND poids < 40 ;
result pno design prix poids couleur 103 bureau 3500 30 vert 105 armoire 2500 35 rouge 108 classeur 1500 20 bleu
D'autrespredicatspeuventencore^etreutilises.Ilsserventadenirdesensemblesoudesvaleurs approximatives.Ce sont lespredicatsIN,BETWEEN,LIKEqui peuvent toustrois ^etre prexespar NOTpourexprimerlanegation.
R7 listerlesfournisseurshabitantLille, LyonouNice SELECT * from fournisseurs
WHERE ville IN ('Lille','Lyon','Nice') ;
R8 listerlesproduits dontlepoids n'est pas comprisentre 15et35 SELECT * FROM produits
WHERE poids NOT BETWEEN 15 AND 35 ;
Lecaracteredesoulignement`' remplacen'importequelcaracteretandisquele pourcentage `%'remplacen'importequellesequencedencaracteres(npouvant^etreegala0)
4 . R9 listerlesfournisseursdontlenom ne commencepaspar 'd'
SELECT * FROM fournisseurs WHERE nom NOT LIKE 'D%'
result fno nom adresse ville
17 Lefebvre Lille
12 Jacquet Lyon
14 Martin Nice
11 Martin Amiens
19 Maurice Paris
Letestdevaleursmanquantesestaussipossible.Unevaleurmanquanteestrepresenteeparune valeurspecialenoteeNULL.Letest d'unevaleurNULLne peut passefaireavecl'egaliteclassique maisdoitsefaireobligatoirementaveclespredicatsIS NULLouIS NOT NULL.
R10 listerlesfournisseurs dontl'adressen'estpasrenseignee SELECT * FROM fournisseurs
WHERE adresse IS NULL;
R11 listerlesfournisseurs dontl'adresseest renseignee SELECT * FROM fournisseurs
WHERE adresse IS NOT NULL ;
Trietpresentationdesresultats SQLpermetdetrierlestuplesobtenusparlarequ^eteselon dierentscriteresgr^acealaclauseorder by .Lesmotsclesascetdescpermettentdepreciser siletriestcroissantoudecroissant.
R12 aÆcherlesproduitsrougesouvertsoubleustriessurlenomcroissantetlacouleurdecroissante SELECT design, couleur FROM produit
WHERE couleur IN ('rouge','vert','bleu') ORDER BY design ASC, couleur DESC ;
Pardefaut,lesnomsdescolonnesdelatableresultatdelarequ^etesontlesnomsdescolonnes specieesdans lalistedescolonnes duSELECT.Ilest neanmoinspossiblede changerlenom de lacolonneal'aÆchageenaccolantaunomdecolonnechoisilepredicatASsuividunouveaunom decolonnedevantappara^treal'aÆchage.
R13 aÆcher lesproduits etleurs couleursavec desnomsde colonnes comprehensibles. SELECT design AS [designation du produit], couleur AS [couleur du produit] FROM produits;
result designationduproduit couleurduproduit
armoire rouge bureau vert bureau gris caisson gris caisson jaune classeur bleu fauteuil rouge fauteuil gris
Expressiondes jointures Lesjointuressefontenspeciantlestablessurlesquelleslajointure serafaitedanslalistedestablesutiliseesetenspeciantlaqualicationdejointuredanslaclause WHERE.Onrappellequ'unejointuresansqualication estunproduit cartesienet qu'unejointure avecegaliteest uneequi-jointure.
R14 listerleproduit cartesienfournisseur* produits SELECT * FROM fournisseurs, produits ;
Jusqu'apresentnousn'utilisionsqu'uneseuletable.Iln'yavaitdoncpasd'ambigutedenom sur lescolonnes utilisees. Desquedeux tables sont utilisees, des ambigutespeuventappara^tre. Danscecasil fautprexerlenomdecolonneparlenom delatable concerneesuivid'unpoint. R15 listerlesnomsdesfournisseursaveclesnumerosdeproduitscommandesainsiquelaquantite commandee
SELECT fournisseur.nom, commandes.pno, commandes.qute FROM fournisseurs, commandes
WHERE fournisseurs.fno = commandes.fno ;
Si les noms de tables qui servent deprexes deviennent penibles ataper, SQL ore de plus unepossibilitedesynonymesdanslaclauseFROM.IlsuÆtpourceladepreciserlesynonymejuste apreslenomde latableal'aidedumot cleAS(facultatif)commepourlessynomymesdenoms decolonne.Larequ^eteprecedentedevientalors
R16 utilisation dessynonymesde noms de tables SELECT f.nom, c.pno, c.qute
result f.nom c.pno c.qute Lefebvre 103 10 Durand 103 2 Lefebvre 102 1 Durand 108 1 Maurice 107 12 Durand 107 5 Maurice 105 3 Martin 103 10 Dupont 102 8 Lefebvre 108 15
Larequ^eteprecedentenefaisaitqu'uneseulejointure,maisbiens^ur,plusieursjointurespeuvent ^
etreexecuteesencascade.
R17 listerlescouples(nom de fournisseur,nom de produit) encommande SELECT f.nom AS fournisseur, p.design AS produit
FROM fournisseurs AS f, produits AS p, commandes AS c WHERE f.fno = c.fno
AND p.pno = c.pno ;
Rienn'emp^echebiens^urdefaireune jointured'unetablesurellem^eme.Dansce casonparle alorsd'auto-jointure.
R18 Lister lescouples dereferencesde fournisseurs situes dansla m^emeville. SELECT f1.fno, f2.fno
FROM fournisseurs AS f1, fournisseurs AS f2 WHERE f1.ville = f2.ville
AND f1.fno < f2.fno;
LesapportsdeSQL2. SQL 2(parfoisappeleSQL/92)aapportequelquesnouvellespossibilites quantal'expressiondesjointures.AvecSQL 2ilest possibledepreciserlesattributs dejointure danslaclauseFROMduSELECT.ParexempleFROM fournisseurs f JOIN commandes c ON f.fno=c.fno permetd'exprimerune jointureentrelestablesfournisseuret commandessurl'attributfno.
Outre la jointure classique, SQL 2 ore aussi la possibilite de denir des jointures externes. Une jointureinterne nefournit dans latable resultante quelestuples qui satisfontaucritere de jonction.Dansunejointureexternel'unedestablesutiliseesdanslajointureestconsidereecomme directriceetauratoussesenregistrementsdanslatableresultantem^emes'ilsn'ontpasdevaleurs correspondantesavecl'autretabledelarequ^ete.Eneetilsepeutparfoisquel'onsouhaiteaussi conserverdanslatableresultantedestuplesquinepeuventpas^etrecompletesparl'operationde jointure.Contrairementalajointureinterne,lesjointuresexternespermettentdelesconserveren completantlescolonnesmanquantespardesvaleursNULL.
ParexemplelaclauseFROM fournisseurs f JOIN LEFT commandes c ON f.fno=c.fno per-met d'exprimer une jointure entre les tables fournisseur et commandes sur l'attribut fno et conserverdanslatable resultatlesfournisseursqui n'ontpasdecommandeencours.
Pourexprimer lesvariantes de jointuresexternes,il existe notamment dansSQL 2les ordres JOIN LEFTpourconserverlestuplesdelatabledegauche,JOIN RIGHTpourconserverlestuples de la table de droite et JOIN FULL pour conserver les deux. L'ordre JOINpeut ^etre prexe par OUTERpourmarquerlefaitque c'estune jointureexterne,ouparINNERpourlajointureinterne classique.
IlestanoterquedenombreuxfournisseursdeSGBDprennentacetegardquelquesdistances avec la norme. On trouvera par exemple la syntaxe (+) sur Oracle, la syntaxe *= sur Sybase. ACCESSquantaluiestdelealanorme.
INNERJOIN
LEFTOUTERJOIN RIGHTOUTERJOIN FULLOUTERJOIN CROSSJOIN
Fig.6.3 {Ordresde jointureappportesparSQL 2
SELECT p.pno, design, qute , poids
FROM produits AS p LEFT JOIN commandes AS c ON c.pno = p.pno
WHERE poids < 20 ;
result p.pno design qute poids
101 fauteuil 7 102 fauteuil 1 9 102 fauteuil 8 9 106 caisson 12 107 caisson 12 12 107 caisson 5 12
R20 aÆcher lesproduits qui nesont pascommandes SELECT p.pno
FROM produits AS p LEFT JOIN commandes AS c ON c.pno = p.pno WHERE c.pno is NULL ;
Les expressions de manipulation de donnees SQL permetbien s^urd'eectuerdescalculs arithmetiquesal'aÆchagedescolonnes.IlsuÆt pourceladeplacerl'expresionacalculercomme champd'aÆchageduSELECT.Ces valeurscalculeespeuventbiens^ur^etretestees danslesclauses HAVINGouWHERE.
R21 Prix desproduitsavecune TVAa 20,6%
SELECT DISTINCT pno, design, prix*1.206 AS prixTTC FROM produits ;
R22 volume nancier commandepourlescommandes demoins de 10articles SELECT DISTINCT cno, qute*prix AS volume, qute
FROM produits INNER JOIN commandes ON produits.pno = commandes.pno where qute <10 ;
result cno volume qute
1003 7000 2 1005 1500 1 1007 1500 1 1013 5000 5 1017 7500 3 1023 12000 8
D'autreoperationssur chaque valeurselectionnee peuvent^etre eectuees notamment sur les dates(YEAR,MONTH,DAY)etlescha^nesdecaracteres(SUBSTRING,UPPER,LOWER,CHARACTER_LENGTH). C'estainsiparexemplequelesresponsablessystemesobtiennentlesnomsdelogindesutilisateurs en ecrivantune requ^ete aÆchantune combinaison des caracteres dunom et du prenom chaque l'utilisateur.
Ces fonctionsdonentbien s^ur dela puissanceauSGBD erc'estsouventsur ce pointque les dierentes implementationsnerespectentpaslanorme,chacunvoulantapporterdes
fonctionna-Les fonctions statistiques Les fonctions precedentes permettent de manipuler les donnees d'un tuple a la fois. Mais l'utilisateur a souventbesoin d'autres fonctions que celles presentees precedemment.Notamment, il luifautparfois pouvoirmanipulerdesfonctionsde regroupement \inter tuples". SQL ore la possibilite de recuperer des donnees chirees sur les tables ou des partiesdetables.Ilestparexemplepossibled'obtenirlenombredetuplesrepondantauncritere, lavaleurmoyenned'unecolonne,lavaleurmaximumouminimumet lasommed'unecolonne.
AVG moyenne
COUNT nombred'elements
MAX maximum
MIN minimum
SUM somme
Fig.6.4{fonctions statistiquesprincipales
R23 compterlenombrede commandes SELECT COUNT(*) FROM commandes ;
result Nbre 2 R24 aÆcher la sommede toutelesquantitescommandees SELECT SUM(qute)
FROM commandes ;
R25 compterlenombrede livraisons duproduitnumero102. SELECT COUNT(*)
FROM commandes WHERE pno=102 ;
Attention,danscertainsSGBDcommeACCESS,siunnomdecolonneestspeciedansCOUNT aulieu del'etoile,lemotcleDISTINCT doitimperativement^etreutilise.Lanorme SQLcontient aussilemotcleALLquipeut^etreutiliseaveclafonctionCOUNTetquipermetdecompterles dou-blonsparoppositionaDISTINCT.Neanmoins,comptertouteslesvaleurs,doublonscompris,revient
acomptertoutesleslignes.LaformeCOUNT(ALL attribut)estdoncgeneralementremplaceepar COUNT(*).
R26 compterles nomsde fournisseurs dierents SELECT COUNT(DISTINCT nom)
FROM fournisseurs ;
R27 recuperer touteslesstatistiquessurlesquantitesen commande SELECT COUNT(*),SUM(qute),MAX(qute),MIN(qute),AVG(qute) FROM commandes ;
Ilestimportantdenoterquelesoperationsstatistiquesprecedentesnepeuventpass'imbriquer. Ilest parexempleinterditd'ecrirequelquechosecommeAVG(SUM(montant)).Ce typedecalcul nepourras'obtenirqu'avecdessous-requ^etesoudesvuescommenousleverronsplustard. Les regroupements Il est souvent interessantde regrouperles donnees d'unetable en sous-tablespouryfairedesoperationspargroupes.Parexemplecompterlescommandesparfournisseur. CecisefaitaveclaclauseGROUP BYsuiviedelacolonneapartitionner.
R28 aÆcher la sommedesquantitescommandeesachaquefournisseur SELECT SUM(qute)