Vous êtes sur la page 1sur 186

Bases de Donnes

Laure Petrucci
IUT GTR Villetaneuse

Bases de Donn
ees p.1

Pourquoi les bases de


donnes ?

Bases de Donn
ees p.2

Introduction
Une base de donnes est un ensemble de donnes
inter-relies, accessibles plusieurs utilisateurs
simultanment.
Un SGBD (Systme de Gestion de Bases de Donnes)
est un logiciel permettant de dcrire des bases de
donnes, les interroger, les mettre jour, assurer les
contrles dintgrit, de concurrence et de scurit.
Objectifs principaux :
intgration
indpendance
disponibilit
scurit
Bases de Donn
ees p.3

Intgration
Dans un systme de traitement de donnes orient
fichier, lapplication dialogue avec un ensemble de
fichiers cration de multiples fichiers, duplication
dinformations

Bases de Donn
ees p.4

Intgration
Dans un systme de traitement de donnes orient
fichier, lapplication dialogue avec un ensemble de
fichiers cration de multiples fichiers, duplication
dinformations
Dans lapproche base de donnes, il y a intgration de
toutes les donnes en un rservoir unique de donnes,
commun toutes les applications.

Bases de Donn
ees p.4

Intgration & Indpendance


Dans un systme de traitement de donnes orient
fichier, lapplication dialogue avec un ensemble de
fichiers cration de multiples fichiers, duplication
dinformations
Dans lapproche base de donnes, il y a intgration de
toutes les donnes en un rservoir unique de donnes,
commun toutes les applications.
Indpendance physique : le niveau utilisateur est
transparent un changement de support de donnes, de
mthode daccs aux donnes.

Bases de Donn
ees p.4

Intgration & Indpendance


Dans un systme de traitement de donnes orient
fichier, lapplication dialogue avec un ensemble de
fichiers cration de multiples fichiers, duplication
dinformations
Dans lapproche base de donnes, il y a intgration de
toutes les donnes en un rservoir unique de donnes,
commun toutes les applications.
Indpendance physique : le niveau utilisateur est
transparent un changement de support de donnes, de
mthode daccs aux donnes.
Indpendance vis--vis du chemin daccs aux donnes.

Bases de Donn
ees p.4

Disponibilit
Performance : tout utilisateur doit ignorer lexistence
dutilisateurs concurrents.

Bases de Donn
ees p.5

Disponibilit & Scurit


Performance : tout utilisateur doit ignorer lexistence
dutilisateurs concurrents.
Intgrit : protection contre la modification invalide des
donnes.

Bases de Donn
ees p.5

Disponibilit & Scurit


Performance : tout utilisateur doit ignorer lexistence
dutilisateurs concurrents.
Intgrit : protection contre la modification invalide des
donnes.
Confidentialit : protection contre laccs illgal aux
donnes.

Bases de Donn
ees p.5

Conception de BD
Rdaction en franais des besoins
(cahier des charges)

modle conceptuel entit-association

modle relationnel

Bases de Donn
ees p.6

Exemple
Cahier des charges :
On souhaite developper un syst`eme informatique de gestion de
vols partage par plusieurs compagnies aeriennes. Ce syst`eme
doit permettre de gerer laffectation des pilotes aux differents
vols `a assurer.

Bases de Donn
ees p.7

Exemple
Cahier des charges :
On souhaite developper un syst`eme informatique de gestion de
vols partage par plusieurs compagnies aeriennes. Ce syst`eme
doit permettre de gerer laffectation des pilotes aux differents
vols `a assurer.
Contraintes :
Un pilote ne peut pas se trouver dans deux avions au
mme moment.

Bases de Donn
ees p.7

Exemple
Cahier des charges :
On souhaite developper un syst`eme informatique de gestion de
vols partage par plusieurs compagnies aeriennes. Ce syst`eme
doit permettre de gerer laffectation des pilotes aux differents
vols `a assurer.
Contraintes :
Un pilote ne peut pas se trouver dans deux avions au
mme moment.
De mme, un instant donn, un avion ne peut assurer
quun vol.

Bases de Donn
ees p.7

Exemple
Cahier des charges :
On souhaite developper un syst`eme informatique de gestion de
vols partage par plusieurs compagnies aeriennes. Ce syst`eme
doit permettre de gerer laffectation des pilotes aux differents
vols `a assurer.
Contraintes :
Un pilote ne peut pas se trouver dans deux avions au
mme moment.
De mme, un instant donn, un avion ne peut assurer
quun vol.
Lors dun vol, il doit y avoir un pilote dans lavion.

Bases de Donn
ees p.7

Modle entit-association

Bases de Donn
ees p.8

Modle Entit-Association
Une entit est une reprsentation logique dun type.
Une entit peut tre reprsente par un ensemble dattributs
(comme lon dcrit une structure en ).

Bases de Donn
ees p.9

Modle Entit-Association
Une entit est une reprsentation logique dun type.
Une entit peut tre reprsente par un ensemble dattributs
(comme lon dcrit une structure en ).
Exemple :
Vol
num_vol
ville_dp
ville_arr
heure_dp

typedef struct VOL {


int num vol;
char* ville dep;
char* ville arr;
char* heure dep;
char* heure arr;
}

heure_arr
Bases de Donn
ees p.9

Modle Entit-Association
Une association relie des entits entre elles.
Dans une association, les entits jouent des rles
diffrents.

Bases de Donn
ees p.10

Modle Entit-Association
Une association relie des entits entre elles.
Dans une association, les entits jouent des rles
diffrents.
Pilote

.................................................................
..............
..........
.
.
.
.
.
.
.
.
.
........
.....
.
.
.
....
.
...
....
.
.
.
...
.
..
.

Effectue

Vol

num_pilote

date_vol

num_vol

nom

ville_dp

adresse

ville_arr
heure_dp
heure_arr
Bases de Donn
ees p.10

Modle Entit-Association
Une ou plusieurs instances dune mme entit peuvent
tre mises en relation avec une ou plusieurs instances
dune autre entit cardinalit dune association.

Bases de Donn
ees p.11

Modle Entit-Association
Une ou plusieurs instances dune mme entit peuvent
tre mises en relation avec une ou plusieurs instances
dune autre entit cardinalit dune association.

Pilote
num_pilote

1..N

......................................................................
.............
..........
.
.
.
.
.
.
.
.
.
.......
......
.
.
....
.
...
...
.
...
..
.

Effectue

date_vol

1..N

Vol
num_vol

nom

ville_dp

adresse

ville_arr
heure_dp
heure_arr
Bases de Donn
ees p.11

Cls
Chaque instance dune entit est caractrise par un
identificateur unique appel cl.
La cl peut tre compose dun ou plusieurs attributs.

Bases de Donn
ees p.12

Cls




Exemple :



Chaque instance dune entit est caractrise par un


identificateur unique appel cl.
La cl peut tre compose dun ou plusieurs attributs.

PILOTE

est une cl de lentit pilote.

num_pilote
1
2
3

nom
adresse
Dupond Nice
Smith
Londres
Garratt Perth

Bases de Donn
ees p.12

Modle relationnel

Bases de Donn
ees p.13

Modle Relationnel
cr en 1970 par le mathmaticien dIBM E.F. Codd.
fournit une description simple sous forme de relations
des entits et de certaines associations du schma
conceptuel.

Bases de Donn
ees p.14

Modle Relationnel
cr en 1970 par le mathmaticien dIBM E.F. Codd.
fournit une description simple sous forme de relations
des entits et de certaines associations du schma
conceptuel.
Une relation R D1 . . . Dn est un ensemble dattributs qui
peut tre reprsent par une table.
R = nom de la relation
Di = domaines de dfinition des attributs
n = cardinalit de la relation

Bases de Donn
ees p.14

Exemple
PILOTE

AVION

num_avion
10
20
30

num_pilote
1
2
3
construc.
Airbus
Boeing
Boeing

nom
adresse
Dupond Nice
Smith
Londres
Garratt Perth

type
A340
B747
B747

capacit
compagnie
228
Air France
432
British Airways
432
Qantas

Bases de Donn
ees p.15

Entit-Association Relationnel
chaque entit conduit une relation contenant tous les
attributs de lentit.




chaque association, sauf celles de cardinalit


,
conduit une relation contenant toutes les cls des
entits relies.

Bases de Donn
ees p.16

Entit-Association Relationnel
chaque entit conduit une relation contenant tous les
attributs de lentit.




chaque association, sauf celles de cardinalit


,
conduit une relation contenant toutes les cls des
entits relies.
Exemple :
PILOTE(num_pilote, nom, adresse)
VOL(num_vol, ville_dp, ville_arr, heure_dp, heure_arr)
EFFECTUE(num_pilote, num_vol, date_vol)

Bases de Donn
ees p.16

Cl Primaire
Une cl primaire dune relation est un attribut ou un
groupe dattributs de la relation qui identifie un tuple
unique.

Bases de Donn
ees p.17

Cl Primaire
Une cl primaire dune relation est un attribut ou un
groupe dattributs de la relation qui identifie un tuple
unique.
Une relation possde une et une seule cl primaire, mais
peut prsenter plusieurs cls qui pourraient jouer ce rle.

Bases de Donn
ees p.17

Cl Primaire
Une cl primaire dune relation est un attribut ou un
groupe dattributs de la relation qui identifie un tuple
unique.
Une relation possde une et une seule cl primaire, mais
peut prsenter plusieurs cls qui pourraient jouer ce rle.
cls primaires
PILOTE(num_pilote, nom, adresse)
VOL(num_vol, ville_dp, ville_arr, heure_dp, heure_arr)

Bases de Donn
ees p.17

Contrainte dIntgrit
Tout SGBD relationnel doit vrifier lunicit et le caractre dfini
(non nul) des valeurs de la cl primaire.

Bases de Donn
ees p.18

Valeur Nulle
Lors de linsertion de tuples dans une relation, il arrive
quun attribut soit inconnu ou non dfini. On introduit
alors une valeur conventionnelle, appele valeur nulle.
Une cl primaire ne peut pas avoir une valeur nulle.

Bases de Donn
ees p.19

Cl trangre
Une cl trangre dans une relation est une cl primaire dans
une autre relation.

Bases de Donn
ees p.20

Cl trangre
Une cl trangre dans une relation est une cl primaire dans
une autre relation.
cls trangres
EFFECTUE(num_pilote, num_vol, date_vol)
|
{z
}
cl primaire
Rappel : toute relation doit avoir une cl primaire qui peut tre
compose de plusieurs attributs. La cl primaire de la relation
EFFECTUE est le couple (num_pilote, num_vol).
Bases de Donn
ees p.20

Cl trangre
AVION num_avion
10
20
30
MODLE

type
compagnie
A340
Air France
B747 British Airways
B747
Qantas

type construc.
A340
Airbus
B747 Boeing

capacit
228
432

type est la cl primaire de la relation MODLE et une cl


trangre de la relation AVION.

Bases de Donn
ees p.21

CI de Rfrence
Lors de linsertion dun tuple dans EFFECTUE, le
systme doit vrifier que la valeur de num_pilote existe
bien dans PILOTE (de mme pour num_vol dans VOL).
Lors de la suppression dun tuple dans PILOTE, 4 types
de contrles peuvent tre effectus :
interdire la suppression si num_pilote existe dans
EFFECTUE
supprimer ces valeurs
avertir lutilisateur dune incohrence
remplacer ces valeurs par la valeur nulle

Bases de Donn
ees p.22

Normalisation

Bases de Donn
ees p.23

Normalisation
Objectifs : viter
la redondance, cest--dire la duplication dinformations.
les incohrences par ajout.
la perte dinformations par suppression.

Bases de Donn
ees p.24

Dpendances Fonctionnelles
Soit R(X, Y, Z) une relation.
Si une valeur de X nest associe quune seule valeur de Y ,
X dtermine Y (X Y ).
On dit encore que Y dpend fonctionnellement de X.

Bases de Donn
ees p.25

Axiomes dArmstrong
Soit un ensemble F de dpendances fonctionnelles entre les
attributs dune relation R. On peut dduire dautres
dpendances en utilisant les axiomes dArmstrong :
r
eflexivit
e : si X contient Y , alors X Y .
transitivit
e : si X Y et Y Z, alors X Z.
augmentation : si X Y , alors XZ Y pour tout
groupe Z dattributs de la relation.

Bases de Donn
ees p.26

Axiomes dArmstrong
Soit un ensemble F de dpendances fonctionnelles entre les
attributs dune relation R. On peut dduire dautres
dpendances en utilisant les axiomes dArmstrong :
r
eflexivit
e : si X contient Y , alors X Y .
transitivit
e : si X Y et Y Z, alors X Z.
augmentation : si X Y , alors XZ Y pour tout
groupe Z dattributs de la relation.
Autres rgles, dduites des axiomes :
union : si X Y et Y Z, alors X Y Z.
pseudo-transitivit
e : si X Y et W Y Z, alors
W X Z.
d
ecomposition : si X Y et Y contient Z, alors X Z.
Bases de Donn
ees p.26

re

Forme Normale

Une relation est en 1re forme normale si et seulement si elle


ne contient que des valeurs atomiques.

Bases de Donn
ees p.27

Exemple
AVION construc.
Airbus
Boeing

type
A340

capacit
228

B747

432

compagnie
Air France
British Airways
Qantas

La relation AVION nest pas en 1re forme normale.

Bases de Donn
ees p.28

Exemple
AVION construc.
Airbus
Boeing

type
A340

capacit
228

B747

432

compagnie
Air France
British Airways
Qantas

La relation AVION nest pas en 1re forme normale.


AVION1

construc.
Airbus
Boeing
Boeing

type
A340
B747
B747

capacit
compagnie
228
Air France
432
British Airways
432
Qantas

La relation AVION1 est en 1re forme normale.


Bases de Donn
ees p.28

me

Forme Normale

Une relation est en 2me forme normale si et seulement si :


elle est en 1re forme normale et
tout attribut nappartenant pas la cl ne dpend pas
dune partie de la cl.

Bases de Donn
ees p.29

Exemple
AVION

num_avion
10
20
30

construc.
Airbus
Boeing
Boeing

type
A340
B747
B747

capacit
compagnie
228
Air France
432
British Airways
432
Qantas

Dpendances fonctionnelles :
num_avion type,
type capacit,
type constructeur,
num_avion compagnie
La relation AVION nest pas en 2me forme normale.
Bases de Donn
ees p.30

Exemple
AVION

num_avion
10
20
30

construc.
Airbus
Boeing
Boeing

type
A340
B747
B747

capacit
compagnie
228
Air France
432
British Airways
432
Qantas

Dpendances fonctionnelles :
num_avion type,
type capacit,
type constructeur,
num_avion compagnie
La relation AVION est en 2me forme normale.
Bases de Donn
ees p.31

me

Forme Normale

Une relation est en 3me forme normale si et seulement si :


elle est en 2me forme normale et
tout attribut nappartenant pas la cl ne dpend pas
dun attribut non cl.

Bases de Donn
ees p.32

Exemple
AVION

num_avion
10
20
30

construc.
Airbus
Boeing
Boeing

type
A340
B747
B747

capacit
compagnie
228
Air France
432
British Airways
432
Qantas

Dpendances fonctionnelles :
num_avion type,
type capacit,
type constructeur,
num_avion compagnie
La relation AVION nest pas en 3me forme normale.
Bases de Donn
ees p.33

Exemple
AVION num_avion
10
20
30

type
compagnie
A340
Air France
B747 British Airways
B747
Qantas

MODLE

type construc. capacit


A340
Airbus
228
B747 Boeing
432
Dpendances fonctionnelles :
num_avion type,
num_avion compagnie,
type constructeur,
type capacit
AVION et MODLE sont en 3me forme normale.
Bases de Donn
ees p.34

Forme Normale de Boyce-Codd


Une dpendance fonctionnelle X Y est lmentaire si et
seulement si X 0 X : X 0 6 Y .
Une relation est en BCNF si :
elle est en 3me forme normale et
les seules dpendances fonctionnelles lmentaires sont
celles o une cl dtermine un attribut.
Toute relation admet une dcomposition en BCNF sans perte
dinformation.

Bases de Donn
ees p.35

Algorithme de Dcomposition
1. pour chaque dpendance fonctionnelle X A, crer une
relation Ri (X, A)
2. sil y a plusieurs dpendances fonctionnelles
X A1 , X A2 , . . . , X An , regrouper tous ces
attributs dans une seule relation Rj (X, A1 , A2 , . . . , An )
3. crer une relation pour tous les attributs napparaissant
pas dans celles obtenues jusqu prsent.

Bases de Donn
ees p.36

Exemple
Dpendances fonctionnelles :
num_avion type,
type capacit,
type constructeur,
num_avion compagnie

Bases de Donn
ees p.37

Exemple
Dpendances fonctionnelles :
num_avion type,
type capacit,
type constructeur,
num_avion compagnie
1. R1 (num_avion, type)
R2 (type, capacit)
R3 (type, constructeur)
R4 (num_avion, compagnie)

Bases de Donn
ees p.37

Exemple
Dpendances fonctionnelles :
num_avion type,
type capacit,
type constructeur,
num_avion compagnie
1. R1 (num_avion, type)
R2 (type, capacit)
R3 (type, constructeur)
R4 (num_avion, compagnie)
2. R1 R4 (num_avion, type, compagnie)
R2 R3 (type, capacit, constructeur)

Bases de Donn
ees p.37

Rgles sur les Relations


1. chaque attribut est atomique
2. chaque tuple est unique (les doublons ne sont pas
autoriss)
3. lordre des attributs na pas de signification
4. lordre des tuples na pas de signification
5. chaque attribut prend ses valeurs dans un seul domaine
6. un domaine peut correspondre plusieurs attributs

Bases de Donn
ees p.38

Algbre relationnelle

Bases de Donn
ees p.39

Algbre Relationnelle
Lalgbre relationnelle utilise une collection doprateurs qui
agissent sur des relations et produisent des relations comme
rsultat.

Bases de Donn
ees p.40

Algbre Relationnelle
Lalgbre relationnelle utilise une collection doprateurs qui
agissent sur des relations et produisent des relations comme
rsultat.
Oprateurs :
unaires : projection, slection
ensemblistes : union, produit, diffrence, intersection
binaires (ou n-aires) : jointure, division

Bases de Donn
ees p.40

Projection
La projection dune relation R sur un ensemble dattributs {Ai }
de R est un sous-ensemble de R rduit aux sous-tuples ne
contenant que les attributs de {Ai }.
Suppression dans les tuples de tous les attributs
nappartenant pas {Ai }, puis suppression des doublons.
Notation : A1 ,...,An (nom-relation)

Bases de Donn
ees p.41

Exemple
AVION

num_avion
10
20
30

construc.
Airbus
Boeing
Boeing

type
A340
B747
B747

capacit
compagnie
228
Air France
432
British Airways
432
Qantas

Quels sont les diffrents types davions?

Bases de Donn
ees p.42

Exemple
AVION

num_avion
10
20
30

construc.
Airbus
Boeing
Boeing

type capacit
A340
228
B747
432
B747
432

compagnie
Air France
British Airways
Qantas

Quels sont les diffrents types davions?

Bases de Donn
ees p.43

Exemple
AVION

num_avion
10
20
30

construc.
Airbus
Boeing
Boeing

type capacit
A340
228
B747
432
B747
432

compagnie
Air France
British Airways
Qantas

Quels sont les diffrents types davions?


type (AVION)

type
A340
B747

Bases de Donn
ees p.43

Slection
La slection sur une relation R suivant une qualification Q
portant sur des attributs de R est un sous-ensemble de R
dont les tuples satisfont Q.
Notation : Q (nom-relation)

Bases de Donn
ees p.44

Exemple
AVION

num_avion
10
20
30

construc.
Airbus
Boeing
Boeing

type
A340
B747
B747

capacit
compagnie
228
Air France
432
British Airways
432
Qantas

Quels avions peuvent accueillir au moins 300 passagers?

Bases de Donn
ees p.45

Exemple
AVION

num_avion
10
20
30

construc.
Airbus
Boeing
Boeing

type capacit
compagnie
A340
228
Air France
B747
432
British Airways
B747
432
Qantas

Quels avions peuvent accueillir au moins 300 passagers?

Bases de Donn
ees p.46

Exemple
AVION

num_avion
10
20
30

construc.
Airbus
Boeing
Boeing

type capacit
compagnie
A340
228
Air France
B747
432
British Airways
B747
432
Qantas

Quels avions peuvent accueillir au moins 300 passagers?

capacit300 (AVION)

Bases de Donn
ees p.46

Union
Lunion est une opration ensembliste portant sur 2 relations
R1 et R2 de mme schma. R1 R2 est la relation de mme
schma contenant les tuples de R1 et ceux de R2 .
Copie des tuples de R1 et de R2 , puis suppression des doublons.

Bases de Donn
ees p.47

Exemple
P_AF

num

nom

adresse

Dupond

Nice

Smith

Garratt

P_BA

num

nom

adresse

Garratt

Perth

Londres

Durand

Paris

Perth

MacMachin

Glasgow

Quels sont tous les pilotes?

Bases de Donn
ees p.48

Exemple
P_AF

num

nom

adresse

Dupond

Nice

Smith

Garratt

P_BA

num

nom

adresse

Garratt

Perth

Londres

Durand

Paris

Perth

MacMachin

Glasgow

Quels sont tous les pilotes?


P_AFP_BA

num

nom

adresse

Dupond

Nice

Smith

Londres

Garratt

Perth

Durand

Paris

MacMachin

Glasgow
Bases de Donn
ees p.48

Produit
Le produit est une opration ensembliste portant sur 2
relations R1 et R2 . R1 R2 est la relation ayant pour schma
la concatnation des schmas de R1 et R2 , et pour tuples
toutes les combinaisons de tuples de R1 et R2 .
Lopration produit nest que trs rarement utilise.

Bases de Donn
ees p.49

Exemple
R1

a1

b1

c1

d1

e1

a2

b2

c2

d2

e2

a3

b3

c3

R2

Bases de Donn
ees p.50

Exemple
R1

a1

b1

a2
a3
R1 R2

c1

d1

e1

b2

c2

d2

e2

b3

c3

R2

a1

b1

c1

d1

e1

a1

b1

c1

d2

e2

a2

b2

c2

d1

e1

a2

b2

c2

d2

e2

a3

b3

c3

d1

e1

a3

b3

c3

d2

e2
Bases de Donn
ees p.50

Diffrence
La diffrence est une opration ensembliste portant sur 2 relations R1 et R2 de mme schma. R1 R2 est la relation ayant le
mme schma que R1 et R2 , et pour tuples ceux appartenant
R1 et pas R2 .

Bases de Donn
ees p.51

Exemple
P_AF

num

nom

adresse

Dupond

Nice

Smith

Garratt

P_BA

num

nom

adresse

Garratt

Perth

Londres

Durand

Paris

Perth

MacMachin

Glasgow

Quels sont les pilotes dAir France ne travaillant pas pour British Airways?

Bases de Donn
ees p.52

Exemple
P_AF

num

nom

adresse

Dupond

Nice

Smith

Garratt

P_BA

num

nom

adresse

Garratt

Perth

Londres

Durand

Paris

Perth

MacMachin

Glasgow

Quels sont les pilotes dAir France ne travaillant pas pour British Airways?
P_AFP_BA

num

nom

adresse

Dupond

Nice

Smith

Londres

Bases de Donn
ees p.52

Intersection
Lintersection est une opration ensembliste portant sur 2 relations R1 et R2 de mme schma. R1 R2 est la relation ayant le
mme schma que R1 et R2 , et pour tuples ceux appartenant
la fois R1 et R2 .

Bases de Donn
ees p.53

Exemple
P_AF

num

nom

adresse

Dupond

Nice

Smith

Garratt

P_BA

num

nom

adresse

Garratt

Perth

Londres

Durand

Paris

Perth

MacMachin

Glasgow

Quels sont les pilotes travaillant pour Air France et British Airways?

Bases de Donn
ees p.54

Exemple
P_AF

num

nom

adresse

Dupond

Nice

Smith

Garratt

P_BA

num

nom

adresse

Garratt

Perth

Londres

Durand

Paris

Perth

MacMachin

Glasgow

Quels sont les pilotes travaillant pour Air France et British Airways?
P_AFP_BA

num
3

nom

adresse

Garratt

Perth

Bases de Donn
ees p.54

Jointure
La jointure est une opration ensembliste portant sur 2 relations R1 et R2 . R1 o
nattributs R2 est la relation dont les attributs
sont ceux de R1 et ceux de R2 , et dont les tuples sont obtenus
en composant un tuple de R1 et un tuple de R2 ayant la mme
valeur pour les attributs prciss.

Bases de Donn
ees p.55

Exemple
AVION

num_avion

type

compagnie

10

A340

Air France

20

B747

British Airways

30

B747

Qantas

type

construc.

capacit

A340

Airbus

228

B747

Boeing

432

MODLE

Bases de Donn
ees p.56

Exemple
AVION

num_avion

type

compagnie

10

A340

Air France

20

B747

British Airways

30

B747

Qantas

type

construc.

capacit

A340

Airbus

228

B747

Boeing

432

MODLE

AVIONo
ntype MODLE

num_avion

type

compagnie

construc.

capacit

10

A340

Air France

Airbus

228

20

B747

British Airways

Boeing

432

30

B747

Qantas

Boeing

432

Bases de Donn
ees p.56

Autres Jointures
La jointure naturelle est une opration ensembliste
portant sur 2 relations R1 et R2 . R1 o
n R2 est la relation
dont les attributs sont ceux de R1 et ceux de R2 , et dont
les tuples sont obtenus en composant un tuple de R1 et
un tuple de R2 ayant la mme valeur pour les attributs
communs aux deux relations.
La jointure extrieure est similaire la jointure naturelle,
mais conserve galement les occurrences dune relation
qui nont pas de correspondant dans lautre relation. Elle
associe aux attributs non renseigns la valeur nulle.

Bases de Donn
ees p.57

Exemple
AVION

num_avion

type

compagnie

20

B747

British Airways

30

B747

Qantas

type

construc.

capacit

A340

Airbus

228

B747

Boeing

432

MODLE

Bases de Donn
ees p.58

Exemple
AVION

num_avion

type

compagnie

20

B747

British Airways

30

B747

Qantas

type

construc.

capacit

A340

Airbus

228

B747

Boeing

432

MODLE

AVIONo
next MODLE

num_avion

type

compagnie

construc.

capacit

20

B747

British Airways

Boeing

432

30

B747

Qantas

Boeing

432

A340

Airbus

228

Bases de Donn
ees p.58

Combinaisons dOprations
AVION

num_avion

type

compagnie

10

A340

Air France

20

B747

British Airways

30

B747

Qantas

type

construc.

capacit

A340

Airbus

228

B747

Boeing

432

MODLE

Quelle est la capacit des avions de Qantas?

Bases de Donn
ees p.59

Combinaisons dOprations
AVION

num_avion

type

compagnie

10

A340

Air France

20

B747

British Airways

30

B747

Qantas

type

construc.

capacit

A340

Airbus

228

B747

Boeing

432

MODLE

Quelle est la capacit des avions de Qantas?


r1 = compagnie=Qantas (AVION)

Bases de Donn
ees p.60

Combinaisons dOprations
AVION

num_avion

type

compagnie

10

A340

Air France

20

B747

British Airways

30

B747

Qantas

type

construc.

capacit

A340

Airbus

228

B747

Boeing

432

MODLE

Quelle est la capacit des avions de Qantas?


r1 = compagnie=Qantas (AVION), r2 = type r1

Bases de Donn
ees p.61

Combinaisons dOprations
AVION

num_avion

type

compagnie

10

A340

Air France

20

B747

British Airways

30

B747

Qantas

type

construc.

capacit

A340

Airbus

228

B747

Boeing

432

MODLE

Quelle est la capacit des avions de Qantas?


n MODLE
r1 = compagnie=Qantas (AVION), r2 = type r1 , r3 = r2 o
r3

type

construc.

capacit

B747

Boeing

432
Bases de Donn
ees p.62

Combinaisons dOprations
AVION

num_avion

type

compagnie

10

A340

Air France

20

B747

British Airways

30

B747

Qantas

type

construc.

capacit

A340

Airbus

228

B747

Boeing

432

MODLE

Quelle est la capacit des avions de Qantas?


n MODLE
r1 = compagnie=Qantas (AVION), r2 = type r1 , r3 = r2 o
r4

type

construc.

capacit

B747

Boeing

432

r4 = capacit (r3 )

Bases de Donn
ees p.63

SQL

Bases de Donn
ees p.64

SQL Introduction
langage relationnel permettant de :
dfinir et modifier le schma dune base de donnes
relationnelle
interroger et modifier une base de donnes
relationnelle
contrler la scurit et lintgrit de la base
langage interactif ou intgr dans un langage de
programmation

Bases de Donn
ees p.65

SQL Concepts Structurels


Modle relationnel
relation
domaine
attribut
tuple
cl primaire
cl trangre

Standard SQL
table
domain
column
line
primary key
references

Bases de Donn
ees p.66

Structure Gnrale du Langage


SQL est un langage relationnel on manipule des tables et
on obtient des tables
Une instruction SQL = une requte
3 familles doprations :
LDD = Langage de Dfinition des Donnes : description
de la structure de la base de donnes (tables, attributs)
LMD = Langage de Manipulation de Donnes :
manipulation des tables
LCD = Langage de Contrle des Donnes : gestion du
contrle et de la scurit de la base de donnes

Bases de Donn
ees p.67

Cration dune Table


CREATE TABLE nomtable(
{nomcolonne type [contrainte_colonne [...]]
| contrainte_table} [,...]
)







"

! 


















contrainte_colonne peut tre :

contrainte_table est :
FOREIGN KEY(r
ef
erence_colonne) REFERENCES r
ef
erence_table
Bases de Donn
ees p.68

Exemple
CREATE TABLE Pilote(
num_pilote smallint PRIMARY KEY,
nom varchar(20), adresse varchar(30));
CREATE TABLE Avion(
num_avion smallint PRIMARY KEY,
type varchar(10), constructeur varchar(20),
capacite smallint, compagnie varchar(30));
CREATE TABLE Vol(
num_vol varchar(10) PRIMARY KEY,
num_pilote smallint,
num_avion smallint,
ville_dep varchar(10), ville_arr varchar(10),
heure_dep time, heure_arr time, date_vol date,
FOREIGN KEY(num_pilote) REFERENCES Pilote,
FOREIGN KEY(num_avion) REFERENCES Avion);
Bases de Donn
ees p.69

Exemple
CREATE TABLE Vol(
num_vol varchar(10) PRIMARY KEY,
num_pilote smallint REFERENCES Pilote,
num_avion smallint REFERENCES Avion,
ville_dep varchar(10), ville_arr varchar(10),
heure_dep time, heure_arr time, date_vol date);

Bases de Donn
ees p.70

Contraintes
Les contraintes permettent dexprimer des conditions devant
tre respectes par tous les tuples dune table.

Bases de Donn
ees p.71

Contraintes de Domaine

: lattribut doit possder une valeur









Les contraintes de domaine expriment les valeurs que


peuvent prendre un attribut :

dfini)

: valeur par dfaut de lattribut (quand il nest pas





: deux tuples ne peuvent pas avoir la mme


valeur pour cet attribut


: spcifie une condition devant tre satisfaite par


tous les tuples de la table

Bases de Donn
ees p.72

Contraintes Exemple
create table avion(
num_avion smallint primary key,
type varchar(10) not null,
constructeur varchar(20) not null,
capacite smallint check(capacite>0),
compagnie varchar(30) not null
);

Bases de Donn
ees p.73

!

%

 


!

 







Modification dune table :

$



Suppression dune table :

$

Suppression/Modification

Bases de Donn
ees p.74

Insertion de Tuples
INSERT INTO table [(column [,...])] {
DEFAULT VALUES | VALUES (expression [,...])}
Exemple :
INSERT INTO Avion(num_avion, type, constructeur,
capacite, compagnie)
values (2,B707,Boeing,150,Qantas);
INSERT INTO Avion(num_avion, constructeur, capacite,
compagnie) values (3,Boeing,150,Air France);
INSERT INTO Avion
values (4,A320,Airbus,450, Air France);
INSERT INTO Avion values (5,A320,Airbus);
INSERT INTO Avion values (6,A320,null,null,null);
INSERT INTO Avion
values (8,B737,Boeing,350, Air France);
Bases de Donn
ees p.75

Rsultat
Avion=# select * from Avion;
num_avion | type | constructeur | capacite | compagnie
-----------+------+--------------+----------+-----------2 | B707 | Boeing
|
150 | Qantas
3 |
| Boeing
|
150 | Air France
4 | A320 | Airbus
|
450 | Air France
5 | A320 | Airbus
|
|
6 | A320 |
|
|
8 | B737 | Boeing
|
350 | Air France
(5 rows)

Bases de Donn
ees p.76

Mise Jour
UPDATE table SET col=expression [,...]
[FROM fromlist]
[WHERE condition]

Loption

Exemple :
UPDATE Vol SET date_vol=07/02/2004 WHERE num_vol=BA302;
permet deffectuer la mise jour partir dune

autre table.

Bases de Donn
ees p.77

Suppression
DELETE FROM table [WHERE condition]
Exemple :
DELETE FROM Avion WHERE num_avion=6;

Bases de Donn
ees p.78

SELECT [ALL | DISTINCT [ON (expression [,...])]]


* | expression [AS nom_sortie] [,...]
[FROM table [,...]]
[WHERE condition]

Bases de Donn
ees p.79

Projection
'

&

Pour faire une projection, on utilise


en dsignant les
attributs sur lesquels la projection est effectue.
Exemple : Quels sont les diffrents types davions?
type Avion
select type from Avion;
Rsultat :
type
-----B707
A320
A320
A320
B737
B747

Bases de Donn
ees p.80

Projection sans Doublon


select distinct type from Avion;
Rsultat :
type
-----B707
A320
B737
B747

Bases de Donn
ees p.81

Slection




(#

La clause
permet de spcifier un critre de
slection, appel prdicat. Si un tuple satisfait le
prdicat, il fera partie du rsultat.





Le prdicat est une expression logique compose dune


suite de conditions combines par les oprateurs
logiques
,
ou
.

/

! 



&

.

%
,-

*+

Un lment dune expression peut prendre une des


formes suivantes :
comparaison une valeur : , , , , ,
comparaison une fourchette de valeurs :
comparaison une liste de valeurs :
comparaison un filtre
,
test sur lindtermination dune valeur :
Bases de Donn
ees p.82
test tous ou au moins un :
,

Exemple
num_vol | ... | heure_dep | heure_arr | date_vol
---------------------------------------------------AF1232 | ... | 15:30:00 | 22:00:00 | 2004-01-01
BA302 | ... | 09:15:00 | 16:54:00 | 2004-01-20
QT17
| ... | 14:30:00 | 15:30:00 | 2004-01-18
Quels sont les vols partant entre 14h et 18h?
select * from Vol where heure_dep between 14 and 18;
Rsultat :
Vol=#
num_vol | ... | heure_dep | heure_arr | date_vol
---------------------------------------------------AF1232 | ... | 15:30:00 | 22:00:00 | 2004-01-01
QT17
| ... | 14:30:00 | 15:30:00 | 2004-01-18
Bases de Donn
ees p.83

Autres Exemples
select * from Vol where ville_dep in (Londres,Paris);
select * from Pilote where nom ~ ^D;
select * from Pilote where adresse is null;

Bases de Donn
ees p.84

Tri des Tuples

0

0

suivie



Pour trier le rsultat, on utilise la clause


ventuellement de
(tri ascendant) ou
descendant).



Si rien nest prcis, les tuples apparaissent dans lordre


dans lequel ils ont t trouvs.
(tri

Exemple :
Quels sont les avions nappartenant pas la compagnie
Qantas dont la capacit est infrieure 400 passagers, avec
leur type et leur compagnie, et tris par numro davion
dcroissant?
select num_avion, type, compagnie from Avion
where capacite<400 and compagnie!=Qantas
order by num_avion desc;
Bases de Donn
ees p.85

Jointure

'

&

citer les attributs recherchs dans la clause

Pour effectuer une jointure, il suffit de :


,

"

prciser dans la clause


la condition dgalit entre
les attributs sur lesquels la jointure est faite
Exemple : Quel est le nom du pilote qui a assur le vol
LondresParis de 09:15?
select Pilote.nom from Pilote,Vol
where Pilote.num_pilote=Vol.num_pilote
and ville_dep=Londres
and ville_arr=Paris
and heure_dep=09:15;

Bases de Donn
ees p.86

Jointure Naturelle






La jointure naturelle
permet de ne pas spcifier
les attributs sur lesquels la jointure est effectue.
Exemple : Quels sont les diffrentes combinaisons davions et
de pilotes utilises sur les vols?
select distinct nom,num_avion
from avion natural join vol natural join pilote;
nom
| num_avion
-----------+----------Dupond
|
4
Garrat
|
2
Garrat
|
20
MacMachin |
20
Smith
|
2
Bases de Donn
ees p.87

Union

'

&

effectue lunion des rsultats de deux


en liminant les doublons parmi les tuples.



Loprateur
requtes

'

"

&

/!

,"

&

"

&

3
"
&

"

"

Exemple : Quels sont les avions d


assurant des
vols pour
et ceux de
assurant des
vols pour
?
select avion.* from avion,vol
where avion.compagnie=Air France
and avion.num_avion=vol.num_avion
and vol.ville_arr=Paris
union
select avion.* from avion,vol
where avion.compagnie=British Airways
and avion.num_avion=vol.num_avion
and vol.ville_arr=Londres;
Bases de Donn
ees p.88



effectue lintersection des rsultats de

'

&



Loprateur
deux requtes

Intersection

&

"

&

"

Exemple : Quels sont les avions assurant la fois des vols


pour
et pour
?
select avion.* from avion,vol
where avion.num_avion=vol.num_avion
and vol.ville_arr=Londres
intersect
select avion.* from avion,vol
where avion.num_avion=vol.num_avion
and vol.ville_arr=Paris;

Bases de Donn
ees p.89



effectue la diffrence des rsultats de deux

'

&

4

Loprateur
requtes

Diffrence

"

&

&

"

Exemple : Quels sont les avions assurant des vols pour


mais pas pour
?

select avion.* from avion,vol


where avion.num_avion=vol.num_avion
and vol.ville_arr=Londres
except
select avion.* from avion,vol
where avion.num_avion=vol.num_avion
and vol.ville_arr=Paris;

Bases de Donn
ees p.90

avec un
ou
.


"


La requte se place dans la clause


oprateur de comparaison suivi de

et

: la condition est vraie si et seulement si elle est vraie


pour toutes les valeurs produites.


: la condition est vraie si et seulement si elle est vraie


pour au moins une valeur produite.

Bases de Donn
ees p.91

: Exemple
5

"
%
&

Quels sont les types davions du constructeur


dont la
capacit est suprieure celle dau moins un avion du
constructeur
?
select distinct avion.type from avion
where avion.constructeur=Boeing
and avion.capacite > ANY
(select avion.capacite from avion
where avion.constructeur=Airbus);

Bases de Donn
ees p.92

: Exemple
5

"
%
&

Quels sont les types davions du constructeur


dont la
capacit est suprieure celle de tous les avions du
constructeur
?
select avion.type from avion
where avion.constructeur=Boeing
and avion.capacite > ALL
(select avion.capacite from avion
where avion.constructeur=Airbus);

Bases de Donn
ees p.93

... where exists (select...);


La condition est vrifie si la requte imbrique renvoie au
moins un tuple.

Bases de Donn
ees p.94

: Exemples

Quels sont les avions qui assurent au moins un vol pour


Londres?
select * from avion
where exists (select * from vol
where vol.num_avion=avion.num_avion
and ville_arr=Londres);
Quels sont les avions qui nassurent pas de vol pour Londres?
select * from avion
where not exists (select * from vol
where vol.num_avion=avion.num_avion
and ville_arr=Londres);
Bases de Donn
ees p.95

Autres Jointures

Bases de Donn
ees p.96

ralise le produit cartsien de deux


2

La clause
tables.

0

Produit Cartsien

nest que trs rarement utilise.

&

&


"

'

La clause

Exemple :
select * from Pilote cross join Avion;

Bases de Donn
ees p.97







#8







Les clauses
,
et
permettent de raliser des jointures extrieures.



Jointures Extrieures

Exemple : Quels sont les pilotes neffectuant pas de vol?


select nom,num_vol
from pilote left outer join vol
on vol.num_pilote=pilote.num_pilote;
nom
| num_vol
-----------+--------Dupond
| AF1232
Dupond
| AF2321
Smith
| QT71
Garrat
| QT17
Garrat
| BA302
Durand
|
Bases de Donn
ees p.98
MacMachin | BA203

Exemple (suite)
select nom
from pilote left outer join vol
on vol.num_pilote=pilote.num_pilote
where num_vol is null;
nom
-------Durand

Bases de Donn
ees p.99

Auto-Jointure
Une auto-jointure permet de trater une requte comportant un
critre comparant la valeur dun attribut avec celle du mme
attribut dans un autre tuple de la mme table.

Bases de Donn
ees p.100

Exemple
Quels sont les numros des vols dont lheure de dpart est
aprs celle du vol Sydney-Perth?
select tard.num_vol,tard.heure_dep,SP.heure_dep
from vol as tard join vol as SP
on tard.heure_dep>SP.heure_dep
where SP.ville_dep=Sydney
and SP.ville_arr=Perth;
num_vol | heure_dep | heure_dep
---------+-----------+----------AF1232 | 15:30:00 | 14:30:00
BA203
| 15:15:00 | 14:30:00
AF2321 | 16:30:00 | 14:30:00
Bases de Donn
ees p.101

Fonctions sur les Attributs




1
!:

'

1
!:

: renvoie la longueur de

'

8




Fonctions portant sur les chanes de caractres :


.

";

5



!:
!:

en minuscules.




'

'
"

%

en majuscules.

'

'

1
'
9


!:

: convertit la

;
!:

: convertit la

9


'

'

!:

'

&


&


5

%

<


"

'


"

&

la sous-chane de
et ayant

: extrait
commenant la position
caractres.
<

89
0


"

&


"

'

!:

9

0

: cherche la
de
caractres dans la chane
. Si elle est trouve, sa
position est retourne, sinon 0 est renvoy.


"

&

>

'

'

1
!:

'

1
!:

<

4

<

: extrait un lment
dune chane source telle que date ou heure.
: concatnation des deux
chanes.
Bases de Donn
ees p.102

Exemple
select compagnie,
position(an in compagnie),
char_length(compagnie),
substring(compagnie from 5 for 3)
from avion where compagnie is not null;
compagnie
| position | char_length | substring
-----------------+----------+-------------+----------Qantas
|
2 |
6 | as
Air France
|
7 |
10 | Fra
Air France
|
7 |
10 | Fra
British Airways |
0 |
15 | ish
Qantas
|
2 |
6 | as
Air France
|
7 |
10 | Fra
Bases de Donn
ees p.103

Exemple
select nom,
prenom,
upper(nom)|| ||lower(prenom) as nom_prenom
from pilote
order by nom_prenom asc;
nom
| prenom |
nom_prenom
-----------+----------+----------------Dupond
| Laurent | DUPOND laurent
Durand
| Fr
ed
eric | DURAND fr
ed
eric
Garrat
| Jo
| GARRAT jo
MacMachin | Allan
| MACMACHIN allan
Smith
| Wendy
| SMITH wendy

Bases de Donn
ees p.104

Autres fonctions


?&

De nombreuses fonctions sont disponibles. Leur liste


peut-tre obtenue (dans
) en tapant \df.
Exemple :
select num_avion,sqrt(float8(capacite))
from avion where capacite is not null;
num_avion |
sqrt
-----------+-----------------2 | 12.2474487139159
4 | 21.2132034355964
8 | 18.7082869338697
20 | 20.7846096908265
30 | 20.7846096908265
10 | 15.0996688705415
Bases de Donn
ees p.105

Groupes

Bases de Donn
ees p.106

Groupes
Un groupe est un sous-ensemble des tuples dune table ayant
la mme valeur pour un attribut.
Exemple : On peut grouper les avions selon leur type.

Bases de Donn
ees p.107

: compte le nombre doccurrences de lattribut.

: calcule la somme des valeurs de lattribut.





Fonctions sur les Groupes

: recherche la plus petite valeur de lattribut.

4


: recherche la plus grande valeur de lattribut.



@
8

: calcule la moyenne des valeurs de lattribut.

Bases de Donn
ees p.108

Dtermination des Groupes






8

Un groupe est dtermin par la clause


suivie
du nom de lattribut sur lequel seffectue le regroupement.




8

La clause
rarrange la table rsultat dun
par groupes.




8

Lorsquune clause
est prcise, on peut utiliser
des fonctions portant sur les groupes.




8

Si la clause
nest pas utilise, le groupe est
constitu de tous les tuples.

Bases de Donn
ees p.109

Exemples



"

Exemple sans
: Combien y a-t-il davions?
select count(*) from avion;
count
------7
%/




"

Exemple avec
: Combien y a-t-il davions de chaque
type?
select type,count(*) from avion group by type;
type | count
------+------A320 |
2
A340 |
1
B707 |
1
B737 |
1
Bases de Donn
ees p.110
B747 |
2
%/

Exemples
Quelle est la capacit moyenne des avions?
select avg(capacite) from avion;
avg
---------------340.3333333333

Bases de Donn
ees p.111

est lquivalent du

appliqu aux



(#

8


@

La clause
groupes.

Clause

@

Le critre spcifi dans la clause


porte sur la
valeur dune fonction calcule sur un groupe.
Exemple : Quelles sont les compagnies possdant au moins
deux avions?
select compagnie, count(*) from avion
group by compagnie having count(*)>=2;
compagnie | count
------------+------Air France |
3
Qantas
|
2
Bases de Donn
ees p.112

Vues

Bases de Donn
ees p.113

Vues
Lutilisation de vues permet de donner lutilisateur une
version simplifie des tables pour :
faciliter laccs la base de donnes
grer la scurit des donnes

Bases de Donn
ees p.114

Vues
Lutilisation de vues permet de donner lutilisateur une
version simplifie des tables pour :
faciliter laccs la base de donnes
grer la scurit des donnes
Une vue est un sous-ensemble tuples-attributs de tables de la
base de donnes.

Bases de Donn
ees p.114

Vues
Lutilisation de vues permet de donner lutilisateur une
version simplifie des tables pour :
faciliter laccs la base de donnes
grer la scurit des donnes
Une vue est un sous-ensemble tuples-attributs de tables de la
base de donnes.
Une vue est dynamique : cest une sorte de table virtuelle.
Une fois cre, la vue est accessible comme toute autre table.
Elle est stocke sous forme de requte.

Bases de Donn
ees p.114

La cration dune vue seffectue laide de la clause


.



Cration dune Vue

&

"


>

Exemple : Crer une vue de nom


des avions de la
compagnie Air France ayant Paris pour destination.
create view AF2Paris as
select avion.num_avion,avion.type,avion.constructeur,
avion.capacite,vol.num_vol from avion,vol
where avion.compagnie=Air France
and avion.num_avion=vol.num_avion
and vol.ville_arr=Paris;
select * from AF2Paris;
num_avion | type | constructeur | capacite | num_vol
-----------+------+--------------+----------+--------4 | A320 | Airbus
|
450 | AF2321
Bases de Donn
ees p.115



Pour supprimer une vue, on utilise la clause

Suppression dune Vue


Exemple :
drop view AF2Paris;

Bases de Donn
ees p.116

Utilisation dune vue


Les requtes seffectuent comme sur les tables.
Il ne peut y avoir ni insertion ni suppression, car la vue
est dfinie par une requte. Ce nest donc pas une table
part entire.

Bases de Donn
ees p.117

Rgles

Bases de Donn
ees p.118

Rgles
Les rgles permettent de spcifier quelle action doit tre
effectue lors de la rception dun vnement donn.

Bases de Donn
ees p.119

Rgles
Les rgles permettent de spcifier quelle action doit tre
effectue lors de la rception dun vnement donn.
Syntaxe :
CREATE RULE nom r`
egle AS ON
ev
enement TO objet
DO action




#(

Lobjet peut tre une table ou une vue ventuellement assortie


dune condition dans une clause
.
Laction peut tre :
8




'

0

ce quil faut faire la place :

ne rien faire :



une ou plusieurs requtes

Bases de Donn
ees p.119

Rgles Exemple
&

, crer les tuples idoines

"


>

Lors de linsertion dans


dans
et
.

create rule ins_af2paris as on insert to AF2Paris


do instead (
insert into avion
values(new.num_avion,new.type,
new.constructeur,new.capacite,
Air France);
insert into vol(num_vol,num_avion,ville_arr)
values(new.num_vol,new.num_avion,Paris));

Bases de Donn
ees p.120

Dpendances






Les clauses
et
permettent dindiquer les
rpercussions effectuer lors de mises jour ou de
suppressions de tables ou de cls primaires :

NO ACTION : Les
et
ne sont pas
excutes pour que lintgrit rfrentielle soit prserve
CASCADE : toutes les cls trangres sont mises jour
lors de la modification de la cl primaire et tous les
enregistrements ayant la cl trangre sont supprims
lors de la suppression de la cl primaire




SET NULL, SET DEFAULT : la cl trangre prend la


valeur
(ou la valeur par dfaut) lors de la
modification ou la suppression de la cl primaire

Bases de Donn
ees p.121

Dpendances Exemple
create table Vol(
num_vol varchar(10) primary key,
num_pilote smallint,
num_avion smallint,
ville_dep varchar(10), ville_arr varchar(10),
heure_dep time, heure_arr time, date_vol date,
foreign key(num_pilote) references Pilote
on delete set null,
foreign key(num_avion) references Avion on
on delete set null);
);

Bases de Donn
ees p.122

PHP

Bases de Donn
ees p.123

PHP Introduction
PHP est un langage de script.
Il peut tre utilis pour le dveloppement dapplications web,
en permettant :
les connexions HTTP
la manipulation de bases de donnes
la gnration dimages
...

Bases de Donn
ees p.124

PHP Exemple Simple


<html>
<head><title>Essai PHP</title></head>
<body>
<?php print("coucou\n"); ?>
</body>
</html>

Bases de Donn
ees p.125

Variables
A

Le nom des variables commence toujours par le caractre .


php tant un langage non typ, le type dune variable est dfini
par sa valeur initiale.

Bases de Donn
ees p.126

Variables Exemple
<html><head>
<title>Variables PHP</title>
</head>
<?php $var1=1;
$var2=3.14;
$var3="coucou"; ?>
<body>
<h1>Variables</h1>
<table border=1>
<tr>
<td><b>variable</b></td>
<td><b>valeur</b></td>
<td><b>type</b></td>
</tr>
Bases de Donn
ees p.127

Variables Exemple (suite)


<tr>
<td><b>$var1</b></td>
<td><?php print($var1); ?></td>
<td><?php print(gettype($var1)); ?></td>
</tr>
...

Bases de Donn
ees p.128

Tableaux
<html>
<head><title>Tableaux PHP</title></head>
<?php
$tableau[0]="premier";
$tableau[1]="second";
$tableau[2]="troisi`
eme";
?>
<body>
<h1>Tableaux</h1>
<table border=1>
<tr>
<td><b>index</b></td>
<td><b>tableau[index]</b></td>
</tr>
Bases de Donn
ees p.129

Tableaux (suite)
<tr>
<td><b>0</b></td>
<td><?php print($tableau[0]); ?></td>
</tr>
...

Bases de Donn
ees p.130

Fonctions
$tableau[0]=1.2;
$tableau[1]=2.1;
$tableau[2]=3.4;
function somme($var1,$var2){
$vars=$var1+$var2;
return($vars);
}
printf("%.1f+%.1f=%.1f<br>\n",
$tableau[0],$tableau[1],
somme($tableau[0],$tableau[1]));
printf("1+2=%d\n",somme(1,2));

Bases de Donn
ees p.131

Formulaires
...
<form action=formulaire2.php method=get>
<table>
<tr>
<td><b>Nom</b></td>
<td><input type=text length=20 name=nom></td>
</tr>
<tr>
<td><b>Pr
enom</b></td>
<td><input type=text length=20 name=prenom></td>
</tr>
<tr>
<td colspan=2 align=center><br>
<input type=submit value="OK"</td>
</tr>
...
Bases de Donn
ees p.132

Formulaires
...
<h1>Formulaire2</h1>
<table border=1>
<tr>
<td><b>Nom</b></td>
<td><b>Pr
enom</b></td>
</tr>
<tr>
<td><?php print($nom); ?></td>
<td><?php print($prenom); ?></td>
</tr>
</table>
...

Bases de Donn
ees p.133

Tests
if ($mois>12){
print("Le mois doit ^
etre entre 1 et 12.");
exit();
}
switch($mois){
case 1: print("janvier");
break;
case 2: print("f
evrier");
break;
...
}

Bases de Donn
ees p.134

Accs une BD

 5

Les commandes daccs une base de donnes dpendent


du type de base utilis. Les fonctions sadressant une base
PostgreSQL commencent par
.

'


 5
B

Pour excuter une requte, on utilise


commande sql en paramtre.

'

'


 5

Il faut dabord se connecter la base en utilisant la


commande
.
avec la

Bases de Donn
ees p.135

Exemple
<?php
$connection=pg_connect("host=localhost dbname=avions
user=petrucci password=toto");
$requete="select * from pilote";
$resultat=pg_exec($connection,$requete);

Bases de Donn
ees p.136

Accs une BD

&




table.

renvoie le nombre dattributs de la table;

renvoie le nombre de tuples de la table;

C
 5

 5
"
& 

D

3

 5


"
,

 5

C
D 

3
&

Plusieurs fonctions permettent dexaminer le rsultat dune


requte :

renvoie le nom dun attribut;

permet dobtenir le contenu dune case de la

Bases de Donn
ees p.137

Exemple (suite)
// nombre dattributs
$nbcols=pg_numfields($resultat);
// nombre de tuples
$nbligs=pg_numrows($resultat);
//
ecriture du d
ebut de la table
print("<table border=1>\n");
print("<tr>\n");
for($field=0;$field<$nbcols;$field++)
printf("<td><b>%s</b></td>\n",
pg_fieldname($resultat,$field));
print("</tr>\n");

Bases de Donn
ees p.138

Exemple (suite)
//
ecriture du contenu de la table
for($row=0;$row<$nbligs;$row++){
print("<tr>\n");
for($field=0;$field<$nbcols;$field++)
printf("<td><b>%s</b></td>\n",
pg_result($resultat,$row,$field));
print("</tr>\n");
}

Bases de Donn
ees p.139

Fin de connexion

&


 5

Enfin,

'

"

"


 5

& 

Lorsque lon a termin, on peut librer la mmoire occupe


par les variables contenant le rsultat dune requte avec la
commande
.
ferme laccs la base de donnes.

Bases de Donn
ees p.140

Exemple (suite)
// fin
print("</table>\n");
pg_freeresult($resultat);
pg_close($connection);
?>

Bases de Donn
ees p.141

SQL et C

Bases de Donn
ees p.142

Appels de requte SQL en C

Bases de Donn
ees p.143

Librairie et variables

Bases de Donn
ees p.144

Exemple
#include <libpq-fe.h>
PGconn *connection;
PGresult *resultat;

Bases de Donn
ees p.145

Accs une BD
%

'

'

Il faut dabord se connecter la base en utilisant la


commande
.
'

Pour excuter une requte, on utilise


commande sql en paramtre.

avec la

Bases de Donn
ees p.146

Exemple
#include <libpq-fe.h>
int main(){
PGconn *connection;
PGresult *resultat;
char requete[200];
int nbcols, nbligs, field, row;

// d
ebut : connection
connection=PQconnectdb("host=localhost dbname=avion user=pe
if (PQstatus(connection)==CONNECTION_BAD) {
perror("Probl`
eme de connection\n");
exit(1);
}
// requ^
ete
Bases de Donn
ees p.147
strcpy(requete,"select * from livre");

Accs une BD






&


!


table.

renvoie le nombre dattributs de la table;


renvoie le nombre de tuples de la table;

renvoie le nom dun attribut;

C
D 

3
&

Plusieurs fonctions permettent dexaminer le rsultat dune


requte :

permet dobtenir le contenu dune case de la

Bases de Donn
ees p.148

Exemple (suite)
// nombre dattributs
nbcols=PQnfields(resultat);
// nombre de tuples
nbligs=PQntuples(resultat);
//
ecriture du d
ebut de la table
for(field=0;field<nbcols;field++)
printf("%s,",PQfname(resultat,field));
printf("\n");

Bases de Donn
ees p.149

Exemple (suite)

//
ecriture du contenu de la table
for(row=0;row<nbligs;row++){
for(field=0;field<nbcols;field++)
printf("%s,",PQgetvalue(resultat,row,
printf("\n");
}

Bases de Donn
ees p.150

Fin de connexion

ferme laccs la base de donnes.


&
1

Enfin,

"

'

Lorsque lon a termin, on peut librer la mmoire occupe


par les variables contenant le rsultat dune requte avec la
commande
.

Bases de Donn
ees p.151

Exemple (suite)
// fin
PQclear(resultat);
PQfinish(connection);
}

Bases de Donn
ees p.152

Compilation
gcc -lpq pgm.c -o pgm

Bases de Donn
ees p.153

Vous aimerez peut-être aussi