cours d’informatique “bases de données” que serait le monde … · 2018. 3. 22. · partie 2...

30
Cours d’Informatique “Bases de données” 1° année Antoine Cornuéjols !"#$%%&&&'()*+#(*,-./0!'1*%21*3,41+%5/56*/-%0+*42/7+8-% (4.+,4/'0+*42/7+8-9()*+#(*,-./0!'1* !"#$%%&&&'()*+#(*,-./0!'1*%21*3,41+%5/56*/-%0+*42/7+8-%:/(0!,4)%;<=>%:?%?+2*-3@;3ABCD'#E1 Informatique - Bases de données ! A. Cornuéjols 2015 /119 1. L’informatique Que serait le monde sans l’informatique ? 2 Informatique - Bases de données ! A. Cornuéjols 2015 /119 Rosetta et Philae !"#$%&'"# ()*+#,-+'"# E/- 1(6*,0(G+4- !+.$/. E/ 8( .*(7/0.+,*/ !"00/#,$+'"# 1.+#,2$+'"# E/- /C#H*,/40/- -+2- 0+4.*(,4./- 3)+,4%0%#4 E/- E+44H/- 3 Informatique - Bases de données ! A. Cornuéjols 2015 /119 1. L’informatique Transports Avions Voitures (des ordinateurs sur roues) Communications Réseaux (communications par paquets) Satellites Modes de pensée Calculs complexes / Simulations Connaissances toujours à portée de clics Modification de la mémoire et de la cognition 4

Upload: others

Post on 03-Jan-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Cours d’Informatique

“Bases de données”

1° année

Antoine Cornuéjols!"#$%%&&&'()*+#(*,-./0!'1*%21*3,41+%5/56*/-%0+*42/7+8-%

(4.+,4/'0+*42/7+8-9()*+#(*,-./0!'1*

!"#$%%&&&'()*+#(*,-./0!'1*%21*3,41+%5/56*/-%0+*42/7+8-%:/(0!,4)%;<=>%:?%?+2*-3@;3ABCD'#E1Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. L’informatique

Que serait le monde sans l’informatique ?

2

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

Rosetta et Philae

!"#$%&'"#

()*+#,-+'"#FE/-F1(6*,0(G+4-F

!+.$/.FE/F8(F.*(7/0.+,*/

!"00/#,$+'"#

1.+#,2$+'"#FE/-F/C#H*,/40/-F-+2-F0+4.*(,4./-

3)+,4%0%#4FE/-FE+44H/-

3 Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. L’informatique

Transports

Avions

Voitures (des ordinateurs sur roues)

Communications

Réseaux (communications par paquets)

Satellites

Modes de pensée

Calculs complexes / Simulations

Connaissances toujours à portée de clics

Modification de la mémoire et de la cognition

4

Page 2: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Changement de paradigme

Carte analogique vs. carte numérique sur tablette graphique

5 Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Changement de paradigme

La photo numérique

6

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Changement de paradigme

La photo numérique

7

Support numérique

Copies multiples

Affichage sur plusieurs dispositifs

Effets spéciaux : calculs

Les appareils à venir vont être très peu chers et très bons ...

... grâce à l’informatique

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Changement de paradigme

La photo numérique

8

Page 3: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

@'FI2J/-.30/FK2/F8J,41+*5(GK2/FL

M4F#"/5%+/6)%*+)7F-2*F8/F5+4E/

9

Partie 1 - Place de l’informatique Partie 5 - Manipulation : SQL Partie 2 - Les bases de données Partie 6 - PHP / MySQLPartie 3 - Bases sur les BDPartie 4 - Conception des BD

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

Quatre approches pour appréhender le monde

@'FFFN5#,*,K2/F$FE/-0*,#G+4F/.F08(--/5/4.

O'FFF:!H+*,K2/F$FP+EH8,-(G+4QF0+4-.*20G+4FE/F.!H+*,/-

8'FFF9,0/.+'"#F$F-R-.S5/-F0+5#8/C/-F/.%+2F4+4F*/#*+E20G68/-

:;FFF<"/,..%67%67"##=%-FTUFA,)FE(.(FVW

X4+*5/-F5(--/-FE/FE+44H/-F425H*,-H/-Y(*)/5/4.FE,-#+4,68/-Z+2*0/-F/.F1+*5(.-F.*S-FE,[H*/4.-

10

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

L’informatique et les sciences du vivant

?/F4J/-.F#(-F-/28/5/4.FK2/F$

Y(F*=#"0,>/%F/.F.+2./-F8/-F-0,/40/-F/4FUF+5,K2/-FVF4J/C,-./*(,/4.F#(-

<H4+5/F\FE,](,4/-FE/F5,88,/*-FE/F#(,*/-FE/F6(-/

;8,)4/5/4.-

=/0+4-.*20G+4

^4./*#*H.(G+4

Y/F)=$?+/@%0%#46$.,0+'>/%F4J(2*(,.F#/2.3_.*/F#(-F/40+*/FH.HF

EH0+2`/*.

5/-2*/-F#8(4H.(,*/-

-.+0a()/F/.F,4./**+)(G+4-FE/F6(-/-FE/FE+44H/-FE,`/*-/-F/.FE,-#/*-H/-

/C.*(0G+4-FE/F./4E(40/-F/.FE/F0+**H8(G+4-

11 Informatique - Bases de données • ! A. Cornuéjols 2015 /119

Le calcul et l’information comme nouveaux paradigmes

UF!"#$"#%&$$'()#*')#+,-./"#0(0'$.1#+"#%"2232"1#+"#4))31#&/5'$"1#

($+(0(+3#".#*"3.6-./"#7-7"#")*8%"1#+&$.#&$#$"#*3())"#*')#+(/"#

93,(2#!"#$%&#+"#2,($:&/7'4&$1#93,(2#"'()"&#+"#2,($:&/7'4&$1#93,(2#

*+&"#93,(2#'&,#)"#+"#2,($:&/7'4&$;FV

Michel Serres!!!! !!!

12

Page 4: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

1. L’informatique comme outil de pensée en biologie

13

• La génétique comme un langage : codage / décodage

• ADN --> ARN --> Protéines

• Protéines <--> Protéines

• Le calcul sur graphe permet de modéliser la :

• diffusion d’un virus

• la compétition entre espèces

• La dynamique évolutive comme théorie des jeux répétés sur réseaux

• Les systèmes multi-agents permettent de modéliser les :

• insectes sociaux

• bancs de poissons

• La récursion permet de modéliser la croissance des plantes

• ...

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. L’informatique comme science

Par rapport à d’autres sciences ?

14

M4/F-$,%#$%67%6.A,00+4=),%.

B+,-"##%0%#4

K2,FE+,.F_.*/FC")0+.,-=

/.F)=+.,-=

D/0=),-+'"#FE2F5+4E/

Au point que certains physiciens pensent que l’univers n’est en fait que la manifestation d’un gigantesque ordinateur.

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. L’informatique

1- Science du raisonnement et de son automatisation

Machine

Algorithmes

15

2- Science du codage de l’information

Numérisation

Indépendance du support matériel

Communication

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. L’informatique

1- H+$?,#%-Architecture

Système d’exploitation ; environnement de programmation

16

2 - G#C")0+'"#Codage

Organisation : fichiers, BD, ...

3 - E.*"),4?0%Expressions ; variables ; fonctions ; ...

Structure

4 - F+#*+*%Traduction sans ambiguïté entre hommes et machines

Page 5: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

1. Qu’est-ce que l’informatique

L’informatique concerne les abstractions ...

17

• Choisir les bonnes abstractions

• Utiliser plusieurs niveaux d’abstraction simultanément

• Définir les relations entre ces niveaux d’abstraction

Comme les maths

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

1. Qu’est-ce que l’informatique

L’informatique concerne les abstractions ...

18

... en faisant attention à :

• L’efficacité

• Rapidité

• Taille mémoire

• Coût calcul

• Fonctionnement correct• Est-ce que cela fait ce que l’on veut ?

• Est-ce que le programme donne une réponse ?

• -ilité• Simplicité et élégance

• Utilisabilité

• Modifiabilité

• Maintenabilité

• Coût

• ...

Comme les sciences de l’ingénieur

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Questions qui occupent les informaticiens

Comment organiser un calcul

19

2∑

i,j=1

xi yj ?

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Questions qui occupent les informaticiens

Comment organiser un calcul

20

2∑

i,j=1

xi yj = x1 y1 + x1 y2 + x2 y1 + x2 y2

2∑

i,j=1

xi yj ?

4 produits + 3 sommes

Page 6: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Questions qui occupent les informaticiens

Comment organiser un calcul

21

2∑

i,j=1

xi yj = x1 y1 + x1 y2 + x2 y1 + x2 y2

2∑

i,j=1

xi yj ?

2∑

i,j=1

xi yj = (x1 + x2) (y1 + y2)

4 produits + 3 sommes

2 sommes + 1 produit

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Questions qui occupent les informaticiens

Comment organiser un calcul : le tri

22

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Questions qui occupent les informaticiens

Tris « naïfs »

Tri par insertion

Tri par sélection

Complexité en O(n2)

n = 106 => O(1012) opérations

Tris réfléchis

Tri par fusion

Tri rapide (quicksort)

Complexité en O(n log(n))

n = 106 => O(2 x 106) opérations !!

23

Sélection : chercher l’élément le + petit et l’échanger avec le 1er élément du tableau, puis répéter sur le tableau - le 1er élément

Insertion : comme on range des cartes

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Questions qui occupent les informaticiens

Tris « naïfs »

Tri par insertion

Tri par sélection

Complexité en O(n2)

n = 106 => O(1012) opérations

Tris réfléchis

Tri par fusion

Tri rapide (quicksort)

Complexité en O(n log(n))

n = 106 => O(20 x 106) opérations !!

24

Sélection : chercher l’élément le + petit et l’échanger avec le 1er léméent du tableau, puis répéter sur le tableau - le 1er élément

Insertion : comme on range des cartes

Quicksort : on prend un pivot et on range tous les éléments < avant et >= après et on réitère sur les sous-tableaux

Page 7: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2015 /107

1. Questions qui occupent les informaticiens

Comment organiser un calcul : le tri par « fusion »

25 Informatique - Bases de données • ! A. Cornuéjols 2015 /107

1. Questions qui occupent les informaticiens

Comment organiser un calcul : le tri par « fusion »

26

12 17 10 23 33 77 83 11

12 17 10 23

12 17 10 23

12 17 10 2310 12 17 23

11 33 77 8310 11 12 17 23 33 77 83

Informatique - Bases de données • ! A. Cornuéjols 2013 /107

1. Questions qui occupent les informaticiens

Comment organiser un calcul : le tri

27 Informatique - Bases de données • ! A. Cornuéjols 2013 /107

1. Questions qui occupent les informaticiens

Comment organiser un calcul : le tri

28

Page 8: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2013 /107

1. Questions qui occupent les informaticiens

Comment organiser un calcul : le tri

29 Informatique - Bases de données • ! A. Cornuéjols 2011 /148

1. Questions qui occupent les informaticiens

Comment organiser un calcul : le tri

30

Informatique - Bases de données • ! A. Cornuéjols 2011 /148

1. Questions qui occupent les informaticiens

Comment organiser un calcul : le tri

31 Informatique - Bases de données • ! A. Cornuéjols 2013 /107

1. Questions qui occupent les informaticiens

Comment organiser un calcul : le tri

32

Page 9: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2013 /107

1. Questions qui occupent les informaticiens

Comment organiser un calcul : le tri

33 Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Questions qui occupent les informaticiens

Comment organiser un calcul : appariemment de graphe

34

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Questions qui occupent les informaticiens

Comment organiser un calcul : intelligence artificielle

35 Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Questions qui occupent les informaticiens

Comment organiser un calcul : L’ennemi absolu

36

Bug ! panne

Page 10: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Questions qui occupent les informaticiens

Plantage des ordinateurs, distributeurs bancaires, systèmes de réservation,

sites Web, etc.

Blocages de téléphones ou d’appareils photos

Crash du téléphone interurbain américain

une ligne de code mal placée sur un million

Explosion d’Ariane 501 (1996) et perte de satellites

Débordement arithmétique dans un calcul inutile

Bug subtil dans la division flottante du Pentium

Coût : 470 millions de dollars pour Intel

37

L’ennemi absolu : le bug

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. Questions qui occupent les informaticiens

Comment coder / représenter de l’information

38

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. L’informatique : mémoire et stockage

Ordres de grandeurs

39

3%I4%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF$FFb@ccF#()/-FFFFFFFFFFd3eFFF@ccF'F@cfF+0./.-FFT@ccFg+W

H/-,>/%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF$FF?+40/*.+Fh,`(8E,FFFd3eFFF@cF'F@ciF+0./.-FFT@cFP+W

J,7="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF$FFFFFKK-F@cjF+0./.-FFT<+W

3"/-6.%-6.,5)%-F7(5(,-FH0*,.-FFFFF$FFOccF'F@c@OFFTOccF:+W

NC#H*,/40/-FFK!FFFFFFFFFFFFFFFFFFFFFFFF$FFFFbFOccF:+F%F54

3)+2$6+##/%.F-2*F^4./*4/.FFFFFFFF$FFbF@cO@F+0./.-FFT@Fk+W

18

19

20

21

22

23

24

Mesurer les zettaoctets à la cuillère à café

stockage « persistant6 » contrairement aux mémoires vives, ou RAM (Random AccessMemory), faites de composants électroniques.Nous allons fournir quelques chiffres pour fixer les idées. L’ordinateur sur lequel j’écris cetexte a une mémoire vive de quatre gigas et à la place d’un disque, pour stocker sesdonnées persistantes, il utilise une centaine de gigas de mémoire flash, une nouvelletechnologie plus rapide que le disque dur et aussi plus chère. Cela nous donne l’occasionde mentionner que la technologie ne cesse de se complexifier. Les chiffres bougent trèsvite pour ce qui est des matériels informatiques ; les prix baissent, les vitesses d’accès oude transfert croissent ; les volumes augmentent7. Dans quelques années, un lecteur de cetexte sourira des quatre gigas de mémoire.Il ne faut pas non plus oublier que les données que nous utilisons se trouvent de moins enmoins stockées localement sur notre ordinateur mais, de plus en plus, sur des machinesconnectées quelque part sur le réseau. Par exemple, le document qui me sert de brouillonpour écrire ce texte est sur Google Docs, stocké sur le disque d’une machine inconnue,dont la localisation m’est elle aussi inconnue. De ces données, nous dirons qu’elles sont« en nuages » (on the cloud). Fonctionnellement, il nous faudra donc distinguer l’accès àdes données sur un réseau local très rapide, qui prendra quelques millisecondes, et l’accèsvia Internet à des données peut-être à l’autre bout du monde, qui pourra prendre uneseconde ou plus.Ces aspects techniques permettent de comprendre ce qu’il est possible de réaliser,comment et à quel prix. Nous les avons volontairement quelque peu simplifiés pourfaciliter leur compréhension. Et quelques mots à l’attention de ceux qui aiment se réfugierderrière « je ne comprends rien à l’informatique ». La vision de l’informatique véhiculéepar les médias souffre d’une trop grande fascination pour le matériel et laprogrammation. À mon avis, il importe peu de comprendre les détails du fonctionnementtrès complexe d’un processeur ou d’une carte graphique. Il est par contre essentiel demaîtriser les bases de l’algorithmique et de sa mécanique du raisonnement. Il n’est pasnon plus nécessaire de savoir programmer (même si une expérience de programmationavec un langage comme CAML – Categorical Abstract Machine Language – peut faciliterla compréhension de l’algorithmique). Pour des questions de performance, il peut êtreutile de comprendre où l’information que nous utilisons est stockée, en mémoire, surdisque ou sur le réseau. Surtout, il est indispensable de comprendre le sens de cetteinformation, comment elle est représentée, comment elle est organisée.Voici quelques chiffres à retenir :

Support de stockage Temps d’accès TailleMémoire vive microsecondes gigaoctets (109)Disque dur millisecondes quelques centaines de gigaoctets au téraRéseau local millisecondes ou plus téraoctets (1012)La Toile décisecondes voire secondes Virtuellement !

En alignant les bits, nous pouvons représenter des informations. Nous pouvons stocker deplus en plus d’informations pour les retrouver à la demande, telle une sauvegarde quasiillimitée de notre mémoire personnelle.Nous pouvons aller au-delà des dimensions déjà mentionnées en alignant les bits :

kilo méga giga téra péta exa zetta yotta103 106 109 1012 1015 1018 1021 1024

Discutons brièvement ces unités de mesures. Par exemple, cette leçon devrait peserquelques 100 000 octets, c’est-à-dire 100 kilooctets. Le kilooctet est une mesure « cool »car il est presque convenable de confondre 103 = 1000 et 210 = 1024, ce qui permet depasser facilement du système décimal, le plus commun, au système binaire, cher auxinformaticiens. Une dizaine de Nocturnes de Chopin sur mon téléphone prennent75 mégaoctets. La vidéo de la remise de diplôme de ma fille et ses quelques gigaoctetsnous conduisent aux frontières du gigantisme. Selon les chiffres de Michael Brodie8, tousles livres jamais écrits ne demanderaient que 200 téraoctets en texte brut et la quantité dedonnées produites par le collisionneur de particules du CERN en une minute est del’ordre d’une centaine de pétaoctets. Pour représenter toutes les phrases jamaisprononcées, il faudrait quelques exaoctets. Enfin, le zettaoctet, c’est l’ordre de grandeurdu trafic annuel sur Internet de nos jours, et c’est aussi celui du stockage disponible (en

Sciences des données : de la logique du premier ordre à la Toil... http://books.openedition.org/cdf/529?lang=fr

4 sur 26 1/12/14 16:57

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

Informatique : les grandes tendances

Évolution de la puissance de calcul

Loi de Moore (1965) : ~ doublement de la puissance des ordinateurs tous les 2 ans

Évolution du coût de stockage

Divisé par 100 000 en 30 ans (~ divisé par 2 tous les 2 ans)

Évolution de la capacité des réseaux

Loi de Butters : la capacité de transmission des fibres double tous les 9 mois

Évolution de la numérisation des données

2% en 1982 ... 98% en 2014

Doublement du volume de « données » produites tous les 3 ans ?

Évolution du coût de décryptage du génome

Divisé par 2 tous les 18 mois

« Mêmes lois » pour l’automobile

30 km/h en 1971 --> ~ 500 000 km/h en 2015

10 km/litre à 1 "/litre --> ~1 million de km/litre au coût de 4 centimes en 2015

40

Page 11: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

1. L’informatique

41

• Représenter le monde

• Calculer / inférer / raisonner

1- Savoir représenter

• Structures de données

• Représentation des connaissances

2- Tous les calculs ne sont pas possibles

• Notion de complexité

• Distribution / Parallélisation / « Cloud computing »

3- Il n’est pas facile de programmer de manière fiable

• Méthodes de production de logiciel

• Vérification / Certification

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

1. L’informatique et VOUS

42

En quoi cela vous concerne ?

1- Acteur direct / en interaction directe avec l’informatique

• Programmation de simulation

• Utilisation de BD, de SIG

• Traitement d’images, télédétection

• Bio-informatique

2- En interaction avec des acteurs directs

• Que puis-je attendre de l’outil informatique ?

• Qu’est-ce qui est possible / difficile / impossible

• Comment interagir / dialoguer / orienter

E.g. AA :- Croire que c’est magique- Ne pas demander assez

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. L’informatique ... et vous

Outils de travailY(FL/)%+/'>/%F

Y/F4)+5+,.6$"..+L")+'CF/.F^4./*4/.

Programmation - Bases de DonnéesI2J/-.30/FK2,F/-.F#+--,68/FL

G#4%)+$'"#F(`/0FE/-F,41+*5(G0,/4-

B=+.,-+'"#-FE/F#/G.-F-R-.S5/-

Simulation?+5#*H!/4-,+4F%F#*HE,0G+4FE/F-M-4N0%-6$"0&.%I%-

=H(8,.HF`,*.2/88/F%F(2)5/4.H/

Fouille de donnéesB=*/.+),4=-QF./4E(40/-QF&)=7,$'"#-QF'''

43 Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. L’informatique ... et vous ?

44

Outils de travail

La bureautique

Le travail collaboratif et Internet

SIG (Systèmes d’Information Géographiques)

2A (ATHENS) « Publier sur Internet » 1A/2A « SIG »

Programmation - Bases de Données 1A TC « SI » 2A « C et télédétection » 2A « Java »

Simulation

Compréhension / prédiction de systèmes complexes

Réalité virtuelle / augmentée

2A (ATHENS) « Informatique et Sciences de la Vie »

Fouille de données

Régularités, tendances, prédictions, ...

1A « Module Optionnel »

3A DA « IODAA »

Page 12: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

>*)(4,-(.,+4FE2F0+2*-

45 Informatique - Bases de données • ! A. Cornuéjols 2014 /119

1. Partie Organisation de l’information : les Bases de Données

• Un amphi

• 4 TD/TP

• 1 TP / QCM (15 décembre 2015) (1 / 5)

2. Partie Algorithmique - Programmation (PHP)

• Un amphi

• 8 TD/TP

• 1 TP / QCM (2 février 2016) (1 / 5)

3. Projet

• 6 TP

• Soutenance (21 mars 2016) (3 / 5)

46

Organisation du cours

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Y/F#*+7/.FllL

47 Informatique - Bases de données • ! A. Cornuéjols 2014 /11948

Ce cours et vous : le projet

• mF#(*G*FEJ24F$+?,%)67%-6$?+)*%-6O6

• H"7=.,-%)6.%6P0"#7%Q6FTN4G.H-F%F=/8(G+4-W

• 3)+7/,)%6/4FE+44H/-F/.F*/8(G+4-F$64+L.%-

• =HnH0!,*F(2CF"&=)+'"#-6&"--,L.%-F-2*F8(F6(-/FE/FE+44H/-

• 1)"*)+00%)624/F,4./*1(0/F&/6F(`/0F8(F6(-/FE/FE+44H/-

• ;F.*(`/*-FHM9RFFT24FZ<ABW

• S=)%)F8/-F/'.,-+4%/)-6oF8/-F)%--"/)$%-

• ()*+#,-%)68/-6)%>/T4%-6/.60"7,2$+'"#-FE/F8(FAB

PHP : MySQL

Page 13: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

O'FY/-FA(-/-FE/FB+44H/-

49

Partie 1 - Place de l’informatique Partie 5 - Manipulation : SQL Partie 2 - Les bases de données Partie 6 - PHP / MySQLPartie 3 - Bases sur les BDPartie 4 - Conception des BD

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

1. L’informatique : mémoire et stockage

<=#"'#-.&'/01)23#'+(4#2#".#%&77"$.#2'#./&30"/#>

?3"#$#2!&'.&'#>

50

Z.+0a()/QFH0!(4)/QF(4(8R-/F$F-$,%#$%67%-67"##=%-

Informatique - Bases de données • ! A. Cornuéjols 2015 /119

La toile ?

M4F,55/4-/F-M-4N0%67%62$?,%)-

:*S-F*2E,5/4.(,*/F/4F./*5/-FE/F1+40G+44(8,.H-FE/F)/-G+4FE/FE+44H/-

UFF9SVWFFT@A).87"#+"#B")4&$#+"#C')")#+"#D&$$E")W

51 Informatique - Bases de données • ! A. Cornuéjols 2014 /119

2. Quelles données ?

Les données sont omniprésentes autour de nous ... dans l’entreprise

52

• Les clients

• Les produits

• Les commandes

• Les factures

• ...

Page 14: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

2. Quelles données ?

Les données sont omniprésentes autour de nous ...

53 Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Comment les ranger dans un ordinateur ?

2. Comment les stocker ?

54

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

En regardant d'un peu plus près ...

données du client

donnéesde la commande

données d'un détail

2. Comment structurer les données ?

55

3 catégories de données

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

schéma

données

colonneobligatoire

colonnefacultative

ligne

56

3. Notions de base

Tables, lignes et colonnes

Page 15: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Reportons ces données dans des tableaux :

données du clientNCLI ADRESSE NOM

B512 14,r. de l'EtéGILLET

LOCALITE

Toulouse

données de la commandeNCOM DATECOM

30188 2/1/2009

TOTAL-COMMANDE

69720

données des détailsLIBELLE PRIX

CHEV. SAPIN 400x6x4 220

POINTE ACIER 45 (2K) 105

POINTE ACIER 60 (1K) 095

PL. HETRE 200x20x2 230

QCOM

180

22

70

92

NPRO

CS464

PA45

PA60

PH222

SOUS-TOTAL

39600

2310

6650

21160

Observations :

1. les données TOTAL-COMMANDE et SOUS-TOTAL sont calculées : inutile de

les conserver, on pourra les recalculer en cas de besoin

2. il est impossible de reconstituer le bon de commande d'origine : quel est le

client de la commande, quelle est la commande d'un détail ?

2. Comment structurer les données ?

57 Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Données sans redondances et avec références :

données du clientNCLI ADRESSE NOM LOCALITE

B512 14,r. de l'EtéGILLET Toulouse

données de la commandeNCOM NCLI DATECOM

30188 B512 2/1/2009

données des détailsLIBELLE PRIX

CHEV. SAPIN 400x6x4 220

POINTE ACIER 45 (2K) 105

POINTE ACIER 60 (1K) 095

PL. HETRE 200x20x2 230

NPRO

CS464

PA45

PA60

PH222

NCOM

30188

30188

30188

30188

QCOM

180

22

70

92

2. Comment structurer les données ?

Observation

si plusieurs détails mentionnent le même produit, ses caractéristiques

sont répétées autant de fois : on isole les données des produits dans un

tableau spécifique

58

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Distribution optimale des données des bons de commande

données du clientNCLI ADRESSE NOM

B512 14,r. de l'EtéGILLET

LOCALITE

Toulouse

données des produitsNPRO LIBELLE PRIX

CS464 CHEV. SAPIN 400x6x4 220

PA45 POINTE ACIER 45 (2K) 105

PA60 POINTE ACIER 60 (1K) 95

PH222 PL. HETRE 200x20x2 230

données de la commandeNCOM NCLI

30188 B512

DATECOM

2/1/2009

données des détailsNPRO

CS464

PA45

PA60

PH222

NCOM

30188

30188

30188

30188

QCOM

180

22

70

92

2. Comment structurer les données ?

59 Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Ajoutons d'autres données : notre première base de données

2. Comment structurer les données ?

60

Page 16: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Quelques leçons partielles

2. Comment structurer les données ?

61

• On a besoin de systèmes spécifiques pour conserver et manipuler les

données

• Les données sont représentées dans des tables

• Les lignes sont des entités

• Les colonnes sont des propriétés

• Le découpage en tables demande une analyse et une optimisation

• L’analyse doit aller au-delà des besoins immédiats (abstraction)

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Que veut-on faire de ces données ?

2. Utiliser une base de données

Vérifier une commande lors de son enregistrement : le client est-il connu ? son adresse a-t-elle changé ? les produits commandés sont-ils répertoriés ?

Produire les factures

Calculer le chiffre d'affaire mensuel

Etudier la répartition géographique des ventes

Préparer le réapprovisionnement des produits en rupture de stock

Et mille autres applications ...

62

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Avant tout, les conserver aussi longtemps que nécessaire !

Les interroger : quel est le numéro, le nom et l'adresse des clients de Toulouse ?

select NCLI, NOM, ADRESSE from CLIENT where LOCALITE = 'Toulouse';

facile

ou encore : quelles sont les commandes des clients de Toulouse ?

select NCOM from COMMANDE where NCLI in (select NCLI from CLIENT where LOCALITE = 'Toulouse');

un peu plus

difficile

requêtes rédigées dans le langage SQL

Que peut-on faire de ces données ?

2. Utiliser une base de données

63 Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Que peut-on faire de ces données ?

2. Utiliser une base de données

Un dernier exemple :

calculer la répartition du chiffre d'affaire par localité et par produit

select C.LOCALITE, P.NPRO, sum(D.QCOM*P.PRIX) from CLIENT C, COMMANDE M, DETAIL D, PRODUIT P where C.NCLI = M.NCLI and M.NCOM = D.NCOM and D.NPRO = P.NPRO group by C.LOCALITE, P.NPRO;

inutile d'essayer

de comprendre

pour l'instant !

64

Cette question complexe est résolue en une seule instruction SQL de 5 lignes !

Page 17: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Les systèmes de gestion de bases de données ou SGBD.

65

2. Les SGBD

• Organisation des données : le SGBD organise les données en tables permanentes

stockées sur disque; il crée les mécanismes garantissant un accès rapide aux données; il

informe les utilisateurs sur ces structures.

• Gestion des données : le SGBD garantit l'évolution cohérente des données; il vérifie

que les contraintes (unicité, référence entre tables, etc.) sont respectées.

• Accès aux données : le SGBD permet l'accès aux données à la fois par l'utilisateur

occasionnel et par les programmes de traitement de données.

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

3- Bases ... sur les Bases de Données

66

Partie 1 - Place de l’informatique Partie 4 - Manipulation : SQL Partie 2 - Les bases de données Partie 5 - PHP / MySQLPartie 3 - Bases sur les BDPartie 4 - Conception des BD

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Base de données = ensemble de tables

67

3. Notions de base

• Chaque table a un nom unique (ex : Film)

• Chaque table contient les données relatives à des entités de même nature.

• Chaque ligne (enregistrement) d’une table décrit les données relatives à une entité.

• Chaque colonne d’une table décrit une propriété des entités (ex : Prix).

• Les lignes d’une table sont distinctes.

• Les noms de table et de colonnes constituent le schéma de la base.

• Les lignes (entités) constituent le contenu de la base.

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

schéma

données

colonneobligatoire

colonnefacultative

ligne

68

3. Notions de base

Tables, lignes et colonnes

Page 18: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Le schéma d'une table définit sa structure. Il spécifie notamment :

1. le nom de la table,

2. pour chaque colonne, son nom, son type, son caractère obligatoire,

3. l'identifiant primaire (liste de colonnes)

4. les identifiants secondaires éventuels (liste de colonnes)

5. les clés étrangères éventuelles (liste de colonnes et table cible).

Le contenu d'une table est formé d'un ensemble de lignes conformes au

schéma.

Le contenu d'une table est sujet à de fréquentes modifications.

Le schéma d'une table peut évoluer mais moins fréquemment.

69

3. Notions de base

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Un schéma

70

3. Notions de base - Exemple

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

clé étrangère

identifiant

dans le schémadans les données

71

3. Notions de base

(clé primaire)

Informatique - Bases de données • ! A. Cornuéjols 2014 /11972

3. Notions de base - Exemple

Les données

Page 19: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

3.1 Introduction 3.5 Types d'associations3.2 Modèle Entité-Association 3.6 Exemples de schéma conceptuel3.3 Types d'entités 3.7 Exemple détaillé3.4 Attributs

4 - Conception d’une base de données

73

Partie 1 - Place de l’informatique Partie 5 - Manipulation : SQL Partie 2 - Les bases de données Partie 6 - PHP / MySQLPartie 3 - Bases sur les BDPartie 4 - Conception des BD

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Comment construire une base de données ?

• définir les tables, les contraintes, les index, etc.

• introduire les données dans ces tables (ceci est un autre problème).

Encore faut-il que le schéma des tables satisfasse les besoins des utilisateurs des données !

L'esprit humain n'est pas conçu pour réfléchir en termes de tables !

74

4.1 Pourquoi est-ce difficile de concevoir une BD

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Gestion des étudiants dansun établissement supérieur.

75

4.1 Pourquoi est-ce difficile de concevoir une BD

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Il faut un autre langage pour exprimer naturellement les informations que doit

contenir une base de données :

le modèle Entité-association

Le monde est perçu comme formé d'entités, dotées de propriétés et en

associations les unes avec les autres.

76

4.2 Le modèle Entité-Association (E/A)

=> Modélisation

Page 20: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Le modèle Entité-association propose une lecture du monde (le domaine

d'application) simple mais limitée :

• le monde est constitué d'objets ou entités

• les entités sont classées en types d'entités

• les entités d'un type ont des attributs spécifiques

• les entités sont en association les unes avec les autres

• les associations sont classées en types d'associations.

4.2 Le modèle Entité-Association (E/A)

77 Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.5 Types d'associations

signe

implique

couvre

appartient

VEHICULE

NumVéh

Marque

Modèle

Année

Cylindrée

CONTRAT

NumCtr

Type

DateSign

ACCIDENT

NumAcc

DateAcc

Montant[0-1]

CLIENT

NumClient

Nom

Adresse

dessin des types

VE

HIC

UL

E

CLIENT

CONTRAT

ACCIDENT

quelques instances

78

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.5 Types d'associations

79 Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.7 Exemple - Conception d’une BD pour un GIE agricole

80

Cahier des charges (simplifié)

• Des agriculteurs possèdent des parcelles

• Une parcelle a un et un seul propriétaire

• Un agriculteur possède une ou plusieurs parcelles

• Pour exploiter ces parcelles, les agriculteurs font appel à un GIE. Celui-ci

fournit de la main d’oeuvre d’appoint, à la journée.

• Cette main d’oeuvre est assurée par des employés du GIE.

• Chaque employé du GIE a un tarif, qui constitue son salaire journalier brut.

Page 21: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.7 Exemple - Conception d’une BD pour un GIE agricole

81

Cahier des charges (simplifié)

• Des agriculteurs possèdent des parcelles

• Une parcelle a un et un seul propriétaire

• Un agriculteur possède une ou plusieurs parcelles

• Pour exploiter ces parcelles, les agriculteurs font appel à un GIE. Celui-ci

fournit de la main d’oeuvre d’appoint, à la journée.

• Cette main d’oeuvre est assurée par des employés du GIE.

• Chaque employé du GIE a un tarif, qui constitue son salaire journalier

brut.

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.7 Exemple - Conception d’une BD pour un GIE agricole

82

Cahier des charges (simplifié) (2)

• Le GIE paie ses employés mensuellement, en fonction de leurs

interventions.

• Chaque intervention concerne une parcelle, un employé et un nombre

de jours.

• Le système d’information désiré doit pouvoir fournir :

• la liste des agriculteurs

• la liste des employés

• la liste des interventions par employé

• la liste des interventions par agriculteur

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.7 Exemple - Conception d’une BD pour un GIE agricole

83

Inventaire des données (simplifié)

• Agriculteur : Nom, prénom, lieu de

résidence

• Employé GIE : Nom et prénom

• Parcelle : nom, superficie, lieu et

propriétaire

• Employé : numéro insee et salaire

journalier

• Interventions : employé, parcelle,

date de début, nombre de jours

Nom Prénom Lieu de résidence

Dulhac Anne-Marie Arith

Martoz Christian Montargy

Carrez François Arith

Ferrer Mariette Lenoyer

Mernaz Francine Lescheraines

Martoz Christian Lescheraines

Comment identifier ?

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.7 Exemple - Conception d’une BD pour un GIE agricole

84

Clé primaire

IdAgri Nom Prénom Lieu de résidence

1 Dulhac Anne-Marie Arith

2 Martoz Christian Montargy

3 Carrez François Arith

4 Ferrer Mariette Lenoyer

5 Mernaz Francine Lescheraines

6 Martoz Christian Lescheraines

Page 22: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Ville_Dep Ville_Arr Distance

Aiglun Saint-Auban 25

Aix-les-Bains Chambery 14

Rennes Paris 342

Rennes Saint-Malô 75

Saint-Alban Aiglun 23

4.7 Exemple - Conception d’une BD pour un GIE agricole

85

Clé primaire : pas nécessairement une seule colonne

Table des distances entre villes

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.7 Exemple - Conception d’une BD pour un GIE agricole

86

Type des attributs (colonnes)

Agr-Id Agr_Nom Agr_Prn Agr_Resid

1 Dulhac Anne-Marie Arith

2 Martoz Christian Montargy

3 Carrez François Arith

4 Ferrer Mariette Lenoyer

5 Mernaz Francine Lescheraines

6 Martoz Christian Lescheraines

Champ Type Extra

Agr_id int(11) auto_increment

Agr_Nom varchar(30)

Agr_Prn varchar(20)

Agr_Resid varchar(50)

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Par_Idf Par_Nom Par_Lieu Par_Superficie

1 Le Pré au Vent Arith 350

2 Le grand Verger Arith 300

3 Plan des Bauges Montargy 220

4 Les Prés Rus Arith 750

5 Lafosse Montargy 600

4.7 Exemple - Conception d’une BD pour un GIE agricole

87

Les parcelles

Comment indiquer le propriétaire ?

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Par_Idf Par_Nom Par_Lieu Par_Superficie Par_Prop

1 Le Pré au Vent Arith 350 1

2 Le grand Verger Arith 300 2

3 Plan des Bauges

Montargy 220 1

4 Les Prés Rus Arith 750 4

5 Lafosse Montargy 600 1

4.7 Exemple - Conception d’une BD pour un GIE agricole

88

Les parcelles et leur propriétaire

Parcelles Agr_Id Agr_Nom Agr_Prn Agr_Resid

1 Dulhac Anne-Marie Arith

2 Martoz Christian Montargy

3 Carrez François Arith

4 Ferrer Mariette Lenoyer

5 Mernaz Francine Lescheraines

6 Martoz Christian Lescheraines

Agriculteur

Une relation entre deux tables

Page 23: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.7 Exemple - Conception d’une BD pour un GIE agricole

89

Les parcelles et leur propriétaire

Parcelles

Agriculteur

Une relation 1 à n entre deux tables

Agriculteur

Agr_id

Agr_Nom

Agr_Prn

Agr_Resid

Parcelle

Par_id

Par_Nom

Par_Lieu

Par_Sup

Par_Prop

1

n

Clé étrangère

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.7 Exemple - Conception d’une BD pour un GIE agricole

90

Quelle clé primaire ?

Emp-nss Emp_Nom Emp_prn Emp_tarif

1,75077E+12 Grandet Marc 110

1,82023E+12 Barnier Nicole 115

1,79011E+12 Pernet Henri 119

La table employé

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.7 Exemple - Conception d’une BD pour un GIE agricole

91

Quelle relation entre les tables parcelle et employé ?

• Un employé peut être amené à travailler sur plusieurs parcelles

• Sur une même parcelle peuvent travailler plusieurs employés

(simultanément ou l’un après l’autre)

• C’est une relation plusieurs à plusieurs : on la représente par une

nouvelle table

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

4.7 Exemple - Conception d’une BD pour un GIE agricole

92

Les parcelles et les employésEmployé

Emp_nss

Emp_Nom

Emp_Prn

Emp_tarif

Parcelle

Par_id

Par_Nom

Par_Lieu

Par_Sup

Par_Prop

1 n

Intervention

Int_Emp_nss

Int_Par_id

Int_Deb

Int_Nb_Jours

n1

Emp_nss Emp_Nom Emp_prn Emp_tarif

1,75077E+12 Grandet Marc 110

Int_Emp_nss Int_Par_id

Int_Deb Int_Nb_Jours

1,75077E+12 1 2004-07-05 5

Par_Idf Par_Nom Par_Lieu Par_Superficie Par_Prop

1 Le Pré au Vent

Arith 350 1

L’employé Grandet a travaillé sur la parcelle du

pré au vent, 5 jours à partir du 5 juillet 2004.

Intervention

ParcelleEmployé

Page 24: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

5 - LE LANGAGE SQL

(Structured Query Language)

93

4.1 Introduction : LDD et LMD 4.5 Les fonctions agrégatives4.2 Création / modification de table 4.6 Les sous-requêtes4.3 Extractions simples 4.4 Extractions complexes

Partie 1 - Place de l’informatique Partie 5 - Manipulation : SQL Partie 2 - Les bases de données Partie 6 - PHP / MySQLPartie 3 - Bases sur les BDPartie 4 - Conception des BD

Informatique - Bases de données • ! A. Cornuéjols 2014 /11994

SQL permet :

de définir le schéma de la base de données (LDD)

de charger les tables relationnelles (LMD)

de manipuler les données stockées (LMD)

de gérer la base de données (LDD) : sécurité, organisation physique

Ici : aperçu de la partie LMD

En TP : le LDD aussi

SQL n’est pas un langage de programmation complet

5.1 Introduction à SQL : LDD et LMD

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

Introduction

Le sous-langage LMD de SQL permet de consulter le contenu des

tables et de les modifier. Il comporte 4 verbes :

• La requête select extrait des données des tables

• La requête insert insère de nouvelles lignes dans une table

• La requête delete supprime des lignes d'une table

• La requête update modifie les valeurs de colonnes de lignes

existantes

95 Informatique - Bases de données • ! A. Cornuéjols 2015 /11996

BD et calcul relationnel

Y/-FE+44H/-F-+4.F+*)(4,-H/-F/4

4+L.%+/I6X6Y67,0%#-,"#-F(##/8H-FUF'&0(4#2!FV

30

31

32

33

34

35

36

Figure 1. Une base de données relationnelle

qHB = ∃ t, d ( Film(t, r, « Humphrey Bogart ») ⋀ Séance(t, s, h) )

select salle, heurefrom Film, Séancewhere Film.titre= Séance.titre and acteur= « Humphrey Bogart »

Un système de gestion de bases de données sert de médiateur entre des individus et desmachines. Pour mieux s’adapter aux individus, il doit organiser et présenter les donnéesde façon intuitive. Il doit aussi proposer un langage, pour exprimer des requêtes,facilement utilisable par des êtres humains. Ces exigences forment le point de départ dumodèle relationnel10 proposé par Ted Codd, un chercheur d’IBM, dans les années 1970.Des mathématiciens avaient développé à la fin du XIXe siècle (bien avant l’invention del’informatique et des bases de données) la logique du premier ordre, pour formaliser lelangage des mathématiques. Codd a eu l’idée d’adapter cette logique pour définir unmodèle de gestion de données, le modèle relationnel.

Film SéanceTitre Réalisateur Acteur Titre Salle HeureCasablanca M. Curtiz Humphrey Bogart Casablanca Lucernaire 19:00Casablanca M. Curtiz Peter Lorre Casablanca Studio 20:00Les 400 coups F. Truffaut Jean-Pierre Léaud Star Wars Sel 20:30Star Wars G. Lucas Harrison Ford Stars Wars Sel 22:15

Dans le modèle relationnel, les données sont organisées en tableaux à deux dimensionsque nous appellerons des relations. À la différence des mathématiciens, nous supposonsles relations de taille finie. Comme illustration, nous utiliserons une base de donnéesconsistant en une relation Film et une relation Séance (figure 1). Une ligne de cesrelations est appelée un n-uplet où n est le nombre de colonnes. Par exemple, ⟨Star Wars,Sel, 22:15⟩est un 3-uplet, un triplet, dans la relation Séance. Les colonnes ont des noms,appelés attributs, comme Titre.Les données sont interrogées en utilisant comme langage le calcul relationnel. Le calculrelationnel (très fortement inspiré de la logique du premier ordre) s’appuie sur des nomsqui représentent des relations comme Film ou Séance, des entrées de ces relations comme« Star Wars », des variables comme t, h, et des symboles logiques, ⋀ (et), ⋁ (ou), ¬ (non),⇒ (implique), ∃ (existe), ∀ (pour tout). Avec tout ça, des formules logiques peuvent êtreconstruites comme :

Si cela vous paraît cryptique, en français, cela se lit : il existe un titre t et un réalisateur rtels que le n-uplet ⟨ t, r, « Humphrey Bogart » ⟩ se trouve dans la relation Film, et len-uplet ⟨ t, s, h ⟩ dans Séance. Observez que s et h ne sont pas quantifiées dans la formuleprécédente ; nous dirons que ces deux variables sont libres. La formule qHB peut être vuecomme une requête du calcul relationnel. Elle se lit alors : donnez-moi les salles s et leshoraires h, s’il existe un réalisateur r et un titre t tels que... En d’autres termes, « Où et àquelle heure puis-je voir un film avec Humphrey Bogart ? ». Ce langage, le calculrelationnel, permet d’exprimer des questions dans une syntaxe qui évite les ambiguïtés denos langues naturelles. Si elles pouvaient aimer, les machines aimeraient la simplicité, laprécision du calcul relationnel. En pratique, elles utilisent le langage SQL (StructuredQuery Language) qui exprime différemment les mêmes questions. Par exemple, laquestion précédente s’exprime en SQL comme :

C’est presque compréhensible, non ? Et qu’Alice s’exprime en français ou qu’elle utiliseune interface graphique, le système transforme sa question en requête SQL11.La question du calcul relationnel précédente (ou en SQL) précise bien ce qu’Alicedemande. Cette question a un sens précis, une sémantique. Elle définit une réponse, unensemble de n-uplets. Nous ne préciserons pas comment dans cette leçon. Ce que laquestion ne dit pas, c’est comment calculer la réponse. Pour le « comment », on utilisel’algèbre relationnelle introduite par Codd. Une étape importante consiste à transformerune question du calcul en une expression algébrique qui permet de calculer la réponse àcette question.L’algèbre relationnelle consiste en un petit nombre d’opérations de base qui, appliquées àdes relations, produisent de nouvelles relations. Ces opérations peuvent être composéespour construire des expressions algébriques de plus en plus complexes. Pour répondre àla question qui nous sert d’exemple, il nous faudra trois opérations, la jointure, la

Sciences des données : de la logique du premier ordre à la Toil... http://books.openedition.org/cdf/529?lang=fr

6 sur 26 1/12/14 16:57

30

31

32

33

34

35

36

Figure 1. Une base de données relationnelle

qHB = ∃ t, d ( Film(t, r, « Humphrey Bogart ») ⋀ Séance(t, s, h) )

select salle, heurefrom Film, Séancewhere Film.titre= Séance.titre and acteur= « Humphrey Bogart »

Un système de gestion de bases de données sert de médiateur entre des individus et desmachines. Pour mieux s’adapter aux individus, il doit organiser et présenter les donnéesde façon intuitive. Il doit aussi proposer un langage, pour exprimer des requêtes,facilement utilisable par des êtres humains. Ces exigences forment le point de départ dumodèle relationnel10 proposé par Ted Codd, un chercheur d’IBM, dans les années 1970.Des mathématiciens avaient développé à la fin du XIXe siècle (bien avant l’invention del’informatique et des bases de données) la logique du premier ordre, pour formaliser lelangage des mathématiques. Codd a eu l’idée d’adapter cette logique pour définir unmodèle de gestion de données, le modèle relationnel.

Film SéanceTitre Réalisateur Acteur Titre Salle HeureCasablanca M. Curtiz Humphrey Bogart Casablanca Lucernaire 19:00Casablanca M. Curtiz Peter Lorre Casablanca Studio 20:00Les 400 coups F. Truffaut Jean-Pierre Léaud Star Wars Sel 20:30Star Wars G. Lucas Harrison Ford Stars Wars Sel 22:15

Dans le modèle relationnel, les données sont organisées en tableaux à deux dimensionsque nous appellerons des relations. À la différence des mathématiciens, nous supposonsles relations de taille finie. Comme illustration, nous utiliserons une base de donnéesconsistant en une relation Film et une relation Séance (figure 1). Une ligne de cesrelations est appelée un n-uplet où n est le nombre de colonnes. Par exemple, ⟨Star Wars,Sel, 22:15⟩est un 3-uplet, un triplet, dans la relation Séance. Les colonnes ont des noms,appelés attributs, comme Titre.Les données sont interrogées en utilisant comme langage le calcul relationnel. Le calculrelationnel (très fortement inspiré de la logique du premier ordre) s’appuie sur des nomsqui représentent des relations comme Film ou Séance, des entrées de ces relations comme« Star Wars », des variables comme t, h, et des symboles logiques, ⋀ (et), ⋁ (ou), ¬ (non),⇒ (implique), ∃ (existe), ∀ (pour tout). Avec tout ça, des formules logiques peuvent êtreconstruites comme :

Si cela vous paraît cryptique, en français, cela se lit : il existe un titre t et un réalisateur rtels que le n-uplet ⟨ t, r, « Humphrey Bogart » ⟩ se trouve dans la relation Film, et len-uplet ⟨ t, s, h ⟩ dans Séance. Observez que s et h ne sont pas quantifiées dans la formuleprécédente ; nous dirons que ces deux variables sont libres. La formule qHB peut être vuecomme une requête du calcul relationnel. Elle se lit alors : donnez-moi les salles s et leshoraires h, s’il existe un réalisateur r et un titre t tels que... En d’autres termes, « Où et àquelle heure puis-je voir un film avec Humphrey Bogart ? ». Ce langage, le calculrelationnel, permet d’exprimer des questions dans une syntaxe qui évite les ambiguïtés denos langues naturelles. Si elles pouvaient aimer, les machines aimeraient la simplicité, laprécision du calcul relationnel. En pratique, elles utilisent le langage SQL (StructuredQuery Language) qui exprime différemment les mêmes questions. Par exemple, laquestion précédente s’exprime en SQL comme :

C’est presque compréhensible, non ? Et qu’Alice s’exprime en français ou qu’elle utiliseune interface graphique, le système transforme sa question en requête SQL11.La question du calcul relationnel précédente (ou en SQL) précise bien ce qu’Alicedemande. Cette question a un sens précis, une sémantique. Elle définit une réponse, unensemble de n-uplets. Nous ne préciserons pas comment dans cette leçon. Ce que laquestion ne dit pas, c’est comment calculer la réponse. Pour le « comment », on utilisel’algèbre relationnelle introduite par Codd. Une étape importante consiste à transformerune question du calcul en une expression algébrique qui permet de calculer la réponse àcette question.L’algèbre relationnelle consiste en un petit nombre d’opérations de base qui, appliquées àdes relations, produisent de nouvelles relations. Ces opérations peuvent être composéespour construire des expressions algébriques de plus en plus complexes. Pour répondre àla question qui nous sert d’exemple, il nous faudra trois opérations, la jointure, la

Sciences des données : de la logique du premier ordre à la Toil... http://books.openedition.org/cdf/529?lang=fr

6 sur 26 1/12/14 16:57

30

31

32

33

34

35

36

Figure 1. Une base de données relationnelle

qHB = ∃ t, d ( Film(t, r, « Humphrey Bogart ») ⋀ Séance(t, s, h) )

select salle, heurefrom Film, Séancewhere Film.titre= Séance.titre and acteur= « Humphrey Bogart »

Un système de gestion de bases de données sert de médiateur entre des individus et desmachines. Pour mieux s’adapter aux individus, il doit organiser et présenter les donnéesde façon intuitive. Il doit aussi proposer un langage, pour exprimer des requêtes,facilement utilisable par des êtres humains. Ces exigences forment le point de départ dumodèle relationnel10 proposé par Ted Codd, un chercheur d’IBM, dans les années 1970.Des mathématiciens avaient développé à la fin du XIXe siècle (bien avant l’invention del’informatique et des bases de données) la logique du premier ordre, pour formaliser lelangage des mathématiques. Codd a eu l’idée d’adapter cette logique pour définir unmodèle de gestion de données, le modèle relationnel.

Film SéanceTitre Réalisateur Acteur Titre Salle HeureCasablanca M. Curtiz Humphrey Bogart Casablanca Lucernaire 19:00Casablanca M. Curtiz Peter Lorre Casablanca Studio 20:00Les 400 coups F. Truffaut Jean-Pierre Léaud Star Wars Sel 20:30Star Wars G. Lucas Harrison Ford Stars Wars Sel 22:15

Dans le modèle relationnel, les données sont organisées en tableaux à deux dimensionsque nous appellerons des relations. À la différence des mathématiciens, nous supposonsles relations de taille finie. Comme illustration, nous utiliserons une base de donnéesconsistant en une relation Film et une relation Séance (figure 1). Une ligne de cesrelations est appelée un n-uplet où n est le nombre de colonnes. Par exemple, ⟨Star Wars,Sel, 22:15⟩est un 3-uplet, un triplet, dans la relation Séance. Les colonnes ont des noms,appelés attributs, comme Titre.Les données sont interrogées en utilisant comme langage le calcul relationnel. Le calculrelationnel (très fortement inspiré de la logique du premier ordre) s’appuie sur des nomsqui représentent des relations comme Film ou Séance, des entrées de ces relations comme« Star Wars », des variables comme t, h, et des symboles logiques, ⋀ (et), ⋁ (ou), ¬ (non),⇒ (implique), ∃ (existe), ∀ (pour tout). Avec tout ça, des formules logiques peuvent êtreconstruites comme :

Si cela vous paraît cryptique, en français, cela se lit : il existe un titre t et un réalisateur rtels que le n-uplet ⟨ t, r, « Humphrey Bogart » ⟩ se trouve dans la relation Film, et len-uplet ⟨ t, s, h ⟩ dans Séance. Observez que s et h ne sont pas quantifiées dans la formuleprécédente ; nous dirons que ces deux variables sont libres. La formule qHB peut être vuecomme une requête du calcul relationnel. Elle se lit alors : donnez-moi les salles s et leshoraires h, s’il existe un réalisateur r et un titre t tels que... En d’autres termes, « Où et àquelle heure puis-je voir un film avec Humphrey Bogart ? ». Ce langage, le calculrelationnel, permet d’exprimer des questions dans une syntaxe qui évite les ambiguïtés denos langues naturelles. Si elles pouvaient aimer, les machines aimeraient la simplicité, laprécision du calcul relationnel. En pratique, elles utilisent le langage SQL (StructuredQuery Language) qui exprime différemment les mêmes questions. Par exemple, laquestion précédente s’exprime en SQL comme :

C’est presque compréhensible, non ? Et qu’Alice s’exprime en français ou qu’elle utiliseune interface graphique, le système transforme sa question en requête SQL11.La question du calcul relationnel précédente (ou en SQL) précise bien ce qu’Alicedemande. Cette question a un sens précis, une sémantique. Elle définit une réponse, unensemble de n-uplets. Nous ne préciserons pas comment dans cette leçon. Ce que laquestion ne dit pas, c’est comment calculer la réponse. Pour le « comment », on utilisel’algèbre relationnelle introduite par Codd. Une étape importante consiste à transformerune question du calcul en une expression algébrique qui permet de calculer la réponse àcette question.L’algèbre relationnelle consiste en un petit nombre d’opérations de base qui, appliquées àdes relations, produisent de nouvelles relations. Ces opérations peuvent être composéespour construire des expressions algébriques de plus en plus complexes. Pour répondre àla question qui nous sert d’exemple, il nous faudra trois opérations, la jointure, la

Sciences des données : de la logique du premier ordre à la Toil... http://books.openedition.org/cdf/529?lang=fr

6 sur 26 1/12/14 16:57

30

31

32

33

34

35

36

Figure 1. Une base de données relationnelle

qHB = ∃ t, d ( Film(t, r, « Humphrey Bogart ») ⋀ Séance(t, s, h) )

select salle, heurefrom Film, Séancewhere Film.titre= Séance.titre and acteur= « Humphrey Bogart »

Un système de gestion de bases de données sert de médiateur entre des individus et desmachines. Pour mieux s’adapter aux individus, il doit organiser et présenter les donnéesde façon intuitive. Il doit aussi proposer un langage, pour exprimer des requêtes,facilement utilisable par des êtres humains. Ces exigences forment le point de départ dumodèle relationnel10 proposé par Ted Codd, un chercheur d’IBM, dans les années 1970.Des mathématiciens avaient développé à la fin du XIXe siècle (bien avant l’invention del’informatique et des bases de données) la logique du premier ordre, pour formaliser lelangage des mathématiques. Codd a eu l’idée d’adapter cette logique pour définir unmodèle de gestion de données, le modèle relationnel.

Film SéanceTitre Réalisateur Acteur Titre Salle HeureCasablanca M. Curtiz Humphrey Bogart Casablanca Lucernaire 19:00Casablanca M. Curtiz Peter Lorre Casablanca Studio 20:00Les 400 coups F. Truffaut Jean-Pierre Léaud Star Wars Sel 20:30Star Wars G. Lucas Harrison Ford Stars Wars Sel 22:15

Dans le modèle relationnel, les données sont organisées en tableaux à deux dimensionsque nous appellerons des relations. À la différence des mathématiciens, nous supposonsles relations de taille finie. Comme illustration, nous utiliserons une base de donnéesconsistant en une relation Film et une relation Séance (figure 1). Une ligne de cesrelations est appelée un n-uplet où n est le nombre de colonnes. Par exemple, ⟨Star Wars,Sel, 22:15⟩est un 3-uplet, un triplet, dans la relation Séance. Les colonnes ont des noms,appelés attributs, comme Titre.Les données sont interrogées en utilisant comme langage le calcul relationnel. Le calculrelationnel (très fortement inspiré de la logique du premier ordre) s’appuie sur des nomsqui représentent des relations comme Film ou Séance, des entrées de ces relations comme« Star Wars », des variables comme t, h, et des symboles logiques, ⋀ (et), ⋁ (ou), ¬ (non),⇒ (implique), ∃ (existe), ∀ (pour tout). Avec tout ça, des formules logiques peuvent êtreconstruites comme :

Si cela vous paraît cryptique, en français, cela se lit : il existe un titre t et un réalisateur rtels que le n-uplet ⟨ t, r, « Humphrey Bogart » ⟩ se trouve dans la relation Film, et len-uplet ⟨ t, s, h ⟩ dans Séance. Observez que s et h ne sont pas quantifiées dans la formuleprécédente ; nous dirons que ces deux variables sont libres. La formule qHB peut être vuecomme une requête du calcul relationnel. Elle se lit alors : donnez-moi les salles s et leshoraires h, s’il existe un réalisateur r et un titre t tels que... En d’autres termes, « Où et àquelle heure puis-je voir un film avec Humphrey Bogart ? ». Ce langage, le calculrelationnel, permet d’exprimer des questions dans une syntaxe qui évite les ambiguïtés denos langues naturelles. Si elles pouvaient aimer, les machines aimeraient la simplicité, laprécision du calcul relationnel. En pratique, elles utilisent le langage SQL (StructuredQuery Language) qui exprime différemment les mêmes questions. Par exemple, laquestion précédente s’exprime en SQL comme :

C’est presque compréhensible, non ? Et qu’Alice s’exprime en français ou qu’elle utiliseune interface graphique, le système transforme sa question en requête SQL11.La question du calcul relationnel précédente (ou en SQL) précise bien ce qu’Alicedemande. Cette question a un sens précis, une sémantique. Elle définit une réponse, unensemble de n-uplets. Nous ne préciserons pas comment dans cette leçon. Ce que laquestion ne dit pas, c’est comment calculer la réponse. Pour le « comment », on utilisel’algèbre relationnelle introduite par Codd. Une étape importante consiste à transformerune question du calcul en une expression algébrique qui permet de calculer la réponse àcette question.L’algèbre relationnelle consiste en un petit nombre d’opérations de base qui, appliquées àdes relations, produisent de nouvelles relations. Ces opérations peuvent être composéespour construire des expressions algébriques de plus en plus complexes. Pour répondre àla question qui nous sert d’exemple, il nous faudra trois opérations, la jointure, la

Sciences des données : de la logique du premier ordre à la Toil... http://books.openedition.org/cdf/529?lang=fr

6 sur 26 1/12/14 16:57

!

Il existe un titre t et un réalisateur r tq. le n-uplet Film(t, r, «Humphrey Bogart») se trouve dans la relation Film et le n-uplet Séance(t, s, h) dans Séance. Donc, donnez-moi les salles s et les heures h (variables libres), s’il existe un réalisateur r et un titre t tel que ...

MySQL

Page 25: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2015 /11997

BD et calcul relationnel

?+55/4.F0(8028/*F8(F*H#+4-/FL

E.*NL)%6)%.+'"##%..%FFFp?+EEQF@jqOr

:*(4-1+*5/F8(F*/K2_./F/4F/C#*/--,+4F(8)H6*,K2/F0(8028(68/

s/G.F4+56*/FEJ"&=)+'"#-67%6L+-%

!&($.3/"

F/&G"%4&$

@E2"%4&$

'''

Informatique - Bases de données • ! A. Cornuéjols 2015 /11998

BD et calcul relationnel

37

38

39

40

EHB = !salle,heure (!titre ("acteur = « Humphrey Bogart »(Film)) ⋈ Salle)

Figure 2. L’évaluation d’une requête algébrique

Une question est exprimable en calcul relationnel si et seulement si elle peut être évaluéeavec une expression de l’algèbre relationnelle, et il est simple de transformer une requête ducalcul en une expression algébrique qui évalue cette requête.

sélection et la projection, que nous composerons dans l’expression suivante de l’algèbrerelationnelle :

Nous pourrons suivre l’évaluation de cette expression algébrique en figure 2. L’opérationde sélection, dénotée ", filtre une relation, ne gardant que les n-uplets satisfaisant unecondition, ici acteur = « Humphrey Bogart ». L’opération de projection, dénotée !,permet aussi de filtrer de l’information d’une relation mais cette fois en éliminant descolonnes. L’opération peut-être la plus exotique de l’algèbre, la jointure, dénotée ⋈,combine des n-uplets de deux relations. D’autres opérations non illustrées ici permettentde faire l’union et la différence entre deux relations ou de renommer des attributs. Lapuissance de l’algèbre relationnelle tient de la possibilité de composer ces opérations.C’est ce que nous avons fait dans l’expression algébrique EHB qui permet d’évaluer laréponse à la question qHB.Notre présentation est rapide mais il est important que le lecteur comprenne l’intérêt del’algèbre. Il est relativement simple d’écrire un programme qui évalue la réponse à unequestion du calcul relationnel. Il est plus délicat d’obtenir un programme qui calcule cetteréponse efficacement. L’algèbre relationnelle découpe le travail. Un programmeparticulier très efficace peut être utilisé pour chacune des opérations de l’algèbre ; lerésultat est obtenu en composant ces programmes. L’efficacité provient notamment dufait que les opérations considèrent des ensembles de n-uplets plutôt que les n-uplets un àun.Codd a démontré le théorème suivant :

Qu’avons-nous appris de Codd ? Pas grand-chose du point de vue des mathématiques. Lecalcul relationnel est emprunté aux logiciens. Une algébrisation (légèrement différente)avait même déjà été proposée par Tarski. Mais d’un point de vue informatique, Codd aposé les bases de la médiation autour des données entre individus et machines. Grâce àson résultat, nous savons que nous pouvons exprimer une question en calcul relationnel,qu’un système peut traduire cette question en expression algébrique et calculerefficacement sa réponse. Pourtant, quand Codd proposa cette approche, la réaction desingénieurs qui géraient alors de gros volumes de données et de grandes applications, futunanime : « trop lent ! Ça ne passera pas à l’échelle ». Ils se trompaient. Pour traduirel’idée de Codd en une industrie de milliards de dollars, il manquait l’optimisation derequête. Après des années d’effort, les chercheurs sont parvenus à faire fonctionner lessystèmes relationnels avec des temps de réponse acceptables. Avec ces systèmes, ledéveloppement d’applications gérant des données devenait beaucoup plus simple ; cela se

Sciences des données : de la logique du premier ordre à la Toil... http://books.openedition.org/cdf/529?lang=fr

7 sur 26 1/12/14 16:57

Informatique - Bases de données • ! A. Cornuéjols 2015 /11999

BD et calcul relationnel

?+5#8/C,.HFE2F$+.$/.67%6.+6)=&"#-%

N-.30/FK2/F0/F)/4*/FE/FUF0(8028FVF#/2.F#(--/*FtF8JH0!/88/FL

1)"*)+00%-FEJ+#G5,-(G+4FE/F*/K2_./-

?8(--/-FE/F$"0&.%I,4=FE/-F0(8028-

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

5.2 Extraction simple - projection

100

nom prénom adresse téléphone

Martin Pierre 7 allée des vers 258941236

Dupond Jean 32 allé Poivrot 526389152

Dupond Marc 8 rue de l’octet 123456789

Personnes

SELECT nom, prénomFROM Personnes

nom prénom

Martin Pierre

Dupond Jean

Dupond Marc

On projette la table Personnes sur les colonnes nom et prénom.

Page 26: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

5.2 Extraction simple - sélection

101

nom prénom adresse téléphone

Martin Pierre 7 allée des vers 258941236

Dupond Jean 32 allé Poivrot 526389152

Dupond Marc 8 rue de l’octet 123456789

Personnes

SELECT *FROM PersonnesWHERE nom = ‘’Dupond’’

On ne sélectionne que les tuples dont l’attribut nom

est égale à ‘Dupond’.

nom prénom adresse téléphone

Dupond Jean 32 allé Poivrot 526389152

Dupond Marc 8 rue de l’octet 123456789

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

5.2 Extraction simple - sélection

102

Relation de départ :SELECT * FROM Gens

GensGensGens

Nom Prenom Age

Dupond Pierre 24

Martin Marc 48

Dupont Jean 51

Martin Paul 36

Dupond Lionel 68

Chirac Jacques 70

1SELECT Nom FROM Gens

Gens

Nom

Dupond

Martin

Dupont

Martin

Dupond

Chirac

SELECT DISTINCT Nom FROM Gens

Gens

Nom

Dupond

Martin

Dupont

Chirac

2

3

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

5.2 Extraction simple - sélection

103

Gens

Nom

Chirac

Dupond

Dupont

Martin

SELECT DISTINCT Nom

FROM Gens

ORDER BY Nom ASC

4Gens

Nom

Chirac

Dupond

SELECT DISTINCT Nom

FROM Gens

ORDER BY Nom ASC

LIMIT 2

5

SELECT DISTINCT Nom

FROM Gens

WHERE Nom <> ‘Chirac’

ORDER BY Nom ASC

LIMIT 2

Gens

Nom

Dupond

6

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

5.3 Extraction complexe - jointure

104

nom Dernierlivre

Dupond Robinson

Jospin Faust

Martin Misère

nom prénom adresse téléphone

Martin Pierre 7 allée des vers 258941236

Dupond Jean 32 allé Poivrot 526389152

Personnes

SELECT Personnes.prénom, dernierlivreFROM Personnes, BibliothèqueWHERE Personnes.nom = Bibliothèque.nom

On joint les deux tables, grâce à la colonne nom.

Et on combine cette jointure à une projection sur les attributs nom et dernierlivre.

Attention à lever toute ambi-guïté sur les noms d’attribut dans le cas où deux tables possèdent des colonnes de même nom.

Bibliothèque

prénom Dernierlivre

Jean Robinson

Pierre Misère

Page 27: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

select nom from produit where prix <= 100.5;

5.3 Conditions plus complexes - exemples

105

Liste des noms de produits dont le prix est inférieur ou égal à 100.5 €

select nom, prénom from ELEVES where age between 12 and 16;

Liste des noms et prénoms des élèves dont l’âge est dans [12,16]

select modèle from VOITURES where couleur in (‘bleu’, ‘blanc’, ‘noir’);

Liste des modèles de voitures dont la couleur est dans la liste : bleu, blanc, noir.

select modèle from VOITURES where couleur not in (‘rose’, ‘violet’);

Liste des modèles de voitures dont la couleur n’est pas dans la liste : rose, violet.

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

select NOM, ADRESSE, COMPTE from CLIENT where LOCALITE = 'Toulouse' and COMPTE < 0;

5.3 Conditions plus complexes - Combinaisons logiques

select NOM, ADRESSE, COMPTE where COMPTE > 0 and (CAT = 'C1' or LOCALITE = 'Paris')

106

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

select 'TVA de ', NPRO, ' = ',0.21*PRIX*QSTOCKfrom PRODUIT where QSTOCK > 500;

5.4 Données extraites et données dérivées - expressions de calcul

select NPRO as Produit, 0.21*PRIX*QSTOCK as Valeur_TVAfrom PRODUIT where QSTOCK > 500;

TVA de NPRO = 0,21*PRIX*QSTOCK

6778812789

37770.647397

TVA deTVA deTVA deTVA de

CS264PA45PH222PS222

====

Produit Valeur_TVA

6778812789

37770.647397

CS264PA45PH222PS222

"Produit" est

un alias de colonne

107 Informatique - Bases de données • ! A. Cornuéjols 2014 /119

select * from PRODUIT where NPRO in (select NPRO from DETAIL where NCOM in (select NCOM from COMMANDE where NCLI in (select NCLI from CLIENT where LOCALITE='Namur')));

les produits référencés par les détails des commandes des clients de Namur

5.4 Les sous-requêtes - Principe

les détails des commandes des clients de Namur

les commandes des clients de Namur

les clients de Namur

108

Page 28: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

6.1 Introduction 6.2 Le langage MySQL 6.3 Administration avec phpMyAdmin 6.4 Interface avec PHP

6 - PHP / MySQL

109

Partie 1 - Place de l’informatique Partie 5 - Manipulation : SQL Partie 2 - Les bases de données Partie 6 - PHP / MySQLPartie 3 - Bases sur les BDPartie 4 - Conception des BD

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

6. MySQL

MySQL est un Système de Gestion de Bases de Données

• Se charge du stockage, de l’accès, de la recherche, de la sécurité ... des données

• Utilise le langage SQL

• Système libre (disponible sous Mac OS X, Linux, Windows, ...)

• L’un des plus utilisé au monde (e.g. Wikipedia, Google, YouTube, ...)

• Multi-utilisateur

• Utilisable depuis une grande variété de langages de programmation (C, C++, Java, Python, PHP, ...)

• ...

110

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

6. Administration avec phpMyAdmin

111

• phpMyAdmin est une application PHP développée pour administrer une

base MySQL à distance via un navigateur web

• Application intégrée à EasyPHP

• phpMyAdmin permet également de visualiser les requêtes SQL

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

6. Administration avec phpMyAdmin

Interface intuitive pour l’administration des bases de données du serveur

Outil pour :

• créer de nouvelles bases

• créer / modifier / supprimer des tables

• afficher / ajouter / modifier / supprimer des tuples dans des tables

• effectuer des sauvegarde de la structure et/ou des données

• effectuer n’importe quelle requête

• gérer les privilèges des utilisateurs

112

Page 29: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119

• Base de données = ensemble de données structurées, persistantes placé

dans des fichiers

• Gestion par SGBD (Système de Gestion de Bases de Données)

• Stockage ; accès ; recherche ; sécurité ...

• Exemples : MySQL, ORACLE, PostgreSQL, ...

• Langage spécialisé : SQL

• On choisit une application cliente permettant de dialoguer avec un serveur

MySQL : PHP ; phpMyAdmin ; ...

113

6. Conclusions

Informatique - Bases de données • ! A. Cornuéjols 2014 /119114

Les défis des BDs aujourd’hui et demain

• Multiplicité des types de données.

Une base de données moderne peut contenir :

• des données multimédias,

• des données textuelles,

• des données spatiales (données GPS par exemple),

• des données historiques (plusieurs lignes par entité),

• des données semi-structurées.

• Volumes et performances.

• Une base de données peut contenir des dizaines de milliers de tables, des milliards

de lignes.

• Comment garantir l'accessibilité de ces données, leur protection contre les

incidents, des temps d'accès satisfaisants ?

Informatique - Bases de données • ! A. Cornuéjols 2014 /119115

Les défis des BDs aujourd’hui et demain

• Maintenance et évolution.

• La structure d'une base de données peut évoluer : ajouter ou supprimer une table,

une colonne, une contrainte.

• Comment préserver les données et les programmes utilisateurs lors de cette

évolution ?

• Les données distribuées et nomades.

• Une base de données peut être répartie et/ou dupliquées sur plusieurs ordinateurs

répartis géographiquement. (cf. le « cloud computing »)

• Certains de ceux-ci peuvent être des appareils mobiles (embarqués, portables,

smart phones).

• Comment garantir la cohérence, la protection et l'accessibilité des données.

Informatique - Bases de données • ! A. Cornuéjols 2014 /119116

Les défis des BDs aujourd’hui et demain

• Les BD et le Web.

Le Web peut être vu comme une gigantesque base de données (largement incohérente

et redondante !)

Qu'en est-il des principes rigoureux des bases de données dans ce contexte ?

• Les données décisionnelles.

Les données ne servent pas seulement à contrôler la gestion et le fonctionnement d'une

entreprise au jour le jour. Elles sont aussi souvent utilisées pour soutenir des

décisions tactiques et stratégiques.

Caractéristiques : traitement de très gros volumes de données complexes pour

produire une réponse courte (une heure de traitement de plusieurs téraoctets pour en

extraire un seul nombre !)

Comment structurer une base de données dans ce sens (= entrepôts de données) ?

Page 30: Cours d’Informatique “Bases de données” Que serait le monde … · 2018. 3. 22. · Partie 2 - Les bases de données Partie 6 - PHP / MySQL Partie 3 - Bases ... ¥La g n tique

Informatique - Bases de données • ! A. Cornuéjols 2014 /119117

Remerciements

• Ces transparents doivent beaucoup à :

• Gérard Berry

• Hugo Etiévant

• Jean-Luc Hainaut (auteur d’un excellent livre sur les BDs)

dont les transparents sont extraordinairement complets et bien faits.

Merci !!