Académique Documents
Professionnel Documents
Culture Documents
Laure Petrucci
IUT GTR Villetaneuse
Bases de Donn
ees p.1
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
Bases de Donn
ees p.4
Bases de Donn
ees p.4
Disponibilit
Performance : tout utilisateur doit ignorer lexistence
dutilisateurs concurrents.
Bases de Donn
ees p.5
Bases de Donn
ees p.5
Bases de Donn
ees p.5
Conception de BD
Rdaction en franais des besoins
(cahier des charges)
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
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 :
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.
Bases de Donn
ees p.16
Entit-Association Relationnel
chaque entit conduit une relation contenant tous les
attributs de lentit.
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
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
Bases de Donn
ees p.27
Exemple
AVION construc.
Airbus
Boeing
type
A340
capacit
228
B747
432
compagnie
Air France
British Airways
Qantas
Bases de Donn
ees p.28
Exemple
AVION construc.
Airbus
Boeing
type
A340
capacit
228
B747
432
compagnie
Air France
British Airways
Qantas
construc.
Airbus
Boeing
Boeing
type
A340
B747
B747
capacit
compagnie
228
Air France
432
British Airways
432
Qantas
me
Forme Normale
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Standard SQL
table
domain
column
line
primary key
references
Bases de Donn
ees p.66
Bases de Donn
ees p.67
"
!
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
dfini)
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
!
%
!
$
$
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
Bases de Donn
ees p.79
Projection
'
&
Bases de Donn
ees p.80
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.
/
!
&
.
%
,-
*+
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
0
0
suivie
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
'
&
"
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
'
&
Loprateur
requtes
'
"
&
/!
,"
&
"
&
3
"
&
"
"
'
&
Loprateur
deux requtes
Intersection
&
"
&
"
Bases de Donn
ees p.89
'
&
4
Loprateur
requtes
Diffrence
"
&
&
"
Bases de Donn
ees p.90
avec un
ou
.
"
et
Bases de Donn
ees p.91
: Exemple
5
"
%
&
Bases de Donn
ees p.92
: Exemple
5
"
%
&
Bases de Donn
ees p.93
Bases de Donn
ees p.94
: Exemples
Autres Jointures
Bases de Donn
ees p.96
2
La clause
tables.
0
Produit Cartsien
&
&
"
'
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 (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
1
!:
'
1
!:
: renvoie la longueur de
'
8
";
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
?&
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
4
@
8
Bases de Donn
ees p.108
8
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
@
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
&
"
>
Bases de Donn
ees p.116
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
#(
'
0
ne rien faire :
Bases de Donn
ees p.119
Rgles Exemple
&
"
>
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
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
Bases de Donn
ees p.125
Variables
A
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
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
'
5
B
'
'
5
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.
C
5
5
"
&
D
3
5
"
,
5
C
D
3
&
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
&
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
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
%
'
'
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.
C
D
3
&
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
&
1
Enfin,
"
'
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