Introductionauxbasesdedonnées
P.PISZYNA– CPGETSI– Mai2019
Sourcedesexemples:https://info-llg.fr/commun-mpsi/pdf/12.bdd.pdf
Sommaire
• Lesbasesdedonnées:pourquoifaire?• Lestermesàconnaître• Lemodèlerelationnel• Lamodélisation• Lesoutilslogiciels• L’accèsauxdonnées
Lesbasesdedonnées:pourquoifaire?
Exempledisponibleenligne:http://www.semwebtech.org/sqlfrontend/
Basededonnées« Mondial »contenantdesdonnéesgéopolitiquessurtouslespaysdumonde.
Exemplederequête:Afficherlalistedespaysdontlapopulationestsupérieureà60Md’habitants
Lestermesàconnaître
L’architecturetrois-tiers:
Lestermesàconnaître
§ unSGDBestcomposédebasesdedonnées§ Unebasededonnéesestcomposéedetables§ Chaquetableestcomposéedechamps
SGBD
BD
tables
BD BD
Lestermesàconnaître
• ExempleavecunebasededonnéesappeléeMondialcontenant33tables :
Lestermesàconnaître
• Exempleaveclatableappeléecountry:– Name,Code,Capital,etc.sontdeschamps
Lestermesàconnaître
Lestermesàconnaître
• Exempleaveclatableappeléecountry:– Chaqueligneestunenregistrement
Lestermesàconnaître
• Exempleaveclatableappeléecountry:Onvoitquelechamp codeestunecléprimaire:Ellepermetd’identifierdefaçonunique unenregistrement– Leschamps sonttypés etdelongueurlimitée
Lestermesàconnaître
Lemodèlerelationnel• Descriptiondelarelationentrelestablescountry etprovince :
– Aun payscorrespondentuneouplusieursprovinces
– Aune provincecorrespondunseul pays
– Cesontlescardinalités– Noterlechampcountry_Code– C’estunecléétrangère
Lamodélisation
• Exercice:– Proposerunmodèleconceptuelreprésentantunlycéequicontient:• Dessections(SN1,SN2…)• Desétudiants(GérardMANVUSSA,AnnieVERSAIRE…)• Desenseignants(AlainTERIEUR,JeanTALUS…)• Descours(Info,Maths,Anglais…)• Dessalles(E13,W12,X07…)
• Correction:– DémoavecMySQLWorkbench
Lesoutilslogiciels§ MODELISATION:MySQLWorkbench…
§ SGBD:§ ORACLE:grossystèmes(entreprises,administrations)
§ ACCESS:PCsousWindows(MSOffice)
§ MySQL:PCsousWindows,MacOS,ouLinux(gratuit)
etencore…SQL-Server,PostGreSQL,Interbase,sybase,DB2
L’accèsauxdonnées• LelangageSQL– Structuredesrequêtes:
SELECT champ1,champ2 //ProjectionFROM table1WHERE champ1=« … » //RestrictionORDER BY champ2ASC ; //Tri
• Exercice :Donnerlarequêtepermettantdeconnaîtrelalistedansl’ordrealphabétiquedespaysdontlapopulationestsupérieureà60000000d’habitants
• Correction :Démoaveclabase« Mondial »
L’accèsauxdonnées• LelangageSQL– Structuredesrequêtes- Jointure :
• Consisteàutiliserplusieurstablespourfaireunerequêtecroisée• Exemple :lalistedespaysappartenantaucontinent« Europe »
L’accèsauxdonnées
• LelangageSQL– Structuredesrequêtes- Jointure :
SELECT table1.champ1 //ProjectionFROM table1JOIN table2 //JointureONtable1.cléprimaire=table2.cléétrangèreWHERE table2.champ2=« … » //Restriction
• Exercice :Donnerlarequêtepermettantdeconnaîtrelalistedespaysappartenantaucontinent« Europe »
• Correction :Démoaveclabase« Mondial »
L’accèsauxdonnées
• LelangageSQL– Quelquesrequêtes:C:Create ->INSERTR:Read ->SELECTU:Update ->UPDATED:Delete ->DELETE
Fonctionsd’agrégation
Onpeutregrouperlesrésultatsd’unerequêtepoureffectueruneopérationsurlesgroupesobtenus:
SELECT e.continent ,COUNT(*)FROMcountryc//FonctionstatistiqueJOIN encompasses eON c.code =e.country //JointureGROUPBYe.continent //Agrégation
Fonctionsd’agrégation
Fonctionsd’agrégation
• Lemot-cléHAVINGpermetdefiltrerlesrésultatsselonunecondition:
SELECTe.continent ,SUM(c.population) //FonctionstatistiqueFROMcountrycJOINencompasses eONc.code =e.countryGROUPBYe.continent //AgrégationHAVINGSUM(c.population)>1000000000//Condition
Sous-requêtes
• OnpeutimbriquerunerequêteSELECT (encadréepardesparenthèses)dansunfiltreWHERE ouHAVING :
SELECTname FROMcountryWHEREpopulation/area>(SELECTAVG(population/area)FROMcountry)
Algèbrerelationnelle
• Formulationthéoriquedesrequêtes• Indépendantedulangage(abstraite)• Baséesurlathéoriedesensemble• Proposeunensembled’opérationsformelles• Comparableàl’algorithmiqueenprogrammation
• OnparleradanscettepartiederelationsnotéesRn quiéquivalentàdestables
Algèbrerelationnelle
• Opérationsensemblistes- l’union:• SELECT*FROMt1UNIONSELECT*FROMt2
⚠ Lestablesdoiventavoirlemêmeschémarelationnel
Algèbrerelationnelle
• Opérationsensemblistes- l’intersection:• SELECT*FROMt1INTERSECTSELECT*FROMt2
⚠ Lestablesdoiventavoirlemêmeschémarelationnel
Algèbrerelationnelle
• Opérationsensemblistes– ladifférence:• SELECT*FROMt1EXCEPTSELECT*FROMt2
⚠ Lestablesdoiventavoirlemêmeschémarelationnel
Algèbrerelationnelle
• Opérationsspécifiques– laprojection:• SELECTDISTINCTA,BFROMt
Algèbrerelationnelle
• Opérationsspécifiques– lasélection:• SELECT* FROMtWHERE E
• Eestuneexpressionlogique
Algèbrerelationnelle
• Opérationsspécifiques– lerenommage:• ALTERTABLEtableRENAMECOLUMNA TOD
• PaspossibleenSQLite
Algèbrerelationnelle
• Opérationsspécifiques– lajointure:• SELECT*FROMtable1JOINtable2ONE
• Eestuneexpressionlogique
Algèbrerelationnelle
• Opérationsspécifiques– leproduitcartésien:• SELECT*FROMtable1,table2
Algèbrerelationnelle
• Opérationsspécifiques– ladivisioncartésienne:• Pasd’équivalentenlangageSQL