• Aucun résultat trouvé

[PDF] Cours Bases de Données de Merise à JDBC | Cours informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Cours Bases de Données de Merise à JDBC | Cours informatique"

Copied!
179
0
0

Texte intégral

(1)

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

(2)
(3)

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'ordreSQLCREATEdanslesdi erentsSGBDdumarche,l'ensembledes ordresVBApermettantl'ecrituredecurseurssousMS-ACCESSoum^emelesmethodesnecessaires 

al'implementationd'unserveurd'applicational'aidedesRMI.

A qui s'adresse ce livre?

Celivres'adresseatouslesetudiantsetdeveloppeursdansledomainedesbasesdedonneesqui cherchentaavoirunevued'ensembledesdi erentestechnologieslieesacesujet,sanspourautant rentrerdanslesdetailsprofondsdechaquesous-domaine.Ilpeut^etreindi eremmentluetetudie 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,a nd'illustrerlesdi erentespartiesj'aiutiliseMS-ACCESSpoursa convi-vialiteetsasimplicited'utilisationetORACLEv7(etparfoisunAS400)pourlesaccesen Client-Serveur. Celadit, jepensem'^etredetacheaumaximumd'unquelconque systemeet avoirfourni

(4)

Pourquoi est-ce disponible sur le WEB?

Depuisl'avenementd'Internet,une vaguedegratuitesansprecedentsestapparue.Ontrouve deplusenplusdesystemesd'exploitation,delogicielsetm^emedelivresremarquablesdisponibles gratuitement.

Pourlelecteur,ce mondeidylliqueaunrevers:vousdevez savoirchargerce chier,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

(5)

Table des matieres

1 Presentationgenerale 11

1.1 Qu'estcequ'unebasededonnees . . . 11

1.2 Objectifsetavantages . . . 11

1.3 Di erentstypesdebasesdedonnees . . . 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 Lade nitiondesdonnees:LeDDL . . . 59

6.2.1 Lestypesdedonnees. . . 59

(6)

6 TABLEDESMATIERES

6.2.4 ScriptDDLdecreationdebase . . . 62

6.2.5 Lacreationdevues. . . 63

6.2.6 Lacreationd'index. . . 65

6.2.7 Modi cationetsuppressiondetable,devueoud'index . . . 66

6.2.8 Commenter unetable . . . 67

6.3 L'aspectmulti-utilisateurs:leDCL . . . 67

6.3.1 Lacon dentialitedesdonnees. . . 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

(7)

10 Lesbases de donneesde type reseau 113

10.1 Notionsdebase . . . 114

10.2 LeSGBDdetypeCODASYLIDS-II(IntegratedDataStore) . . . 115

10.2.1 Lade nitiondesdonnees . . . 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 De nitionsimpli eeduschema . . . 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 Di erentspilotes . . . 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 Con gurationdel'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)

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

(9)

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'operateurDi erence . . . 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 Di erentsarbrespourlam^emerequ^ete. . . 37

4.1 AÆchagedescontraintesreferentiellesdansAccess . . . 40

4.2 GestiondescontraintesreferentiellesdansACCESS. . . 40

5.1 Requ^eteQBEsousAccess . . . 44

(10)

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 De nitiond'unnouveauDSN . . . 126

11.6 De nitiond'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

(11)

Chapitre 1

Presentation generale

1.1 Qu'est ce qu'une base de donnees

IlestassezdiÆciledede nircequ'estunebasededonneessicen'estquedediretrivialement que tout systeme d'information peut ^etre quali e de base de donnees. Il semble plus facile de de nirl'outilprincipaldegestiond'unebasededonnees:lesystemedegestiondebasesdedonnees (SGBD)

1

{ C'est unoutil permettant d'inserer,de modi er et de recherchereÆcacementdes donnees speci quesdansunegrandemassed'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: { Lesystemedegestionde chiers.

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 speci que. On peut alors se demanderquelssontlesobjectifs etavantagesdel'approcheSGBDparrapportaux chiers 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 o reune structurecanonique permettantlarepresentationdesdonneesreellessanssesoucierdel'aspect materiel.

(12)

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 di erente. 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 donco rir lesmeilleursalgorithmesderecherchededonneesal'utilisateur.

Remarque:lesystemedegestionde chiersyrepondparfoispourdesmono- chiers(ISAM, VSAM etc...)maisdanslecasd'intercroisementsentredi erents chiersceladevient beau-couppluscomplexeetparfoism^emecontextuelalarecherchee ectuee.

5. Administration centraliseedesdonnees.

LeSGBDdoito rirauxadministrateursdesdonneesdesoutilsdeveri cationdecoherence desdonnees,derestructurationeventuelledelabase,desauvegardeoudereplication. L'ad-ministration est centralisee et est reservee a un tres petit groupe de personnes pour des

(13)

6. Nonredondancedesdonnees.

Le SGBDdoitpermettred'eviterladuplication d'informationsqui, outrelapertedeplace memoire,demandedesmoyenshumainsimportantspoursaisiretmaintenirajourplusieurs foislesm^emesdonnees.

7. Coherencedesdonnees.

Cette coherenceest obtenue par la veri cation des contraintes d'integrite. Une contrainte d'integriteestune contraintesurlesdonneesdelabase,qui doittoujours^etreveri eepour assurerlacoherencedecettebase.Lessystemesd'informationsontsouventremplisdetelles contraintes,leSGBDdoitpermettreunegestionautomatiquedecescontraintes d'integrite surlesdonnees.Parexemple:

{ Un identi antdoittoujours^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 Di erents 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)

14 CHAPITRE1. PRESENTATIONGENERALE { Lesbasesobjets.

Lesdonneessontrepresenteesentantqu'instancesdeclasseshierarchisees.Chaquechampest unobjet.Decefait,chaquedonneeestactiveetpossedesespropresmethodesd'interrogation etd'a ectation.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 chi res 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.

(15)

Il correspond a ce que l'on retrouvedans la methode Merise avec les modeles de donnees (MCD 2 ,MLD 3 ). { Leniveau interne.

Ilcorrespondalastructuredestockagedesdonnees:typesde chiersutilises,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 presentedemaniereabstraiteletravailae ectuer. 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 e ectuer avec le systeme d'information en di erents modeles conceptuels et physiques.Celuiquinousinteresseparticulierementiciest leMCD.

(16)

16 CHAPITRE1. PRESENTATIONGENERALE LeMCD(modele conceptuelde donnees) estun modeleabstrait delamethode Merise per-mettantderepresenterl'informationd'unemanierecomprehensibleauxdi erentsservicesde l'en-treprise.Ilpermetunedescriptionstatiquedusystemed'informationsal'aided'entiteset d'asso-ciations.

Letravaildeconceptiond'unebasededonneesparl'administrateurcommencejusteaprescelui desanalystesqui ontetablileMCD.

Commenconsparquelquesde nitionspropresauMCD:

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'ilexisteunlienentredi erentes 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

(17)

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".En n,unemesuredu\volumedetravail"eststockeepourchaquepersonnetravaillant dansunservicedonne.

Remarque:ilexisteunenotation\al'americaine"danslaquelleonnenotequelescardinalites maximum.DansleschemaFig1.6lanotationamericaineseraitn:m

un lien hierarchiqueest unlien1:nennotationamericaine. un lien mailleest unlien n:mennotationamericaine.

Identi ant: l'identi antd'une entiteest constitued'uneouplusieursproprietesdel'entite tellesqu'achaquevaleurdel'identi antcorrespondeuneetune seuleoccurrencedel'entite. L'identi antd'uneassociationestconstituedelareuniondesidenti antsdesentitesquiparticipent 

al'association.

(18)

18 CHAPITRE1. PRESENTATIONGENERALE

1.7 Exemple de MCD

Fig.1.7{Exemple de MCD

1.8 Le modele relationnel

Lessystemesdegestiondebasesdedonneesrelationnellesorganisentlesdonneesentables(a lamaniered'untableur).

Ilestsimple,facileacomprendreet deleauncadremathematique(l'algebrerelationnelle). Leconceptmathematique sous-jacentestceluide relationdelatheoriedesensembles,qui se de nitcommeunsous-ensembleduproduitcartesiendeplusieursdomaines.

Un domaine est unensemble ni ou in ni de valeurspossibles. Le domaine des entiers, le domainedesbooleens,ledomainedescouleursdudrapeaufrancaisfbleu, blanc,rougegetc...

Onutilise alorsle produit cartesiend'un ensemble dedomaines pour de nir 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 .

(19)

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'identi erclairement.

A nderendrel'ordredescolonnessansimportancetout enpermettantplusieurscolonnesde m^emedomaine,onassocieunnomachaquecolonne.

personne D1 D2

lefebvre christian martin franck durand franck

Lescolonnesconstituentcequel'onappellelesattributsdelatablerelationnelle.

Remarque: comme pour toute de nition d'ensembles, il existe en fait deux possibilitespour de nir 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.Laformeextensionnellequiconsisteaspeci erunauntousles 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)

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

(21)

Traitementdesentites:

{ chaqueentitedevientune table.

{ chaqueproprieted'uneentitedevientunecolonnedecette table.

{ l'identi ant 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'identi antc^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.Lesidenti ants desentitesauxquellesl'associationestrelieemigrentdanscettetable.lacleprimairedecette nouvelletableestconstitueedelareuniondecesidenti ants.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)

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 lescardinalitesmaximalesserventade nir lenombrede tables et lesreports de cles. Les cardinalitesminimales ne servent qu'a preciser par la suite si les colonnes peuvent prendrelavaleurnulloupas.

(23)

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-Commandes

(24)
(25)

Chapitre 2

Presentation des donnees

2.1 Les formulaires

(26)

26 CHAPITRE2. PRESENTATIONDESDONNEES

Fig.2.3{Structured'unformulaire avecsous-formulaire

Fig.2.4{Formulaireavec sous-formulaire

(27)

Fig.2.5{Structured'unetat sous Access

(28)

28 CHAPITRE2. PRESENTATIONDESDONNEES

Fig.2.7{structured'etat avecregroupement

(29)

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,ladi erenceetleproduit.

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)

30 CHAPITRE3. L'ALGEBRERELATIONNELLE R[S A B C a b c d a f c b d b g a

Ladi erenceentredeuxrelationsRetSdem^emeschemadansl'ordre(R S)estlarelation T dem^emeschemacontenantlestuples appartenantaR etn'appartenantpasaS.

OnnoteraT =(R S)ouminus(R,S)

Fig.3.2 {L'operateur Di erence

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

(31)

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 n

Fig.3.4{L'operateurProjection

 A;C (R ) A C a c d f c d

Larestriction (ouselection)delarelationRparunequali cationQest unerelationR 0

de m^emeschemadontlestuplessontceuxdeRsatisfaisantlaquali cationQ.

Laquali cationQ peut^etreexprimeeal'aidede constantes, comparateursarithmetiques (> ;;<;;=;6=)et operateurslogiques(_;^;:).

OnnoteraT = Q (R )ouT =select Q (R )

R

Q

T

(32)

32 CHAPITRE3. L'ALGEBRERELATIONNELLE  B= 0 b 0(R ) A B C a b c c b d

Lescinqoperationsprecedentes(union,di erence,produit,projection,restriction)formentun ensemblecoherentet minimal. Aucune d'entre-ellesnepeuts'ecrireal'aidedes autres.A partir deces cinqoperationselementaires,d'autresoperations(sans doutepluspratiques) peuvent^etre de nies.

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'intersectionprecedemmentde nie)etl'intersectionentreunensembleextensionnel et unensembleintentionnel(parlarestrictionavecune quali cation). 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 .

(33)

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 Rquiveri enttout lestuplesdeS.Chercherparexempletouslesproduitsquiexistentdansune gammedecouleurs et/ouune gammedeprix.

La  jointurede deux relationsR et S selonune quali cation Qest l'ensemble destuples duproduitcartesienRS satisfaisantlaquali cationQ.

Laquali cationQ 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)

34 CHAPITRE3. L'ALGEBRERELATIONNELLE La jointurepeuts'ecrireal'aidedesoperationsdebase:

R1 Q

S= Q

(RS)

Cetteoperationestessentielledanslessystemesrelationnelsetpermetl'utilisationraisonnable duproduitcartesien.

L'equi-jointureest une jointureavecpourquali cationl'egaliteentredeuxcolonnes. La jointure naturelleest une equi-jointurede R et S surtousles attributs de m^emenom suiviedelaprojectionquipermetdeconserverunseuldecesattributsegauxdem^emenom.

Lajointurenaturelleestlajointurelaplusutiliseedemanierepratique,elles'ecritsimplement R1S etpeutsede niraveclesoperationsdebase:

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.Cetajoutestjusti eparlefaitquedenombreusesrequ^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 n

(35)

R 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 desvaleursdi erentes desattributs de regroupementX

1 ;:::;X

n

. Y doitbien s^ur ^

etrenumerique.Larelation resultante necontientquelesdi erentes 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 identi es 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)

36 CHAPITRE3. L'ALGEBRERELATIONNELLE commandes(cno,fno,pno,qute)

{ Determinerlesnumerosdefournisseursdesdi erents`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 di erentesplusoumoinseÆ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)))) Prenonspourhypothesesimpli catricequechaquecolonnenecessite10caracteresenmemoire.

(37)

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{Di erentsarbrespourla m^emerequ^ete

Interessonsnousalarequ^ete(A).Elle necessite une operationde Jointurequi est engeneral co^uteuse. En e et, la table temporaire la plus volumineuse pour e ectuer cette requ^ete est en-gendreeparleproduit cartesiendesdeuxtablesproduitetcommandesnecessaireaucalculdela jointure.Cettetable temporairepossedeunvolumede400400=160000caracteres.

Si l'one ectue 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)

38 CHAPITRE3. L'ALGEBRERELATIONNELLE nombre de tuples du resultat et peut atteindre mn tuples avec m et n les nombres de tuplesdesdeuxrelationsjointes.

{ A nd'avoirdesrequ^eteseÆcacesentempsilesttoujourspreferabledefairelesrestrictions leplust^otpossiblea ndemanipulerdestableslesplusreduitespossibles

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.

(39)

Chapitre 4

Les contraintes d'integrite

Lagestionautomatiquedescontraintesd'integriteestl'undesoutilslesplusimportantsd'une base de donnees. Elle justi e a elle seule l'usage d'un SGBD. Selon les contraintes, di erentes anomalies que nous allons passer en revue peuvent se declencher des qu'un acces aux donnees (saisie,modi cation,e acement)este ectue.

Desqu'unaccesnonconformeauxcontraintesspeci eesdanslabasesurvient,l'actione ectuee estautomatiquementrejeteepuissoitpresenteeal'utilisateursiletraitementsefaiteninteractif, soitrangeedansunetabled'erreurssiletraitementsefaitenbatch.

4.1 Contraintes de cle

Lepremiertypedecontraintesd'integritetraiteparunSGBDpermet deveri erlapresence 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,siunecleprimaireestde nie,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'integritetraiteparunSGBDpermetensuitedeveri erlestypes 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 veri erautomatiquement la presence de donnees referencees dans des tables di erentes. 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)

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 pastreslogiquedemettreunenoteaunetudiantquine gurepasdanslatabledesetudiants.Si untelcasseproduit,labaseest diteincoherente.

Reprenonsparexempleles3tables fournisseurs,commandes,produitspresenteespage19. Lenumerodeproduit estunecleprimairedelatabledesproduitsetcleetrangeredelatable descommandes.De m^eme, lenumero defournisseurest cleprimairedelatable desfournisseurs etcleetrangeredelatabledescommandes.

(41)

Di erentesanomaliespeuventseproduire:

{ 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 modi cation:sionmodi elenumerodufauteuilrougequel'ontransforme de102a112,lesdeuxenregistrementsdelatabledescommandesleconcernantdoivent^etre modi es.

{ 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, modi cation, e acement), de veri er la coherence de la base de donnees.

Cetteveri cationpeutsefairedetroismanieresdi erentesselonlessouhaitsduconcepteur: 1. Simplesignalementd'uneanomaliedepresence.Danscecasunmessageappara^tetlamise



ajourestrefusee.

2. E acementautomatiquedes tuplesqui referencentunobjetqui n'existe plusdanslatable principale.

3. Mise ajourautomatiquedes tuplesutilisantlacleetrangerequireferenceune cleprimaire venantdechangerdevaleur.

SelonlesSGBDutilises,d'autrestypesdecontraintespeuventencore^etregerees,notamment viades procedureslancees automatiquementen casd'ajout, de modi cation oud'e acement de donnees(triggers).L'importantestde noterquel'avantagequ'apporteunSGBDsur unsysteme classique est queces contraintes sonttraiteesau niveaudes donnees et non pasplaceesdans les traitements.

Remarque:Lasemantiquedeveri cationdescontraintesestdi erentselonquel'onconsidere un environnement transactionnel ou non. Quand une transaction est en cours d'execution, les contraintes doivent-elles^etreveri eesapreschaquemiseajour oubienuniquementala ndela transaction?Nousreparleronsdeceproblemelorsquenousaborderonslestransactions.

(42)
(43)

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 aprojetersontde nisparunP(Print)danslacolonneassociee.

{ Lesconstantessonttapeesdirectementdanslacolonnedel'attributconcerne,precedeesde l'operateurde comparaisonnecessaire(=,,,>,<,6=).Siaucun operateurn'estspeci e,le systemeconsiderequ'ils'agitd'uneegalite(lesymbole=peutdonc^etreomis).

{ Laliaisonentre deuxtablessefaitparl'utilisationdevaleursexemplessoulignees(sortede variablesducalculdespredicat).QBEassociealorsautomatiquementdeuxvaleursexemples identiquesdansdeuxtablesdi erentes.

{ 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

(44)

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.

(45)

Chapitre 6

Le langage SQL

SQLest un langagede de nition et de manipulation debases de donnees relationnelles.Son nomest uneabreviationde\Structured QueryLanguage"(langaged'interrogationstructure).

SQLest unstandardqui aetenormaliseparl'organismeANSI.Ilexistepourchaqueproduit SQLrealisedesdi erencesoudescomplementsparrapportalanorme.

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/86puislegerementmodi een1989 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.

SQLcontientunlangagedede nitiondedonnees,leDDL 1

,permettantdecreer,modi erou supprimerlesde nitionsdestablesdelabaseparl'intermediairedesordresCreate,Drop,etAlter. Ilcontientaussiunlangagedemanipulation dedonnees,leDML

2

,parl'intermediairedesordres Select,Insert,Update,Delete.Ilcontient en n 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 traitetoutela nde lignecommecommentaire.

1.DataDe nitionLanguage 2.DataManipulationLanguage

(46)

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 speci antlesnomsdescolonnesdesirees.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 listerlesdi erentesdesignationsde produits SELECT DISTINCT design FROM produits;

result design fauteuil bureau armoire caisson

(47)

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 di erentes dontlepoidsest superieur a15 SELECT DISTINCT design FROM produits

WHERE poids > 15 ;

Ilestpossibled'exprimerdesquali cationscomplexesal'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.Ilsserventade nirdesensemblesoudesvaleurs approximatives.Ce sont lespredicatsIN,BETWEEN,LIKEqui peuvent toustrois ^etre pre xespar 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 ;

(48)

Trietpresentationdesresultats SQLpermetdetrierlestuplesobtenusparlarequ^eteselon di erentscriteresgr^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 speci eesdans 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 Lesjointuressefontenspeci antlestablessurlesquelleslajointure serafaitedanslalistedestablesutiliseesetenspeci antlaquali cationdejointuredanslaclause WHERE.Onrappellequ'unejointuresansquali cation 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 fautpre xerlenomdecolonneparlenom 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 depre xes deviennent penibles ataper, SQL o re 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

(49)

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 o re aussi la possibilite de de nir des jointures externes. Une jointureinterne nefournit dans latable resultante quelestuples qui satisfontaucritere de jonction.Dansunejointureexternel'unedestablesutiliseesdanslajointureestconsidereecomme directriceetauratoussesenregistrementsdanslatableresultantem^emes'ilsn'ontpasdevaleurs correspondantesavecl'autretabledelarequ^ete.Ene etilsepeutparfoisquel'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 pre xe par OUTERpourmarquerlefaitque c'estune jointureexterne,ouparINNERpourlajointureinterne classique.

IlestanoterquedenombreuxfournisseursdeSGBDprennentacetegardquelquesdistances avec la norme. On trouvera par exemple la syntaxe (+) sur Oracle, la syntaxe *= sur Sybase. ACCESSquantaluiest delealanorme.

(50)

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'e ectuerdescalculs 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 e ectuees 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 di erentes implementationsnerespectentpaslanorme,chacunvoulantapporterdes

(51)

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 o re la possibilite de recuperer des donnees chi rees 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,siunnomdecolonneestspeci edansCOUNT 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 di erents 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)

Figure

Fig. 1.1 { Le mod ele  a 3 couches
Fig. 1.2 { Une base Access
Fig. 1.7 { Exemple de MCD
Fig. 1.8 { Visualisation d'une table Access
+7

Références

Documents relatifs

Le Nil trace un chapelet de villes dans le désert, alors que le Delta montre une organisation beaucoup plus régulière.. On retrouve quelques petites villes le long des côtes

Par exemple, lorsque l’on souhaite passer d’un semis de points à un maillage continu, on va utiliser une partition de Voronoï (aussi parfois appelée tessellation de Dirichlet),

Visivamente, es- sa rimanda all'immagine di uguale dimensione della villa romana del cardinale rappresentata sulla parete opposta, e alla grande veduta della villa di Tivoli,

Compte tenu de ce constat et ayant toujours été intéressés par cette thématique, nous avons décidé d’entreprendre, pendant notre première année comme enseignant

deux expressions reprennent dans le titre même la manière dont les informateurs réunionnais de la communauté tamoule désignent et nomment l’entrée dans le

Nove associações formais e dois grupos informais foram identificados, sendo que não participaram da Chamada Pública para aquisição de gêneros

Durch die Pflege der Erinnerungen in der Gemeinschaft verlieren die Deutschsprachigen den Kontakt mit der Heimat nicht, und dabei wird ihre nationale Identität nicht vergessen: „Bin

Mais cette coopération entre les administrations et la Coordination allait se tendre et après la publication des deux décrets à la fin de l'année 2002 sur