Académique Documents
Professionnel Documents
Culture Documents
Cours-1A SIx2 PDF
Cours-1A SIx2 PDF
Bases de donnes
1 anne
Antoine Cornujols
www.lri.fr/~antoine
antoine.cornuejols@agroparistech.fr
http://www.lri.fr/~antoine/Courses/AGRO/TC/Cours-1A-BD-(v3)x2.pdf
2 /170
1. Linformatique
/170
/170
1. Linformatique
Transports
Avions
Voitures (des ordinateurs sur roues)
Communications
Rseaux (communications par paquets)
Satellites
Modes de pense
Calculs complexes / Simulations
Connaissances toujours porte de clics
Modification de la mmoire et de la cognition
Informatique - Bases de donnes ! A. Cornujols 2011
1. Linformatique
/170
/170
xi yj
i,j=1
2
!
xi yj = x1 y1 + x1 y2 + x2 y1 + x2 y2
i,j=1
4 produits + 3 sommes
2
!
xi yj = (x1 + x2 ) (y1 + y2 )
i,j=1
2 sommes + 1 produit
Informatique - Bases de donnes ! A. Cornujols 2011
/170
/170
Slection : chercher
llment le + petit et
lchanger avec le 1er
lment du tableau, puis
rpter sur le tableau - le 1er
lment
Insertion : comme on
range des cartes
Tris rflchis
Quicksort : on prend un
pivot et on range tous les
lments < avant et >=
aprs et on ritre sur les
sous-tableaux
/170
10 /148
11 /148
12 /170
13 /148
14 /148
15 /148
16 /148
17 /170
18 /170
19 /170
20 /170
21 /170
1. Changement de paradigme
Carte analogique vs. carte numrique sur tablette graphique
22 /170
1. Changement de paradigme
La photo numrique
23 /170
1. Changement de paradigme
La photo numrique
Support numrique
Copies multiples
Affichage sur plusieurs dispositifs
Les appareils venir vont tre trs peu chers et trs bons ...
... grce linformatique
24 /170
1. Changement de paradigme
La photo numrique
25 /170
26 /170
Simulation
Comprhension / prdiction de systmes complexes
Ralit virtuelle / augmente
Fouille de donnes
Rgularits, tendances, prdictions, ...
27 /170
1A Bureautique
2A (ATHENS) Publier
sur Internet
La bureautique
Le travail collaboratif et Internet
Simulation
2A (ATHENS)
Informatique et
Comprhension / prdiction de systmes complexes
Sciences de la Vie
Ralit virtuelle / augmente
1A Module Intgratif
Fouille de donnes
Rgularits, tendances, prdictions, ...
3A DA IODAA
1A TC SI
1A C et tldtection
2A Java
28 /170
1. Linformatique
Reprsenter le monde
1- Savoir reprsenter
Structures de donnes
Notion de complexit
Vrification / Certification
29 /170
1. Linformatique
Pour :
30 /170
31 /170
32 /170
Cot calcul
Fonctionnement correct
Est-ce que cela fait ce que lon veut ?
Est-ce que le programme donne une rponse ?
-ilit
Simplicit et lgance
Utilisabilit
Modifiabilit
Maintenabilit
Cot
...
33 /170
1. Linformatique et VOUS
Programmation de simulation
Bio-informatique
E.g. AA :
- Croire que cest magique
- Ne pas demander assez
34 /170
1. Linformatique et VOUS
etc.
35 /170
1. Linformatique et VOUS
36 /170
37 /170
38 /170
39 /170
2. Quelles donnes ?
40 /170
2. Quelles donnes ?
41 /170
2. Quelles donnes ?
Les clients
Les produits
Les commandes
Les factures
...
42 /170
2. Quelles donnes ?
43 /170
44 /170
45 /170
donnes
du client
donnes
de la
commande
donnes
d'un dtail
46 /170
DATECOM
donnes du client
TOTAL-COMMANDE
NCLI
NOM
ADRESSE
LOCALITE
69720
B512
GILLET
14,r. de l'Et
Toulouse
30188 2/1/2009
donnes des dtails
NPRO
LIBELLE
PRIX
QCOM
SOUS-TOTAL
CS464
220
180
39600
PA45
105
22
2310
PA60
095
70
6650
PH222
230
92
21160
Observations :
1. les donnes TOTAL-COMMANDE et SOUS-TOTAL sont calcules : 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 dtail ?
Informatique - Bases de donnes ! A. Cornujols 2011
47 /170
donnes du client
NCOM
NCLI
DATECOM
NCLI
30188
B512
2/1/2009
B512
NOM
ADRESSE
LOCALITE
NPRO
QCOM
LIBELLE
PRIX
30188
CS464
180
220
30188
PA45
22
105
30188
PA60
70
095
30188
PH222
92
230
Observation
si plusieurs dtails mentionnent le mme produit, ses caractristiques
sont rptes autant de fois : on isole les donnes des produits dans un
tableau spcifique
48 /170
donnes du client
NCOM
NCLI
DATECOM
NCLI
NOM
ADRESSE
LOCALITE
30188
B512
2/1/2009
B512
GILLET
14,r. de l'Et
Toulouse
NCOM
NPRO
QCOM
NPRO
LIBELLE
PRIX
30188
CS464
180
CS464
220
30188
PA45
22
PA45
105
30188
PA60
70
PA60
95
30188
PH222
92
PH222
230
49 /170
50 /170
51 /170
fa c
ile
lus
up
select NCOM
pe ile
un iffic
d
from
COMMANDE
where NCLI in (select NCLI
from CLIENT where LOCALITE = 'Toulouse');
52 /170
53 /170
Cette question complexe est rsolue en une seule instruction SQL de 5 lignes !
54 /170
2. Les SGBD
La gestion d'une base de donnes pose des problmes complexes. Cette gestion est
assure par des logiciels spcialiss : les systmes de gestion de bases de
donnes ou SGBD.
Gestion des donnes : le SGBD garantit l'volution cohrente des donnes; il vrifie
que les contraintes (unicit, rfrence entre tables, etc.) sont respectes.
Accs aux donnes : le SGBD permet l'accs aux donnes la fois par l'utilisateur
occasionnel et par les programmes de traitement de donnes.
55 /170
2. Les SGBD
56 /170
Volumes et performances.
Une base de donnes peut contenir des dizaines de milliers de tables, des milliards
de lignes.
57 /170
Maintenance et volution.
La structure d'une base de donnes peut voluer : ajouter ou supprimer une table,
une colonne, une contrainte.
Une base de donnes peut tre rpartie et/ou dupliques sur plusieurs ordinateurs
rpartis gographiquement.
58 /170
59 /170
60 /170
3. Notions de base
61 /170
3. Notions de base
ligne
donnes
colonne
obligatoire
colonne
facultative
62 /170
3. Notions de base
63 /170
3. Notions de base
identifiant
(cl primaire)
cl trangre
dans le schma
dans les donnes
64 /170
3. Notions de base
65 /170
Une table peut possder plusieurs identifiants. On choisit l'un d'eux, qu'on
dclare primaire (cl primaire). Les autres sont ds lors secondaires.
Il est possible de dclarer une table sans identifiant mais ceci n'est pas
recommand.
66 /170
Contrainte rfrentielle : il
faut que chaque cl trangre
dsigne une ligne existante de
la table cible.
Informatique - Bases de donnes ! A. Cornujols 2011
67 /170
[*] problme : le terme cl admet plus de 20 acceptions diffrentes dans le domaine des
bases de donnes !
Informatique - Bases de donnes ! A. Cornujols 2011
68 /170
Un schma
69 /170
70 /170
3. Notions de base
Variantes de schma
3.1 Introduction
3.2 Modle Entit-Association
3.3 Types d'entits
3.4 Attributs
71 /170
72 /170
Encore faut-il que le schma des tables satisfasse les besoins des utilisateurs des
donnes !
73 /170
74 /170
Il faut un autre langage pour exprimer naturellement les informations que doit
contenir une base de donnes :
le modle Entit-association
=> Modlisation
Informatique - Bases de donnes ! A. Cornujols 2011
75 /170
On construit une base de donnes (en fait son schma) en deux phases :
1. on identifie les concepts pertinents du domaine d'application, leurs
proprits et leurs associations
= schma conceptuel;
2. on traduit le schma conceptuel en structures de tables
= schma de la base de donnes
76 /170
nonc
Analyse
conceptuelle
Schma
conceptuel
Production du
schma de la BD
Schma SQL
77 /170
78 /170
CLIENT
CONTRAT
VEHICULE
ACCIDENT
quelques instances
=
population
79 /170
4.4 Attributs
quelques attributs
!
NumClient = C400
Nom = FERARD
Adresse = 65, r. du Tertre
NumClient = B332
Nom = MONTI
Adresse = 112, r. Neuve
quelques
valeurs
NumClient = F010
Nom = TOUSSAINT
Adresse = 5, r. Godefroid
80 /170
attribut obligatoire/facultatif
81 /170
CLIENT
CLIENT
NumClient
Nom
Adresse
CONTRAT
VEHICULE
NumCtr
NumVh
Marque
Modle
signe
couvre
Type
DateSign
Anne
Cylindre
VEHICULE
appartient
ACCIDENT
implique
CONTRAT
NumAcc
DateAcc
ACCIDENT
Montant[0-1]
quelques instances
82 /170
DEPARTEMENT
occupe
DEPARTEMENT
EMPLOYE
EMPLOYE
e1
d1
e6
d2
e2
d4
e3
e4
d3
e7
e5
83 /170
DEPARTEMENT
DEPARTEMENT
dirige
EMPLOYE
EMPLOYE
e1
d1
e6
d2
d4
d3
e2
e3
e4
e7
e5
84 /170
USINE
fabrique
PRODUIT
USINE
PRODUIT
p1
u1
u4
p2
u2
p3
p4
u3
p5
85 /170
rle
facul
tatif
Contrainte de cardinalit
o
rle
bliga
toire
Combinaisons admises
1-1
[0-1] [0-N]
0-1
[1-1] [0-N]
0-N
[0-1] [0-1]
[1-1] [0-1]
86 /170
87 /170
88 /170
89 /170
90 /170
91 /170
Pour exploiter ces parcelles, les agriculteurs font appel un GIE. Celui-ci
fournit de la main doeuvre dappoint, la journe.
Chaque employ du GIE a un tarif, qui constitue son salaire journalier brut.
92 /170
Pour exploiter ces parcelles, les agriculteurs font appel un GIE. Celui-ci
fournit de la main doeuvre dappoint, la journe.
93 /170
94 /170
Nom
Prnom
Lieu de
rsidence
Dulhac
Anne-Marie
Arith
rsidence
Martoz
Christian
Montargy
Carrez
Franois
Arith
Ferrer
Mariette
Lenoyer
Mernaz
Francine
Lescheraines
propritaire
Martoz
Christian
Lescheraines
Comment identifier ?
95 /170
Cl primaire
IdAgri
Nom
Prnom
Lieu de
rsidence
Dulhac
Anne-Marie
Arith
Martoz
Christian
Montargy
Carrez
Franois
Arith
Ferrer
Mariette
Lenoyer
Mernaz
Francine
Lescheraines
Martoz
Christian
Lescheraines
96 /170
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
97 /170
Agr-Id
Champ
Type
Agr_id
int(11)
Agr_Nom
varchar(30)
Agr_Prn
varchar(20)
Agr_Resid varchar(50)
Agr_Nom
Agr_Prn
Agr_Resid
Extra
auto_increment
Dulhac
Anne-Marie
Arith
Martoz
Christian
Montargy
Carrez
Franois
Arith
Ferrer
Mariette
Lenoyer
Mernaz
Francine
Lescheraines
Martoz
Christian
Lescheraines
98 /170
Les parcelles
Par_Idf
Par_Nom
Par_Lieu
Par_Superficie
Le Pr au Vent
Arith
350
Le grand Verger
Arith
300
Montargy
220
Arith
750
Lafosse
Montargy
600
99 /170
Par_Nom
Par_Lieu
Le Pr au Vent
Arith
350
Le grand Verger
Arith
300
Montargy
220
Plan des
Bauges
Les Prs Rus
Arith
750
Lafosse
Montargy
600
Parcelles
Par_Superficie Par_Prop
Agr_Id
Agr_Nom
Agriculteur
Agr_Prn
Agr_Resid
Dulhac
Anne-Marie
Arith
Martoz
Christian
Montargy
Carrez
Franois
Arith
Ferrer
Mariette
Lenoyer
Mernaz
Francine
Lescheraines
Martoz
Christian
Lescheraines
100 /170
Agr_id
Parcelle
Par_id
Agr_Nom
Par_Nom
Agr_Prn
Par_Lieu
Agr_Resid
Agriculteur
Cl trangre
Par_Sup
Par_Prop
Une relation 1 n
entre deux tables
Parcelles
101 /170
La table employ
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
Quelle cl primaire ?
102 /170
103 /170
Intervention
Agr_id
Int_Emp_nss
Agr_Nom
Int_Par_id
Int_Deb
Agr_Resid
Int_Nb_Jours
Emp_nss
1,75077E+12
Emp_Nom
Grandet
Emp_prn
Marc
Employ
Par_id
Par_Nom
Par_Lieu
Agr_Prn
Lemploy Grandet a
travaill sur la parcelle du
pr au vent, 5 jours partir
du 5 juillet 2004.
Par_Sup
Par_Prop
Intervention
Int_Emp_nss
Int_Par_i
d
Int_Deb
Int_Nb_Jours
1,75077E+12
2004-07-05
Emp_tarif
110
Parcelle
Par_Idf
Par_Nom
Le Pr au
Vent
350
104 /170
5 - LE LANGAGE SQL
(Structured Query Language)
105 /170
Ici
106 /170
1.1 Introduction
1.2 Cration d'un schma
1.3 Cration d'une table
1.4 Modification d'une table
1.5 Exemple
107 /170
5.1 Introduction
108 /170
109 /170
char(10),
char(32),
char(60),
char(30),
char(2),
decimal(9,2) );
110 /170
exact
approch
chane de
bits
longueur fixe
longueur variable
longueur indfinie
bit
bit varying
BLOB
caractres
longueur fixe
longueur variable
longueur indfinie
char
character varying
CLOB
temps
date
instant
instant dat
intervalle
date
time
timestamp
interval
boolen
boolean
111 /170
char(10) not
char(32) not
char(60) not
char(30) not
char(2),
decimal(9,2)
null,
null,
null,
null,
not null
112 /170
113 /170
null,
null,
null,
null,
not null,
114 /170
null,
null,
null,
null,
not null,
115 /170
116 /170
117 /170
118 /170
119 /170
r
ute
ajo
p
up
rim
er
r
leu
va t
r
u
ie
dif fa
mo ar d
p
le
va
er ut
m
ri
fa
pp d
su par
ur
120 /170
121 /170
122 /170
123 /170
NCLI
NOM
ADRESSE
LOCALITE
CAT
COMPTE
primary key
NCOM
char(12) not null,
NPRO
char(15) not null,
QCOM
decimal(8) not null,
primary key (NCOM,NPRO),
foreign key (NCOM) references COMMANDE,
foreign key (NPRO) references PRODUIT) in COM_DAT;
124 /170
2.1 Introduction
2.2 Extraction simple
2.3 Conditions plus complexes
2.4 Donnes extraites et donnes drives
2.5 Les fonctions agrgatives
2.6 Les sous-requtes
125 /170
Introduction
Le sous-langage LMD de SQL permet de consulter le contenu des
tables et de les modifier. Il comporte 4 verbes :
La requte select extrait des donnes des tables
La requte insert insre de nouvelles lignes dans une table
La requte delete supprime des lignes d'une table
La requte update modifie les valeurs de colonnes de lignes
existantes
126 /170
prnom
adresse
tlphone
Martin
Pierre
Dupond
Jean
32 all Poivrot
526389152
Dupond
Marc
8 rue de loctet
123456789
On projette la table
Personnes sur les
colonnes nom et prnom.
prnom
Martin
Pierre
Dupond
Jean
Dupond
Marc
127 /170
prnom
adresse
tlphone
Martin
Pierre
Dupond
Jean
32 all Poivrot
526389152
Dupond
Marc
8 rue de loctet
123456789
SELECT *
FROM Personnes
WHERE nom = Dupond
nom
prnom
adresse
tlphone
Dupond
Jean
32 all Poivrot
526389152
Dupond
Marc
8 rue de loctet
123456789
128 /170
Relation de dpart :
SELECT * FROM Gens
Gens
Nom
Prenom
Age
Dupond
Pierre
24
Martin
Marc
48
Dupont
Jean
51
Martin
Paul
36
Dupond
Lionel
68
Chirac
Jacques
70
SELECT Nom
FROM Gens
Gens
Nom
Dupond
Martin
Dupont
Martin
Gens
Nom
Dupond
Dupond
Martin
Chirac
Dupont
Chirac
Informatique - Bases de donnes ! A. Cornujols 2011
129 /170
Gens
Nom
Chirac
Dupond
Dupont
Martin
Gens
Nom
Chirac
Dupond
Gens
Nom
Dupond
130 /170
Personnes
nom
Dernierlivre
Dupond
Robinson
32 all Poivrot
Jospin
Faust
Martin
Misre
nom
prnom
adresse
Martin
Pierre
Dupond
Jean
tlphone
526389152
prnom
Dernierlivre
Jean
Robinson
Pierre
Misre
131 /170
select NCLI
from
CLIENT
where CAT = null;
NCLI
select NCLI
from
CLIENT
where CAT is null;
NCLI
D063
K729
select NCLI
from
CLIENT
where CAT is not null;
132 /170
select nom
from
produit
where prix <= 100.5;
select modle
from
VOITURES
where couleur in (bleu, blanc, noir);
select modle
from
VOITURES
where couleur not in (rose, violet);
133 /170
select NCLI
from
CLIENT
where CAT like 'B_';
'_' = un caractre
quelconque
masques
select NPRO
from
PRODUIT
where LIBELLE like '%SAPIN%';
"#
'B1'
'Bd'
'B '
'%SAPIN%'
"#
'B_'
"#
'xB'
'B'
'B12'
'%SAPIN%'
"#
'Boite en Sapin'
'Achetez S A P I N !'
134 /170
135 /170
NPRO
TVA de
TVA de
TVA de
TVA de
CS264
PA45
PH222
PS222
=
=
=
=
0,21*PRIX*QSTOCK
67788
12789
37770.6
47397
e
select NPRO as Produit, 0.21*PRIX*QSTOCK as Valeur_TVA
st
nn
" e colo
t
i
from
PRODUIT
u de
rod
where QSTOCK > 500;
"P alias
un
Produit
CS264
PA45
PH222
PS222
Valeur_TVA
67788
12789
37770.6
47397
136 /170
CLIENT
where
LOCALITE = 'Namur';
Namur
Namur
-2520
4580
le rsultat ne comprend
qu'une seule ligne
select sum(QSTOCK*PRIX)
from
PRODUIT
where
137 /170
Noms
16
select count(distinct
count(distinct
count(distinct
count(distinct
from
CLIENT;
Nombre
16
Noms
15
Localits
Catgories
16
14
Si catgories a 2
valeurs nulles de plus
que les autres attributs
NCLI) as Nombre,
NOM) as Noms,
LOCALITE) as Localits,
CAT) as Catgories
Localits
Catgories
7
138 /170
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')));
139 /170
select *
from
T
where CT in (select CS
from
S
where <condition>);
140 /170
update CLIENT
set ADRESSE = 29, avenue de la Magne,
LOCALITE = Niort
where NCLI = F011 ;
141 /170
6.1 Introduction
6.2 Le langage MySQL
6.3 Administration avec phpMyAdmin
6.4 Interface avec PHP
6 - PHP / MySQL
142 /170
6. MySQL
143 /170
144 /170
Outil pour :
crer de nouvelles bases
crer / modifier / supprimer des tables
afficher / ajouter / modifier / supprimer des tuples
dans des tables
effectuer des sauvegarde de la structure et/ou des
donnes
effectuer nimporte quelle requte
grer les privilges des utilisateurs
145 /170
146 /170
Introduction
147 /170
148 /170
149 /170
150 /170
151 /170
152 /170
Structure :
dfinition des proprits des attributs
cls
Le format CSV est un fichier texte dont chaque ligne reprsente un enregistrement
153 /170
154 /170
On peut changer les valeurs par dfaut des sparateurs standards du CSV.
155 /170
Il faut nommer la cl, en spcifier le type, et les attributs sur lesquels elle sapplique.
On peut ajouter une autre colonne cette cl avant de valider lajout de la cl.
156 /170
6. Conclusions
157 /170
6.1 Introduction
6.2 Le langage MySQL
6.3 Administration avec phpMyAdmin
6.4 Interface avec PHP
158 /170
6. MySQL et PHP
Jusquici :
Script
PHP
Page
HTML
HTTP
Client
Serveur
159 /170
6. MySQL et PHP
Dsormais :
Base de
MySQL
donnes
Serveur
Script
PHP
HTTP
Page
HTML
Client
160 /170
un mot de passe
un nom de base
161 /170
162 /170
V- PHP / MySQL
163 /170
Lidentificateur de rsultat $result permettra dautres fonctions dextraire ligne par ligne
les donnes retournes par le serveur.
Chaque appel cette fonction retournera un tuple du rsultat. Cest pourquoi cette
instruction pourra tre utilise au sein dune boucle while qui sarrtera lorsque
mysql_query() renverra FALSE.
164 /170
Ici, on accde aux valeurs de la ligne par leur indice dans le tableau.
Informatique - Bases de donnes ! A. Cornujols 2011
165 /170
Ici, on accde aux valeurs de la ligne par lattribut dans le tableau associatif.
Informatique - Bases de donnes ! A. Cornujols 2011
166 /170
167 /170
$result = mysql_list_dbs();
$num = mysql_num_rows($result);
for ($i=0; $i<$num; $i++)
168 /170
Il est recommand de tester systmatiquement les valeurs retournes par les fonction
de traitement sur une base de donnes afin dviter la pollution de la page web par des
Warning.
mysql_errno([$id]) : retourne le numro derreur de la dernire opration MySQL
effectue sur la connexion courante ou celle didentifiant $id.
mysql_error([$id]) : retourne le message derreur de la dernire opration MySQL
effectue sur la connexion courante ou celle didentifiant $id.
} else {
echo Erreur de base de donnes n.mysql_errno().: .mysql_error();
}
169 /170
Remerciements
Grard Berry
Hugo Etivant
Merci !!
170 /170