Vous êtes sur la page 1sur 0

1

Bases de donnes
M1 conomie et Socit M1 Finance
Anne 2013-2014
Jrme Darmont
http://eric.univ-lyon2.fr/~jdarmont/
Actualit du cours
http://eric.univ-lyon2.fr/~jdarmont/ 1 Conception de sites Web
http://eric.univ-lyon2.fr/~jdarmont/?page_id=447
http://eric.univ-lyon2.fr/~jdarmont/?feed=rss2
https://twitter.com/darmont_lyon2 hashtag #bdesfi
http://eric.univ-lyon2.fr/~jdarmont/ 2 Bases de donnes
Planning des sances
Jour Horaire Salle
Vendredi 20/09/13 12h00-13h45 Amphi Say
Vendredi 27/09/13 12h00-13h45 Amphi Say
Vendredi 04/10/13 12h00-13h45 Amphi Say
Vendredi 11/10/13 12h00-13h45 Amphi Say
Vendredi 18/11/13 12h00-13h45 Amphi Say
Vendredi 07/11/13 12h00-13h45 Amphi Say
http://eric.univ-lyon2.fr/~jdarmont/ 3 Bases de donnes
Plan du cours
Introduction
Modle UML
Modle relationnel
Langage SQL
http://eric.univ-lyon2.fr/~jdarmont/ 4 Bases de donnes
Organisation en fichiers
Saisie
Traitement
Fichier
Fichier
Traitement
Saisie
Etat de
sortie
http://eric.univ-lyon2.fr/~jdarmont/ 5 Bases de donnes
Limites des systmes fichiers
Particularisation de la saisie et des traitements en
fonction des fichiers
un ou plusieurs programmes par fichier
Contrle en diffr des donnes
augmentation des dlais et du risque derreur
Particularisation des fichiers en fonction des traitements
grande redondance des donnes
2
http://eric.univ-lyon2.fr/~jdarmont/ 6 Bases de donnes
Organisation base de donnes
Saisie
+
Contrles
Base
de
donnes
Traitements
Etats de
sortie
http://eric.univ-lyon2.fr/~jdarmont/ 7 Bases de donnes
Avantages de lorganisation BD
Uniformisation de la saisie et standardisation des
traitements (ex. tous les rsultats de consultation sous
forme de listes et de tableaux)
Contrle immdiat de la validit des donnes
Partage de donnes entre plusieurs traitements
limitation de la redondance des donnes
http://eric.univ-lyon2.fr/~jdarmont/ 8 Bases de donnes
Dfinitions
Base de donnes (BD) : Collection de donnes
cohrentes et structures
Systme de Gestion de Bases de Donnes (SGBD) :
Logiciel(s) assurant structuration, stockage,
maintenance, mise jour et consultation des donnes
dune BD
http://eric.univ-lyon2.fr/~jdarmont/ 9 Bases de donnes
Proprits de lorganisation BD
Usage multiple des donnes
Accs facile, rapide, protg, souple, puissant
Cot rduit de stockage, de mise jour et de saisie
Disponibilit, exactitude, cohrence et protection des
donnes ; non redondance
volution aise et protection de linvestissement de
programmation
Indpendance des donnes et des programmes
Conception a priori
http://eric.univ-lyon2.fr/~jdarmont/ 10 Bases de donnes
Objectifs des SGBD
Indpendance physique : un remaniement de
lorganisation physique des donnes nentrane pas de
modification dans les programmes dapplication
(traitements).
Indpendance logique : un remaniement de
lorganisation logique des fichiers (ex. nouvelle rubrique)
nentrane pas de modification dans les programmes
dapplication non concerns.
http://eric.univ-lyon2.fr/~jdarmont/ 11 Bases de donnes
Objectifs des SGBD
Manipulation facile des donnes : un utilisateur non-
informaticien doit pouvoir manipuler simplement les
donnes (interrogation et mise jour).
Administration facile des donnes : un SGBD doit fournir
des outils pour dcrire les donnes, permettre le suivi de
ces structures et autoriser leur volution (tche de
ladministrateur de BD).
3
http://eric.univ-lyon2.fr/~jdarmont/ 12 Bases de donnes
Objectifs des SGBD
Efficacit des accs aux donnes : garantie dun bon
dbit (nombre de transactions excutes par seconde)
et dun bon temps de rponse (temps dattente moyen
pour une transaction).
Redondance contrle des donnes : diminution du
volume de stockage, pas de mise jour multiple ni
dincohrence.
http://eric.univ-lyon2.fr/~jdarmont/ 13 Bases de donnes
Objectifs des SGBD
Cohrence des donnes : ex. Lge dune personne doit
tre un nombre entier positif. Le SGBD doit veiller ce
que les applications respectent cette rgle (contrainte
dintgrit).
Partage des donnes : utilisation simultane des
donnes par diffrentes applications
Scurit des donnes : les donnes doivent tre
protges contre les accs non autoriss ou en cas de
panne.
http://eric.univ-lyon2.fr/~jdarmont/ 14 Bases de donnes
Fonctions des SGBD
Description des donnes : Langage de Dfinition de
Donnes (LDD)
Recherche des donnes
Mise jour des donnes
Transformation des donnes
Contrle de lintgrit des donnes
Gestion de transactions et scurit
Langage de
Manipulation de
Donnes (LMD) }
Langage de
Contrle de
Donnes (LCD) }
Processus de conception dune BD
http://eric.univ-lyon2.fr/~jdarmont/ 15 Bases de donnes
Problme du
monde rel
Spcifications
de la BD
Modle
conceptuel
Modle
logique
Modle
physique
Rdaction
Analyse
Traduction
Traduction
Indpendant dun SGBD
Spcifique
Famille de SGBD
SGBD particulier
Cahier des charges
http://eric.univ-lyon2.fr/~jdarmont/ 16 Bases de donnes
Plan du cours
Introduction
Modle UML
Modle relationnel
Langage SQL
http://eric.univ-lyon2.fr/~jdarmont/ 17 Bases de donnes
Gnralits
UML : Unified Modeling Language
Ensemble de formalismes graphiques
pour la modlisation oriente objet (analyse)
Auteurs : Rumbaugh, Booch, Jacobson
Standard de lOMG (Object Management Group) depuis
1997, soutenu par de nombreux diteurs de logiciels
Mise en uvre dune BD : transformation dun
diagramme de classes UML en schma logique
4
http://eric.univ-lyon2.fr/~jdarmont/ 18 Bases de donnes
Classes et attributs
Classe : Groupe dentits du monde rel ayant les
mmes caractristiques et le mme comportement
(ex. ETUDIANT)
Attribut : Proprit de la classe (ex. Nom et Prnom de
ltudiant
Reprsentation graphique :
http://eric.univ-lyon2.fr/~jdarmont/ 19 Bases de donnes
Types dattribut
Type dattribut :
Nombre entier
Nombre rel
Chane de caractres
Date
Valeur par dfaut (=)
http://eric.univ-lyon2.fr/~jdarmont/ 20 Bases de donnes
Exemple de classe avec ses attributs
http://eric.univ-lyon2.fr/~jdarmont/ 21 Bases de donnes
Instances
Classe : ex. ETUDIANT
Instances (objets) de la classe ETUDIANT : les tudiants
Albert Dupont
James West
Marie Martin
Gaston Durand
...
http://eric.univ-lyon2.fr/~jdarmont/ 22 Bases de donnes
Identifiants
Liste des tudiants
Nom Prnom DateNaiss Etc.
Dupont Albert 01/06/1980 ...
West James 03/09/1973 ...
Martin Marie 05/06/1988 ...
Durand Gaston 15/11/1990 ...
Titgoutte Justine 28/02/1985 ...
Dupont Nomie 18/09/1967 ...
Dupont Albert 23/05/1943 ...
Problme : Comment distinguer les Dupont ?
http://eric.univ-lyon2.fr/~jdarmont/ 23 Bases de donnes
Identifiants
Solution : Ajouter un attribut Numro dtudiant !
NumEtu Nom Prnom DateNaiss
1110 Dupont Albert 01/06/1980
2002 West James 03/09/1973
3333 Martin Marie 05/06/1988
4042 Durand Gaston 05/11/1990
5552 Titgoutte Justine 28/02/1985
6789 Dupont Nomie 18/09/1967
7000 Dupont Albert 23/05/1943
5
http://eric.univ-lyon2.fr/~jdarmont/ 24 Bases de donnes
Identifiants
Le numro dtudiant est un attribut identifiant. Un
identifiant caractrise de faon unique les instances
dune classe.
NB : Dans le paradigme objet (OO), un objet est dj
identifi par son OID (Object IDentifier). La finalit de
notre utilisation dUML ntant pas OO, nous ajouterons
un attribut identifiant.
Convention graphique :
NB : Ne pas confondre avec
les attributs de classe UML
dont cest la notation usuelle
http://eric.univ-lyon2.fr/~jdarmont/ 25 Bases de donnes
Associations
Dfinition : liaison perue entre des classes
ex. Les tudiants passent des preuves.
Les classes ETUDIANT et EPREUVE peuvent tre qualifies de
participantes lassociation PASSER.
Degr ou arit dune association : nombre de classes participantes.
En gnral : associations binaires (de degr 2).
http://eric.univ-lyon2.fr/~jdarmont/ 26 Bases de donnes
Associations rcursives et rles
Association rcursive : une mme instance de classe
peut jouer plusieurs rles dans la mme association
(ex. employs et suprieurs hirarchiques).
Rle : fonction de chaque
classe participante (+).
http://eric.univ-lyon2.fr/~jdarmont/ 27 Bases de donnes
Multiplicit (ou cardinalit)
Dfinition : Indicateur qui montre combien dinstances de
la classe considre peuvent tre lies une instance
de lautre classe participant lassociation
1 Un et un seul
0..1 Zro ou un
0..* ou * Zro ou plus
1..* Un ou plus
M..N De M N (M, N entiers)
ex. Un tudiant donn ne passe quune preuve. Une
preuve donne nest passe que par un tudiant.
http://eric.univ-lyon2.fr/~jdarmont/ 28 Bases de donnes
Associations 1-1
Lire "Un tudiant passe multiplicit (1) preuve(s)".
http://eric.univ-lyon2.fr/~jdarmont/ 29 Bases de donnes
Associations 1-N
ex. Un tudiant donn peut passer plusieurs preuves.
Une preuve donne nest passe que par un tudiant.
NB : La multiplicit un plusieurs (1..*) peut aussi tre
zro plusieurs (0..* ou *).
6
http://eric.univ-lyon2.fr/~jdarmont/ 30 Bases de donnes
Associations 0 ou 1-N
ex. Un tudiant donn peut passer plusieurs preuves.
Une preuve donne nest passe que par un tudiant au
maximum, mais peut aussi ntre passe par personne.
NB : La multiplicit un plusieurs (1..*) peut aussi tre
zro plusieurs (0..* ou *).
http://eric.univ-lyon2.fr/~jdarmont/ 31 Bases de donnes
Associations M-N
ex. Un tudiant donn peut passer plusieurs preuves.
Une preuve donne peut tre passe par plusieurs
tudiants.
NB : Les multiplicits un plusieurs (1..*) peuvent
aussi tre zro plusieurs (0..* ou *).
http://eric.univ-lyon2.fr/~jdarmont/ 32 Bases de donnes
Classes-associations
Il est possible de caractriser une association par des
attributs.
ex. Un tudiant qui passe une preuve obtient une note.
http://eric.univ-lyon2.fr/~jdarmont/ 33 Bases de donnes
Exemple complet
Notes dexamen : Spcifications
Les tudiants sont caractriss par un numro unique,
leur nom, prnom, date de naissance, rue, code postal
et ville.
Ils passent des preuves et obtiennent une note pour
chacune.
Les preuves sont caractrises par un code, ainsi que
la date et le lieu auxquels elles se droulent.
http://eric.univ-lyon2.fr/~jdarmont/ 34 Bases de donnes
Exemple complet
Notes dexamen : Spcifications (suite)
Chaque preuve relve d'une matire unique (mais une
matire donne peut donner lieu plusieurs preuves).
Les matires sont caractrises par un code et un
intitul.
http://eric.univ-lyon2.fr/~jdarmont/ 35 Bases de donnes
Exemple complet
Marche suivre pour produire un diagramme
de classes UML :
1. Identifier les classes.
2. Identifier les associations entre les classes.
3. Identifier les attributs de chaque classe et de chaque
classe-association.
4. Souligner lidentifiant de chaque classe.
5. valuer la multiplicit des associations.
7
http://eric.univ-lyon2.fr/~jdarmont/ 36 Bases de donnes
Exemple complet
http://eric.univ-lyon2.fr/~jdarmont/ 37 Bases de donnes
Plan du cours
Introduction
Modle UML
Modle relationnel
Langage SQL
http://eric.univ-lyon2.fr/~jdarmont/ 38 Bases de donnes
Gnralits
Le modle relationnel est un modle logique associ aux
SGBD relationnels (ex. Oracle, SQL Server, DB2,
MySQL, Access).
Objectifs du modle relationnel :
Indpendance physique
Traitement du problme de redondance des donnes
LMD non procduraux (faciles utiliser)
Devenir un standard
http://eric.univ-lyon2.fr/~jdarmont/ 39 Bases de donnes
Caractristiques des systmes relationnels
Langages dinterrogation puissants et dclaratifs
Accs orient valeur
Grande simplicit, absence de considrations physiques
Description du schma trs rduite
LDD intgr au LMD
Grande dynamique de structure
Optimisation de requtes
Utilisation interactive ou partir dun langage hte
http://eric.univ-lyon2.fr/~jdarmont/ 40 Bases de donnes
Relations et attributs
Une relation R est un ensemble dattributs {A
1
, A
2
, , A
n
}.
ex. La relation EPREUVE est lensemble des attributs
{CodeEpr, DateEpr, Lieu}
Chaque attribut A
i
prend ses valeurs dans un domaine
dom(A
i
).
ex. Note [0, 20]
Lieu {'Amphi Say', 'Amphi Aubrac',
'Salle D101', 'Salle D201', }
http://eric.univ-lyon2.fr/~jdarmont/ 41 Bases de donnes
N-uplets
Notation dune relation : R (A
1
, A
2
, , A
n
)
ex. EPREUVE (CodeEpr, DateEpr, Lieu)
Un n-uplet t est un ensemble de valeurs t = <V
1
, V
2
, , V
n
>
o V
i
dom(A
i
) ou V
i
est la valeur nulle (NULL).
ex. <'InfoS2', '30-06-2011', 'Amphi Say'> est un n-uplet de
la relation EPREUVE.
8
http://eric.univ-lyon2.fr/~jdarmont/ 42 Bases de donnes
Contraintes dintgrit
Cl primaire : Ensemble dattributs dont les valeurs
permettent de distinguer les n-uplets les uns des autres
(notion d'identifiant).
ex. CodeEpr est cl primaire de la relation EPREUVE.
Cl trangre : Attribut qui est cl primaire dune autre
relation.
ex. Connatre la matire dont relve chaque preuve
ajout de lattribut CodeMat la relation EPREUVE
http://eric.univ-lyon2.fr/~jdarmont/ 43 Bases de donnes
Contraintes dintgrit
Notations : Cls primaires soulignes, cls trangres
postfixes par le caractre #.
ex. EPREUVE (CodeEpr, DateEpr, Lieu, CodeMat#)
Contraintes de domaine : Les attributs doivent respecter
une condition logique.
ex. Note 0 ET Note 20
http://eric.univ-lyon2.fr/~jdarmont/ 44 Bases de donnes
Contraintes dintgrit en pratique
(au niveau des n-uplets)
MATIERE
Codemat Intitul
ECO conomie
GES Gestion
INFO Informatique
EPREUVE
CodeEpr DateEpr Lieu Codemat#
ECOS101 15/01/2011 Amphi Say ECO
ECOS102 16/01/2011 Amphi Say ECO
GESS201 25/05/2011 Salle 201 GES
INFOS101 20/01/2011 Salle 101 INFO
http://eric.univ-lyon2.fr/~jdarmont/ 45 Bases de donnes
Traduction UML-relationnel
1. Chaque classe devient une relation. Les attributs de la
classe deviennent attributs de la relation. Lidentifiant de
la classe devient cl primaire de la relation.
ex. ETUDIANT (NumEtu, Nom, Prnom,
DateNaiss, Rue, CP, Ville)
http://eric.univ-lyon2.fr/~jdarmont/ 46 Bases de donnes
Traduction UML-relationnel
2. Chaque association 1-1 est prise en compte en incluant la
cl primaire dune des relations comme cl trangre dans
lautre relation.
ex. Si un tudiant peut possder une (et une seule) carte
CUMUL, on aura :
CARTE (NumCarte, Crdit, )
ETUDIANT (NumEtu, Nom, Prnom, DateNaiss,
Rue, CP, Ville, NumCarte#)
http://eric.univ-lyon2.fr/~jdarmont/ 47 Bases de donnes
Traduction UML-relationnel
3. Chaque association 1-N est prise en compte en incluant la
cl primaire de la relation dont la multiplicit maximale est
1 comme cl trangre dans lautre relation.
ex. EPREUVE (CodeEpr, DateEpr, Lieu, CodeMat#)
MATIERE (CodeMat, Intitul)
9
http://eric.univ-lyon2.fr/~jdarmont/ 48 Bases de donnes
Traduction UML-relationnel
4. Chaque association M-N est prise en compte en crant
une nouvelle relation dont la cl primaire et la
concatnation des cls primaires des relations
participantes. Les attributs de la classe-association sont
insrs dans cette nouvelle relation si ncessaire.
ex. PASSER (NumEtu#, CodeEpr#, Note)
http://eric.univ-lyon2.fr/~jdarmont/ 49 Bases de donnes
Traduction UML-relationnel
Schma relationnel complet de lexemple
ETUDIANT (NumEtu, Nom, Prnom, DateNaiss,
Rue, CP, Ville)
EPREUVE (CodeEpr, DateEpr, Lieu, CodeMat#)
MATIERE (CodeMat, Intitul)
PASSER (NumEtu#, CodeEpr#, Note)
http://eric.univ-lyon2.fr/~jdarmont/ 50 Bases de donnes
Problme de la redondance
[En dehors des cls trangres]
ex. Soit la relation PASSER_EPREUVE.
NumEtu Note CodeEpr Lieu
101 12,5 INFO1 Amphi Say
101 14,0 ECO1 Amphi Aubrac
112 11,0 ECO2 Salle D201
103 10,5 INFO1 Amphi Say
Cette relation prsente diffrentes anomalies.
http://eric.univ-lyon2.fr/~jdarmont/ 51 Bases de donnes
Anomalies lies la redondance
Anomalies de modification : Si lon souhaite mettre jour
le lieu dune preuve, il faut le faire pour tous les n-uplets
concerns.
Anomalies dinsertion : Pour ajouter une nouvelle
preuve, il faut obligatoirement fournir des valeurs pour
NumEtu et Note.
Anomalies de suppression : Ex. La suppression de
ltudiant n112 fait perdre toutes les informations
concernant lpreuve ECO2.
http://eric.univ-lyon2.fr/~jdarmont/ 52 Bases de donnes
viter la redondance
Pourquoi ?
Suppression des problmes de mise jour
Minimisation de lespace de stockage
Comment ?
Dans le modle conceptuel, ne spcifier que des attributs non
dcomposables (premire forme normale).
Ex. Une adresse doit tre dcompose en rue, code postal,
ville
Cest tout !
http://eric.univ-lyon2.fr/~jdarmont/ 53 Bases de donnes
Algbre relationnelle
Ensemble doprateurs qui sappliquent aux relations
Rsultat : nouvelle relation qui peut son tour tre
manipule
Lalgbre relationnelle permet deffectuer des recherches
dans les relations.
10
http://eric.univ-lyon2.fr/~jdarmont/ 54 Bases de donnes
Oprateurs ensemblistes
Union : T = R S ou T = UNION (R, S)
R et S doivent avoir mme schma.
ex. R et S sont les relations ETUDIANT de deux formations
(ex. M1 Finance et Eco-Socit) qui sont fusionnes pour
constituer une liste dmargement commune.
Notation graphique :

R S
T
http://eric.univ-lyon2.fr/~jdarmont/ 55 Bases de donnes
Oprateurs ensemblistes
Intersection : T = R S ou
T = INTERSECT (R, S)
R et S doivent avoir mme schma.
ex. Permet de trouver les tudiants communs deux
formations.
Notation graphique :
R S
T

http://eric.univ-lyon2.fr/~jdarmont/ 56 Bases de donnes
Oprateurs ensemblistes
Diffrence : T = R - S ou T = MINUS (R, S)
R et S doivent avoir mme schma.
ex. Permet de retirer les tudiants de la relation S
existant dans la relation R.
Notation graphique :
R S
T

http://eric.univ-lyon2.fr/~jdarmont/ 57 Bases de donnes
Oprateurs ensemblistes
Produit cartsien : T = R x S
ou T = PRODUCT (R, S)
Associe chaque n-uplet de R chaque n-uplet de S.
Notation graphique :
R S
T
x
http://eric.univ-lyon2.fr/~jdarmont/ 58 Bases de donnes
Produit cartsien
ex.
NumEtu Nom
101 E1
102 E2
CodeEpr Lieu
INFO1 Say
ECO1 Aubrac
ECO2 D201
X
NumEtu Nom CodeEpr Lieu
101 E1 INFO1 Say
102 E2 INFO1 Say
101 E1 ECO1 Aubrac
102 E2 ECO1 Aubrac
101 E1 ECO2 D201
102 E2 ECO2 D201
=
http://eric.univ-lyon2.fr/~jdarmont/ 59 Bases de donnes
Oprateurs ensemblistes
Division : T = R S ou T = DIVISION (R, S)
R (A
1
, A
2
, , A
n
) S (A
p+1
, , A
n
)
T (A
1
, A
2
, , A
p
) contient tous les n-uplets tels que leur
concatnation chacun des n-uplets de S donne toujours
un n-uplet de R.
Notation graphique :
R S
T

11
http://eric.univ-lyon2.fr/~jdarmont/ 60 Bases de donnes
Division
NumEtu CodeEpr Note
101 INFO1 11
101 ECO1 15
101 ECO2 12
102 ECO1 9
103 INFO1 11
103 ECO2 12
ex.
CodeEpr Note
INFO1 11
ECO2 12
NumEtu
101
103

=
NumEtu CodeEpr Note
101 INFO1 11
101 ECO1 15
101 ECO2 12
102 ECO1 9
103 INFO1 11
103 ECO2 12
http://eric.univ-lyon2.fr/~jdarmont/ 61 Bases de donnes
Oprateurs spcifiques
Projection : T = <A, B, C> (R)
ou T = PROJECT (R / A, B, C)
T ne contient que les attributs A, B et C de R.
ex. Noms et prnoms des tudiants.
Notation graphique :
T
R
A, B, C
http://eric.univ-lyon2.fr/~jdarmont/ 62 Bases de donnes
Oprateurs spcifiques
Restriction : T = <C> (R)
ou T = RESTRICT (R / C)
T ne contient que les attributs de R qui satisfont la
condition C.
ex. C = tudiants qui habitent Lyon.
Notation graphique :
T
R
C
http://eric.univ-lyon2.fr/~jdarmont/ 63 Bases de donnes
Oprateurs spcifiques
Jointure naturelle : T = R >< S
ou T = JOIN (R, S)
Produit cartsien R x S et restriction A = B sur les
attributs A R et B S.
Notation graphique :
T
A B
=
R S
http://eric.univ-lyon2.fr/~jdarmont/ 64 Bases de donnes
Exemple de requte
*
Notes des tudiants en prcisant leurs noms (et pas
seulement leurs numros)
*
Requte : enchanement doprations
=
PASSER ETUDIANT
NumEtu NumEtu
H h
f
Nom,
CodeEpr, Note
RESULTAT
http://eric.univ-lyon2.fr/~jdarmont/ 65 Bases de donnes
Exemple de requte
NumEtu Nom
101 E1
102 E2
103 E3
NumEtu CodeEpr Note
101 INFO1 10
103 INFO1 15
103 ECO1 12
X
Dcomposition des oprations
ETUDIANT PASSER
12
http://eric.univ-lyon2.fr/~jdarmont/ 66 Bases de donnes
Exemple de requte
E.NumEtu Nom P.NumEtu CodeEpr Note
101 E1 101 INFO1 10
102 E2 101 INFO1 10
103 E3 101 INFO1 10
101 E1 103 INFO1 15
102 E2 103 INFO1 15
103 E3 103 INFO1 15
101 E1 103 ECO1 12
102 E2 103 ECO1 12
103 E3 103 ECO1 12
=
E.NumEtu Nom P.NumEtu CodeEpr Note
101 E1 101 INFO1 10
102 E2 101 INFO1 10
103 E3 101 INFO1 10
101 E1 103 INFO1 15
102 E2 103 INFO1 15
103 E3 103 INFO1 15
101 E1 103 ECO1 12
102 E2 103 ECO1 12
103 E3 103 ECO1 12
http://eric.univ-lyon2.fr/~jdarmont/ 67 Bases de donnes
Exemple de requte
E.NumEtu Nom P.NumEtu CodeEpr Note
101 E1 101 INFO1 10
103 E3 103 INFO1 15
103 E3 103 ECO1 12
Nom CodeEpr Note
E1 INFO1 10
E3 INFO1 15
E3 ECO1 12
ETUDIANT PASSER
(Projection sur les attributs
Nom, CodeEpr et Note)
<Nom, CodeEpr, Note> (ETUDIANT PASSER)
http://eric.univ-lyon2.fr/~jdarmont/ 68 Bases de donnes
Classification des SGBD relationnels
Niveau 1 : Systmes non relationnels.
Supportent uniquement la structure tabulaire.
Niveau 2 : Systmes relationnellement minimaux.
Permettent les oprations de slection, projection et
jointure.
Niveau 3 : Systmes relationnellement complets. Toutes
les oprations de lalgbre relationnelle.
Niveau 4 : Systmes relationnellement pleins.
Permettent la dfinition des contraintes dintgrit.
http://eric.univ-lyon2.fr/~jdarmont/ 69 Bases de donnes
Plan du cours
Introduction
Modle UML
Modle relationnel
Langage SQL
http://eric.univ-lyon2.fr/~jdarmont/ 70 Bases de donnes
Gnralits
SQL : Structured Query Language, issu de SEQUEL
(Structured English as a QUery Language)
SQL permet la dfinition, la manipulation et le contrle
dune base de donnes relationnelle. Il se base sur
lalgbre relationnelle.
SQL est un standard depuis 1986.
Nous adoptons dans ce chapitre la syntaxe du SQL
d'Oracle (trs proche de la norme).
LDD LMD LCD
http://eric.univ-lyon2.fr/~jdarmont/ 71 Bases de donnes
Types de donnes principaux
NUMBER(n) : nombre entier n chiffres
NUMBER(n, m) : nombre rel n chiffres au total
(virgule comprise) et m chiffres aprs la virgule
VARCHAR(n) : chane de caractres de taille n
DATE : date au format JJ-MM-AAAA
LDD
13
http://eric.univ-lyon2.fr/~jdarmont/ 72 Bases de donnes
Contraintes dintgrit
Mot cl CONSTRAINT
Identification par un nom de contrainte
Cl primaire :
PRIMARY KEY (cl)
Cl trangre :
FOREIGN KEY (cl) REFERENCES table(attribut)
Contrainte de domaine :
CHECK (condition)
http://eric.univ-lyon2.fr/~jdarmont/ 73 Bases de donnes
Dfinition des donnes
ex.
CREATE TABLE Etudiant ( NumEtu NUMBER(8),
Nom VARCHAR(255),
Prenom VARCHAR(255),
DateNaiss DATE,
Rue VARCHAR(255),
CP NUMBER(5),
Ville VARCHAR(255),
CONSTRAINT EtuClePri PRIMARY KEY (NumEtu)
);
http://eric.univ-lyon2.fr/~jdarmont/ 74 Bases de donnes
Dfinition des donnes
ex.
CREATE TABLE Passer ( NumEtu NUMBER(8),
CodeEpr VARCHAR(10),
Note NUMBER(5, 2),
CONSTRAINT PassClePri PRIMARY KEY (NumEtu, CodeEpr),
CONSTRAINT PassCleEtrEtu FOREIGN KEY (NumEtu)
REFERENCES Etudiant (NumEtu),
CONSTRAINT PassCleEtrEpr FOREIGN KEY (CodeEpr)
REFERENCES Epreuve (CodeEpr),
CONSTRAINT NoteValide CHECK (Note >= 0 AND Note <= 20)
);
http://eric.univ-lyon2.fr/~jdarmont/ 75 Bases de donnes
Modifications structurelles
Ajout dattributs
ALTER TABLE nom_table ADD (attribut TYPE, );
ex. ALTER TABLE Etudiant ADD (tel NUMBER(8));
Modifications dattributs
ALTER TABLE nom_table MODIFY (attribut TYPE, );
ex. ALTER TABLE Etudiant MODIFY (tel NUMBER(10));
Suppression d'attributs
ALTER TABLE nom_table DROP COLUMN attribut, ...;
ex. ALTER TABLE Etudiant DROP COLUMN tel;
http://eric.univ-lyon2.fr/~jdarmont/ 76 Bases de donnes
Modifications structurelles
Ajout de contrainte
ALTER TABLE nom_table
ADD CONSTRAINT nom_contrainte dfinition_contrainte;
ex. ALTER TABLE Epreuve
ADD CONSTRAINT LieuValide CHECK (Lieu IN (Say, Aubrac));
Suppression de contrainte
ALTER TABLE nom_table DROP CONSTRAINT nom_contrainte;
ex. ALTER TABLE Epreuve
DROP CONSTRAINT LieuValide;
http://eric.univ-lyon2.fr/~jdarmont/ 77 Bases de donnes
Index
Dfinition : Structure de donnes physique permettant
d'acclrer les accs aux donnes
Exemple :
CREATE INDEX IdxNomEtu ON Etudiant (Nom);
NB : La cl primaire d'une relation est
automatiquement indexe.
14
http://eric.univ-lyon2.fr/~jdarmont/ 78 Bases de donnes
Mise jour des donnes
Ajout dun n-uplet
ex. INSERT INTO Matiere
VALUES (BDM1ESFI, Bases de donnes);
Modification de la valeur dun attribut
ex. UPDATE Etudiant SET Nom=Dudule
WHERE NumEtu = 333333;
ex. UPDATE Passer SET Note = Note + 1;
Suppression de n-uplets
ex. DELETE FROM Etudiant
WHERE Ville = Lyon;
ex. DELETE FROM Epreuve;
LMD
http://eric.univ-lyon2.fr/~jdarmont/ 79 Bases de donnes
Interrogation des donnes
Par lexemple, sur la base ETUDIANTS
Etudiant (NumEtu, Nom, Prnom, DateNaiss,
Rue, CP, Ville)
Epreuve (CodeEpr, Date, Lieu, CodeMat#)
Matiere (CodeMat, Intitul)
Passer (NumEtu#, CodeEpr#, Note)
http://eric.univ-lyon2.fr/~jdarmont/ 80 Bases de donnes
toile, tri et champs calculs
Tous les n-uplets dune table : toile (*)
ex. SELECT * FROM Etudiant;
Tri du rsultat
ex. Par ordre alphabtique [inverse] de nom
SELECT * FROM Etudiant
ORDER BY Nom [DESC];
Champs calculs
ex. Transformation de notes sur 20 en notes sur 10
SELECT Note / 2 FROM Passer;
http://eric.univ-lyon2.fr/~jdarmont/ 81 Bases de donnes
Projection et restriction
Projection
ex. Noms et Prnoms des tudiants, uniquement (pas les
autres attributs)
SELECT Nom, Prnom FROM Etudiant;
Suppression des doublons
ex. SELECT DISTINCT Nom FROM Etudiant;
Restriction
ex. tudiants qui habitent Lyon
SELECT * FROM Etudiant
WHERE Ville = Lyon;
http://eric.univ-lyon2.fr/~jdarmont/ 82 Bases de donnes
Oprateurs de restriction
ex. preuves se droulant aprs le 01/01/2010
SELECT * FROM Epreuve
WHERE DateEpr >= '01-01-2010';
ex. Notes comprises entre 10 et 20
SELECT * FROM Passer
WHERE Note BETWEEN 10 AND 20;
ex. Notes indtermines (sans valeur)
SELECT * FROM Passer
WHERE Note IS NULL;
http://eric.univ-lyon2.fr/~jdarmont/ 83 Bases de donnes
Oprateurs de restriction
ex. tudiants habitant une ville dont le nom se
termine par sur-Sane
SELECT * FROM Etudiant
WHERE Ville LIKE %sur-Sane;
sur-Sane% commence par sur-Sane
%sur% contient le mot sur
15
http://eric.univ-lyon2.fr/~jdarmont/ 84 Bases de donnes
Oprateurs de restriction
ex. Prnoms des tudiants dont le nom est Dupont,
Durand ou Martin
SELECT Prnom FROM Etudiant
WHERE Nom IN (Dupont, Durand, Martin);
NB : Possibilit dutiliser la ngation pour tous ces
prdicats NOT BETWEEN, NOT NULL, NOT LIKE,
NOT IN.
Oprateurs logiques
http://eric.univ-lyon2.fr/~jdarmont/ 85 Bases de donnes
ET. ex. preuves se droulant le 15/01/2013 en salle D201
SELECT * FROM Epreuve
WHERE DateEpr = 15-01-2013 AND Lieu = D201;
OU. ex. tudiants ns avant 1990 ou habitant hors de Lyon
SELECT * FROM Etudiant
WHERE DateNaiss < 01-01-1990 OR Ville <> Lyon;
Combinaisons. ex. tudiants ns aprs 1990 et habitant
Lyon ou Vienne
SELECT * FROM Etudiant
WHERE DateNaiss > 31-12-1990
AND (Ville = Lyon OR Ville = Vienne);
http://eric.univ-lyon2.fr/~jdarmont/ 86 Bases de donnes
Fonctions dagrgat
Elles oprent sur un ensemble de valeurs.
AVG(), VARIANCE(), STDDEV() : moyenne, variance et
cart-type des valeurs
SUM() : somme des valeurs
MIN(), MAX() : valeur minimum, valeur maximum
COUNT() : nombre de valeurs
ex. Moyenne des notes
SELECT AVG(Note) FROM Passer;
http://eric.univ-lyon2.fr/~jdarmont/ 87 Bases de donnes
Fonction COUNT et oprateur DISTINCT
ex. Nombre total de notes
SELECT COUNT(*) FROM Passer;
SELECT COUNT(NumEtu) FROM Passer;
ex. Nombre d'tudiants nots
SELECT COUNT(DISTINCT NumEtu) FROM Passer;
http://eric.univ-lyon2.fr/~jdarmont/ 88 Bases de donnes
Exemple
NumEtu CodeEpr Note
101 INFO1 10
103 INFO1 15
103 ECO1 12
Table PASSER
COUNT(NumEtu) Rsultat = 3
COUNT(DISTINCT NumEtu) Rsultat = 2
http://eric.univ-lyon2.fr/~jdarmont/ 89 Bases de donnes
Jointure
ex. Liste des notes avec le nom des tudiants
SELECT Nom, CodeEpr, Note
FROM Etudiant, Passer
=
PASSER ETUDIANT
NumEtu NumEtu
H h
f
Nom,
CodeEpr, Note
RESULTAT
WHERE Etudiant.NumEtu = Passer.NumEtu;
16
http://eric.univ-lyon2.fr/~jdarmont/ 90 Bases de donnes
Jointure
ex. Idem avec le numro d'tudiant en plus
SELECT E.NumEtu, Nom, CodeEpr, Note
FROM Etudiant E, Passer P
WHERE E.NumEtu = P.NumEtu
ORDER BY Nom, Note DESC;
NB : Utilisation dalias (E et P) pour allger lcriture
+ tri par nom (croissant) et note (dcroissante).
http://eric.univ-lyon2.fr/~jdarmont/ 91 Bases de donnes
Jointure
Jointure exprime avec le prdicat IN
ex. Notes des preuves passes le 23 septembre 2006
SELECT Note FROM Passer
WHERE CodeEpr IN (
SELECT CodeEpr FROM Epreuve
WHERE DateEpr = 23-09-2013 );
NB : Il est possible dimbriquer des requtes.
Sous-
requte
http://eric.univ-lyon2.fr/~jdarmont/ 92 Bases de donnes
Prdicats dexistence
Prdicats EXISTS / NOT EXISTS
ex. tudiants qui ont pass au moins une preuve [nont
pass aucune preuve]
SELECT * FROM Etudiant E
WHERE [NOT] EXISTS (
SELECT * FROM Passer P
WHERE E.NumEtu = P.NumEtu );
http://eric.univ-lyon2.fr/~jdarmont/ 93 Bases de donnes
Prdicats de dnombrement
Prdicats ALL / ANY
ex. Numros des tudiants qui ont obtenu au moins une
note suprieure chacune [ au moins une] des notes
obtenues par l'tudiant client n1000.
SELECT DISTINCT NumEtu FROM Passer
WHERE Note > ALL [ANY] (
SELECT Note FROM Passer
WHERE NumEtu = 101 );
http://eric.univ-lyon2.fr/~jdarmont/ 94 Bases de donnes
Groupement
ex. Moyenne de chaque tudiant
SELECT NumEtu, AVG(Note)
FROM Passer
GROUP BY NumEtu;
ex. Nombre de notes par tudiant
SELECT NumEtu, COUNT(Note)
FROM Passer
GROUP BY NumEtu;
http://eric.univ-lyon2.fr/~jdarmont/ 95 Bases de donnes
Groupement
ex. Note moyenne pour les tudiants ayant pass
moins de 5 preuves
SELECT NumEtu, AVG(Note)
FROM Passer
GROUP BY NumEtu
HAVING COUNT(*) < 5;
Attention : La clause HAVING ne sutilise quavec GROUP BY.
NB : HAVING : valuation de condition sur un rsultat
de groupement (a posteriori)
WHERE : valuation de condition a priori
17
http://eric.univ-lyon2.fr/~jdarmont/ 96 Bases de donnes
Oprations ensemblistes
INTERSECT, MINUS, UNION
ex. Code des preuves ayant soit lieu dans lAmphi
Say, soit ayant t passes par l'tudiant n102
SELECT CodeEpr FROM Epreuve
WHERE Lieu = 'Amphi Say
UNION
SELECT CodeEpr FROM Passer
WHERE NumEtu = 102;
http://eric.univ-lyon2.fr/~jdarmont/ 97 Bases de donnes
Tutoriel SQL
http://eric.univ-lyon2.fr/~jdarmont/tutoriel-sql/
Pour approfondir SQL en ligne
http://eric.univ-lyon2.fr/~jdarmont/ 98 Bases de donnes
Plan du cours
Introduction
Modle UML
Modle relationnel
Langage SQL