Академический Документы
Профессиональный Документы
Культура Документы
Dpartement LUSSI
laurent.brisson@telecom-bretagne.eu
v3.3
Laurent BRISSON
v3.3
SOMMAIRE
1. Organisation du module
iii
vii
15
6. TP Le langage SQL
19
7. TD Thorie de la normalisation
28
8. TP Transactions
37
9. TD Modlisation conceptuelle
49
53
56
70
74
86
Laurent BRISSON
ii
ORGANISATION DU MODULE
DESCRIPTION GNRALE DE L'ENSEIGNEMENT
L'enseignement ddi la gestion de donnes persistantes et la prsentation des systmes de
gestion de bases de donnes relationnels sinscrit donc clairement dans le contexte technique de
linformatique. Lobjectif de ces cours est de comprendre les principes de la gestion de donnes
persistantes1, dans un contexte de volumtrie importante, ce quon appelle aussi le passage
lchelle (scaling en anglais).
En effet, la prise en compte de cette volumtrie, difficile traiter dans un contexte scolaire, est un
lment dterminant pour les solutions mises en uvre. Dans le contexte des bases de donnes, on
suppose, contrairement ce qui est usuellement fait en algorithmique, que les donnes ne tiennent
pas en mmoire2 ou prsentent des contraintes fortes en terme de stockage (comparez la taille des
disques durs et celle des mmoires). Cette hypothse, et le fait que le temps daccs la mmoire de
masse est beaucoup plus important que le temps daccs la mmoire vive, explique que les
performances des traitements sur une base de donnes dpendent davantage du nombre dentres
sorties entre la mmoire et le disque (ou quivalent), que du nombre doprations ralises en
mmoire.
Compte tenu de cette situation, le programme de cours constitue la fois une formation
lutilisation dune base de donnes relationnelle (conception de donnes [2, ch16, p439-458][5],
transactions ACID [4, ch14, p463-479].) et des standards de la gestion de donnes (SQL [7]), mais
aussi une rflexion plus gnrale sur la nature des problmes lis la gestion de donnes
persistantes dans les systmes d'information, et quelques-unes des limites des solutions et standards
actuels. Cette rflexion doit permettre aux tudiants de ne pas rester bloqus sur la technologie du
moment, (technologie relationnelle) mme si elle est aujourdhui omniprsente, et de savoir
transposer leur raisonnement des variations autour du problme plus global de la gestion de
donnes .
En terme de comptences, cet enseignement participe l'acquisition, par les tudiants de la capacit
analyser la problmatique Data d'un systme, d'identifier une solution, de la mettre en uvre et
de l'valuer. La figure 1, ci-dessous, vous permet de situer ces objectifs (FIG INF 301, FIP INF 210)
1 Ce terme dsigne le fait que les donnes persistent lexcution des applications qui les manipulent.
2 Un champ de recherche en bases de donnes sintresse la problmatique des BD grande mmoire dans
lesquelles le volume des donnes ne dpasse pas la capacit de la mmoire.
Laurent BRISSON
iii
v3.3
Objectif de
formation
Analyse de la
problmatique
Analyse qualitative de la
problmatique data d'un
systme
Identification
d'une solution
Connaitre un SGBD R et
justifier son choix par
rapport une solution de
type fichier
Mise en uvre
d'une solution
valuation de la
solution
Maitrise
Analyse qualitative et
quantitative de la
problmatique
donnes d'un systme
Connaitre au moins 2 types
de modles (relationnel,
objet, OLAP) et de
systmes et faire un choix
justifi en relation avec les
exigences qualitatives et
quantitatives
Expertise
Identification de
nouvelles exigences
non couvertes
prcdemment
Auto acquisition de
connaissances sur des
solutions potentielles
et les systmes associs
(composants,
architecture)
Installer le systme et
l'intgrer aux autres
composants ncessaires
Laurent BRISSON
iv
v3.3
La pdagogie mise en uvre dans le cadre de ce module est fonde sur un apprentissage actif. Vous
pouvez remarquer quil ny a aucun cours magistral, ce qui ne veut pas dire que vous allez apprendre
moins mais que vous allez devoir apprendre par vous-mme.
Les cours magistraux ont donc disparu, mais des focus sur des notions prcises seront donc possibles
en petits groupes, sur votre demande.
EVALUATION
La note de contrle continu de ce module est obtenue au moyen lors dune valuation orale portant
sur les objectifs de lUV (voir grilles dvaluation ci-aprs) en se basant sur le travail ralis lors du
projet.
DROULEMENT DES SANCES
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Laurent BRISSON
v3.3
Laurent BRISSON
vi
v3.3
Critre
Comprhension
gnrale d'un SI
Comprhension
gnrale d'un
SGBD
Comprhension
gnrale d'un
SGBD
Relationnel
A
Niveau B + L'tudiant a
un regard critique sur
l'exemple qu'il a fourni.
Il est capable d'en
dcrire les forces et les
faiblesses et de les
rapprocher de
problmatiques
d'ingnierie actuelles
(par exemple
architecture et
urbanisme, SI
dcisionnels ou
transactionnels).
Niveau B + L'tudiant a
des connaissances
gnrales sur la place
des SGBD au sein des
systmes d'information.
Niveau B + L'tudiant a
une visibilit sur
quelques modles
alternatifs aux SGBD
relationnels et sur leur
intrt.
B
Niveau C + L'tudiant
sait illustrer la notion
de SI par un exemple
de son choix. Il est
capable de dcrire
succinctement
quelques
composants de ce
systme et leurs
interactions.
C
L'tudiant peut
fournir les
dfinitions des
principaux termes
associs aux SI, les
commenter et
ragir des
exemples proposs.
D
L'tudiant ne peut
fournir les
dfinitions des
principaux termes
associs aux SI, les
commenter et ragir
des exemples
proposs.
Niveau C + L'tudiant
sait justifier
qualitativement
(volumtrie, partage,
complexit,
standardisation) le
recours une
solution de type
SGBD par rapport
un simple stockage
fichier.
Niveau C + L'tudiant
sait justifier l'intrt
du modle
relationnel en
s'appuyant sur le
principe
d'indpendance des
donnes.
L'tudiant peut
fournir une
dfinition d'un
SGBD, connait le
principe
d'indpendance des
donnes et peut
citer le nom de
quelques systmes
existants.
L'tudiant ne peut
pas fournir une
dfinition d'un
SGBD, ne connait
pas le principe
d'indpendance des
donnes ou ne peut
pas citer le nom de
quelques systmes
existants.
L'tudiant peut
dcrire ce qui
caractrise le
modle relationnel,
il connait la date de
son apparition et le
nom de quelques
SGBDR utiliss
aujourd'hui.
L'tudiant ne peut
pas dcrire ce qui
caractrise le
modle relationnel,
il ne connait pas la
date de son
apparition ou le nom
de quelques SGBDR
utiliss aujourd'hui.
Laurent BRISSON
vii
v3.3
A
L'tudiant russit
crire, de manire
cohrente avec la
question, toutes les
Cohrence requtes complexes
utilisant negation,
imbrication,
regroupement ou
auto-jointure.
Justification en
utilisant un autre
modle formel
Justification
(algbre relationnel
ou logique du 1er
ordre).
Minimalit
Qualit de
la syntaxe
B
L'tudiant russit
crire, de manire
cohrente avec la
question, la moiti des
requtes complexes
utilisant negation,
imbrication,
regroupement ou autojointure.
Justification complte
et comprhensible.
L'tudiant russit
crire, de manire
cohrente avec la
question, une requte
simple ncessitant une
jointure.
Justification
comprhensible mais
incomplte.
Simple affirmation ou
justification non
comprhensible.
L'tudiant a montr
L'tudiant crit
L'tudiant crit
qu'il sait crit
minimalement toutes minimalement la moiti
minimalement au
les requtes.
des requtes.
moins une requte.
Certains des mots cls
La syntaxe est
parfaitement
suivants sont mal
Certains des mots cls
respecte, y compris
utiliss ou (exclusif) ne
suivants sont mal
pour les commandes
sont pas dans l'ordre :
utiliss et ne sont pas
SELECT, UPDATE,
de modification de
dans l'ordre : GROUP
DELETE, INSERT,
schma, ou de
BY, HAVING, EXISTS, IN.
dfinition de droits
FROM, WHERE, LIKE,
d'accs.
ORDER BY.
L'tudiant crit
minimalement
aucune de ses
requtes.
Certains des mots
cls suivants sont mal
utiliss et ne sont pas
dans l'ordre : SELECT,
FROM, WHERE, LIKE,
ORDER BY.
Laurent BRISSON
viii
v3.3
Avoir un regard
pertinent sur la
problmatique
d'intgrit et de
partage des
donnes
Niveau B + L'tudiant
est capable d'utiliser
les diffrents niveaux
d'isolation prvus par
SQL pour expliquer le
comportement du
SGBD.
Niveau C + L'tudiant
est capable d'illustrer
les notions lies
l'isolation :
srialisation,
verrouillage,
transactions bien
formes et
interblocage.
Niveau C + L'tudiant
est capable d'identifier
et justifier
formellement (au
Niveau B + L'tudiant
moyen des
est capable de
dpendances
justifier l'usage
fonctionnelles) la
complmentaire aux
totalit des
contraintes de cls
Maintenir
contraintes de cls
primaires et
l'intgrit de la
primaires d'un schma
base de donnes rfrentielles des
relationnel. Identifier
contraintes de non
et justifier
nullit et de
formellement la
contrainte sur valeur
prservation des
d'attribut (CHECK).
donnes et des
dpendances
fonctionnelles si
possible.
C
L'tudiant est
capable d'utiliser la
terminologie de
base des
transactions
(validation /
commit, abandon /
rollback) et illustrer
les proprits de
l'acronyme ACID.
L'tudiant est
capable d'illustrer la
problmatique
d'intgrit en
prsence de
redondance,
d'identifier et de
justifier
intuitivement la
moiti des
contraintes de cls
primaires et de cls
rfrentielles d'un
schma logique.
L'tudiant ne
matrise pas la
terminologie de base
ou ne sait pas
illustrer les
proprits de
l'acronyme ACID.
Laurent BRISSON
ix
v3.3
Element
L'tudiant ne fait
notation UML aucune erreur.
Identification
des concepts
Identification
des
associations
Choix des
cardinalits
Identification
de l'hritage
Rgles de
drivation
Un des lments de la
notation est erron.
Les erreurs
montrent que
plusieurs lments
de la notation ne
sont pas acquis mais
le schma conserve
toujours un sens.
Le schma possde
tellement d'erreurs
qu'il en perd son
sens ou l'tudiant
confond un
diagramme de
classe et un schma
conceptuel de
donnes.
Deux concepts du
problme sont
oublis ou toutes
les proprits sont
absentes.
La majeure partie
des concepts sont
errons.
L'tudiant est
capable de dfinir
les associations
binaires dans un cas
simple.
L'tudiant se
trompe dans les
concepts concerns
dans la majorit des
associations.
L'tudiant identifie
correctement la
majorit des liens
d'hritages.
L'tudiant fait des
erreurs en drivant
une association 1-N
ou N-N.
Laurent BRISSON
v3.3
L'tudiant est capable de produire une dcomposition en justifiant formellement de sa qualit* sur un
schma relationnel simple d'une vingtaine d'attributs maximums.
Critre
B
L'tudiant sait
L'tudiant sait traduire, traduire des
avec le bon formalisme, hypothses en une
Identifier les
des hypothses en une srie de
dpendances
srie de dpendances
dpendances
fonctionnelles
fonctionnelles
fonctionnelles, une
lmentaires.
faute d'tourderie
est admise.
Niveau B + L'tudiant
Niveau C + L'tudiant
sait dduire les cls
sait dduire les cls
composites d'une
Identifier les cls
d'une relation
relation partir d'un
d'une relation
partir d'un ensemble
ensemble de
de dpendances
dpendances
fonctionnelles.
fonctionnelles.
Qualifier une
relation
Appliquer un
algorithme de
dcomposition
sur une relation
Qualifier une
dcomposition
L'tudiant ne sait
pas dfinir une
srie de
dpendances
fonctionnelles.
L'tudiant sait
justifier la qualit des
relations mais son
argumentation est
incomplte.
L'tudiant ne
connait pas les
dfinitions des 3
premires formes
normales.
Niveau C + L'tudiant
connat les cas
limites d'utilisation
de l'algorithme
(garantie de la
prservation des
donnes, etc.).
L'tudiant sait
appliquer
l'algorithme sur un
exemple simple.
L'tudiant ne sait
pas appliquer ces
algorithmes.
Niveau C + L'tudiant
matrise la proprit
de prservation des
donnes d'une
dcomposition et sait
la justifier sur un
exemple.
L'tudiant sait
identifier une
dcomposition et
produire ses
instances partir de
l'instance de la
relation universelle.
L'tudiant ne sait
pas identifier une
dcomposition
d'une relation
universelle.
Laurent BRISSON
xi
v3.3
L'tudiant est capable de comprendre les aspects systmes (architecture, contraintes d'intgrit) lies la
problmatique de gestion des donnes.
Critre
Architecture
multiniveaux
L'tudiant utilise la
bonne terminologie et
son argumentation est
parfaite.
L'tudiant ne
comprend pas le
concept
d'architecture
multi-niveaux.
Contraintes
d'intgrit
L'tudiant ne
comprend pas que les
contraintes d'intgrit
peuvent tre gres
diffrents niveaux de
l'architecture.
L'tudiant ne
comprend pas la
notion de
contrainte
d'intgrit.
L'tudiant est capable d'utiliser efficacement* une technique de programmation permettant de dvelopper
une application simple accdant une base de donnes relationnelle.
Critre
D
L'tudiant ne
comprend pas
comment le
programme
connait la base
de donnes
laquelle se
connecter.
Savoir se
connecter une
base de donnes
(BD, Schema,
Driver, port,
machine)
Niveau C +
L'tudiant sait
expliquer le rle
des diffrentes
informations
fournies pour la
connexion.
L'tudiant sait
identifier le code o
est spcifie la chaine
de connexion et ses
composantes.
Ecrire une
requte
dynamique en
JDBC (passage
des variables,
distinguer le
type)
Niveau C +
L'tudiant connait
Niveau B + L'tudiant
les diffrentes
connat l'intrt de passer classes de requtes
par la classe
(pas uniquement
PreparedStatement.
Statement) et sait
analyser les
exceptions.
Ne connait
aucune des
classes
permettant
d'interroger une
base de donnes
en JDBC.
Analyser un
rsultat
(comprendre la
notion curseur,
rcuprer les
donnes)
Niveau C +
L'tudiant sait
utiliser la classe
Niveau B + L'tudiant
ResultSet, y
comprend la
compris pour des
correspondance entre
traitements
types relationnels et Java.
avancs (tests de
valeur NULL, par
exemple).
Ne connait pas le
terme de
curseur.
Laurent BRISSON
xii
v3.3
v3.9
CONTEXTE
Suite la seconde guerre mondiale, le dveloppement de linformatique a trs vite pos le problme de la
conservation et de laccs aux donnes. cette poque, un des principaux dfis tait la conservation et
1
l'intgrit des donnes : Il fallait viter quune panne de courant intervenant pendant un traitement laisse les
donnes stockes dans un tat inconnu, ou quun incendie dtruise dfinitivement les donnes accumules
(exigeant des solutions complexes au niveau de la sauvegarde). Le deuxime dfi rsidait dans les temps
d'accs, compte tenu des tailles mmoire : quelques centaines d'octets pour des donnes stockes qui
occupaient dj quelques mga octets (un catalogue de produits, 1 liste d'employs, 1 srie de virements
2
effectuer, etc.) .
Avec le dveloppement des systmes dexploitation temps partag, dans lesquels les utilisateurs accdaient
presque simultanment aux ressources, s'est pos le problme de la gestion de laccs concurrent aux
donnes par diffrents utilisateurs ou diffrentes applications, spcialement quand ceux-ci modifiaient les
donnes. Aujourdhui, les proprits exiges en cas d'accs concurrents sont bien connues et dsignes par
lacronyme ACID (Atomicit, Cohrence, Isolation, Durabilit). Elles caractrisent la notion de transaction. Le
cadre transactionnel a sans nul doute t un des lments fondateurs des systmes de gestion de bases de
donnes (SGBD) actuels [3, ch1, p1-10]. Dans les annes soixante, lapparition dordinateurs mainframe
intgrant directement dans leur systmes dexploitation des mcanismes transactionnels a rpondu aux
besoins de performances d'une informatique de gestion essentiellement caractrise par un trs fort dbit
transactionnel (nombre de transactions par seconde). Pousss par des acteurs riches et influents (tels les
banques) et leurs applications exigeantes en terme de dbit transactionnel (applications OLTP pour On Line
3
Transaction Processing), valus par des organismes indpendants , les grands constructeurs informatiques ont
affin les technologies associes, donnant naissance respectivement aux moniteurs transactionnels, un secteur
aujourd'hui encore extrmement actif.
Cependant, le cadre transactionnel ne traite pas tous les aspects lis au partage des donnes. Rapidement, le
principe d'indpendance des donnes (data independance) vient complter l'approche transactionnelle afin de
dissocier les questions de performances d'accs de celles de modlisation des donnes et de personnalisation.
La modlisation permet aux utilisateurs de manipuler des concepts volus (des ventes, des produits ) sans
connaitre comment les octets sont stocks sur le disque, tandis que la personnalisation leur permet de navoir
Encore aujourd'hui et titre individuel, vous souvenez vous de la dernire fois que vous avez perdu les
contacts de votre tlphone portable ? Imaginez s'il s'agit du fichier client d'une entreprise !
2
1/89
v3.9
accs quaux donnes qui leur sont utiles. Ce principe a trouv son aboutissement avec les SGBD relationnels
(SGBDR), qui constituent encore aujourd'hui la principale famille de systmes de gestion de bases de donnes.
Ses fondements thoriques ont t dfinis dans les annes 70, puis implants partir des annes 1980, et
4
servent de rfrence la quasi-totalit des SGBD actuels [4, ch4, p85-101] . Soutenu par un langage
standardis, SQL [7], qui depuis son apparition en 1986, a considrablement volu pour prendre en compte
les besoins de lindustrie, le modle relationnel sest impos dans le domaine de la gestion de donnes
persistantes fortement structures (typiquement reprsentables sous la forme de tableaux). Moins
performants que les seuls moniteurs transactionnels, mais permettant de "comprendre" les donnes, ces
systmes constituent un des outils de base de toute application manipulant des donnes persistantes. Quil
sagisse de systmes commerciaux (parmi lesquels SQL server, Oracle, ou Sybase [6]) ou de systmes libres
(MySQL, PostgreSQL, etc.), la quasi-totalit des SGBD prsents dans les entreprises reposent sur le modle
relationnel et SQL. Au fil du temps, ces systmes, tout en respectant le standard SQL, ont mis en place des
environnements plus ou moins riches pour monitorer les donnes, tuner les performances du systme, grer
son volution au fil du temps, etc.
Depuis les annes 90, de nouveaux types d'applications sont apparus, aux exigences diffrentes : exigences
5
transactionnelles moins fortes par exemple, mais exigences de distribution ou de disponibilit bien plus fortes .
Du ct des donnes reprsenter, stocker et manipuler, de nouveaux modles sont galement apparus : XML
(eXtended Markup Language) s'est impos la fois comme un standard de reprsentation des documents
structurs (pas seulement des tableaux) et d'Internet ; RDF (Resource Description Framework) est un modle
permettant de reprsenter les annotations. Rcemment, le souhait de stocker des donnes issues de capteurs
a fait merger le besoin d'intgrer des probabilits dans les bases de donnes. Des contraintes matrielles ou
architecturales spcifiques posent galement de nouveaux enjeux (BD embarque sur une carte puce, base
de donnes dans le Cloud) en terme de performance ou de scurit.
Du ct des entreprises, les SGBD, outils techniques de gestion des donnes, sont totalement banaliss, mais la
gestion des donnes de l'entreprise reste, elle, tout fait actuelle. Les applications se sont multiplies, selon les
besoins des utilisateurs, le plus souvent sans rel contrle de leur cohrence avec le parc applicatif existant.
Dans une re industrielle o vitesse et restructurations (filialisations, regroupements, rachats, etc.) allaient
ensemble, la gestion dun parc dapplications htrognes utilisant des bases de donnes dsynchronises est
devenue un vritable enjeu pour les entreprises. Alors que le contexte conomique de concurrence exigeait
delles dadapter en permanence leur stratgie, les informations ncessaires pour dfinir cette stratgie taient
enfouies dans des bases de donnes parpilles, manipules par des logiciels mal matriss, peu flexibles,
pniblement mis jour au fil du temps, et dont les interdpendances avec dautres logiciels ntaient pas
connues. Dans cette jungle logicielle, les seuls rsums dinformation, les tableaux de bord , taient obtenus
en allant rcuprer les donnes au cur des bases de donnes, en esprant pour que ces donnes soient les
bonnes (la multiplication des bases introduisant des dsynchronisations douloureuses corriger). Les entrepts
de donnes (datawarehouse en anglais) constituent une approche base sur les donnes pour laide la
dcision dans lentreprise. Traites, corriges, consolides, les donnes de ces entrepts viennent alimenter les
tableaux de bords des dcideurs, tous les niveaux de lentreprise : les problmes de gestion de donnes pour
lanalyse (OLAP pour On Line Analysis Processing) ont progressivement pris le pas sur ceux de lOLTP, mais si le
contexte change, les donnes restent un lment cl de la survie de l'entreprise.
4
Auxquels il faut dsormais ajouter depuis quelques temps les bases de donnes NoSQL (Not only SQL),
fortement lies la gnralisation d'Internet et au dveloppement d'applications manipulant des volumes de
donnes encore inimaginables il y a 15 ans..
5
Voir les applications dsormais courantes telles que Google, Facebook, etc. En aout 2012, Facebook affirme
stocker 500 To de nouvelles donnes chaque jour (source zdnet.fr 23/8/2012).
Laurent BRISSON et Philippe PICOUET
2/89
v3.9
De fait, la problmatique de la gestion de donnes, mme relle, s'est substitue celle de la gestion de
linformation d'entreprise, que l'on pourrait simplifier la gestion des donnes de l'entreprise vues sous
l'aspect mtier (finalement, il n'y a que depuis quelques dizaines d'annes que toutes ces donnes sont
informatises). Le terme de systme dinformation (SI) dsigne le systme constitu des ressources
humaines, des ressources matrielles et des procdures permettant d'acqurir, de stocker, de traiter et de
diffuser les lments d'information pertinents au fonctionnement d'une entreprise ou d'une organisation
(Office qubcois de la langue franaise, 2004). Tandis que, pendant les annes 90, les politiques de qualit,
orientes vers la satisfaction du client, viennent structurer les mtiers de lentreprise sous la forme de
processus (enchanement d'activits excuter pour rpondre un objectif et donner satisfaction son client,
interne ou externe lentreprise), la production et le transit de linformation au sein de lentreprise devient un
lment primordial de lorganisation du SI. Aprs de nombreuses annes ddies exclusivement aux donnes
et au dveloppement dapplications, larchitecture [2, ch2, p13-51] simpose petit petit comme lment
structurant du SI, dterminant en grande partie sa capacit voluer ou non au fil des volutions et des
restructurations. Le recensement des applications composant le systme dinformation (cartographie) et la
maitrise de leurs interactions est devenu un des premiers objectifs des Directions de Systmes dInformation
(DSI), qui ont peu peu remplac les services informatiques ddis au dveloppement et la maintenance des
annes 70-80. En sous-traitant lessentiel de leur dveloppement, et en utilisant massivement des progiciels,
tels que les progiciels de gestion intgrs (PGI, ou ERP an anglais pour Enterprise Resource Planning), ces DSI se
concentrent sur la maitrise du parc applicatif et la gestion de la sous-traitance, sur la qualit et le cot de ses
propres prestations vis--vis des services mtier de lentreprise (marketing, conception, construction, etc.)
devenus leurs clients et, plus rcemment encore, sur laccroissement de la flexibilit du systme
dinformation, c'est--dire, sur sa capacit voluer rapidement pour rpondre efficacement aux futurs
besoins de lentreprise.
C'est en prenant en considration ces exigences que doivent tre analyss les progrs de l'informatique, tant
en terme de technologies que de mthodes.
3/89
v3.9
Ce terme dsigne le fait que les donnes persistent lexcution des applications qui les manipulent.
Un champ de recherche en bases de donnes sintresse la problmatique des BD grande mmoire dans
lesquelles le volume des donnes ne dpasse pas la capacit de la mmoire.
Laurent BRISSON et Philippe PICOUET
4/89
Objectif de
formation
v3.9
Maitrise
Expertise
Analyse qualitative de la
problmatique data d'un
systme
Analyse qualitative et
quantitative de la
problmatique donnes
d'un systme
Identification de nouvelles
exigences non couvertes
prcdemment
Identification
d'une solution
Connaitre un SGBD R et
justifier son choix par rapport
une solution de type fichier
Auto acquisition de
connaissances sur des
solutions potentielles et les
systmes associs
(composants, architecture)
Mise en uvre
d'une solution
Evaluation de la
solution
Tester le schma
(contraintes essentiellement)
via des requtes et via
l'application
Analyse de la
problmatique
III.
BIBLIOGRAPHIE
5/89
v2.6
Introduction .................................................................................................................................................... 2
II.
III.
IV.
V.
VI.
PR-REQUIS
Aucun
APPROFONDISSEMENTS
A la suite de ce TD, vous devez obligatoirement lire (ou relire) les documents suivants du support de cours :
6/89
I.
v2.6
INTRODUCTION
Considrons une entreprise dans laquelle on dsire stocker des donnes concernant les employs et les
dpartements dans lesquels travaillent ces employs. Nous allons tout au long de ce cas dtude examiner
diffrentes faons de reprsenter ces donnes au moyen de tableaux que nous allons manipuler avec votre
tableur favori. Ces exercices doivent vous permettre d'apprhender la modlisation de donnes persistantes et
de comprendre les difficults lies une reprsentation tabulaire des donnes, telles qu'elles le sont dans les
bases de donnes.
A lintrieur de lentreprise, quelques rgles de gestion sont mises en uvre. Vous devrez veiller les respecter
lors de cette tude :
Sur lespace Moodle du module vous trouverez les fichiers Excel suivants : cas1.xls et cas2a.xls et cas3.xls
Ces donnes sont galement prsentes en annexe, la fin de ce sujet.
Ce document est structur de la manire suivante :
7/89
II.
v2.6
Le terme de "modle de donnes relationnel" dsigne une manire de structurer les informations sous la
forme de matrices que l'on appelle tables ou relations. Ce modle, trs simple, est de loin le plus rpandu dans
les Systmes de Gestion de Bases de Donnes (SGBD), qui sont ainsi dnomms SGBD relationnels.
Une base de donnes relationnelle est donc constitue dun ensemble de donnes structures sous forme de
relations.
Dfinition [Schma dune relation] Le schma d'une relation R est caractris par un nom et une liste
d'attributs A1, , An et se note R(A1, , An).
Exemple : Considrons les donnes des clients dune entreprise. On connait leur numro, leur nom, leur
adresse et leur numro de tlphone. Nous pouvons exprimer cela par la relation Client (Numro, Nom, Ville,
Tlphone) qui peut se reprsenter sous forme dune table, comme ci-dessous :
Attributs
Numro
Nom
Ville
Tlphone
2
6
22
54
DURANT
MARTIN
BERNARD
FONTAINE
BREST
PARIS
NICE
RENNES
02 12 34 56 78
04 98 76 54 32
Ligne ou tuple
Les attributs dune relation correspondent aux colonnes de la table. Les lignes dune relation sont galement
appeles tuples.
Dfinition [Domaine] On appelle domaine, lensemble des valeurs que peut prendre un attribut.
Exemple : Le domaine de lattribut Ville est lensemble des villes o se situent ses clients. Le domaine nest pas
limit aux valeurs actuellement prsentes dans la table.
Remarque Une relation est un ensemble au sens mathmatique, il ny a pas de notion dordre ni de doublons
(rptitions).
D'un point de vue formel, il est donc impossible davoir, dans une mme table, deux lignes identiques, ni mme
de connatre lordre dans lequel ces lignes sont stockes sur le disque. Nous verrons dans la suite de cet
enseignement comment cette rgle s'adapte aux SGBD rels !
Dans la prochaine section, nous allons examiner une premire reprsentation de l'tude de cas prsente
succinctement en section 1.
8/89
III.
v2.6
Le fichier cas1.xls prsente de manire partielle une seule feuille de calcul avec la relation suivante :
TABLEAU_1(EMPNO, ENAME, JOB, SAL, MANAGER, HIREDATE, COMMISSION, DEPTNO, DNAME, LOC)
1.
2.
Cherchez le lieu de travail de lemploy DOE. Dans le pire des cas, combien de lignes devez-vous
parcourir ? Peut-il y avoir plusieurs lignes avec la mme valeur de lattribut ENAME ?
Faites les mises jour ncessaires pour renommer en REAL ESTATE le dpartement dans lequel
travaille lemploy TURNER. Dans le pire des cas, combien de lignes devez-vous parcourir en lecture ?
Combien de lignes avez-vous d modifier ? quoi ce dernier nombre correspond-il ?
Dfinition [Clef candidate] Une clef candidate est un attribut ou un ensemble dattributs identifiant de
manire unique chaque tuple dune relation.
Dfinition [Clef primaire] La clef candidate choisie comme identifiant de la relation est appele clef primaire.
Une clef primaire est unique et doit tre renseigne (elle ne peut pas prendre la valeur NULL).
Par convention, on souligne (dun trait plein) la cl primaire dune relation.
3.
Dfinition [Donne redondante] Une donne est considre redondante si elle se rpte sans apporter
dinformation supplmentaire.
4.
Considrer les 2 lignes concernant lemploy SCOTT. Cochez la (les) proposition(s) ci-dessous qui vous
semble(nt) exacte(s) en justifiant votre choix :
Les valeurs de EMPNO sont redondantes
Les valeurs de MGR sont redondantes
Les valeurs de JOB sont redondantes
IV.
Dfinition [Clef trangre ou clef rfrentielle] On dit que l'ensemble K des attributs de R1 est clef trangre
et qu'elle rfrence R2 si les attributs K de R1 ont les mmes domaines que les attributs de la cl primaire de la
relation R2.
Par convention, on souligne (dun trait pointill) la clef rfrentielle dune relation.
Clefs primaires
Exemple :
Client
Clef candidate
9/89
A.
v2.6
Le fichier cas2a.xls prsente deux feuilles de calcul avec les tableaux suivants :
TABLEAU_1(EMPNO, ENAME, JOB, SAL, MANAGER, HIREDATE, COMMISSION, DNAME)
TABLEAU_2(DEPTNO, DNAME, LOC)
1.
2.
3.
Dans quelle mesure cette nouvelle structure de donnes peut-elle rduire les redondances
rencontres lors de ltude du cas n1 ?
Identifiez, pour chacune des deux relations, les clefs primaires et rfrentielles si elles existent.
Pouvez-vous renommer en REAL ESTATE le dpartement dans lequel travaille lemploy TURNER ?
Pourquoi ?
B.
1.
Proposez une dcomposition en 2 relations corrigeant les relations du cas n2A afin de rsoudre le
problme que vous avez identifi. Faites valider votre proposition par un enseignant.
2.
3.
4.
V.
Cherchez le lieu de travail de lemploy DOE. Dans le pire des cas, combien de lignes devez-vous
parcourir ? Peut-il y avoir plusieurs lignes avec le mme ENAME ?
Faites les mises jour ncessaires pour renommer en REAL ESTATE le dpartement dans lequel
travaille lemploy TURNER. Dans le pire des cas, combien de lignes devez-vous parcourir en lecture ?
Combien de lignes avez-vous d modifier ? A quoi ce dernier nombre correspond-t-il ?
Quelles donnes peut-on encore considrer comme redondantes ?
Le fichier cas3.xls prsente trois feuilles de calcul avec les tableaux suivants :
TABLEAU_1(EMPNO, ENAME, SAL, MANAGER, HIREDATE, COMMISSION)
TABLEAU_2(DEPTNO, DNAME, LOC)
TABLEAU_3(EMPNO, DEPTNO, JOB)
1.
2.
3.
4.
5.
6.
Identifiez, pour chacune des trois relations, les clefs primaires et rfrentielles si elles existent.
Remplissez les feuilles de calculs en vous aidant des donnes du cas n1.
Dans quelle mesure cette nouvelle structure de donnes peut-elle rduire les redondances
rencontres lors de ltude du cas n2B ?
Cherchez le lieu de travail de lemploy DOE. Dans le pire des cas, combien de lignes devez-vous
parcourir ? Peut-il y avoir plusieurs lignes avec le mme ENAME ?
Faites les mises jour ncessaires pour renommer en REAL ESTATE le dpartement dans lequel
travaille lemploy TURNER. Dans le pire des cas, combien de lignes devez-vous parcourir en lecture ?
Combien de lignes avez-vous d modifier ? A quoi ce dernier nombre correspond-t-il ?
Quelles donnes peut-on considrer comme redondantes ?
10/89
VI.
v2.6
BILAN ET AUTO-VALUATION
A.
FICHE DE SYNTHSE
Consultation des donnes : la difficult effectuer la requte se compte en nombre de lignes lues afin
dobtenir la rponse la question pose.
Mise jour des donnes : la difficult effectuer la mise jour se compte en nombre de lignes concernes
afin deffectuer la modification.
- et -+ et ++
Situation de rfrence
Consultation ou mise jour plus complique
Consultation ou mise jour plus simple
Mise jour
Cas n1
Cas n2B
Justifiez :
Cas n3
Justifiez :
Dans le contexte prsent en section I, quelle structure de donnes prsente dans les diffrents cas jugezvous la plus pertinente ? Justifiez votre rponse.
11/89
B.
v2.6
AUTO-VALUATION
La grille suivante sera utilise pour valuer votre comprhension des problmes dintgrit sur les donnes. A
lissu de ce TD vous devriez en tre au niveau C. A quel niveau vous situez-vous ?
Critre
Maintenir
l'intgrit
de la base
de
donnes
VII.
B
Niveau C + L'tudiant est
capable d'identifier et
Niveau B + L'tudiant justifier formellement
est capable de justifier (au moyen des
l'usage
dpendances
complmentaire aux
fonctionnelles) la totalit
des contraintes de cls
contraintes de cls
primaires et
primaires d'un schma
relationnel. Identifier et
rfrentielles des
contraintes de non
justifier formellement la
nullit et de contrainte prservation des
sur valeur d'attribut
donnes et des
(CHECK).
dpendances
fonctionnelles si
possible.
CAS N1
TABLEAU_1
EMPNO
7698
7499
7521
7654
7844
7904
7369
7540
7566
7788
7876
7902
7782
7839
7934
7900
7904
7788
ENAME
JOB
BLAKE
MANAGER
ALLEN SALESMAN
WARD SALESMAN
MARTIN SALESMAN
TURNER SALESMAN
DOE
CLERK
SMITH
CLERK
OMARI
ANALYST
JONES
MANAGER
SCOTT
ANALYST
ADAMS
CLERK
FORD
ANALYST
CLARK
MANAGER
KING PRESIDENT
MILLER
CLERK
JAMES
CLERK
DOE SALESMAN
SCOTT
ANALYST
MGR
7839
7698
7698
7698
7698
7566
7902
7566
7839
7566
7788
7566
7839
NULL
7782
7698
7566
7566
HIREDATE
05/01/2081
02/20/2081
02/22/2081
09/28/2081
09/08/2081
12/11/2099
12/17/2080
12/11/2099
04/02/2081
12/09/2081
01/12/2083
12/03/2081
06/09/2081
11/17/2081
01/23/2082
12/03/2081
12/11/2099
12/09/2081
SAL
2850
1600
1250
1250
1500
2500
800
2500
2975
3000
1100
3000
2450
5000
1300
950
2500
3000
COMM
NULL
300
500
1400
0
300
NULL
200
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
300
NULL
DEPTNO
40
30
30
30
30
20
20
20
20
20
20
20
10
10
10
40
30
10
DNAME
SALES
SALES
SALES
SALES
SALES
RESEARCH
RESEARCH
RESEARCH
RESEARCH
RESEARCH
RESEARCH
RESEARCH
ACCOUNTING
ACCOUNTING
ACCOUNTING
SALES
SALES
ACCOUNTING
12/89
LOC
BOSTON
CHICAGO
CHICAGO
CHICAGO
CHICAGO
DALLAS
DALLAS
DALLAS
DALLAS
DALLAS
DALLAS
DALLAS
NEW YORK
NEW YORK
NEW YORK
BOSTON
CHICAGO
NEW YORK
B.
v2.6
CAS N2A
Tableau_1
EMPNO
7782
7788
7839
7934
7369
7788
7540
7566
7904
7876
7902
7904
7499
7521
7654
7698
7844
7900
ENAME
JOB
CLARK
MANAGER
SCOTT
ANALYST
KING PRESIDENT
MILLER
CLERK
SMITH
CLERK
SCOTT
ANALYST
OMARI
ANALYST
JONES
MANAGER
DOE
CLERK
ADAMS
CLERK
FORD
ANALYST
DOE SALESMAN
ALLEN SALESMAN
WARD SALESMAN
MARTIN SALESMAN
BLAKE
MANAGER
TURNER SALESMAN
JAMES
CLERK
MGR
7839
7566
NULL
7782
7902
7566
7566
7839
7566
7788
7566
7566
7698
7698
7698
7839
7698
7698
HIREDATE
06/09/2081
12/09/2081
11/17/2081
01/23/2082
12/17/2080
12/09/2081
12/11/2099
04/02/2081
12/11/2099
01/12/2083
12/03/2081
12/11/2099
02/20/2081
02/22/2081
09/28/2081
05/01/2081
09/08/2081
12/03/2081
SAL
2450
3000
5000
1300
800
3000
2500
2975
2500
1100
3000
2500
1600
1250
1250
2850
1500
950
COMM
NULL
NULL
NULL
NULL
NULL
NULL
200
NULL
300
NULL
NULL
300
300
500
1400
NULL
0
NULL
DNAME
ACCOUNTING
ACCOUNTING
ACCOUNTING
ACCOUNTING
RESEARCH
RESEARCH
RESEARCH
RESEARCH
RESEARCH
RESEARCH
RESEARCH
SALES
SALES
SALES
SALES
SALES
SALES
SALES
Tableau_2
DEPTNO
10
20
30
40
DNAME
ACCOUNTING
RESEARCH
SALES
SALES
LOC
NEW YORK
DALLAS
CHICAGO
BOSTON
13/89
C.
v2.6
CAS N3
Tableau_1
EMPNO
ENAME
MGR
HIREDATE
SAL
COMM
Tableau_2
DEPTNO
DNAME
LOC
Tableau_3
EMPNO
DEPTNO
JOB
14/89
v1.6
II.
III.
IV.
V.
PR-REQUIS
L'tudiant sait analyser un schma relationnel simple crit sous forme littrale
APPROFONDISSEMENTS
Apprhender la grille de critres d'valuation de requtes SQL
15/89
I.
v1.6
Les requtes SQL exprimer sont relatives la base de donnes BIBLIOTHEQUE constitue des relations dont le
schma est dcrit ci-dessous:
ABONNE(id, nom, prenom, telephone, code postal)
LIVRE(id, isbn, titre, auteur, annee_edition, prix)
EMPRUNT(id_livre, id_abonne, date-emprunt) : o id_livre rfrence LIVRE(id) et id_abonne rfrence
ABONNE(id)
Aucun historique n'est gr dans cette base : La table ABONNE contient les informations sur les abonns
actuels de la bibliothque, et la table LIVRE contient celles de tous les livres actuellement grs par la
bibliothque. La table EMPRUNT contient les emprunts en cours. Lorsquun livre est retourn, le tuple
correspondant dans la table EMPRUNT est effac.
II.
Les requtes SQL respectent la structure gnrale prsente sur la Figure 2 - Structure gnrale d'une requte
SQL. Les paragraphes suivants vous guident pas pas pour dcouvrir les concepts les plus importants et
donnent des prcisions sur la syntaxe.
SELECT colonnes
FROM tables
[WHERE condition]
[GROUP BY colonnes [HAVING condition]]
[ORDER BY colonnes [ASC\DESC]]
Remarque : les expressions entre crochets [ ] signifient que le mot clef est optionnel !
16/89
III.
v1.6
Exemple
Questions
1.
2.
3.
IV.
Lorsque lon dsire rcuprer, de manire cohrente, des informations contenues dans plusieurs tables nous
devons utiliser loprateur de jointure.
Lexpression [[AS] alias] permet de renommer une table au moyen dun alias. Cette notation est utilise
pour faciliter la lecture dune requte et pour lever les ambigits lorsque plusieurs tables ont des attributs se
nommant de la mme faon.
Exemple
17/89
v1.6
Questions
4.
5.
6.
V.
CALCULS ET REGROUPEMENT
Le mot clef GROUP BY permet de raliser des regroupements selon un ou plusieurs attributs. Il est donc ainsi
possible, au niveau du SELECT, de spcifier une fonction dagrgation (count, min, max, sum, avg etc.) qui
sappliquera lensemble des lignes regroupes.
A noter que le mot clef HAVING permet dexprimer une contrainte sur le regroupement (c'est--dire le rsultat
de la fonction). Le mot clef WHERE doit toujours tre utilis pour tester les valeurs dun tuple existant dans la
base.
Exemple
Questions
7.
8.
9.
10.
18/89
v2.7
TP LE LANGAGE SQL
SOMMAIRE
Pr-requis ................................................................................................................................................................ 1
Approfondissements ............................................................................................................................................... 1
Avant de dbuter .................................................................................................................................................... 2
I.
II.
Jointures ......................................................................................................................................................... 5
III.
IV.
Aggrgation .................................................................................................................................................... 7
V.
VI.
PR-REQUIS
me
APPROFONDISSEMENTS
Le cours suivant est destin aider la rsolution des dernires requtes complexes.
SQL et logique du premier ordre
19/89
v2.7
AVANT DE DBUTER
A.
Les requtes SQL exprimer sont relatives la base de donnes SOINS constitue des relations dont le schma
est dcrit de manire linaire ci-dessous (les identifiants des relations sont souligns, et les attributs qui
rfrencent une autre relation sont en gras).
MEDECIN (medecin_id, nom, prenom, adresse, tel, specialite)
PATIENT (patient_id, nom, prenom, numsecu, rattachement, medecin_referent)
o rattachement rfrence PATIENT(patient_id)
et medecin_referent rfrence MEDECIN(medecin_id)
VISITE (medecin, patient, date_visite, prix)
o medecin rfrence MEDECIN(medecin_id)
et patient rfrence PATIENT(patient_id)
PRESCRIPTION (prescription_id, medicament, medecin, patient, date_visite, duree, posologie, modalites)
o le triplet d'attributs (medecin, patient, date_visite) rfrence VISITE(medecin, patient, date_visite)
Notez que :
l'attribut rattachement de la relation PATIENT est renseign quand une personne (appele ayant droit)
bnficie de l'assurance maladie, non pas en son nom propre, mais par sa relation avec une autre
personne (appele assur) qui en bnficie. Par exemple, les enfants sont rattachs l'un de leurs
parents, ce qui leur donne droit l'assurance maladie.
l'attribut medecin_referent de la relation PATIENT dsigne le mdecin qu'un patient a choisi pour
suivre son dossier mdical.
les attributs duree et posologie seront traits de manire trs simple dans cet exemple : la dure
dsigne un nombre de jours de traitement et la posologie le nombre de prises par jour.
Avant de dmarrer les exercices, reprsentez graphiquement le schma logique dcrit linairement ci-dessus.
20/89
B.
v2.7
En fonction de votre connaissance initiale du langage, vous pouvez adopter des stratgies de parcours du TP
diffrentes.
Pour les dbutants : nous vous conseillons deffectuer dans un premier temps toutes les requtes
faciles du TP, puis celles de difficult moyenne pour finir par les plus difficiles. Si vous chouez une
requte, analysez votre erreur et demandez l'enseignant de vous proposer une autre requte du
mme style.
Pour ceux qui ont dj une certaine exprience de SQL : rien ne vous empche de shunter certaines
requtes. Sachez toutefois que chaque requte prsente toujours une difficult spcifique.
Pour tous : nous vous conseillons de faire ces requtes en gardant l'esprit la grille d'valuation que
nous vous avons fournie sur SQL. En particulier, si l'interprteur SQL dtecte les erreurs de syntaxe, il
ne vrifie par le critre de minimalit ou le fait que votre requte SQL rpond la requte pose.
Nous vous conseillons donc de vrifier votre requte en ralisant des requtes complmentaires qui
doivent vous permettre d'amliorer la qualit de votre production. De mme, nous vous suggrons de
vous entraner au critre d'explicabilit en expliquant une requte par section un binme voisin ou
un enseignant.
Le TP est long. Il exige donc que vous travaillez entre les sances, voire que vous le terminiez aprs les deux
sances. Le QCM qui est propos en ligne peut galement vous aider juger de votre niveau de maitrise de ce
langage.
C.
Le langage SQL est en fait une norme internationale qui a suivi de nombreuses modifications. Nous en sommes
la version ISO/CEI 9075.
Cependant, il existe de nombreuses variantes (plus ou moins importantes) selon le SGBD que vous utilisez.
Voici les liens vers les documentations correspondantes :
ORACLE 10g : http://docs.oracle.com/cd/B19306_01/server.102/b14200/toc.htm
PostgreSQL 9.2 : http://www.postgresql.org/docs/9.2/interactive/index.html
MySQL 5.7 : http://dev.mysql.com/doc/refman/5.7/en/sql-syntax.html
21/89
I.
v2.7
REQUTES
Remarque : avant de vous lancer dans une requte prenez le temps dobserver les enregistrements des
diffrentes tables. Par exemple, la requte suivante :
SELECT distinct medicament FROM prescription
vous permettra de comprendre comment les mdicaments sont orthographis afin deffectuer la requte
adquate.
1.
2.
Affichez toutes les prescriptions de ventoline ordonnes par dure de traitement dcroissante.
3.
4.
Affichez les prescriptions de ventoline ayant une dure suprieure 90 jours ou une posologie
suprieure 6 prises/jour.
B.
Critre
Qualit
de la
syntaxe
AUTO-VALUATION
Savez-vous dcrire la structure globale dune requte SQL ? Essayez de faire un schma et de le
maintenir tout au long de ce TP afin de lenrichir des nouveaux mots-clefs que vous dcouvrirez.
Avez-vous compris la documentation concernant les mots-clefs utiliss dans ce premier exercice ?
La grille suivante sera utilise pour valuer la qualit de votre syntaxe. A quel niveau vous situezvous ?
A
La syntaxe est
parfaitement
respecte.
22/89
II.
v2.7
JOINTURES
A.
REQUTES
Affichez pour chaque prescription le prix de la visite qui lui est associe.
6.
Affichez les noms des patients et les identifiants des mdecins quils ont visits le 15 janvier 2012.
Quelle table contient les informations concernant les ayant-droits ? Quelle table contient les informations
concernant les assurs ? Comment effectuer une jointure sur une table qui possde des rles multiples ?
7.
Affichez pour chaque ayant-droit, les numros de scurit sociale, nom et prnom de l'assur auquel il
est rattach.
8.
Par dfaut, la jointure ne conserve pas les tuples dont l'attribut de jointure a une valeur inconnue (NULL). On
parle de jointure interne (ou INNER JOIN). Comment s'appelle la jointure qui permet de conserver de tels
tuples ? Identifiez ensuite la syntaxe propre ce type de jointure.
9.
Affichez les noms des patients et de leur mdecin rfrent (en affichant galement les patients sans
mdecin rfrent).
10.
Affichez les noms des patients qui ont visit leur mdecin rfrent le 15 janvier 2012.
B.
Critre
AUTO-VALUATION
Savez-vous expliquer la diffrence entre une jointure et un produit cartsien ? Si ce nest pas le cas,
cherchez la rponse !
Que signifie le terme de minimalit utilis dans le critre dvaluation ci-dessous ? Quel est
lintrt dcrire des requtes minimales ?
Avez-vous, au cours de cet exercice, crit des requtes minimales ? A quel niveau vous situez-vous ?
Faites enfin le point sur les nouveaux mots-clefs de la syntaxe que vous avez utiliss dans cet exercice.
A
L'tudiant crit
L'tudiant crit
Minimalit minimalement toutes minimalement la
les requtes.
moiti des requtes.
Ltudiant ncrit
minimalement aucune
de ses requtes.
23/89
III.
v2.7
NGATION ET LISTES
A.
AUTO-VALUATION
crivez tout dabord votre requte seul sur une feuille de papier,
prsentez la solution que vous proposez votre binme, votre binme doit alors vous positionner sur
la grille ci-dessous,
changez les rles et choisissez la solution que vous allez tester,
rflchissez, sur la base du rsultat obtenu, la pertinence de votre auto-valuation.
Critre
Justification en utilisant
un autre modle formel
Justification
(algbre relationnel ou
logique du 1er ordre).
B.
Justification
complte et
comprhensible.
Justification
Simple affirmation ou
comprhensible mais justification non
incomplte.
comprhensible.
REQUTES
Une prescription dsigne en fait une ordonnance sur laquelle plusieurs mdicaments sont prescrits. Identifiez
les dpendances fonctionnelles de la relation PRESCRIPTION. En quelle forme normale cette relation est-elle ?
En quoi ces questions vous aident pour la requte suivante ?
14.
Dans quelle mesure la requte 14 est-elle ou non diffrente de la requte : Affichez les prescriptions qui
contiennent au moins un mdicament qui n'est pas du doliprane. ?
15.
Affichez les noms des patients qui sont ressortis d'une visite sans prescription
24/89
IV.
v2.7
AGGRGATION
A.
REQUTES
B.
Critre
AUTO-VALUATION
Une requte ne renvoyant aucun rsultat, est-elle fausse ? Une requte renvoyant un rsultat, est-elle
juste ?
Il est important de sintresser la cohrence de la requte crite avec la question pose. Sur la base
des requtes de ce dernier exercice essayez de vous positionnez par rapport au critre dvaluation
prsent ci-dessous.
Mettez jour votre schma de la structure gnrale dune requte SQL avec les nouvelles clauses que
vous avez dcouvertes. Sauriez-vous expliquer quelquun lutilit de ces nouveaux mots-clefs ?
A
L'tudiant russit
crire, de manire
cohrente avec la
question, une
requte simple
ncessitant une
jointure.
L'tudiant n'est
pas capable
d'effectuer une
restriction ou
une jointure.
25/89
V.
v2.7
REQUTES COMPLEXES
A.
REQUTES
21. Affichez les patients qui ont vu un gnraliste et un spcialiste le mme jour
22. Affichez les visites o a t prescrit doliprane ou aspegic (ou logique)
Combien d'instances de la relation prescription sont ncessaires pour tester la prsence simultane sur une
mme prescription de N mdicaments ?
23.
24.
25.
B.
VI.
AUTO-VALUATION
Vous devriez dsormais tre en mesure de pouvoir vous auto-valuer sur lensemble des critres
de la grille prsente la fin de ce document.
SENTRANER SE JUSTIFIER
Sur lespace Moodle du module vous trouverez un QCM vous permettant de vous entraner, non seulement au
niveau de la syntaxe SQL, mais aussi au niveau de la justification permettant de montrer la cohrence (ou non)
dune requte avec la question pose.
26/89
v2.7
A
L'tudiant russit
crire, de manire
cohrente avec la
question, toutes les
Cohrence requtes complexes
utilisant ngation,
imbrication,
regroupement ou
auto-jointure.
Justification en
utilisant un autre
modle formel
Justification
(algbre relationnel
ou logique du 1er
ordre).
Minimalit
Qualit de
la syntaxe
B
L'tudiant russit
crire, de manire
cohrente avec la
question, la moiti des
requtes complexes
utilisant ngation,
imbrication,
regroupement ou autojointure.
L'tudiant russit
crire, de manire
cohrente avec la
question, une
requte simple
ncessitant une
jointure.
Justification
Justification complte et
comprhensible mais
comprhensible.
incomplte.
Simple affirmation ou
justification non
comprhensible.
L'tudiant crit
minimalement toutes
les requtes.
L'tudiant crit
minimalement la moiti
des requtes.
L'tudiant a montr
qu'il sait crit
minimalement au
moins une requte.
Ltudiant ncrit
minimalement
aucune de ses
requtes.
La syntaxe est
parfaitement
respecte.
27/89
v2.3
TD THORIE DE LA NORMALISATION
SYSTMES DINFORMATION ET BASES DE DONNES
SOMMAIRE
Pr-requis ................................................................................................................................................................ 1
Approfondissements ............................................................................................................................................... 1
Contexte .................................................................................................................................................................. 1
I.
II.
III.
PR-REQUIS
Aucun
APPROFONDISSEMENTS
la suite de ce TD, vous devez obligatoirement lire les cours suivants :
CONTEXTE
Dans le cadre du TD prcdent sur le modle relationnel et lintgrit des donnes nous avons vu que, pour
faciliter le maintien de lintgrit des donnes lors des mises jour, il tait ncessaire de minimiser les
redondances.
Dans le cadre de ce TD, nous allons dcouvrir progressivement quelques notions de la thorie de la
normalisation qui vont vous donner les outils formels pour minimiser ces redondances. Cette approche sera
mettre en regard de l'approche conceptuelle (voir modlisation conceptuelle), plus utile pour une
apprhension macroscopique des donnes, pour rsoudre des problmes de redondance au niveau micro.
28/89
I.
v2.3
DPENDANCES FONCTIONNELLES
Considrons la relation EMP-DEPT illustre par un extrait dans le Tableau 1 et qui a pour schma :
EMP-DEPT (empno, ename, job, mgr, hiredate, comm, deptno, dname, loc). Lexpert en donnes accompagne
cet exemple des informations suivantes :
EMPNO
7698
7499
7521
7904
7369
7788
7566
7902
7839
7934
7904
7788
Un employ est identifi par un numro. Il est dcrit par un nom, une date dembauche, un salaire et
une commission.
Un dpartement est identifi par un numro. Il est dcrit par un nom et une localisation.
Un employ a un et un seul manager.
Un employ peut avoir plusieurs jobs, mais un seul dans un dpartement donn.
ENAME
BLAKE
ALLEN
WARD
DOE
SMITH
SCOTT
JONES
FORD
KING
MILLER
DOE
SCOTT
JOB
MANAGER
SALESMAN
SALESMAN
CLERK
CLERK
ANALYST
MANAGER
ANALYST
PRESIDENT
CLERK
SALESMAN
ANALYST
MGR
7839
7698
7698
7566
7902
7566
7839
7566
NULL
7566
7566
7566
HIREDATE
05/01/2081
02/20/2081
02/22/2081
12/11/2099
12/17/2080
12/09/2081
04/02/2081
12/03/2081
11/17/2081
01/23/2082
12/11/2099
12/09/2081
SAL
2850
1600
1250
2500
800
3000
2975
3000
5000
1300
2500
3000
COMM
NULL
300
500
300
NULL
NULL
NULL
NULL
NULL
NULL
300
NULL
DEPTNO
40
30
30
20
20
20
20
20
10
10
30
10
DNAME
SALES
SALES
SALES
RESEARCH
RESEARCH
RESEARCH
RESEARCH
RESEARCH
ACCOUNTING
ACCOUNTING
SALES
ACCOUNTING
LOC
BOSTON
CHICAGO
CHICAGO
DALLAS
DALLAS
DALLAS
DALLAS
DALLAS
DENVER
DENVER
CHICAGO
DENVER
Dfinition [Dpendance fonctionnelle] Pour une relation R(X,Y,Z) o X, Y et Z sont des sous-ensembles de
lensemble des attributs, on dit quil existe une dpendance fonctionnelle (DF) de X vers Y note X Y si
chaque valeur de X correspond au plus une valeur de Y.
Remarque : Lexpression X Y peut galement sexprimer en disant que X dtermine fonctionnellement Y
ou que Y dpend fonctionnellement de X . Dans ce contexte, si deux tuples ont la mme valeur pour X, alors
ils auront la mme valeur pour Y.
1.
Soit la relation EMP-DEPT dfinie prcdemment. Les dpendances fonctionnelles suivantes sont-elles
vrifies : EMPNO ENAME, ENAME EMPNO ?
.
2.
29/89
v2.3
Toujours dans le contexte de la relation EMP-DEPT, dterminez pour chacune des propositions
suivantes sil sagit dune dpendance fonctionnelle. Si oui, dterminez si celle-ci est lmentaire ou
non.
a)
b)
c)
d)
4.
JOB ENAME
ENAME JOB
DEPTNO MGR
DEPTNO DNAME
e)
f)
g)
h)
Dduisez la clef primaire de la relation EMP-DEPT partir des informations donnes en dbut
dexercice.
.
5.
Aprs avoir rflchi sur lexemple de la relation EMP-DEPT, compltez ci-dessous la dfinition de cl
primaire en utilisant le formalisme des dpendances fonctionnelles :
Dfinition [Clef primaire] Soit R(A1, , An) un schma de relation, soit X un sous-ensemble de A1, , An, on dit
que X est une cl primaire de R si et seulement si :
1 ..
2 .
AUTO-VALUATION
A lissu de cet exercice vous devriez vous situer au niveau A concernant le critre suivant. Est-ce le cas ?
Critre
Identifier les
dpendances
fonctionnelles
A
L'tudiant sait
traduire, avec le bon
formalisme, des
hypothses en une
srie de dpendances
fonctionnelles
lmentaires.
B
L'tudiant sait
traduire des
hypothses en une
srie de dpendances
fonctionnelles, une
faute d'tourderie est
admise.
L'tudiant ne sait
pas dfinir une
srie de
dpendances
fonctionnelles.
30/89
II.
v2.3
FORMES NORMALES
Les formes normales visent exprimer la qualit d'une structure de tableau au regard des contraintes
relationnelles : puissance du langage de requtes, gestion de la redondance, etc. Les formes normales les plus
utilises sont les trois premires et la forme normale de BoyceCodd (BCNF), mais elles ne permettent pas de
traiter l'ensemble des situations. Dans ce TD, nous ne prsentons que les trois premires formes normales qui
sont les plus utilises. Nous vous renvoyons au cours pour des informations sur la BCNF ainsi que ses limites.
Dfinition [Premire forme normale] Une relation est en premire forme normale (1NF) si tout attribut est
atomique.
La premire forme normale exprime simplement les contraintes structurelles du modle relationnel. On
retrouve ces contraintes dans les langages de requtes relationnels qui sont peu l'aise pour interroger des
attributs complexes : bien que SQL gre depuis longtemps les donnes de type date, la manipulation d'attributs
2
structures est complique (vous pouvez nanmoins chercher d'autres informations sur les systmes NF ou
Non First Normal Form). Le terme atomique signifie donc ici que lattribut a un type de base et nest pas
une structure, mme simple, compos dlments de diffrentes natures ou d'une liste d'lments.
1.
Pour chacune des relations suivantes et daprs vos connaissances en SQL, identifiez en quoi chaque
structure serait complexe interroger en SQL.
a. LIVRAISON (nfournisseur, listeVilles)
b. LIVRAISON (nfournisseur, ville)
c. CLIENT (nclient, nom, prnoms)
d. CLIENT (nclient, nom, prnom1, prnom2)
e. CLIENT (nclient, nom, prnom, adresse)
Dfinition [Deuxime forme normale] Une relation est en deuxime forme normale (2NF) si et seulement
si elle est en premire forme normale et que tout attribut nappartenant pas une cl est en dpendance
fonctionnelle lmentaire de toute la cl et non dune partie seulement.
La deuxime forme normale vise dtecter une des principales sources de redondance dans une relation,
savoir la prsence d'attributs qui ne dpendent que d'une partie de la cl. De cette dfinition, on peut dduire
immdiatement qu'une relation dont la cl est compose d'un unique attribut est toujours en 2NF (sous
rserve qu'elle soit aussi en 1NF).
2.
Pour chacune des relations suivantes, et daprs vos connaissances sur les donnes concernes,
proposez des dpendances fonctionnelles et indiquez si la relation est 2NF :
a. PRET (nisbn, nadherent, date, nom_adherent, ville_adherent, titre_livre)
b. PRET (nisbn, date, nadherent, nom_adherent, ville_adherent, titre_livre)
c. PRET (nisbn, nadherent, date)
d. PRET (nexemplaire, date, nadherent)
31/89
v2.3
Dfinition [Troisime forme normale] Une relation est en troisime forme normale (3NF) si et seulement
si elle est en deuxime forme normale et que tout attribut nappartenant pas une clef ne dpend pas
fonctionnellement dun attribut qui nappartient pas une cl.
Outre qu'elle permet d'identifier une nouvelle source de redondance dans laquelle un attribut non cl dpend
fonctionnellement d'un (ensemble de) d'attribut(s) non cl(s), il est important de souligner, comme pour la
2NF, la progressivit "force" des formes normales. En effet, le critre de passage en 3NF est totalement
orthogonal celui de la 2NF.
3.
4.
Pour chacune des relations suivantes et daprs vos connaissances sur les donnes concernes,
identifiez les dpendances fonctionnelles et indiquez si la relation est en troisime forme normale ou
non; concluez en spcifiant le risque de redondance.
a. FOURNISSEUR (nfournisseur, ville, pays) dans le contexte o un fournisseur nest tabli que
dans une seule ville (considrez le cas o chaque nom de ville est unique et le cas o des
villes de mme nom peuvent se retrouver dans diffrents pays)
b. PERSONNEL (nagent, nom, dpartement_recherche, btiment)
c. PERSONNEL (nagent, nom, dpartement_recherche, statut_agent)
d. VOL( nvol, compagnie, heure, destination, modele_avion, nombre_passagers)
e. VOL( nvol, compagnie, heure, destination, modele_avion, nombre_places)
Selon vous, quel est lintrt davoir une relation exprime en troisime forme normale ?
AUTO-VALUATION
A lissu de cet exercice vous devriez vous situer au niveau A concernant les critres suivants. Est-ce le cas ?
Critre
Identifier
les cls
d'une
relation
L'tudiant est
L'tudiant ne
capable de dfinir la
comprend pas le
notion de cl de
concept de cl.
manire intuitive.
Qualifier
une
relation
L'tudiant connait
les dfinitions des
formes normales
mais ne sait pas du
tout les appliquer.
L'tudiant ne
connait pas les
dfinitions des 3
premires formes
normales.
32/89
III.
v2.3
L'objectif de cette section est maintenant de voir comment obtenir, partir d'une relation de faible qualit en
termes de formes normales (i.e. prsentant de la redondance), plusieurs relations qui prsentent moins de
redondance tout en conservant la richesse de l'information initiale (prservation des donnes) mais aussi les
contraintes entre ces donnes (prservation de dpendances fonctionnelles).
A.
NOTION DE DCOMPOSITION
me
forme normale.
.
me
2.
B.
V1 (nimmatriculation, modle)
V3 (modle, marque)
me
forme normale ?
Dfinition [Dcomposition dune relation] La dcomposition dun schma de relation R(A1, , An) est son
remplacement par une collection de schmas de relations (R1, , Rn) tel que :
3.
33/89
v2.3
4.
En vous basant sur les donnes de la table VOITURE ci-dessous, et pour chacune des dcompositions A
1
et B, reprsentez sous forme de plusieurs tables les relations obtenues par projection
Nimmatriculation
872 RH 75
975 AB 29
Modle
R21
R21
Puissance
7
7
Couleur
Bleue
Beige
Marque
Renault
Renault
5.
Dfinition [Dcomposition prservant les donnes] Une dcomposition dune relation R en n relations
R1, , Rn prserve les donnes si et seulement si, pour toute extension de R, on a :
R R
Proprit Une dcomposition en deux relations prserve les donnes si et seulement si lattribut de jointure
de la recomposition est cl dune au moins des deux relations.
6.
7.
Dfinition [Dcomposition prservant les dpendances] Une dcomposition (R1, , Rn) de R prserve les
2
dpendances fonctionnelles si la fermeture transitive des dpendances fonctionnelles de R est la mme que
celle de lunion des dpendances fonctionnelles des relations R1, , Rn.
8.
9.
Pour chacun des graphes prcdents ajoutez en couleur les arcs reprsentant les dpendances
fonctionnelles dduites : vous obtenez ainsi les graphes de fermeture transitive.
Les dcompositions A et B prservent-elles les dpendances ? Dmontrez-le (pensez utiliser les
graphes de la prcdente question).
La projection dune relation R sur un sous-ensemble X de ses attributs consiste crer une relation R ne
contenant que lensemble dattributs X et pour laquelle tous les tuples en doublons ont t supprims.
2
+
La fermeture transitive F dun ensemble de dpendances fonctionnelles F est lunion des dpendances
fonctionnelles de F avec lensemble des dpendances fonctionnelles de F dduites par transitivit
! :
"
!
Laurent BRISSON et Philippe PICOUET | TELECOM Bretagne |
34/89
v2.3
B.
ALGORITHME DE DCOMPOSITION
Algorithme [Dcomposition dune relation] Soit une relation R de cl K et son ensemble de dpendances
fonctionnelles F :
3
FOURNISSEUR (nfournisseur, ville, frais) sachant quun fournisseur ne livre que dans une seule ville et
que les frais dpendent uniquement de la ville desservie.
VEHICULE_FONCTION (nagent, nvhicule, nom, prnom, marque_vhicule, puissance_vhicule,
couleur_vhicule) qui permet de grer pour chaque agent le ou les vhicules qu'il est autoris
utiliser (ventuellement en partage avec d'autres agents) dans le cadre de ses dplacement
4
professionnels.
La couverture minimale d'un ensemble de dpendances fonctionnelles est un sous ensemble minimum de
dpendances fonctionnelles lmentaires permettant de gnrer toutes les autres au moyen des proprits
dAmstromg prsentes ci-dessous.
Soit un ensemble F de dpendances fonctionnelles entre les attributs d'un schma de relation R(X,Y,Z). Nous
pouvons dfinir les proprits suivantes :
transitivit : si X Y, et Y Z, alors X Z,
augmentation : si X Y, alors XZ Y pour tout groupe Z d'attributs appartenant au schma de
relation,
rflexivit : si X contient Y, alors X Y.
35/89
v2.3
AUTO-VALUATION
A lissu de cet exercice vous devriez vous situer au niveau C concernant les critres suivants. Est-ce le
cas ?
La lecture des approfondissements recommands en dbut de TD devrait vous permettre datteindre
le niveau A qui est vis.
Critre
Appliquer un
algorithme de
dcomposition
sur une relation
Qualifier une
dcomposition
A
Niveau B + L'tudiant
sait utiliser l'algorithme
sur un ensemble de
dpendances
fonctionnelles
complexes (multiplicit
des couvertures
minimales, sources
multiples, etc.).
Niveau B + L'tudiant
maitrise la proprit de
prservation des
dpendances
fonctionnelles d'une
dcomposition et sait
l'illustrer sur un
exemple.
Niveau C + L'tudiant
connat les cas limites
d'utilisation de
l'algorithme (garantie
de la prservation
des donnes, etc.).
L'tudiant sait
appliquer
l'algorithme sur un
exemple simple.
L'tudiant ne sait
pas appliquer ces
algorithmes.
Niveau C + L'tudiant
matrise la proprit
de prservation des
donnes d'une
dcomposition et sait
la justifier sur un
exemple.
L'tudiant sait
identifier une
dcomposition et
produire ses
instances partir de
l'instance de la
relation universelle.
L'tudiant ne sait
pas identifier une
dcomposition
d'une relation
universelle.
36/89
v2.6
TP - LE MCANISME TRANSACTIONNEL
SOMMAIRE
Sommaire ................................................................................................................................................................ 1
Pr-requis ................................................................................................................................................................ 1
Approfondissements ............................................................................................................................................... 1
I.
Introduction .................................................................................................................................................... 2
II.
III.
IV.
V.
VI.
Auto-valuation ............................................................................................................................................ 11
X.
Bibliographie ................................................................................................................................................. 11
XI.
Annexes ........................................................................................................................................................ 12
PR-REQUIS
Aucun
APPROFONDISSEMENTS
A la suite de ce TP, vous devez obligatoirement lire les cours suivants :
37/89
I.
v2.6
INTRODUCTION
L'objectif de ce TP est de rflchir aux problmes qui peuvent survenir lors de modifications d'une base de
donnes et de son partage entre diffrents utilisateurs, spcialement quand ceux-ci veulent modifier ces
donnes simultanment. Le partage d'une base de donnes rpond des besoins diffrents du partage d'un
fichier dans un systme d'exploitation.
Rappelons qu'une base de donnes (relationnelle dans notre cas) est un ensemble cohrent, intgre et souvent
volumineux de donnes. De ce fait, la modification de donnes est une action dlicate car il est trs difficile,
voire tout fait impossible, de vrifier visuellement que la modification ralise ne viole pas l'intgrit des
donnes. La diminution des redondances, voire leur limination quand c'est possible, permet de rduire les
risques d'incohrence. Mais dans tous les cas, il est essentiel que le SGBD propose des outils pour contrler et
maintenir cette intgrit.
Le mcanisme de transactions vise rpondre ces diffrentes proccupations. C'est l'objectif de ce TP de
l'explorer et de comprendre son comportement et les degrs de libert offerts par le SGBD.
La base de donnes qui sert de support ce TP est une base d'emprunt de livres par des lecteurs sans gestion
des historiques.
Aprs une prsentation du principe et des proprits des transactions (Section suivante), nous dcrirons le
dmarrage oprationnel du TP (Section 3). Le travail raliser dans le TP dmarre dans la section 4 avec la
dcouverte des commandes SQL ddies aux transactions et un premier aperu de certaines de ces proprits
(Section 4). En section 5, nous revenons sur le problme de cohrence des donnes en nous interrogeant au
passage sur les rles respectifs des applications et du SGBD dans le contrle de la cohrence des donnes. La
section 6 introduira la notion de niveau d'isolation pour permettre au contrle transactionnel d'tre plus ou
moins souple (en contrepartie d'un fonctionnement plus risqu). Enfin, la section 7 permettra de mettre en
place une situation d'interblocage entre deux utilisateurs afin d'analyser sa cause et ses solutions. La section 8
est ddie un bilan de l'activit.
La proprit de durabilit n'est pas teste dans ce TP.
38/89
II.
v2.6
Du point de vue d'un utilisateur, une transaction dsigne un ensemble de mises jour respectant un ensemble
de proprits. L'acronyme ACID dsigne ces proprits : Atomicit, Consistance, Isolation et Durabilit. Les
transactions respectent un modle simple de succs ou dchec. Soit la transaction est valide et tous les
changements sont effectus ; soit la transaction choue et aucune modification nest effectue, ltat initial
tant restaur.
Atomicit
Une transaction permet de grouper des changements sur les tables et les lignes afin de former
une unique opration indivisible. Ainsi tous les changements apparaissent ou alors aucun d'entre
eux. Voil pourquoi l'tat initial est restaur si une transaction choue.
Cohrence
Une transaction n'opre que sur un ensemble cohrent de donnes et ne doit tre valide que
si elle laisse les donnes dans un tat cohrent. Les donnes sont dites cohrentes tant qu'elles
respectent les contraintes d'intgrit. Au cours d'une transaction, les donnes peuvent
cependant tre temporairement incohrentes.
Isolation
Le systme prend en charge l'excution des transactions dans un contexte multi-utilisateurs o
les donnes sont partages. Dans le mode par dfaut, READ COMMITED, les effets d'une
transaction sont invisibles pour toutes les transactions concurrentes tant que cette transaction
n'a pas t valide (COMMIT).
Durabilit
Lorsqu'une transaction est valide (COMMIT), ses effets persistent dans le temps mme en cas
de panne du systme. En cas de panne durant la transaction, aucune modification n'est
effectue et l'tat initial est restaur grce un ROLLBACK.
39/89
III.
v2.6
MISE EN PLACE DU TP
A.
Les donnes pour effectuer le TP seront stockes sur Oracle sous la forme de deux relations (ou tables) :
Lecteur et Livre. La table Livre contient des informations sur les diffrents livres de la bibliothque, ainsi que la
rfrence du lecteur qui la emprunt. La table Lecteur contient des informations sur les lecteurs inscrits la
bibliothque.
Le script de cration de la base de donnes script_install_base_biblio.sql est accessible sur lespace Moodle du
module.
1. Enregistrer le script la racine de votre compte.
2. Lancez SQL PLUS (voir le document daccs Oracle sur Moodle) en utilisant votre login Unix et le mot de
passe attribu par Oracle.
3. Chargez le script, soit par un coup-coll dans l'interprteur SQL, soit au moyen de la commande : start
install_transactions_oracle.sql;
B.
Afin de constater ce qui se droule lorsque plusieurs personnes interagissent sur la mme base de donnes,
vous allez, tout au long de ce TP, simuler un environnement concurrent.
Pour cela ouvrez une deuxime session SQL PLUS avec le mme login/password que la prcdente. Partagez
votre cran avec les 2 fentres, celle sur la gauche sera la session A, celle sur la droite la session B.
Ouvrez le fichier de script de cration de la base de donnes afin de pouvoir lire le code des procdures lorsque
vous les utilisez lors de ce TP.
40/89
IV.
v2.6
Attention ! Avant demprunter un livre, assurez-vous, chaque fois, que ce livre nest pas dj emprunt !
A.
1.
2.
3.
4.
Dans la session A, observez ltat des relations en utilisant la vue infos. Ajoutez ensuite un nouveau
lecteur et un nouvel emprunt la base (vous pouvez si vous le souhaitez utiliser les procdures
stockes inserer_lecteur et emprunter).
Interrogez les relations dans la session B en utilisant la vue infos. Que constatez-vous ?
Dans la session A, validez la mise jour avec la commande commit ; .
Que constatez-vous dans la session B ?
B.
1.
2.
3.
4.
5.
C.
BILAN
Daprs votre exprience sur les questions prcdentes rpondez aux questions suivantes sans excuter de
requtes, puis faites validez vos rponses par votre enseignant :
1. Dans la session A, on demande la collection de Risibles amours et on obtient Folio .
Dans la session B on modifie la collection de Risibles amours en Pocket et on valide la
transaction par un commit ; . Quelle est dsormais la collection de Risibles amours au travers
de la session A ?
a. Folio
b. Pocket
2. Dans la session A, on compte le nombre de livres et on obtient 15. Dans la session B, deux livres sont
ajouts et la transaction valide par un commit ; . Combien obtient-on dsormais de livres au
travers de la session A ?
a. 15
b. 16
c. 17
41/89
V.
v2.6
Excutez la procdure supprimer_lecteur(2). La base de donnes qui rsulte de cette mise jour est
elle intgre ? Justifiez votre rponse.
.
.
.
.
Dfinissez les contraintes de cls primaires et de cls rfrentielles sur le schma de la base de donnes
(cherchez sur le web les syntaxes d'ajout de cl primaire et rfrentielle pour le SGBD Oracle).
Pour les deux types de contrainte, proposez une requte INSERT et une requte UPDATE qui testent le bon
comportement du systme en matire de contrainte d'intgrit :
Pour la cl primaire de lecteur :
1.
2.
42/89
B.
1.
2.
3.
4.
2.
3.
Dans la session A, le lecteur n1 emprunte le livre n6 tandis que dans la session B, le lecteur n2
emprunte le mme livre. Que constatez-vous ?
Effectuez un commit dans la session A.
Interrogez les relations depuis les deux sessions. Que constatez-vous ?
Effectuez un commit dans la session B. Que constatez-vous ?
C.
1.
v2.6
Dans la session A, le lecteur n3 emprunte le livre n7 tandis que dans la session B le livre n7 est
supprim au moyen de la procdure supprimer_livre. Que constatez-vous ?
Effectuez un commit dans la session A puis interrogez les relations depuis les deux sessions. Que
constatez-vous ?
Effectuez un commit dans la session B puis interrogez les relations depuis les deux sessions. Que
constatez-vous ?
.
.
.
.
Proposez une nouvelle requte pour la procdure supprimer_livre rsolvant le problme en vous
inspirant de la procdure emprunter.
.
.
.
.
.
.
Faites valider vos rponses par votre encadrant.
43/89
VI.
v2.6
Vous trouverez dans le cours une prsentation de la srialisabilit, qui est le principe sur lequel on s'appuie
pour dcider que l'excution simultane de plusieurs transactions prsente ou non un risque d'incohrence en
matire d'isolation.
Pourtant, ce principe de srialisabilit est si contraignant que la norme ANSI/ISO SQL a dfini diffrents niveaux
disolation, dont trois plus faibles que le niveau srialisabilit. Si leur utilisation apporte moins de contrainte (et
gnre moins de conflits), ils risquent nanmoins de laisser passer des situations sources d'erreurs. Ces niveaux
sont :
READ UNCOMMITED
READ COMMITED
REPETABLE READ
SERIALIZABLE
Le SGBD ORACLE en implmente deux dentre eux : READ COMMITED, qui est le comportement par dfaut (que
vous avez utilis jusqu'ici), et SERIALIZABLE, le comportement "de rfrence" que vous allez maintenant
tudier.
A.
LECTURES REPRODUCTIBLES
B.
44/89
C.
v2.6
Daprs votre exprience sur les questions prcdentes rpondez tout dabord aux questions suivantes sans
excuter de requtes, puis faites validez vos rponses par votre enseignant :
Dans la session A, on demande la collection de Risibles amours et on obtient Folio . Dans la
session B on modifie la collection de Risibles amours en Pocket et on valide la transaction par
un commit ; . Quelle est dsormais la collection de Risibles amours au travers de la session A ?
a. Folio
b. Pocket
5. Dans la session A, on compte le nombre de livre et on obtient 15. Dans la session B un livre est ajout
et la transaction valide par un commit ; . Combien obtient-on dsormais de livres au travers de
la session A ?
d. 15
a. 16
VII.
Les mcanismes transactionnels s'appuient essentiellement sur l'utilisation de techniques de verrouillage (ce
qu'on appelle smaphore en programmation concurrente). Le dfaut de ces techniques rside essentiellement
dans le risque de voir apparaitre des interblocages entre des transactions (processus en programmation
concurrente) qui accdent des ressources identiques. En programmation, on anticipe ces risques de conflits
au moment de la conception des programmes. En bases de donnes, on ignore par principe les transactions qui
vont parvenir au SGBD. La rduction du niveau d'isolation est donc une rponse possible pour rduire ce
risque. Nous l'illustrons dans cette section.
Modifiez le niveau disolation en excutant la commande suivante dans la session A :
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ;
1. Dans la session A, affichez le nom du lecteur n1.
2. Dans la session B, modifiez le nom du lecteur n1
3. Dans la session A, modifiez le nom du lecteur n1 en choisissant un nom diffrent de la session B. Que
constatez-vous ?
4. Effectuez un commit dans la session B puis affichez de nouveau le nom du lecteur n1 dans la session
A. Que constatez-vous ?
Expliquez ce quil se serait pass si la premire transaction (de la session A) navait pas t en mode
SERIALIZABLE.
.
.
.
45/89
VIII.
v2.6
Revenons sur la dfinition des proprits que peut avoir une transaction :
Lecture sale (DIRTY READ) : il est possible de lire des donnes qui nont pas t valides par un
commit. Lintgrit des donnes nest pas assure.
Lecture non reproductible (NON REPETABLE READ) : il est possible au cours dune mme transaction
de lire un temps t1 des informations sur une ligne, et un temps t2 des informations diffrentes.
Lecture fantme (PHANTOM READ) : il est possible au cours dune mme transaction de voir au cours
du temps apparatre des lignes.
B.
Daprs les dfinitions de la section VII.A et de vos expriences effectues au cours de ce TP compltez le
tableau suivant.
Niveau disolation
Read uncommited
Read commited
Repetable read
Serializable
Lecture sale
Possible
Lecture non
reproductible
Possible
Lecture fantme
Possible
Impossible
Impossible
Possible
46/89
10
IX.
v2.6
AUTO-VALUATION
A lissue de ce TP vous devriez avoir atteint le niveau A pour les critres ci-dessous.
Critre
Avoir un regard
pertinent sur la
problmatique
d'intgrit et de
partage des
donnes
Niveau B + L'tudiant
est capable d'utiliser
les diffrents niveaux
d'isolation prvus par
SQL pour expliquer le
comportement du
SGBD.
Niveau C + L'tudiant
est capable d'illustrer
les notions lies
l'isolation :
srialisation,
verrouillage,
transactions bien
formes et
interblocage.
L'tudiant est
capable d'utiliser la
terminologie de
base des
transactions
(validation /
commit, abandon /
rollback) et illustrer
les proprits de
l'acronyme ACID.
L'tudiant ne
matrise pas la
terminologie de base
ou ne sait pas
illustrer les
proprits de
l'acronyme ACID.
L'tudiant est
capable d'illustrer la
problmatique
d'intgrit en
prsence de
redondance,
d'identifier et de
justifier
intuitivement la
moiti des
contraintes de cls
primaires et de cls
rfrentielles d'un
schma logique.
Niveau C + L'tudiant
est capable d'identifier
et justifier
formellement (au
Niveau B + L'tudiant
moyen des
est capable de
dpendances
justifier l'usage
fonctionnelles) la
complmentaire aux
totalit des
Maintenir
contraintes de cls
contraintes de cls
l'intgrit de la
primaires et
primaires d'un schma
base de donnes rfrentielles des
relationnel. Identifier
contraintes de non
et justifier
nullit et de
formellement la
contrainte sur valeur
prservation des
d'attribut (CHECK).
donnes et des
dpendances
fonctionnelles si
possible.
X.
BIBLIOGRAPHIE
47/89
11
XI.
v2.6
ANNEXES
A.
LES TABLES
La table Livre contient des informations sur les diffrents livres de la bibliothque, ainsi que la rfrence des
lecteurs qui les ont emprunts. La table Lecteur contient des informations sur les lecteurs inscrits la
bibliothque.
Pour voir le contenu de ces deux tables, tapez la commande suivante dans linterprteur SQL (attention ne
pas oublier le ; la fin de la commande) : select * from nom_table ;
Pour voir la structure de ces deux tables tapez la commande : desc nom_table ;
A.
LES VUES
Les vues vous permettent daccder plus simplement certaines informations. Pour interroger une vue utiliser
la commander : select * from nom_vue
Vous avez votre disposition deux vues :
La vue infos : affichant les numros de livre et les numros de leurs emprunteurs
La vue infos_livre : affichant toutes les informations dtailles sur les livres
Pour observer la structure des vues, utilisez les mmes commandes que pour les tables.
B.
Les procdures stockes permettent deffectuer des requtes prdfinies lors de la cration de la base. Pour
effectuer ce TP un certain nombre de procdures vous sont fournies, prenez le temps tout au long des
exercices de les lire. Pour excuter une procdure stocke utilisez la commande suivante :
exec nom_procedure(attribut1, , attributn)
Vous disposez des procdures stockes suivantes (lors de lappel nindiquez pas le typage !) :
48/89
12
v1.8
II.
III.
Travail raliser.............................................................................................................................................. 3
A.
B.
PR-REQUIS
Avant de venir en TD, vous devez avoir obligatoirement lu le cours suivant :
APPROFONDISSEMENTS
Aucun
49/89
v1.8
I.
Ce schma ne vous dit rien ? Vous avez du oublier de lire votre cours avant de venir !
II.
PRSENTATION DU PROBLME
L'objectif de cet exercice est de produire une modlisation relationnelle d'un ensemble de donnes
persistantes dcrivant les sessions de Formation Continue de Telecom Bretagne.
Votre encadrant pour cet exercice jouera le rle d'expert de donnes. Il pourra en particulier expliciter les
assertions ci-dessous qui ne seraient pas clairement exprimes.
Il y a des stagiaires, des enseignants, des dpartements, des modules, les sessions de ces modules et des
sances qui composent ces modules.
1.
50/89
v1.8
III.
TRAVAIL A RALISER
A.
SCHMA CONCEPTUEL
Dans un premier temps, vous devez utiliser la notation UML afin de concevoir le modle conceptuel de
donnes. Dans lordre, commencez par identifier :
B.
SCHMA LOGIQUE
Dans un second temps, vous devez driver votre modle conceptuel en modle logique. Avant dobtenir un
schma global, vous vous concentrerez sur quelques points intressants :
a.
b.
c.
d.
e.
Notation UML
L'tudiant ne fait
aucune erreur.
Un des lments de la
notation est erron.
Identification
des concepts
D
Le schma possde
Les erreurs
tellement d'erreurs
montrent que
qu'il en perd son
plusieurs lments sens ou l'tudiant
de la notation ne
confond un
sont pas acquis mais diagramme de
le schma conserve classe et un schma
toujours un sens.
conceptuel de
donnes.
Deux concepts du
problme sont
oublis ou toutes
les proprits sont
absentes.
La majeure partie
des concepts sont
errons.
51/89
v1.8
Identification
des
associations
Choix des
cardinalits
Identification
de l'hritage
Rgles de
drivation
L'tudiant est
capable de dfinir
les associations
binaires dans un cas
simple.
L'tudiant se
trompe dans les
concepts concerns
dans la majorit des
associations.
L'tudiant identifie
correctement la
majorit des liens
d'hritages.
L'tudiant fait des
erreurs en drivant
une association 1-N
ou N-N.
52/89
v1.3
SOMMAIRE
Pr-requis ................................................................................................................................................................ 1
Approfondissements ............................................................................................................................................... 1
I.
II.
III.
PRE-REQUIS
Aucun
APPROFONDISSEMENTS
A la suite de ce TD, vous devez obligatoirement lire le cours suivant :
53/89
v1.3
I.
II.
Un programme java appel Commission (invoqu par java Commission 10000) effectue le traitement et la mise
jour puis affiche en fin de processus le contenu de la table EMP pour contrle.
Le fonctionnement propos est le suivant :
Un embryon de la classe Commission est fourni : Commission.java. Dans celui-ci, le traitement concernant la
rcupration, le calcul de la commission puis la mise jour sur la BD est dcrit dans la mthode
affectationCommission.
// Rcupration de la somme des salaires
// ------------------------------------Statement stmt1 = connexion.createStatement();
String requete1 = "select sum(SAL) from EMP";
ResultSet rset1 = stmt1.executeQuery(requete1);
while(rset1.next())
{
sommeSalaires = rset1.getInt(1);
}
stmt1.close();
System.out.println("Somme des salaires : " + sommeSalaires);
// Rcupration du salaire de chacun des employs
// ---------------------------------------------Statement stmt2 = connexion.createStatement();
String requete2 = "select empno,ename,sal from EMP";
ResultSet rset2 = stmt2.executeQuery(requete2);
while(rset2.next())
{
// Salaire et n d'employ
String empno = rset2.getString(1);
float salaire = rset2.getInt(3);
54/89
v1.3
Proposez une autre solution alternative, ensembliste, qui ralise la mme chose que le programme cidessus avec seulement deux requtes la base.
Analysez la diffrence de performance entre les deux solutions : pour quelles raisons, selon vous,
pourrait-on accepter de multiplier les requtes la base ? Ces conditions sont-elles runies dans la
proposition ci-dessus ?
III.
Dans cette section, nous allons prciser les difficults dune mise en correspondance entre des modles de
donnes diffrents. Nous allons tenter dabstraire le modle relationnel de donnes en un modle objet
manipulable en Java.
Supposons que vous deviez crire un programme Java manipulant des employs et des dpartements
(sans plus vous proccuper de leur stockage), dcrivez maintenant la structure des classes Employe et
Departement.
En supposant que les donnes sont dj en mmoire, rcrivez une version objet du programme
Commission.
Que proposez-vous maintenant pour charger en mmoire les donnes ncessaires au traitement de
Commission? Vous prciserez en particulier les constructeurs des deux classes et linitialisation de
Commission.
Quels problmes la gestion des liens entre objets risque-t-elle de gnrer? Proposez une solution pour
simplifier cette gestion.
Enfin, pour limiter encore le nombre dobjets chargs en mmoire simultanment, vous proposerez
une solution inspire de la classe ResultSet pour traiter les collections dobjets employs.
55/89
v2.4
SOMMAIRE
Objectifs pdagogiques ........................................................................................................................................... 1
Documentation ....................................................................................................................................................... 1
I.
Introduction .................................................................................................................................................... 2
II.
III.
Travail raliser.............................................................................................................................................. 6
IV.
Annexes ........................................................................................................................................................ 13
OBJECTIFS PEDAGOGIQUES
Les objectifs pdagogiques que vous devez atteindre au cours de cette sance sont les suivants :
DOCUMENTATION
Documentation hibernate : http://docs.jboss.org/hibernate/core/3.6/reference/fr-FR/html/
56/89
v2.4
I.
INTRODUCTION
Hibernate est un framework qui offre une solution au mapping objet relationnel. Il s'occupe donc de grer
la persistance d'objets manipuls dans un programme orient objet (par exemple Java) au sein d'un stockage
relationnel.
Dans Hibernate, l'ajout de la persistance ne se fait pas en modifiant les classes Java correspondant aux donnes
stocker, mais via la notion de mapping et de collection persistante (collection au sens de Set ou de List) : les
donnes sont rendues persistantes par ajout dans la collection, qui propose galement des mthodes de
recherche. Dans ce TP, les collections seront gres dans des classes spcifiques
Dans le cadre de ce TP, vous manipulerez donc des employs et des dpartements (classes Emp et Dept,
dfinies dans les fichiers Emp.java et Dept.java), dont les instances pourront tre rendues persistantes
via la collection persistante code dans le fichier EmpManager.java.
A.
MATERIEL
Afin dallger le travail de configuration, nous avons mis votre disposition une machine virtuelle VMWare
contenant les lments ncessaires la mise en uvre du TP, savoir :
57/89
v2.4
Note : il est possible de partager des fichiers et rpertoires entre la machine virtuelle et la machine relle. Tout
rpertoire partag est visible de la machine virtuelle sous /mnt/hgfs/. C'est le cas en particulier du
rpertoire /users/local de la machine relle qui est accessible depuis /mnt/hgfs/exchange depuis la
machine virtuelle.
B.
DEMARRAGE DU TP
L'ensemble des oprations suivantes se font sur la machine virtuelle UBUNTU_BD_PROG (lancement par
double clic sur l'icone "lancement des machines virtuelles" puis, dans le menu, choisissez la machine lancer
(dernire version propose de UBUNTU_BD_PROG):
1.
2.
58/89
v2.4
II.
A.
DONNEES MANIPULEES
Lapplication manipule les donnes prsentes dans le schma ci-aprs. Il s'agit de 4 classes dobjets
persistants, savoir Dept, Person, Emp et CasualEmp. Les deux associations sont bidirectionnelles.
B.
TRAITEMENTS EFFECTUE S
Les traitements effectus par l'application sont trs simples et consistent principalement affecter une
commission des employs. La classe principale qui implante ce code, Main, utilise pour cela deux classes
utilitaires :
HibernateUtil. Cette classe est utilise pour l'initialisation du framework Hibernate. Vous
trouverez plus d'information sur cette classe dans la section 1.1.6
1.1.6 de la documentation Hibernate
(pour rappel : http://docs.jboss.org/hibernate/core/3.6/reference/fr-FR/html/).
EmpManager. Cette classe ralise la gestion de la collection persistante d'employs. Une autre classe
quivalente DeptManager, pour la manipulation de la collection de dpartements, aurait pu faire
partie de l'application. Nous ne l'avons pas ajoute pour des raisons de simplicit.
59/89
v2.4
La figure 3 correspond au diagramme de classes de cette application. Les classes Person, Dept, Emp et
CasualEmp correspondent celles prsentes dans le paragraphe prcdent. Leurs relations sont donc les
mmes que dans la figure 2.
C.
Allez sous Eclipse pour visualiser l'organisation des sources et reprer les diffrents fichiers de l'application.
60/89
v2.4
III.
TRAVAIL A REALISER
A chaque lancement du programme (au moins un lancement par tape), des commentaires sont affichs dans
la console d'Eclipse. Certains proviennent d'Hibernate (commentaires en rouge), certains proviennent du
programme lui mme (commentaires en noir). Consultez chaque fois ces commentaires.
A.
PREMIERE ETAPE
vous allez prendre en main la structure de l'application Hibernate, c'est dire de ses fichiers de
configuration (hibernate.cfg.xml, Person.hbm.xml et Dept.hbm.xml), mais aussi les
fichiers java et surtout l'organisation de son code. Les questions ci-dessous vont vous aider analyser
les diffrents fichiers de l'application, que vous allez donc devoir afficher et tudier sous Eclipse.
Puis, vous lancerez l'application qui va crer le schma relationnel dans la base de donnes
commission_management et y insrer des donnes ;
Attention, sous Eclipse, la visualisation des fichiers xml peut se faire selon deux formats, un format 'graphique'
qui est le format par dfaut, et un format texte, qui peut tre plus lisible. Le passage d'un format l'autre se
fait par des onglets situs dans le bas de la fentre d'dition. Choisissez l'onglet Source pour mieux
comprendre le contenu des fichiers xml.
Comprendre les grandes lignes des fichiers de configuration (une comprhension plus fine sera examine dans
l'tape 7) :
Le serveur de bases de donnes utilis dans le projet est dcrit dans le fichier
hibernate.cfg.xml.
Vrai
Faux
61/89
v2.4
Dans les fichiers de type xxx.hbm.xml (hbm pour hibernate mapping), savoir Dept.hbm.xml et
person.hbm.xml, sont dcrites les correspondances entre les classes Java rendre persistantes et
la structure des relations associes.
Vrai
Faux
L'attribut location de la classe Java Dept a le mme nom dans la relation associe.
Vrai
Faux
Le fichier Person.hbm.xml dcrit les trois classes Person, Emp et CasualEmp parce que ces
trois relations appartiennent une seule hirarchie (relation d'hritage).
Vrai
Faux
Lancer l'excution de la classe Main. Seule la premire mthode (part1) s'excutera. En effet, dans
le constructeur Main, les appels aux autres mthodes (part2 part6) sont en commentaire.
Vrifier par PgAdmin que le schma et les donnes ont bien t cres sur le SGBD ;
Modifier une donne via PgAdmin (par exemple modifier le nom d'un employ);
Relancer l'excution du programme. La modification apparat-elle dans les donnes affiches dans la
console d'Eclipse ? Apparat-elle dans la base ? ;
.
.
.
Commenter dans le fichier hibernate.cfg.xml la proprit hbm2ddl.auto et refaire la
modification dans la base de donnes.
62/89
v2.4
Relancer nouveau lapplication. La modification apparat-elle dans les donnes affiches dans la
console d'Eclipse ? Apparat-elle dans la base ? A quoi sert la proprit hbm2ddl.auto ?
.
.
.
Dcommenter la ligne "emp = part2(empno);" dans le constructeur Main du fichier
Main.java et passer la deuxime tape.
B.
DEUXIEME ETAPE
N'oubliez pas, chaque tape, d'aller voir le code source de Main.java pour comprendre ce que font les
diffrentes mthodes part1 part6 appeles.
L'objectif de cette deuxime tape est d'examiner comment les donnes de la base peuvent tre utilises dans
le programme.
Relancer l'excution de la classe Main, les deux mthodes part1 et part2 s'excuteront ;
Quelle mthode de la collection persistante (EmpManager.java) est utilise pour chercher
l'employ dans la base de donnes ?
.
La mthode part2 affiche (dans la console d'Eclipse) l'employ dont le numro est pass en
argument.
Examiner dans la console d'Eclipse les informations qui sont affiches pour cet employ. Aller aussi
voir le code des mthodes toString qui sont utilises pour l'affichage d'un employ et d'un
dpartement.
Puis donner la liste (en indiquant le type de l'objet avec son name ou dname) des diffrents objets
java qui ont du tre crs en mmoire partir des donnes de la base, pour l'affichage de l'employ
pass en argument.
.
.
.
.
L'accs aux donnes de la base ncessite toujours d'utiliser la classe EmpManager ?
Vrai
Faux
Dcommenter la ligne "collaborators = part3(emp);" dans le constructeur Main du fichier
Main.java et passer l'tape 3.
C.
TROISIEME ETAPE
L'objectif de cette troisime tape est de dcouvrir ce que deviennent les objets java persistants une fois
termine la session qui les a crs (dans le jargon Hibernate, on dit qu'ils sont dtachs ).
Dans la mthode part3, on travaille hors session et on recherche les collgues
collgues d'un employ, c'est dire les
employs qui travaillent dans le mme dpartement que l'employ pass en argument.
Vrai
Vrai
63/89
Faux
Faux
v2.4
o Dans EmpManager.java
Vrai
Faux
Relancer l'excution de la classe Main, les trois mthodes part1, part2 et part3 s'excuteront ;
Mettre en commentaire, dans la mthode toString de la classe Dept, les deux lignes ralisant
l'affichage des noms des employs du dpartement courant, puis relancer l'application.
Quelle ligne de la mthode part3 pose problme? Pourquoi ?
.
.
.
.
.
.
.
A votre avis, lorsqu'un dpartement
dpartement est charg en mmoire, quels sont les attributs qui sont
automatiquement chargs et quels sont ceux qui ne le sont pas ?
.
.
.
Dans le fichier de configuration Dept.hbm.xml, ajouter l'attribut/valeur lazy="false" dans
l'lment xml <bag name="emps" inverse="true">,
inverse="true">, puis relancer le programme.
Quel est le rle de l'attribut lazy plac dans une collection?
.
.
.
Quelle solution prconisez-vous parmi les 2 suivantes pour que la mthode part3 fonctionne
correctement mme lorsque l'affichage d'un employ ne demande pas l'affichage du nom des
employs travaillant dans le mme dpartement (c'est dire mme en gardant en commentaire les
deux lignes de la mthode toString de la classe Dept que vous avez mis en commentaire) ?
o Le travail en session.
Dans ce cas prcis, il faut que la mthode part3 reste dans la mme session que la mthode
part2 qui affiche l'employ pass en argument. Il faut donc dplacer l'instruction
session.close() qui se trouve en fin de mthode part2, et la mettre en fin de
mthode part3.
o Le chargement non diffr des objets de la collection emps.
Il faut alors ajouter l'attribut/valeur lazy="false" dans l'lment xml <bag
name="emps" inverse="true"> du fichier de configuration Dept.hbm.xml.
.
.
.
.
Vous trouverez plus d'information sur les stratgies de chargement des objets dans la section 21.1. de
la documentation Hibernate (pour rappel : http://docs.jboss.org/hibernate/core/3.6/reference/frFR/html/).
64/89
v2.4
D.
QUATRIEME ETAPE
L'objectif de cette quatrime section (mthode part4 de la classe Main) est de dcouvrir comment maintenir
la cohrence entre les donnes stockes dans la base et les objets java correspondants quand il y a
successivement ouverture et fermeture de session.
Dans la mthode part4, on travaille au sein d'une session, dans une transaction et on cherche les employs
qui sont sous la responsabilit directe ou indirecte de l'employ pass en argument.
Relancer l'excution de la classe Main, les quatre mthodes part1, part2, part3 et part4
s'excuteront ;
Commenter la ligne session.saveOrUpdate(emp) et relancer l'application.
Quelles lignes du code posent problme?
.
Comment expliquer l'erreur obtenue ?
.
.
.
.
Dcommenter la ligne prcdente.
Ajouter avant l'ouverture de session une modification sur l'objet emp pass en argument.
Relancer nouveau l'application. La modification du salaire a-t-elle t prise en compte dans la base
de donnes ?
.
.
.
.
Si vous deviez renommer la mthode saveOrUpdate de session, quel nom proposeriez-vous ?
.
.
.
Dcommenter la ligne "part5(subordinates, totalCommission);"
totalCommission);" dans le constructeur
Main du fichier Main.java et passer la cinquime tape.
E.
CINQUIEME ETAPE
Relancer l'excution de la classe Main, les cinq mthodes part1, part2, part3, part4 et part5
s'excuteront ;
Comparer les valeurs affiches par l'application et celles stockes dans la base ;
.
.
.
Dcommenter la ligne "part6(emp, subordinates);" dans le constructeur Main du fichier
Main.java et passer la sixime tape.
65/89
10
v2.4
F.
SIXIEME ETAPE
L'objectif de cette sixime tape est de comprendre comment rpercuter sur la base de donnes des
modifications faites hors transactions.
Relancer l'excution de la classe Main, les six mthodes part1, part2, part3, part4, part5 et
part6 s'excuteront ;
Comparer les valeurs affiches par l'application dans la console d'Eclipse et celles stockes dans la
base ;
.
.
.
Dcommenter les lignes appliquant la mthode saveOrUpdate aux subordonns de l'employ
pass en argument. Relancer l'application et expliquer le comportement ;
.
.
.
.
G.
SEPTIEME ETAPE
Une utilisation plus avance des fichiers de mapping est ncessaire pour coder une application persistante avec
Hibernate. Cette dernire tape, en vous proposant des modifications de schma, a pour objectif d'initier cet
apprentissage. Cela reste nanmoins trs succinct et vous tes incits utiliser la documentation Hibernate
pour trouver des rponses vos situations particulires.
Avant de raliser les exercices de cette tape, pensez dcommenter la proprit hbm2ddl.auto dans le
fichier hibernate.cfg.xml.
Il est fortement conseill de tester les modifications une une (en relanant le programme) afin de faciliter le
dbogage en cas de problme. Certaines modifications exigent en effet de modifier non seulement un fichier
de mapping (.hbm.xml) mais aussi certains fichiers Java.
Pour les modifications java, pensez utiliser la fonctionnalit trs pratique d'Eclipse 'Refactor' (click droit
/ Refactor / Rename...).
66/89
11
v2.4
Emp
en
Modifier
le
nom
de
la
classe
TeacherResearcher
.
.
.
.
.
Modifier lattribut lower de la classe TeacherResearcher pour qu'il soit reprsent comme
une liste et non comme un ensemble.
Vous trouverez de l'information sur le mapping des collections dans la section
section 7 de la documentation
Hibernate (http://docs.jboss.org/hibernate/core/3.6/reference/fr-FR/html/).
.
.
.
.
.
Identifier d'autres moyens de reprsenter l'hritage entre les classes Person,
TeacherResearcher et CasualEmp.
Vous trouverez de l'information sur les stratgies d'hritage dans la section 5.1.6. de la documentation
Hibernate (http://docs.jboss.org/hibernate/core/3.6/reference/fr-FR/html/).
Dans
quel
cas
choisiriez
vous
l'une
ou
l'autre
des
solutions
proposes ?
.
.
.
Enfin, sachez que si vous souhaitez utiliser Hibernate avec le serveur Oracle de l'cole, une aide est disponible
dans un wiki de l'espace Moodle du cours.
67/89
12
v2.4
IV.
ANNEXES
Ces annexes contiennent une version papier des fichiers de configuration hibernate hibernate. cfg.xml, ainsi
que les deux fichiers de mapping Person.hbm.xml et Dept.hbm.xml.
Fichier hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
68/89
13
v2.4
Fichier Person.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
Fichier Dept.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
69/89
14
v1.2
SOMMAIRE
II.
III.
IV.
V.
Contexte ..................................................................................................................................................... 3
B.
Fonctionnalits........................................................................................................................................... 3
VI.
II.
OBJECTIFS PDAGOGIQUES
Le but de ce mini-projet est de vous exercer de faon ludique la conception dun lment du systme
dinformation dune bibliothque, savoir sa base de donnes.
Les objectifs pdagogiques que vous devez atteindre sont :
Laurent BRISSON
0
70/89
v1.2
III.
DROULEMENT DU PROJET
Lobjectif de ce projet est de raliser, en binme, une application persistante de gestion dune bibliothque.
Vous avez 12h de projet encadres par des enseignants, il est toutefois ncessaire de fournir au moins autant
de temps de travail personnel.
Voici les objectifs des diffrentes sances :
Remarque : le projet de ce module INF206 est distinct de ce que vous ralisez dans le cadre du module INF205.
IV.
TRAVAIL DEMAND
Vous prsenterez lors de la sance dvaluation du projet une dmonstration de votre application. Vous devez
galement apporter les documents suivants lors de lvaluation :
Vous raliserez le modle conceptuel en utilisant le formalisme UML. Le schma logique devra prciser les
contraintes d'intgrit.
Lvaluation prendra en compte la qualit de votre application, de vos livrables, de vos rponses aux questions
ainsi que de votre investissement tout au long du projet. La grille dvaluation sur laquelle nous nous basons
est disponible la fin de ce document.
Notez que si une diffrence notable dinvestissement est remarque lors du projet, les notes pourront tre
individualises.
Laurent BRISSON
0
71/89
v1.2
V.
DESCRIPTION DU PROJET
A.
CONTEXTE
La socit BreizhSoft, ditrice de progiciels, souhaite lancer prochainement sur le march un logiciel de gestion
de bibliothque. La version de base de ce systme devra pouvoir rpondre aux besoins dtablissements
scolaires, universitaires et municipaux de moyenne importance.
B.
FONCTIONNALITS
Les fonctionnalits offrir par ce systme sont celles, classiques, dune bibliothque :
Les livres possdent les caractristiques suivantes : numro identifiant unique attribu par la bibliothque,
nisbn10, nisbn13, titre et auteur. De plus, dans un souci de simplification on considrera quun livre na quun
seul auteur. Pour cette table le nom des colonnes est fig : id, isbn10, isbn13, titre et auteur.
Les usagers ont un dossier enregistrant : n dabonn, nom, prnom, statut (Enseignant ou Etudiant) et email.
La gestion des emprunts doit permettre de savoir quelle date lexemplaire dun livre a t emprunt par un
usager. Un historique doit tre conserv et contenir galement la date de retour de lexemplaire.
Laurent BRISSON
0
72/89
v1.2
VI.
FICHE DE RECETTE
Fonctionnalit
GESTION
DES
LIVRES
Ralise
Non
ralise
Commentaires
Insertion d'un
nouveau livre
GESTION
DES
USAGERS
GESTION
DES
EMPRUNTS
Consultation des
emprunts
Restitution dun
emprunt
Consultation de
lhistorique des
emprunts
Emprunter un livre
Laurent BRISSON
0
73/89
v2.3
P R O J E T B I B L I OT H E Q U E G U I D E D E D E M A R R A G E
I.
SOMMAIRE
II.
III.
A.
B.
C.
IV.
A.
B.
Architecture de lapplication...................................................................................................................... 5
V.
B.
C.
D.
II.
OBJECTIFS DU DOCUMENT
IMPORTANT !
Ce document est une aide pour commencer votre projet. Toutes les informations ncessaires la ralisation
de votre projet ne sont cependant pas prsentes : des liens et des indications sont donns mais vous devez
rechercher sur internet les informations complmentaires qui vous sont ncessaires !
74/89
III.
v2.3
INSTALLATION DE LENVIRONNEMENT
A.
Lensemble des outils ncessaires est rassembl au sein dune machine virtuelle. Pour utiliser cet
environnement suivez les tapes suivantes :
1.
2.
3.
Sur le bureau vous trouverez des raccourcis vers les applications suivantes :
Eclipse - Indigo : lun des environnements de dveloppement open source Java le plus utilis. Cette
version (3.7) contient un ensemble de plug-ins qui permettent le dveloppement dapplications Web
en Java. Cet environnement contient aussi le moteur de servlets/JSP Tomcat utilis dans ce projet. Il
sagit dun serveur Web capable dexcuter les fichiers JSP qui gnrent dynamiquement le contenu
Web de lapplication. Le serveur Tomcat se lance partir de linterface dEclipse (voir plus loin).
Pour plus dinformations : http://www.eclipse.org/ et http://tomcat.apache.org/
ADS 4.7 : un logiciel permettant dutiliser une base de donnes. Il est dj pr-configur pour accder
la base PostgreSQL que vous utiliserez pour le projet. Vous pouvez lutiliser pour crire vos scripts
SQL (il possde un colorateur syntaxique bien pratique).
B.
Afin de vrifier que tout fonctionne correctement, suivez les tapes suivantes :
slectionner
le
rpertoire
IMPORTANT ! Une petite erreur sest glisse dans la configuration de limage, vous devez donc effectuer les 2
tapes suivantes :
Sous Eclipse, faites un clic-droit sur votre projet Bibliothque puis choisissez Rename et changez le
nom Bibliotheque en bibliotheque (remplacez le B majuscule par un b minuscule)
Sous Firefox, faites un clic-droit sur Projet Bibliothque et choisissez Proprits . Changez lURL
de la manire suivante : http://localhost:8080/bibliotheque (remplacez le B majuscule par un b
minuscule)
Sous Eclipse, dans la fentre bas-droite sur longlet Servers faites un clic-droit sur Tomcat v7 et
choisissez Add and remove
75/89
v2.3
C.
Afin de sauvegarder votre travail vous devez copier sur un espace diffrence limage virtuelle qui est stocke
localement dans le rpertoire /users/local/votre_login /Ubuntu_BD_PROG.
IMPORTANT ! Vous devez prendre soin de bien sauvegarder votre travail au sein de la machine virtuelle puis de
lteindre compltement avant de copier limage virtuelle !
1.
Cliquez sur le raccourci Local et ouvrez le dossier correspondant votre login. Copiez le rpertoire complet
Ubuntu_BD_PROG sur votre espace sanssauvegarde (normalement un enseignant a d vous demander
votre login pour vous attribuer de lespace) ou un support externe.
Pour utiliser ce travail sur une autre machine dans une salle de TP de lcole vous devez copier le rpertoire
Ubuntu_BD_PROG situ sur sanssauvegarde dans le rpertoire /users/local/votre_login de la nouvelle
salle machine. Cliquez ensuite sur Lancement de machines virtuelles , slectionnez Ubuntu_BD_PROG et
choisissez de dmarrer partir de limage existante.
2.
Pour pouvoir utiliser cette machine virtuelle sur votre machine personnelle, il faut dabord installer VMware
Player, le logiciel VMware qui excute des machines virtuelles. Il doit sagir au minimum de la version 3 (dans
les salles de TP de Tlcom Bretagne il sagit de la version 3.1.4) qui se trouve ladresse suivante :
http://goo.gl/8p9qa
Ensuite, suivez la procdure suivante :
1.
Dans le rpertoire delta sur votre machine personnelle, ouvrez avec un diteur le chier avec extension
.vmdk qui na pas de -sXX (il sagit juste dun chier texte). Changer la valeur de la variable
parentFileNameHint pour indiquer lemplacement du chier .vmdk du rpertoire modle sur votre
machine.
76/89
v2.3
tant donn que vous ne disposez pas du lanceur de machines virtuelles, il faut toujours effectuer le
lancement de la machine virtuelle partir du chier .vmx du rpertoire delta. Sinon, vos modications ne
seront pas prises en compte lors du prochain dmarrage de la machine virtuelle.
Pour rutiliser en salle de TP de Tlcom Bretagne le travail eectu sur le poste personnel :
IV.
PRESENTATION/ARCHITECTURE DE LAPPLICATION
A.
ORGANISATION DU PROJET
IMPORTANT !
Vous ne devez pas essayer de compiler le fichier source : Eclipse le compile automatiquement lors de chaque
sauvegarde !
77/89
B.
v2.3
ARCHITECTURE DE LAPPLICATION
Lapplication bibliothque est une application Web Java dite multi-niveaux (n-tier). Dans notre cas, nous avons
trois niveaux. Larchitecture peut tre rsume laide du schma suivant :
1er niveau
Navigateur Web
(Firefox, IE, ...)
2me niveau
3me niveau
Moteur de JSP
Tomcat
HTTP
JSP :
ListePersonnes .jsp
Composant
mtier
Java
Composant
mtier
Java :: :
Composants
mtier
ComposantBDLivre.java
ComposantBDLivre.java
ComposantBDLivre. java
JDBC
SGBD
PostgreSQL
Ct serveur
Niveau client :
Le premier niveau est le niveau dinteraction du client. Il est constitu dun simple navigateur Web
(cest ce quon appelle un client lger). Le navigateur se connecte au serveur en utilisant le protocole
HTTP.
Niveau serveur : cette partie est constitue de deux sous-niveaux :
Le deuxime niveau ou niveau intermdiaire (middle-tier) contient lensemble des composants qui
participent au traitement de linformation : les composants de linterface graphique (les fichiers JSP) et
les composants qui codent les aspects mtiers de lapplication (ComposantBDLivre,
ComposantBDEmprunt, etc.).
Le dernier niveau est constitu par la couche SGBD : la base PROJET_BIBLIOTHEQUE_BD prsente sur
PostgreSQL.
78/89
V.
v2.3
2.
Bien que la syntaxe du langage SQL soit normalise, chaque SGBD prsente quelques variations de sa syntaxe.
Par rapport aux scripts ORACLE distribus sur moodle dans le cadre des autres TP, voici les principales
diffrences.
Comme Oracle, PostgreSQL ne diffrencie pas les caractres minuscules et majuscules dans les mots
cls du langage (create, insert, into, etc.). Dans les noms des tables et dans les noms des colonnes. Par
contre il fait une diffrence dans les valeurs textuelles :
o select * from entreprise est quivalent SELECT * FROM ENTREPRISE
o select * from candidature where nom='toto' ne donnera pas le mme rsultat que
select * from candidature where nom='Toto'
79/89
v2.3
);
La cration dune cl primaire avec une squence est lgrement diffrente : dans une syntaxe
abrge (suffisante ici) il suffit dutiliser le type serial et dajouter la contrainte primary key (voir table
entreprise). lexcution du script, PostgreSQL gnrera automatiquement une squence qui sera
nomme de la faon suivante : nomTable_nomColonnePK_seq. Par exemple, pour la table entreprise,
la squence se nomme entreprise_id_seq. Vous pouvez trouver plus dinformation sur la manipulation
des squences en lisant ce document : http://goo.gl/ZejpE
La cration dune cl rfrentielle est similaire Oracle. Dans une syntaxe abrge (la contrainte nest
alors pas nomme), il suffit dindiquer pour la colonne qui porte la contrainte :
nom_colonne type_colonne [not null] references nom_table
La partie entre crochets est optionnelle.
exemple : ref_entreprise integer not null references "entreprise"
Les doubles quotes sont optionnelles.
Une contrainte de non nullit se fait en ajoutant not null aprs le type de la colonne. Exemple :
nom varchar(50) not null
80/89
B.
v2.3
Pour tester le comportement de lapplication, une version complte de celle-ci est disponible lURL suivante :
http://srv-labs-006.enst-bretagne.fr/BibliothequeCorrige/
Une des fonctionnalits de lapplication est presque implmente : la liste de tous les livres prsents dans la
base de donnes. Limplmentation de cette fonctionnalit est faite sur trois niveaux :
Au premier niveau, le composant graphique qui interagit avec le navigateur est le fichier JSP
ListeLivres.jsp.
Au deuxime niveau, ce JSP interagit avec le composant Java ComposantBDLivre.
Au troisime et dernier niveau, ce composant interagit avec la base de donnes o se trouve la table
contenant les donnes afficher.
Lensemble du fonctionnement est schmatis ci-dessous :
ListeLivres .jsp
Appel de la mthode listeTousLivre()
1.
ComposantBDLivre
listeTousLivre()
Requte
select * from livre order by titre
Encapsulation des rsultats au sein dun
ArrayList
Renvoi
Table livre
Id
Isbn 10
Isbn13
Titre
Auteur
000
111
Aaa
Bbbb
LE JSP LISTELIVRES.JSP
Le composant daffichage de la liste des livres effectue principalement deux actions : demander au composant
ComposantBDLivre la liste des livres et grer laffichage des rsultats.
La rcupration de la liste des livres se fait la ligne 28 : livres = compBD.listeTousLivres(); Le rsultat
est stock dans une structure de donnes (ArrayList).
Ce rsultat est ensuite affich (lignes 50 66) au sein dun tableau HTML.
2.
LE COMPOSANT COMPOSANTBDLIVRE
La mthode listeTousLivre() est la mthode du composant ComposantBDLivre qui est utilise par cette
fonctionnalit. Cette mthode utilise une connexion JDBC pour rcuprer les donnes partir de la base.
Cette mthode rcupre les donnes partir dun certain nombre de colonnes qui doivent imprativement
tre prsentes dans la table : les colonnes id, isbn10, isbn13, titre et auteur.
3.
LA TABLE LIVRE
Cette table nexiste pas dans votre base de donnes (cest la premire tape de votre travail). Attention, le
code de ComposantBDLivre sattend trouver un certain nombre de colonnes qui doivent OBLIGATOIREMENT
tre prsentes au sein de votre table (voir plus haut).
81/89
C.
v2.3
2
partir de la classe Connection,
obtenir une instance de la classe
Statement
~ unit de base permettant une
interaction avec la base de donnes
Modifier des donnes
de la base (insert,
delete, update )
Statement stmt
= conn.createStatement ();
3
Excution de la mise jour sur le
Statement.
executeUpdate
ne renvoie pas de
rsultats. Seul le
nombre de lignes modifis
dans la base est renvoy
Connexion conn
3
Excution de la requte sur le
Statement et rcupration des
rsultats dans un ResultSet.
ResultSet rset =
stmt .executeQuery ("select *
from table ");
4
Boucle sur le ResultSet pour
rcuprer ligne par ligne les rsultats.
6
Fermeture du Statement.
stmt.close ();
7
Fermeture de la connexion.
conn.close ();
82/89
v2.3
D.
COMPLEMENTS DINFORMATION ESSENTIELS A LIRE POUR VOUS
FACILITER LA VIE !
1.
Ces deux mthodes insrent respectivement dans la base de donnes les informations sur un nouveau livre et
un nouvel usager. Les commentaires associs ces mthodes sont trs courts. Chacune de ces mthodes
renvoit une valeur entire (int) qui est l'identifiant unique des donnes enregistres (livre ou usager). Dans le
code qui vous est livr, la valeur par dfaut (et inutilisable) est -1.
Il y a donc deux tches raliser dans les mthodes :
1.
2.
83/89
10
v2.3
Note importante : cette application informatique n'est pas une application "relle", il n'y a qu'un seul
utilisateur connect sur la partie serveur. Comme toutes les vritables applications Web, plusieurs utilisateurs
simultans peuvent utiliser l'application en mme temps. Que pourrait-il arriver si deux utilisateurs diffrents
saisissaient chacun un nouveau livre quasiment simultanment (dans un laps de temps de l'ordre de quelques
millisecondes) ?
2.
DU CODE MORT
Quest-ce quun code mort ? Cest tout simplement une portion de code qui nest jamais utilise dans une
application.
On peut constater que les mthodes listeEmpruntsEnCours() et listeEmpruntsHistorique() ne sont jamais
appeles. Il nest donc pas utile de les complter.
3.
INVERSIONS DANS LORDRE DAFFICHAGE DES ATTRIBUTS DUN
EMPRUNT
Pour rsoudre ce problme, voici les manipulations effectuer :
Fichier ListeEmpruntEnCours.jsp lignes 56/57
Remplacer le code :
<td><%=emprunt[1]%></td>
<td><%=emprunt[0]%></td>
<td><%=emprunt[0]%></td>
<td><%=emprunt[1]%></td>
<td><%=emprunt[1]%></td>
<td><%=emprunt[0]%></td>
<td><%=emprunt[0]%></td>
<td><%=emprunt[1]%></td>
4.
JAI COMPLETE LA METHODE MODIFIERLIVRE() MAIS QUAND JE
CLIQUE SUR MODIFIER UN LIVRE DANS LINTERFACE, JAI UN MESSAGE
DERREUR !
Avant de pouvoir modifier un livre, il faut en afficher les informations : vous devez donc galement complter
la mthode getLivre() avant de pouvoir modifier un livre travers linterface web.
84/89
11
5.
v2.3
Il faut prendre lhabitude de lire la documentation avant dappeler laide. Pour vous aider, voici la
documentation concernant la mthode next() de la classe ResultSet.
Returns:
true if the new current row is valid; false if there are no more rows
Throws:
Observez bien le Returns que se passe-t-il si vous rcuprez false et que vous tentez daccder au
ResultSet malgr tout ?
Documentation sur la classe ResultSet: http://goo.gl/sMp0K
Le lien vers la DOC JAVA : http://docs.oracle.com/javase/
85/89
12
v1.4
PR I S E E N M A IN D ' OR AC L E
SOMMAIRE
I.
II.
III.
Documentation ............................................................................................................................................... 3
I.
De la mme manire que vous disposez dun compte informatique vous permettant daccder vos fichiers,
vous avez besoin dun compte Oracle pour pouvoir utiliser ce SGBD.
Pour crer un compte Oracle votre nom, lancez un navigateur web et allez sur http://web-tp.svc.enstbretagne.fr/ pour demander la cration de votre compte oracle. Un mot de passe vous est envoy par email.
Le SGBD Oracle est localis sur un serveur distant. Il est identifi sous le nom dENSEIG (pour ENSEIGnement).
II.
CONNEXION A ORACLE
A.
De la mme manire que vous pouvez accder vos fichiers par linterprteur de commande tcsh (xterm sous
unix) ou dos (invite de commandes sous windows), vous pouvez accder de manire interactive au SGBD
Oracle via un interprteur de commande nomm SQLPLUS qui utilise le langage standardis SQL.
Maintenant, laide de votre login et du mot de passe qui vous a t affect par mail, vous devez vous
identifier via SQLPLUS pour accder au serveur Oracle sur ENSEIG.
Laurent BRISSON
86/89
v1.4
Sous unix/linux, taper SETUP ORACLE dans une fentre de commande puis sqlplus
A ce stade, vous avez accs linterprteur SQL. Pour communiquer avec Oracle, vous tes oblig dutiliser ce
langage. Lobjectif de ce TP est de vous permettre dapprhender rapidement les possibilits de SQL.
B.
Cliquez sur Register Server puis compltez les informations comme sur la capture dcran ci-dessous.
Laurent BRISSON
87/89
v1.4
III.
DOCUMENTATION
A.
Une documentation en ligne est mise votre disposition (http://lricdrom.enstbretagne.fr/cd/817docs/DOC/). Pour accder une aide sur le langage SQL, choisir Oracle8 Server,
puis Oracle8 SQL Reference qui vous liste les commandes et leur syntaxe. SQL*Plus User's Guide
and Reference propose une explication pour dbuter avec le langage SQL.
Une aide en ligne est disponible sous linterprteur SQL Plus. Moins facile dutilisation que la
documentation papier ou html, elle peut cependant dpanner en cas de problme.
> help ;
vous permet de connatre les lments pour lesquels une aide en ligne est disponible.
> help command;
vous permet de connatre les commandes pour lesquels une aide en ligne est disponible.
> help select;
vous permet de connatre la syntaxe de la commande select.
B.
Pour connatre le schma de vos tables, vous pouvez utiliser la commande desc nom_de_la_table .
Par exemple, pour connatre le schma de la relation emp (employ), taper :
desc livre
Pour connatre le contenu dune table, vous pouvez utiliser les commandes du langage SQL, par
exemple :
Select * from livre ;
Enfin, pour amliorer la visualisation des rsultats, il vous est recommand de positionner au sein de
linterprteur SQLPlus dOracle les variables paramtrant laffichage des rsultats :
Set linesize 130;
Set pagesize 65;
Set long 1024;
Set pause on;
Vous tes maintenant capable dattaquer les exercices dcrits dans la section suivante.
Laurent BRISSON
88/89
v1.4
C.
Par dfaut, les noms de structures (i.e. de relations, dattributs, de synonymes, etc.) sont en majuscules
mais vous pouvez les utiliser en minuscules dans les requtes, linterprteur les mettra de lui-mme en
majuscule. Les deux requtes ci-dessous donnent le mme rsultat :
> SELECT TITRE FROM LIVRE;
> select titre from livre;
Si vous voulez dissocier le traitement des caractres minuscules ou majuscules, il faut utiliser les
quotes. Par exemple, seule la premire des deux requtes suivantes donnera un rsultat correct :
> select TITRE from LIVRE;
> select titre from livre;
En revanche, les valeurs dattributs textuels sont case-dependant . Par consquent, les deux requtes
suivantes sont diffrentes :
> select titre from livre where nom=KUNDERA;
> select titre from livre where nom=Kundera;
Enfin, la recherche de chanes de caractre incomplte sexprime en SQL laide du comparateur
LIKE et des caractres % (percent remplace toute chane de caractres) et _ (underscore remplace un
caractre quelconque). Par exemple :
> select titre from LIVRE where collection like Fo%;
> select titre from LIVRE where collection like Fo_io;
D.
SAUVEGARDES
Quelques commandes utiles si vous souhaitez garder des traces des requtes que vous tapez :
Laurent BRISSON
89/89