Vous êtes sur la page 1sur 59

Universit Louis-Pasteur de Strasbourg

Dpartement d'informatique

Bases de Donnes
Sylvain BRANDEL
Ple API
Boulevard Sbastien Brant
67 400 ILLKIRCH
bureau C 126
tl : 03 90 24 45 68
e-mail : brandel@dpt-info.u-strasbg.fr

Notes de cours
(DESS CCI)
(Imprim le 13 dcembre 2014)

Table des matires


Chapitre 1 : BD et SGBD..........................................................................................................................................3
I. Introduction........................................................................................................................................................3
II. Analyse.............................................................................................................................................................3
III. Bases de donnes.............................................................................................................................................6
IV. Systme de Gestion des Bases de Donnes (SGBD)......................................................................................7
Chapitre 2 : Le modle relationnel..........................................................................................................................19
I. Dfinitions.......................................................................................................................................................19
II. Langages dinterrogation................................................................................................................................20
III. Dpendances fonctionnelles..........................................................................................................................29
IV. Normalisation de relation..............................................................................................................................34
V. Insertion - suppression....................................................................................................................................41
VI. SQL...............................................................................................................................................................42
Chapitre 3 : Le modle Entits / Associations........................................................................................................45
I. Entit................................................................................................................................................................45
II. Association.....................................................................................................................................................45
III. Cardinalits et fonctionnalits.......................................................................................................................46
IV. Attribut...........................................................................................................................................................48
V. Rgles de normalisation..................................................................................................................................49
VI. Passage du modle E/A au modle relationnel.............................................................................................50
VII. Concepts complmentaires}........................................................................................................................52
VIII. Exercices de synthse.................................................................................................................................55

Chapitre 1 : BD et SGBD
Rfrences :
Bases de Donnes objet et relationnel
Georges Gardarin
d. Eyrolles

Introduction aux bases de donnes, modle relationnel


Richard Grin (support de cours)
Universit de Nice Sophia-Antipolis

I. Introduction
BD, c'est quoi ?
Df. : Une BD est un ensemble de donnes modlisant les objets d'une partie du monde rel et servant de support
une application informatique.
ensemble :
structur
permettant l'extraction d'informations de manire slective par plusieurs utilisateurs
Exemple : annuaire (Nom, Prnom, ge, CP, ville)
d'abord un tableau (fichier) redondance
2me tableau (CP, ville)
3me tableau (ge) ? redondance calcule
Deux types d'oprations :
Manipulation (utilisateur)
Dfinition (concepteur, administrateur)
Tout ensemble de donnes ne justifie pas forcment une BD.
Exemple : CDs audio
suffisamment de CDs pour ncessiter une indexation informatique
mais si le seul but est d'imprimer la liste, un diteur de textes suffit
Df. : Un SGBD est un logiciel permettant dinteragir avec une BD.
Exemples de SGBD : Access, Oracle. Pas SQL.

II. Analyse
Avant de penser BD, poser des questions, tudier, analyser les besoins.
Exemple : CD audio informatiser. Pourquoi ? dans quel but ? quand ? comment ?
analyse.
Exemple : Ecole. Dialogue avec la directrice.
pour obtenir des rgles de gestion
pour tudier les formulaires, fiches... existant
dictionnaire des donnes
MERISE

A. Pourquoi MERISE ?
Problmes des grosses applications :

applications non coordonnes :


redondance
synonymes
nombreuses interfaces
difficults de MAJ
applications "touffues" :
astuces de programmes, GOTO, optimisations ponctuelles
absence de dossier
absence de concertation rsultats diffrents des souhaits

B. Principes de base
Mthode globale et intgre :
repenser en terme de SAI (Systme d'Automatisation de l'Information) et d'organisation
intgrer les diffrents utilisateurs
Sparation Donnes / Traitements : analyses conduites sparment puis confrontation
3 niveaux de modlisation, invariance dcroissant (plus le niveau est lev, et plus le systme est stable) :
niveau conceptuel
niveau organisationnel
niveau technique

1) Niveau Conceptuel : "QUOI ?"


Que faire ? avec quelles donnes ?
MCD (Modle Conceptuel des Donnes) et MCT (Modle Conceptuel des Traitements)

a) MCD
aspect statique du Systme d'Information, schma entit / associations.
Entit : collection d'objets ayant des proprits analogues et possdant un identifiant.
Exemple : CLASSE < id-classe, nb-lves, anne >
Classe
id-classe
nb-lves
Anne

Classe

id-classe

nb-lves

Anne

1
2

30

Association : Lien logique entre plusieurs entits.

Mariage

(association partielle)

Hommes

Femmes
A pour mre

Possde

(association totale)

Voiture

b) MCT
ce qu'il faut faire : QUOI (pas OU, QUAND organisationnel, pas COMMENT oprationnel).
Evnement : compte-rendu fait au SI que quelque chose s'est produit dans l'univers extrieur ou dans le SI.
Les vnements peuvent tre :
externes (par exemple une commande)
internes (par exemple une facture)
Opration : actions accomplies par le SI en raction un (ou des) vnement(s).

Demande de
promotion

Recevabilit

Dossier

Refus

2) Niveau Organisationnel : "QUI, QUAND, OU ?


MLD (Modle Logique des Donnes) et MOT (Modle Organisationnel des Traitements)

a) MLD
"Reprsentation du MCD en fonction de l'tat de l'art technologique" (Tardieu)
= MCD repens.

b) MOT
Modliser :
les notions de temps et de dure
les postes et leur responsabilits
les lieux et leurs ressources
Exemples de rgles d'organisation :
chaque livraison, le magasinier contrle la marchandise livre
l'inventaire est effectu tous les ans les 29 et 30 dcembre

3) Niveau Technique : "COMMENT ?"


Intgre les moyens techniques, matriels et logiciels.
MPhD (Modle Physique des Donnes) et MOpT (Modle oprationnel des Traitements)

a) MPhD
proposer une solution technique optimale pour l'implantation physique des donnes et la description de leurs
liens.

b) MopT

intgrer les contraintes techniques dans l'organisation des traitements.

C. Inconvnients de MERISE
Lourdeur :
produit beaucoup de documents
lourd pour des petites applications
Par rapport aux tudiants :
lourdeur sur les exemples pdagogiques
sentiment de flou : haut niveau d'abstraction, et mthodologie rigoureuse mais non dterministe
(possibilit de production de diffrents algorithmes)

III. Bases de donnes


BD : Collection de reprsentation de la ralit sous forme de donnes inter-relies :
cohrente, structure
avec une redondance calcule
centralise

A. Les prcurseurs des BD : les systmes de fichiers


Dans une entreprise, chaque service avait ses propres fichiers, dvelopps en fonction de ses besoins
informations communes, sans que cela soit gr.
redondance non gre.

B. Redondance
Problmes :
volume de donnes important (moins grave actuellement : mmoires de masse importantes)
temps de saisie et de mise jour : par exemple, si on dispose de 3 fichiers clients (factures, BL,
tiquettes), la saisie d'un client doit tre effectue trois fois, avec des risques d'erreur (fautes de frappe
entre deux saisies)
difficults de tenir jour les informations pour "coller" la ralit
manque de cohrence.

C. Cohrence
Etre juste par rapport une certaine ralit, c--d intgrit des donnes.
La ralit doit tre fixe sous forme de rgles ou contraintes d'intgrit.
La BD est cohrente si elle respecte les contraintes d'intgrit nonces (dpendantes des applications).
Les rgles dfinissant les liens entre les donnes de la base dcrivent la ralit.
Exemples de contraintes d'intgrit : BD clients / fournisseurs / produits, avec commandes clients et
fournisseurs :
couleur autorise pour un produit {blanc, bleu, noir }
chaque client, chaque fournisseur, chaque produit doit tre identifi de manire unique dans toute la base
( numrotation explicite)
pour la gestion des commandes, les clients et produits intervenant dans la transaction doivent exister
tout client sauvegard dans la base a pass au moins une commande

Les contraintes sont poses au dpart :


elles dfinissent la structure de la base
elles doivent tre vrifies en permanence

D. Centralisation
La BD doit satisfaire une grande varit de demandes de renseignements exprime par de nombreux utilisateurs.
Les utilisateurs ont des exigences de rponse qui doivent tre compatibles avec leurs conditions de travail.
BD : entit commune, centrale, laquelle accdent tous les utilisateurs.
L'utilisateur doit pouvoir travailler comme il l'a toujours fait, avec sa propre vision de la BD.

IV. Systme de Gestion des Bases de Donnes (SGBD)


Un SGBD est une ensemble de logiciels permettant aux utilisateurs de manipuler efficacement des donnes dans
une grande masse d'information partage avec d'autres utilisateurs.
Diffrence avec les systmes de fichiers : description des donnes spare de leur utilisation (description :
dfinition des types par des noms, des formats, des caractristiques ; utilisation : interrogations, mises jour).
Le systme est en fait un composant de plus bas niveau, englob dans le SGBD.

A. Historique
4 gnrations. Le dbut se situe vers 1965 avec le programme Apollo d'IBM.

1) 1re gnration : fin des annes 60


Exemple : TOTAL, IDMS.
Modles rseau ou hirarchique, organiss autour de types d'articles constituant les nuds d'un graphe, les arcs
tant des types de pointeurs.

a) Modles hirarchiques
Les donnes sont reprsentes sous forme dune structure arborescente denregistrements. Cette structure est
conue avec des pointeurs et dtermine les chemins daccs aux donnes.

Avantages :
structure de donne facile comprendre
chemins d'accs fixes : peu de commandes, simplicit des commandes
Inconvnients :
organisation non naturelle
contrle de cohrence dlicat
cot lev de la recherche, d l'unicit du chemin d'accs

b) Modles rseau
La structure peut tre visualise sous forme dun graphe quelconque. Comme pour le modle hirarchique, la
structure est conue avec des pointeurs et dtermine le chemin daccs aux donnes.

Avantages :
moins restrictif
reprsentation naturelle des liaisons
moins de redondances
Inconvnients :
pas d'indpendance vis--vis des stratgies d'accs
Dans ces deux modles, les programmes ne sont pas indpendants de la structure logique de la base et du chemin
daccs aux donnes : ils doivent dcrire comment retrouver les donnes (on parle de navigation dans la base) et
si, par exemple, on enlve un index, tous les programmes qui lutilisaient doivent tre rcrits. De plus, le
langage de travail est complexe.

2) 2me gnration : fin des annes 70


Exemple : ORACLE, SYBASE, INFORMIX, DBASE, SQL SERVER.
Modle relationnel.
Point de dpart : thorie des ensembles en mathmatiques.
Les donnes sont prsentes aux utilisateurs sous forme de relations entre domaines de valeurs, simplement
reprsentes par des tables, et plus les pointeurs qui figeaient la structure de la base.
Les recherches et mises jour sont effectues l'aide d'un langage non procdural standardis :
SQL (Structured Query Language), permettant de traduire les requtes du langage courant.
Les SGBD de la 2me gnration reprsentent l'essentiel du march actuel.
Avantages :
simplicit de la structure
indpendance totale entre niveaux logiques et physiques
Inconvnients :
langage pas adapt aux donnes complexes (les images par exemple)
smantique pauvre
pas de point de vue oprationnel des donnes
dductions limites
Linventeur du modle relationnel est Codd (IBM). Il a nonc 12 rgles que doivent vrifier les SGBD pour etre
relationnels (actuellement aucun SGBD ne les respecte toutes, mais certains tentent de sapprocher de cette
perfection relationnelle) :
rgle 1 : toutes les informations sur les donnes sont reprsentes au niveau logique et non physique (pas
besoin dinformations sur la faon dont sont enregistres physiquement les donnes)
rgle 2 : les donnes sont accessibles uniquement par la combinaison du nom de la table, de la cl
primaire et du nom de la colonne (pas de chemin donner)
rgle 3 : une valeur spciale doit reprsenter labsence de valeur (NULL)
rgle 4 : la description de la base de donnes doit tre accessible comme les donnes ordinaires (un
dictionnaire des donnes est enregistr dans la base)

rgle 5 : un langage doit permettre de dfinir les donnes, dfinir des vues (visions particulires de la
base, enregistres comme des relations), manipuler les donnes, dfinir des contraintes dintgrit, des
autorisations de grer des transactions
rgle 6 : on peut faire des mises jour par les vues lorsque cest logiquement possible
rgle 7 : le langage doit comporter des ordres effectuant linsertion, la mise jour et la suppression des
donnes (un seul ordre pour effectuer chacune de ces fonctions)
rgle 8 : indpendance des programmes vis--vis de limplantation physique des donnes
rgle 9 : indpendance des programmes vis--vis de limplantation logique des donnes (si les
informations manipules par les programmes nont pas t modifies ou supprimes
rgle 10 : les contraintes dintgrit doivent pouvoir tre dfinies dans le langage relationnel et
enregistres dans le dictionnaire des donnes
rgle 11 : indpendance vis--vis de la rpartition des donnes sur divers sites
rgle 12 : on ne peut jamais contourner les contraintes (dintgrit ou de scurit) imposes par le
langage du SGBD en utilisant un langage de plus bas niveau (par exemple le C)

3) 3me gnration : fin des annes 80


Les structures de donnes complexes sont clates par le modle relationnel et la reconstruction de la structure
ncessite des oprations (jointures) coteuses en performances.
Extensions objet des systmes relationnels.
Exemple : ORACLE 8, DB2 Universal Database, Informix Universal Server.
Structuration conjointe des donnes et des programmes en types : les donnes sont enregistres avec les
procdures qui permettent de les manipuler.
Possibilits de dfinir des sous-types par hritage.
Rgles actives rpercussions des MAJ d'un objet sur d'autres objets dpendants.

4) 4me gnration : annes 90 et actuellement


Plus extension de la 3me gnration que vraiment une nouvelle gnration.
Permet de mieux supporter Internet et le Web, les informations mal structures, les objets multimdia, l'aide la
dcision et l'extraction de connaissances.
Mais cela reste un systme relationnel domaine (actif) de recherche Intelligence Artificielle (IA).
Il nexiste pas encore de norme, et ces SGBD sont encore utiliss pour des usages bien spcifiques : le manque
de support et duniformit dans les implantations des diffrents SGBD du march conduisent les utiliser avec
prudence.

B. Objectifs des SGBD


Un SGBD est un ensemble de logiciels qui fournit un environnement pour :
dcrire des donnes
mmoriser des donnes
manipuler des donnes (ajouter, modifier, supprimer)
traiter des donnes en les restituant ventuellement sous une forme diffrente de leur saisie (selectionner,
trier, calculer)
dfinir des contraintes dintgrit sur les donnes (contraintes de domaines, dexistence)
dfinir des protections daccs (mots de passe, autorisations)
rsoudre les problmes daccs multiples aux donnes (blocages, interblocages)
prvoir des procdures de reprise en cas daccident (sauvegardes, journaux)
Un SGBD doit en outre permettre dcrire des applications indpendantes de limplantation physique des
donnes (codage, ordre dans lequel les donnes sont enregistres).

Objectif : assurer
la scurit
la confidentialit
l'intgrit
de bonnes performances
des donnes alors que plusieurs utilisateurs peuvent accder simultanment la BD.

1) Scurit
Une perte d'informations peut s'avrer fatale la scurit est primordiale.
a) Scurit de fonctionnement
Suite un incident matriel ou logiciel, il convient de :
redmarrer le systme
remettre la BD en tat cohrent
archivage : copie de sauvegarde sur un autre support (CD, DAT, disquette...).
journalisation : un journal mmorise toutes les transactions effectues sur la BD. En cas de panne de courant,
le systme lit le journal.
Fonctionnement
normal :

dbut
transaction

fin
transaction
temps

BD non cohrente
BD cohrente
Durant la transaction (ensemble de modifications de la base qui forme un tout indivisible), des oprations sont
effectues sur la BD BD non cohrente temporairement.
risque, si un autre utilisateur accde la BD ce moment.
La transaction doit tre termine ou non excute.
Exemple de transaction : transfert dune somme dargent entre deux comptes dun client dune banque. Elle
comporte deux ordres : dbiter le premier compte, puis crditer le second. Si un problme empche le crdit, le
dbit doit tre annul.
Une transaction est termine :
soit par une validation qui entrine les modifications
soit par une annulation qui remet la base dans son tat initial
Deux transactions ne peuvent se chevaucher.
Lutilisateur peut tout moment valider la transaction en cours (COMMIT en SQL) les modifications
deviennent alors dfinitives et visibles lensemble des utilisateurs.
Tant que la transaction nest pas valide, les modifications quelle contient napparaissent qu lutilisateur qui
lexecute. Tous les autres utilisateurs voient la base dans ltat o elle tait avant le dbut de la transaction.
Lutilsateur peut annuler la transaction en cours (ROLLBACK en SQL) les modifications effectues depuis le
dbut de la transaction sont annules.
b) Gestion de la concurrence d'accs
Lorsque plusieurs personnes travaillent simultanment sur la mme donne, il faut viter que le travail de l'une
crase celui de l'autre.

10

Exemple : diter un mme fichier partag.


Mises jour perdues. Par exemple,:2 personnes veulent modifier une quantit q en stock :
Transaction :
lire (q)
modifier (q) (valeur stocke dans un buffer)
crire (q) (dans la BD)

utilisateur 1

utilisateur 2

ex : q = 100
(tampon)
BD

BD

100

100

lire (q)

80

q = q - 20

(tampon)
lire (q)

100

q = q + 30

130

100

crire (q)

80

crire (q)

130

Ici, le travail de l'utilisateur 1 est cras.


Mcanisme des verrous :
interdit l'accs une donne (table ou partie de table) tant que celle-ci est utilise
verrou pendant un temps minimal gnralement transparent (tous les utilisateurs ont l'impression de
travailler seuls sur la donne)
Mais cela peut conduire un interblocage de processus (deadlock) :
Exemple :

BD

Transaction 1

Transaction 2

Verrouiller la table A
Verrouiller la table B
Verrouiller la table B
(attente)

Verrouiller la table A
(attente)

Ce type dinterblocage ne peut pas arriver si tous les utilisateurs bloquent les tables dans le mme ordre.
Lecture inconsistante ou lecture impropre. Une transaction T2 lit une valeur donne par une autre transaction
T1. Ensuite la transaction T1 annule son affection de V la valeur lue par T2 est fausse :
Transaction 1

Transaction 2

V = 100
Lire V
ROLLBACK

11

BD

Ce cas ne peut pas arriver si les modifications effectues par une transaction ne sont visibles par les autres
quaprs validation (COMMIT) de la transaction.

Lecture non rptitive, ou non reproductible, ou incohrente. Une transaction lit deux fois une mme valeur
et ne trouve pas la mme valeur les deux fois.
Transaction 1

Transaction 2

Lire V
V = V + 100
COMMIT
Lire V

Pour viter ce cas, T1 devra bloquer les donnes quil veut modifier suffisamment longtemps pour empcher les
autres transactions de les modifier.
Lignes fantmes. Une slection de lignes rcupre des lignes qui sont modifies par une autre transaction et ne
vrifient plus le critre de la slection. La mme slection lance une seconde fois ne retrouve donc plus ces
lignes.
Transaction 1

Transaction 2

Slectionner les lignes avec V = 10


V = 20 pour toutes les lignes
Slectionner les lignes avec V = 10

L encore la solution est le blocage explicite des lignes en question.


Traitement des accs concurrents par le SGBD. Les SGBD grent automatiquement les accs concurrents de
plusieurs utilisateurs sur les mmes lignes des tables.
Dans Oracle, une donne est en cours de modification les autres utilisateur ::
peuvent lire la donne telles quelles taient avant cette modification (jamais de dlai dattente pour la
lecture)
sont bloqus automatiquement sils veulent modifier la donne
Oracle assure une lecture consistante des donnes pendant lexcution dun ordre SQL : par exemple, un
ordre SELECT ou UPDATE va travailler sur les lignes telles quelles taient au moment du dbut de lexcution
de la commande, mme si entre-temps un autre utilisateur a confirm (COMMIT) des modifications sur certaines
de ces lignes.

2) Confidentialit
a) Contrle de laccs la base
Gestion des droits d'accs des diffrents utilisateurs (mots de passe).
Gestion des privilges : les utilisateurs nont pas tous les mmes droits.

12

b) Contrle de laccs aux donnes


Les donnes dune table appartiennent au crateur de la table, qui peut donner aux autres utilisateurs des droits
sur cette table (par exemple consulter, ajouter)
Les vues fournissent galement des restrictions daccs aux donnes. Une vue est une table virtuelle
constitue de colonnes qui appartiennent des tables relles. On peut donner le droit daccs une vue sans
donner le droit daccs aux tables sous-jacentes.
On peut aussi donner des droits sur une partie seulement des lignes ou des colonnes dune table.

3) Intgrit
Les oprations doivent respecter les contraintes d'intgrit implicitement :
dfinition de la cl primaire dune table
cls trangres dont les valeurs doivent exister dans une autre table
unicit des valeurs dune rubrique
fourchette pour les valeurs acceptables

Les commandes qui ne respectent pas ces contraintes sont automatiquement annules (toute la commande est
annule si une seule des lignes ne respecte pas une contrainte dintgrit).
Exemple : BD client / fournisseur / produit
interdire l'insertion d'un produit dont le numro figure dj dans la base
interdire l'insertion d'une nouvelle commande avec un client inconnu
il faut d'abord insrer le client, puis la commande
la suppression d'une commande peut provoquer la suppression d'un client (s'il n'avait qu'une commande)

4) Performances
Les langages dutilisation des SGBD relationnels ne font pas rfrence au cheminement suivre pour accder
aux donnes risque de performances dgrades (donnes non contigus, isoles).
Solutions :
index sur une rubrique acclrer laccs aux lignes qui ont une certaine valeur ou acclrer le tri des
lignes dans lordre de rangement de lindex
clusters : rangement physique de plusieurs tables dans un mme espace acclrer les jointures sur ces
tables en partageant des colonnes entre plusieurs tables

C. Architecture des SGBD


Utilisateur

LMD

Menu

Langage hte

Schma
externe A

Schma
externe B

Niveau
logique
Schma conceptuel
Niveau
physique

SGBD

Schma interne

13
BD

SE

3 schmas (norme ANSI/SPARC) :


conceptuel
externe
interne
Ce cours concerne particulirement le niveau conceptuel.
3 types dutilisateurs :
administrateur
programmeur
utilisateur final
2 langages :
LMD
LDD

1) Schmas
a) Schma conceptuel
Niveau central, vision globale de la base. Un seul schma conceptuel. Description des donnes et des CI qui y
sont lies.
Diffrentes approches :
liaison : schmas externes / schma conceptuel
ou schma externe = drivation du schma conceptuel
ou schma conceptuel = synthse des schmas externes
deux utilisateurs peuvent appeler une mme variable sous deux noms diffrents, ou bien appeler deux
variables diffrentes sous un mme nom.
Exemple :
BUVEUR(Nom, Prnom, Adresse)
VIN(Cru, Millsime, Quantit)
ABUS(Buveur, Vin, Date, Quantit)

(objet)
(objet)
(association)

b) Schmas externes
Vision des donnes d'un utilisateur ou d'un groupe d'utilisateurs description d'une partie Seulement des
donnes vision parcellaire, incomplte.
Scurit et confidentialit des donnes.
Il existe autant de visions externes que d'utilisateurs.
Mais les visions des diffrents utilisateurs vont se recouper (informations communes).
Exemple :
Schma externe 1 :
buveur-de-vin :

Nom
Prnom
NbAbus

14

Schma externe 2 :
identit-buveur :

Nom
Prnom

vins-consomms :

Cru
Quantit

c) Schma interne
Description de la manire dont les donnes sont stockes sur les organes physiques.
Dans un SGBD, l'organisation physique des donnes est effectue par le systme d'exploitation ignor par
l'utilisateur.
Il peut y avoir plusieurs modles physiques pour un mme modle logique.
Exemple :
index

Nom
Prnom
Adresse
NbAbus
RefVin
Date
Qt

Cru
Millsime
Qt

d) Indpendances
Indpendance logique si le schma conceptuel peut tre modifi ou enrichi sans que cela affecte les schmas
externes des utilisateurs et leurs programmes d'application.
Indpendance physique si on peut modifier le schma interne sans affecter le schma conceptuel. Cela permet de
ne pas tre li au matriel ou au systme dexploitation (seul le niveau interne en dpend).

2) Utilisateurs
a) Administrateur
Personne(s) responsable(s) de tout ce qui touche la BD :
bon fonctionnement
cration de la BD
dclaration d'un utilisateur
droits d'accs
modification des schmas externes
modification des chemins d'accs aux donnes
maintien des performances daccs aux donnes
sauvegardes et reprises aprs pannes
...

b) Programmeur
Dveloppeur dapplications utilisant la BD. Il a le droit de crer de nouvelles tables et les structures associes
(vues, index, clusters). Il dfinit les droits qui seront accords aux utilisateurs des applications quil dveloppe.

c) Utilisateur final

15

Na accs quaux donnes qui lui sont utiles. Il a certains droits accords par ladministrateur : consultation,
ajout, modification ; suppression. Gnralement il na pas le droit de cration, de modification ou de suppression
de tables.

3) Langages
a) Langage de Dfinition des Donnes (LDD)
Utilis par l'administrateur de la base, le LDD permet de dfinir :
le schma conceptuel et les schmas externes
les donnes, liens, contraintes d'intgrit
Utilis lors de la conception de la base et la modification des schmas.

b) Langage de Manipulation des Donnes (LMD)


Interrogation et MAJ de la BD.
Les instructions peuvent tre :
interactives (outils en ligne, interfaces avec des outils de bureautique ou avec le web)
insres dans un langage de programmation = langage hte de 3 me gnration (C Pro*C) ou de 4me
gnration (langages conus spcifiquement pour dvelopper des applications qui utilisent des BD)
sous forme de menus (forms...), de formulaires, dtats imprims

D. Exemple de fonctionnement d'un SGBD


Le programme d'application, accdant la BD via le schma externe B, demande la lecture d'une donne de la
base.
1. Demande transmise au SGBD.
2. le SGBD analyse la demande :
consultation du schma externe pour vrifier les droits d'accs la donne ; lecture des caractristiques
de la donne partir du schma externe B ;
consultation du schma conceptuel type logique de la donne extraire ;
consultation du schma physique enregistrement physique lire.
3. Le SGBD transfre l'ordre de lecture au Systme d'Exploitation (SE).
4. Le SE reoit l'ordre, l'analyse, puis lance un ordre de lecture au contrleur des units priphriques.
5. Les donnes sont places dans un tampon.
6. Le SGBD slectionne, dans le tampon, les donnes effectivement demandes et les transmet au tampon du
programme d'application.
7. Le SGBD peut prvenir le programme d'application en cas de droulement anormal.
8. Le programme d'application dispose de la donne demande.

E. Rsistance aux pannes


1) Sauvegardes
Rparer les dommages crs par des pannes :

16

le SGBD enregistre automatiquement toutes les instructions excutes sur la base dans des fichiers de
log fichiers utiliss lors du redmarrage aprs la panne
ladministrateur sauvegarde rgulirement les BD et les fichiers utiliss par le SGBD et enregistre les
fichiers de log sur des mdias stables (bandes, CD) ralentissement du systme mais plus grande
fiabilit en cas de panne

2) Types de pannes

origine logicielle (SGBD ou applications qui accdent aux donnes)


origine matrielle (le plus souvent les disques, mais aussi pannes de courant)
dues au rseau en cas de BD distribues

Le traitement est diffrent selon que la panne a laiss la base dans un tat cohrent (interruption logicielle) ou si
elle a t endommage et ne peut plus tre utilise (crash disque)

3) Reprise aprs accident


a) Fichiers non endommags
Utilisation des fichiers de log : les modifications valides (COMMIT) mais non enregistres rellement (pour des
raisons dcriture asynchrone) sont r excutes ; les transactions annules (ROLLBACK) ou non confirmes
(COMMIT) avant la panne sont annules.

b) Fichiers endommags
Ladministrateur doit recharger la dernire sauvegarde.
Si toutes les modifications ont t archives (fichiers de log), il peut relancer leur excution jusqu la panne, ou
tout au moins jusqu la dernire archive valide. Sinon, il faudra relancer la main toutes les transactions
excutes entre la dernire sauvegarde et la panne.
Les fichiers de log ne servent pas seulement la rparation en cas de panne, mais sont utiliss pour des raisons
de performances : lors dun COMMIT, les donnes ne sont pas directement crites mais leur modification est
inscrite dans les fichiers de log criture squentielle plus efficace.

F. Implantation d'un SGBD


Ce paragraphe dcrit les solution retenues dans l'implantation du SGBD Oracle (versions 7 et 8i).

1) Fichiers de la base
Tous les SGBD grent eux-mmes l'enregistrement des donnes sur les mmoires auxiliaires (disques le plus
souvent). Les performances sont ainsi meilleures que s'ils utilisaient simplement le systme d'exploitation et son
systme de fichiers. En gnral, ils se rservent de trs gros fichiers du systme d'exploitation et ils grent euxmmes cet espace pour allouer de la place aux tables ,index et autres objets manipuls.
Un autre avantage est la plus grande facilit pour le portage sur des systmes d'exploitation diffrents.

17

2) Processus clients serveurs


L'utilisation d'un SGBD s'appuie sur le mode client serveur : les applications des utilisateurs qui accdent la
base sont clients de processus serveurs lancs en arrire plan par le SGBD.
Les applications clientes n'ont pas d'accs direct aux donnes de la base. Elles transmettent leurs requtes (SQL
pour Oracle et la plupart des SGBD relationnels) aux processus serveurs du SGBD. Un processus serveur peut
prendre en charge l'interface entre la base et un ou plusieurs processus clients. Il y a en gnral plusieurs
processus serveurs qui fonctionnent en mme temps.
Un processus serveur excute les requtes des clients dont il a la charge et en particulier
transmet aux clients les rsultats des requtes de consultation de la base (les donnes seront lues en
mmoire dans les buffers de la base si elles y sont dj),
dpose dans les buffers de la base (en mmoire) les donnes ajoutes ou modifies par les requtes de
manipulation des donnes.

3) Ecriture des donnes dans la base


Un seul processus (Data Base Writer, DBWR) a la charge d'enregistrer dans les fichiers de la base les donnes
dposes dans les buffers par les processus serveurs. Le fait qu'un seul processus soit charg de cet
enregistrement facilite le maintien de l'intgrit des donnes.
Pour des raisons de performances cette criture se fait de manire asynchrone par rapport aux actions des
serveurs. Il y a, par exemple, criture quand les buffers sont pleins. L'criture des diffrentes entres des buffers
se fait par l'algorithme LRU (Least Recently Used) et ne tient pas compte des COMMIT : les entres qui sont
enleves des buffers et enregistres dans la base sont celles qui ont t le moins rcemment utilises. Une entre
trs utilise peut donc n'tre enregistre (physiquement sur le disque) dans la bas que longtemps aprs son
criture dans les buffers de la base.

4) Fichiers log
Paralllement l'enregistrement des donnes, les processus serveurs enregistrent toutes les actions effectues sur
les tables de la base (et dans les segments de rollback), dans des fichiers indpendants des fichiers de la base,
appels fichiers log (redo log dans Oracle).
Comme pour les donnes de la base, les donnes enregistres dans les fichiers redo log sont d'abord dposes en
mmoire dans des buffers et enregistrs dans les fichiers par un seul processus (Log Writer dans Oracle). Ces
enregistrements ont lieu rgulirement, par exemple quand les buffers sont pleins, et au moins ds qu'il y a eu un
COMMIT.
L'enregistrement d'un COMMIT dans les fichiers redo log est l'vnement de rfrence pour la confirmation
d'une transaction. Chaque COMMIT dclenche une criture immdiate sur le disque des entres du buffer des
fichiers redo log correspondant la transaction valide. Cette criture est rapide car squentielle alors que
l'criture des modifications dans la base est mme plus lente.
Lorsque les fichiers redo log ont enregistr un COMMIT et qu'une panne survient avant que les donnes
correspondant la transaction de la base ne soient crites dans la base, le SGBD effectue l'enregistrement
physique des donnes aprs la reprise. Si par contre c'est un ROLLBACK qui a t enregistr et si des
modifications ont dj t enregistres (par exemple parce que les buffers des fichiers redo log taient pleins), les
donnes sont remises leur tat prcdant la transaction aprs le redmarrage, l'aide des segments de rollback.

5) Segments de rollback
Quand des donnes sont modifies dans une base Oracle, toutes les informations qui permettraient de retrouver
les anciennes donnes (essentiellement les valeurs anciennes des donnes modifies) sont enregistres dans la
base dans ce des segments de rollback.
Ces segments sont utiliss :
pour annuler une transaction aprs une instruction ROLLBACK

18

tant qu'une transaction n'est pas confirme par un COMMIT, les modifications qu'elle apporte aux
donnes ne doivent pas apparatre aux autres transactions (principe de lecture consistante).

6) L'optimiseur de requtes SQL


SQL est une langage non procdural. Par exemple, une instruction SELECT dcrit les donnes recherches sans
indiquer la manire d'aller les chercher dans la base.
L'optimiseur est le module du SGBD qui va concevoir un plan pour aller rechercher les donnes de la manire la
plus efficace possible. Il utilisera gnralement pour cela les index.
L'optimiseur utilise des rgles de simplification et d'optimisation implantes par les concepteurs du SGBD, et les
donnes statistiques sur les tables (par exemple, nombre de lignes et nombre de valeurs diffrentes dans les
colonnes).

19

Chapitre 2 : Le modle relationnel


I. Dfinitions
A. Relation
Une relation R est sous-ensemble du produit cartsien de n ensembles D 1, D2, Dn appels domaines ; n est
appel le degr de la relation. Une relation est constitue de n-uplets de la forme (d 1, d2, dn).
Plusieurs domaines peuvent tre identiques. A chaque domaine et associ un nom dattribut Ai qui est li sa
signification smantique par rapport la relation.
Pour dcrire une relation, on numre ses attributs et on donne la liste des n-uplets qui lui appartiennent
(dfinition en extension). On peut aussi dfinir le prdicat qui permet de juger si un n-uplet appartient la
relation (on dit parfois dfinition en intension).
Chaque n-uplet est une occurrence de la relation.
On note la relation R(A1, A2, An)
Dans la thorie relationnelle, tous les n-uplets doivent tre distincts (sinon on ne pourrait les distinguer en tant
qulments dun ensemble). Une relation a donc au moins un sous-ensemble { A 1, A2, Ak} de lensemble des
attributs qui permet didentifier chacun des n-uplets de la relation(lensemble des attributs satisfait cette
condition) : deux lments de la relation ne peuvent avoir les mmes valeurs pour tous les attributs de ce sousensemble. Sil est minimal (au sens que, si on retire un des attributs, lensemble des attributs restants ne
permettent plus didentifier les n-uplets de la relation), un tel sous-ensemble dattribut est appel une cl
candidate.
Le concepteur choisit une de ces cls candidates comme identifiant privilgi. La cl candidate choisie sappelle
alors la cl primaire de la relation.
On dira quun attribut est non-cl sil nappartient aucune des cls candidates.

B. Tables
Une BD relationnelle est un ensemble de relations :
relations de l'utilisateur (relations de table)
relations de catalogue (relations systme)
Proprits d'une relation :
nom unique dans l'ensemble des relations de la base
nombre fix de colonnes
nombre de lignes quelconque
Exemple :
F#
fournisseur F1
F2
F3
F4
F5

Nom

Ville

Smith
Meyer
Muller
Ryan
Martin

Londres
Strasbourg
Strasbourg
Londres
Paris

pice

1) Colonnes
Les colonnes sont appeles champ ou attribut

20

P#

Nom

P1
P5
P18

vis
crou 6 pans
boulon

fournit

F#

P#

F1
F1
F3
F1
F5

P1
P18
P5
P18
P18

Chaque attribut a un nom unique dans une relation donne, mais on peut trouver deux attributs de mme nom
dans deux relations diffrentes.
Notation :

fournisseur : F#
fournit : F#

Pour le systme, les deux F# sont totalement diffrents, mais smantiquement, les deux sont identiques, on leur a
donn le mme nom.
L'attribut prend sa valeur dans un domaine (ensemble des valeurs acceptes).
Exemple : ville { Londres, Strasbourg, Paris, New York }
L'ordre des attributs n'a pas d'importance.
Exemple : fournisseur < F#, Nom, Ville > = fournisseur < Nom, F#, Ville >
Le nombre d'attributs dfinit le degr de la relation.

2) Lignes
Les lignes sont appeles n-uplets (tuples).
les lignes sont supposes toutes diffrentes, il n'y a pas de doublon dans une table
l'ordre des lignes n'a pas d'importance
le nombre de n-uplets dfinit la cardinalit

C. Catalogue
Il existe un certain nombre de tables automatiquement gres par le systme (cres par celui-ci) :
catalogue des relations (relations, crateur, statistiques sur le contenu, ...)
catalogue des constituants (attributs, types, longueurs, ...)
catalogue des chemins d'accs (index, attribut, type d'index, ...)
catalogue des utilisateurs
catalogue des droits d'accs
etc.
Ces catalogues sont mis jour par le SGBD.
Un utilisateur peut consulter les catalogues (mme langage que pour les tables), mais n'a pas le droit d'criture.

II. Langages dinterrogation


A. Les diffrents langages
Principalement trois thories qui ont donn lieu diffrents langages :
lalgbre relationnelle langage SQL
calcul relationnel des tuples langage QUEL (SGBD Ingres )
calcul relationnel des domaines langage QBE (Query By Example) dIBM
On a pu dmontrer quils taient quivalents dans le sens o ils permettent de dsigner les mmes ensembles de
donnes.

B. Algbre relationnelle
Algbre relationnelle : collection d'oprations formelles qui agissent sur des relations et produisent des relations
en rsultat (E.F. Codd).
"L'algbre relationnelle est aux relations ce que l'arithmtique est aux entiers."

21

Les oprations sont classes en deux catgories (Codd) : les oprations de base et les oprations drives.
Deux types d'oprations de base : oprations ensemblistes traditionnelles et les oprations spcifiques.
oprations ensemblistes :
union
diffrence
produit cartsien
oprations spcifiques :
projection
restriction
jointure
Les oprations drives peuvent en gnral tre obtenues par combinaison des oprations de base.
Oprations drives :
intersection
division
complment
clatement
jointure externe
semi-jointure

1) Oprations ensemblistes
a) Union
Opration applique deux relations de mme schma.
L'union de deux relations de mme schma R1 et R2 est la relation R3 ayant pour tuples les tuples de R1 ou ceux
de R2.
Notation : R1 R2
Exemple : fournisseur1 = < F#, Nom, Ville >, fournisseur2 = < F#, Nom, Ville >
fournisseur1

F#

Nom

Ville

F1
F2
F3

Smith
Meyer
Muller

Londres
Strasbourg
Strasbourg

fournisseur

fournisseur2

F#

Nom

Ville

F2
F4

Meyer
Ryan

Strasbourg
Londres

F#

Nom

Ville

F1
F2
F3
F4

Smith
Meyer
Muller
Ryan

Londres
Strasbourg
Strasbourg
Londres

b) Diffrence
Opration applique deux relations de mme schma.
La diffrence entre deux relations de mme schma R1 et R2 est la relation R3 ayant pour tuples les tuples de R1
n'appartenant pas R2.
Notation : R1 R2
Exemple : fournisseur1 = < F#, Nom, Ville >, fournisseur2 = < F#, Nom, Ville >

22

fournisseur1

F#

Nom

Ville

F1
F2
F3

Smith
Meyer
Muller

Londres
Strasbourg
Strasbourg

fournisseur2

fournisseur

F#

Nom

Ville

F2
F4

Meyer
Ryan

Strasbourg
Londres

F#

Nom

Ville

F1
F3

Smith
Muller

Londres
Strasbourg

Remarque : la diffrence est un oprateur non commutatif.

c) Produit cartsien (binaire)


Combinaison de deux relations (qui n'ont pas forcment le mme schma) pour en former une nouvelle qui a
tous les attributs des deux relations d'origine.
En thorie, les deux relations ne doivent pas avoir d'attributs en commun.
En pratique, on renomme les attributs, par exemple en prfixant le nom de la relation (t.alias dans SQL).
Notation : R1 R2
Exemple : R1(A,B), R2(C,D) R1 R2 = R(A,B,C,D)
Exemple : fournisseur = < F#, Nom, Ville >, pice = < P#, Nom >
fournisseur

F#

Nom

Ville

F1
F2
F3

Smith
Meyer
Muller

Londres
Strasbourg
Strasbourg

fournisseur pice

pice

P#

Nom

P1
P5
P18

vis
crou 6 pans
boulon

F#

fournisseur.Nom

Ville

P#

pice.Nom

F1
F1
F1
F2
F2
F2
F3
F3
F3

Smith
Smith
Smith
Meyer
Meyer
Meyer
Muller
Muller
Muller

Londres
Londres
Londres
Strasbourg
Strasbourg
Strasbourg
Strasbourg
Strasbourg
Strasbourg

P5
P1
P18
P5
P1
P18
P5
P1
P18

vis
crou 6 pans
boulon
vis
crou 6 pans
boulon
vis
crou 6 pans
boulon

Exemple : R(A,B) R(A,B) problme de nom.


En SQL, on peut renommer les relations le temps de la requte.

2) Oprations spcifiques
a) Projection (unaire)

23

Opration spcifique aux relations qui permet de supprimer des attributs d'une relation, c'est--dire slectionner
une ou plusieurs colonnes d'une relation.
L'appellation provient du fait qu'on passe d'une relation n-aire une relation p-aire, avec p < n (projection d'un
espace de dimension n dans un espace de dimension p).
Notation : projY(R), o R est une relation, l'ensemble de ses attributs est X, Y est inclus dans X.
Exemple : fournisseur X = {F#, Nom, Ville}
projVille(fournisseur

Ville

projNom, Ville(fournisseur)

Londres
Strasbourg
Strasbourg

Nom

Ville

Smith
Meyer
Muller
Ryan
Martin

Londres
Strasbourg
Strasbourg
Londres
Paris

b) Restriction (unaire)
Egalement appele slection.
La relation rsultat est de mme type que la relation initiale.
Le rsultat est obtenu en enlevant des tuples la relation oprande selon un critre de slection donn.
Notation : R|E, R est une relation, E est une expression logique.
E est du type <Attribut> <Valeur>.
{=, , <, , >, }
<Attribut> <Attribut>

Formule atomique :

<Attribut> Constante>
Les formules atomiques peuvent tre relies par des connectivits ET, OU, NON.
Exemple : fournisseur = < F#, Nom, Ville >
fournisseur | ville = "Londres"
fournisseur

F#

Nom

Ville

F1
F4

Smith
Ryan

Londres
Londres

Exemple : stock < P#, Quantit-stock, Quantit-seuil >


stock | Quantit-stock < Quantit-seuil

c) Jointure (binaire)
Composition de deux relations l'aide d'un critre de jointure.
La jointure permet de calculer, partir de deux relations R1(X, Y) et R2(Y, Z) une relation R(X,Y,Z)
constitue des n-uplets qui sont combinaison de n-uplets de R1 et de R2 et qui ont mme valeur sur l'attribut
commun Y.
Notation : R1 * R2
Exemple : fournisseur = < F#, Nom, Ville >, fournit = < F#, P# >
F#

Nom

Ville

F#

P#

F1
F2
F3
F4
F5

Smith
Meyer
Muller
Ryan
Martin

Londres
Strasbourg
Strasbourg
Londres
Paris

F1
F1
F3
F2
F5

P1
P18
P5
P18
P18

24

fournisseur

* fournit

F#

Nom

Ville

P#

F1
F1
F3
F2
F5

Smith
Smith
Meyer
Muller
Martin

Londres
Londres
Strasbourg
Strasbourg
Paris

P1
P18
P18
P5
P18

fournisseur * fournit = fournit fournisseur | fournit.F# = fournisseur.F#


Le -produit est dfini en remplaant l'galit par n'importe quel oprateur de l'ensemble .
Remarque : dans certaines notations, le -produit est appel inqui-jointure (ou jointure naturelle) ; dans ce cas,
la jointure est note qui-jointure.
Remarque : lorsque plusieurs attributs sont communs aux deux relations, la comparaison porte sur toutes les
relations.

3) Oprations drives
a) Intersection
Opration applique deux relations de mme schma.
L'intersection de deux relations de mme schma R1 et R2 est la relation R3 ayant pour tuples ceux appartenant
la fois R1 et R2.
Notation : R1 R2
Exemple : fournisseur1 = < F#, Nom, Ville >, fournisseur2 = < F#, Nom, Ville >
fournisseur1

F#

Nom

Ville

F1
F2
F3

Smith
Meyer
Muller

Londres
Strasbourg
Strasbourg

fournisseur

fournisseur2

F#

Nom

Ville

F2
F4

Meyer
Ryan

Strasbourg
Londres

F#

Nom

Ville

F2

Meyer

Strasbourg

Remarque : l'intersection est redondante parce qu'elle peut tre obtenue par combinaison d'oprations de base :
R1 R2 = R1 (R1 R2), ou bien R1 R2 = R2 (R2 R1).

b) Division
La division permet de rechercher dans une relation les sous-tuples complts par ceux d'une autre relation,
rpondant ainsi des questions de la forme "quel que soit x, trouver y".

25

Notation : R1 R2
Exemple :
Nom

Ville

P#

Ville

P#

Nom

Muller
Strasbourg
P1
Strasbourg
P18
Meyer
Muller
Strasbourg
P5
Strasbourg
P5
Meyer
Strasbourg
P18
Meyer
Strasbourg
P5
Martin
Paris
Remarque : la division peut galement P18
tre obtenue partir de la composition d'autres oprations.

c) Complment
Le complment d'une relation est l'ensemble des tuples du produit cartsien des domaines d'une relation
n'appartenant pas cette relation.
Les domaines sont supposs finis (sinon on obtient des relations infinies).
Notation : R
Exemple : fournit = < F#, P# >

fournit

F#

P#

F1
F1
F3
F2
F5

P1
P18
P5
P18
P18

fournit

F#

P#

F1
F2
F2
F3
F3
F4
F4
F4
F5
F5

P5
P1
P5
P1
P18
P1
P5
P18
P1
P5

d) Eclatement
L'clatement fournit deux relations partir d'une relation et d'une condition, la premire vrifie la relation (=
restriction), la seconde ne la vrifiant pas (= restriction avec l'oppos de la condition).

e) Jointure externe
Extension de la jointure sans perte d'information (en compltant par des champs nuls si ncessaire).

f) Semi-jointure
Jointure sans garder tous les champs des deux relations (= projection du rsultat).

4) Proprits de l'algbre relationnelle


R0 : Commutativit et Associativit pour le produit cartsien
RS=SR
(R S) T = R (S T)
R1 : Eclatement d'une opration de Slection Commutativit des conditions de slection
Considrons l'opration de slection R | F o F est une expression de slection telle que :
F = F1 F2 F3 Fk
Eclatement :

26

R|F

= R | (F1 F2 F3 Fk)
= (((R | F1) | F2) | Fk)

Commutativit :
Remarquons que F = F1 F2 = F2 F1. D'o
(R | F1) | F2 = (R | F2) | F1
R2 : Regroupement d'une srie de projections en une seule opration de projection
Soit U l'ensemble des attributs de la relation R,
Soient X et Y des sous-ensembles de U vrifiant de plus X Y.
projX (projY (R)) = projX (R)
R3 : Inversion slection projection
Si l'opration de slection F dfinie sur les constituants X suit une opration de projection de R sur les
constituants Y, on peut inverser les deux oprations si X Y.
projY (R) | F = projY (R | F)
Dans le cas gnral :
projY (R) | F = projY (projXY (R) | F)
R4 : Inversion slection produit cartsien
Si F ne porte que sur des attributs de R :
(R S) | F = (R | F) S
Si F = F1 F2 o F1 n'utilise que des attributs de R et F2 que des attributs de S :
((R S) | F1 F2) = ((R | F1) (S | F2))
Si F = F1 F2 o F1 n'utilise que des attributs de R mais F2 utilise des attributs des deux relations :
((R S) | F) = ((R | F1) S) | F2
R5 : Inversion slection union
(R S) | F) = (R | F) (S | F)
R6 : Inversion slection diffrence
(R S) | F = (R | F) (S | F)
= (R | F) S
La premire solution est plus facile calculer parce que la relation (S | F) est plus petite que la relation S.
R7 : Inversion projection produit cartsien
Soit X une liste d'attributs de R, Y une liste d'attributs de S et Z = X Y. Alors,
projZ (R S) = projX (R) projY (S)
Ne marche pas pour la composition.
R8 : Inversion projection union
projX (R S) = projX (R) projX (S)
Remarque concernant R1 :
fournisseur | nom = Meyer ET ville = Strasbourg
= (fournisseur | nom = Meyer) | ville = Strasbourg
= (fournisseur | ville = Strasbourg) | nom = Meyer, par commutativit
Remarque concernant R2 :
projNom(projNom, Ville(fournisseur))
= projNom(fournisseur), parce que {Nom} {Nom, Ville}
Par contre,
projP#(projNom, Ville(fournisseur))
projP#(fournisseur)

5) Le langage SQL
Structured Query Language.

27

Requte :
SELECT ... (attributs sur lesquels on projette)
FROM ... (relation, ou produit cartsien)
[WHERE ...] (slection, optionnel)

a) Exemple fournisseur / pice / fournit


fournisseur(F#, Nom, ville)
pice(P#, Nom)
fournit(F#, P#)
projVille(fournisseur)
SELECT Ville
FROM fournisseur
projNom,Ville (fournisseur)
SELECT Nom, Ville
FROM fournisseur
fournisseur | Ville = Londres
SELECT F#, Nom, Ville (= SELECT *)
FROM fournisseur
WHERE ville = 'Londres'
projP#(fournisseur fournit | fournisseur.F# = fournit.F# et ville = Londres)
SELECT P#
FROM fournisseur, fournit
WHERE fournisseur.F# = fournit.F#
AND ville = 'Londres'

b) Exemple joueur / rencontre /gain


joueur(nom, prnom, ge, pays)
rencontre(nrencontre, gagnant, perdant, lieu-tournoi, date, score)
gains(nom-joueur, lieu-tournoi, date, prime, sponsor)
1. Nom et ge des joueurs amricains, autre que 'Connors', gs de plus de 30 ans.
projge, nom(joueur | pays = 'USA' ET nom 'Connors' ET ge > 30)
SELECT nom, ge FROM joueur
WHERE pays = 'USA' AND nom != 'Connors' AND ge > 30
2. Les pays des joueurs de 20 ans (sauf France)
projpays(joueur | pays 'France' ET ge = 20)
SELECT DISTINCT pays FROM joueur
WHERE pays != 'France' AND ge = 20
3. Nom et ge des joueurs ayant particip Roland Garros en 99.
projnom,ge joueur *nom = nom-joueur gains | lieu-tournoi = 'RG' ET date = 99

28

Premire solution en rapport direct avec l'expression algbrique :


SELECT nom, ge FROM joueur, gains
WHERE nom = nom-joueur AND lieu = 'RG' AND date = 99
Seconde solution, plus intuitive, plus en rapport avec la question exprime en langage courant :
SELECT nom, ge FROM joueur
WHERE nom IN (SELECT nom-joueur FROM gains
WHERE lieu = 'RG' AND date = 99)
4. Nom et pays des joueurs ayant particip, en 95, aux tournois de Rolland Garos et Wimbledon.
projnom,pays joueur *nom = nom-joueur gains | lieu-tournoi = 'RG' ET date = 95

projnom,pays joueur *nom = nom-joueur gains | lieu-tournoi = 'Wimbledon' ET date = 95


Premire solution, dduite intuitivement de la question :
SELECT nom, pays FROM joueur
WHERE nom IN (SELECT nom-joueur FROM gains
WHERE lieu = 'RG' AND date = 95)
AND nom IN (SELECT nom-joueur FROM gains
WHERE lieu = 'Wimbledon' AND date = 95)
Seconde solution, en rapport avec l'expression algbrique, et utilisant un mot-cl de SQL :
SELECT nom, pays FROM joueur, gains
WHERE nom = nom-joueur AND lieu = 'RG' AND date = 95
INTERSECT
SELECT nom, pays FROM joueur, gains
WHERE nom = nom-joueur AND lieu = 'Wimbledon' AND date = 95
5. Nom des joueurs ayant perdu toutes leurs rencontres.
On utilise pour cela la relation rencontre, dans laquelle les attributs gagnant et perdant reprsentent des noms de
joueurs.
La seule slection de la colonne perdant est insuffisante pour dterminer les louseurs, parce qu'un perdant peut
apparatre gagnant d'un autre match.
Il faut donc soustraire les gagnants des perdants :
projperdant rencontre projgagnant rencontre
Premire solution utilisant un mot-cl de SQL :
SELECT DISTINCT perdant FROM rencontre
MINUS
SELECT DISTINCT gagnant FROM rencontre
Seconde solution, plus intuitive :
SELECT DISTINCT perdant FROM rencontre
WHERE perdant NOT IN (SELECT DISTINCT gagnant FROM rencontre)

C. Calcul relationnel
Le calcul relationnel des tuples et le calcul relationnel des domaines reposent sur le calcul des prdicats du
premier ordre. Cette thorie mathmatique tudie les formules logiques construites avec un ensemble de
prdicats (cest--dire de propositions qui peuvent tre vraies ou fausses dans un certain contexte), les oprateurs
et, ou, ngation, implication logique, des variables et les oprateurs et .
A chaque formule logique correspond lensemble des donnes qui vrifient cette formule. Linterrogation de la
base de donnes consiste donc noncer une formule qui correspond aux donnes que lon souhaite extraire de
la base.

29

La diffrence essentielle entre le calcul relationnel des tuples et le calcul relationnel des domaines est lensemble
dans lequel les variables prennent leurs valeurs :
tuples : chaque variable prend ses valeurs dans lensemble des tuples dune relation particulire
domaines : chaque variable prend ses valeurs dans un domaine particulier des attributs de la base.
Oprateurs utiliss :
prdicats : oprateurs habituels (<, >, , , )
tuples : on ajoute loprateur unaire qui indique quune variable prend ses valeurs dans une relation (par
exemple fournisseur(V) indique que la variable V appartient la relation fournisseur)
domaines : on ajoute loprateur unaire qui indique quune variable prend ses valeurs dans un domaine
(par exemple fournisseur(F#.V) indique que la variable V prend ses valeurs dans le domaine de lattribut
F#de la relation fournisseur)
Exemple :
Pices fournies par Smith :
tuples : {P.Nom / pice(P) et F fournisseur(F) et (F.Nom = Smith) et
domaines :
Nom des fournisseurs (qui fournissent effectivement des pices) :
tuples : {F.Nom / fournisseur(F) et ( R fournit(R) et F.F#= R.F#)}
domaines : {n / m fournisseur(F# : m, Nom : n) et fournit(F# : m)}

III. Dpendances fonctionnelles


But : Construire le schma conceptuel.
Tout est construit partir des Dpendances fonctionnelles (DF), qui sont des contraintes d'intgrit trs fortes.
Le traitement sera diffrent suivant qu'il y a une ou plusieurs rponses la question pose.

A. Dfinition
Soit R une relation dont les attributs sont U = {u1, u2, ..., un} et X U, Y U.
On dit que dans la relation, Y dpend fonctionnellement de X, ou X dtermine Y, si :
u R, v R, projX (R | u) = projX (R | v) projY (R | u) = projY (R | v).
Plus simplement, un attribut Y dpend fonctionnellement d'un attribut X si, tant donne une valeur de X, il lui
correspond une valeur unique de Y (quel que soit le n-uplet considr).
Notation : X Y
u1

u2

a
a

b
b

u3

un

Posons par exemple X = u1 et Y = u2.


Si deux lignes ont la mme valeur sur X, alors ils ont la mme valeur sur Y : dans ce cas, X Y.
Exemple :
n-ch

type

nb-lits

douche

1
2
3
4
5
6

A
B
A
A
B
C

2
1
2
2
1
3

oui
oui
non
non
oui
non

30

Dans ce cas, les DF sont :


type nb-lits
n-ch type
n-ch nb-lit
n-ch douche
nb-lits type
Exemple :
< Nom, Prnom, Ville, CP, Dpartement >
DF : CP Dpartement
(mais pas Ville Dpartement parce que 2 villes peuvent avoir le mme nom)
Exemple :
< Nom, Prnom, Moyenne, ge, Enseignant >
DF : Nom, Prnom Moyenne
Nom, Prnom ge
A condition de se placer dans une classe d'tudiants sans homonymes (pour le nom et le prnom).

B. Rgles d'infrence
Notation : ( en principe tourn vers la droite)
Il est gnralement possible de dduire de nouvelles DF partir des DF existantes.
Notons X, Y, Z et W des sous-ensembles d'attributs de la relation R.
Les trois premires rgles sont les axiomes d'Armstrong (1974), les trois suivantes en sont dduites.

1) Axiomes d'Armstrong
a) Rflexivit
Tout ensemble d'attributs dtermine lui-mme ou une partie de lui-mme.
YXXY
Exemple :
X = {Nom, Catgorie}
Y = Nom ou Y = {Catgorie} ou Y = {Nom, Catgorie}
Nom, Catgorie Nom
Nom, Catgorie Catgorie

b) Augmentation
Si X dtermine Y, les deux ensembles d'attributs peuvent tre enrichis par un troisime.
X Y X, Z Y, Z
Z W et X Y X, W Y, Z

c) Transitivit

31

Le compos de deux fonctions dont l'image de l'une est le domaine de l'autre, est une fonction.
X Y et Y Z X Z

2) Rgles complmentaires
a) Union
X Y et X Z X Y, Z

b) Pseudo-transitivit
X Y et Y, W Z X, W Z

c) Dcomposition
X Y et Z Y X Z
(parce que Z Y Y Z)

C. Manipulation des DF
1) Ajout / suppression d'attributs

supposons G1, G2 D1, D2 VRAIE.


ajout d'attributs gauche : X, G1, G2 D1, D2
ajout d'attributs droite : NON ( moins qu'une autre DF le permette)
suppression d'attributs gauche : NON ( moins qu'une autre DF le permette)
suppression d'attributs droite : G1, G2 D1

Choix des DF retenir :


Il faut parfois viter de trop simplifier par transitivit, pour viter de perdre des DF. X Y et Y Z X Z.
Les deux premires DF permettent de dduire la troisime, le contraire est faux. Il vaut donc mieux garder les
deux premires.
G1, G2 X et G1 X. La seconde permet de dduire la premire, le contraire est faux. On garde donc la
seconde.

2) Fermeture
Soit F un ensemble de DF. Il est possible de composer par les rgles d'infrence les DF de F. La fermeture
transitive de F, note F+, est l'ensemble de toutes les DF rsultant de l'application des rgles d'infrence sur les
DF de F.
L'application d'une rgle d'infrence construit F1 partir de F, puis F2, ..., puis Fn. On s'arrte lorsque Fn+1 = Fn, et
donc F+ = Fn (= Fn+1).
Deux ensembles de DF F$_1$ et F$_2$ sont quivalents s'ils ont la mme fermeture, c'est--dire F 1+ = F2+
F1 F2
F1+ F2+
F2 F1
F2+ F1+

32

3) Couverture
Il est intressant de dterminer un sous-ensemble minimal de DF permettant de gnrer toutes les autres : c'est la
couverture minimale d'un ensemble de DF.
La couverture minimale de F est l'ensemble F0 tel que : F0+ = F+.
Notation : ^F
Exemple :
F={ QS
TR
R, S P
T, Q P
P, R S}

F' = {

TR
R, S P
T, Q P
P, R S}

Est-ce qu'on arrive retrouver Q S avec F' ? NON, donc Q S ncessaire.


Mme dmarche pour chaque DF.
On peut supprimer T, Q P :
Q S Q, T S (augmentation)
T R T, Q R (augmentation)
Q, T S et T, Q R T, Q R, S (union)
T, Q R, S et R, S P T, Q P (transitivit)
donc ^F = {

QS
TR
R, S P
P, R S}

Le calcul de la couverture permet de faire baisser le nombre de vrifications qui sont faire.

4) DF lmentaires
Une DF X Y est pleine ou lmentaire s'il n'existe pas de sous-ensemble strict X' de X (X' X et X' X) tel
que X' X.
On dira que Y est pleinement dpendant de X.

5) Cl de relation
Il est possible de donner une dfinition formelle de la notion de cl partir des DF : une cl est un ensemble
minimal d'attributs qui dtermine tous les autres.
Autrement dit, X est un cl (ou un identifiant) de la relation R si X U est une DF lmentaire.
Un ensemble d'attributs qui inclut une cl est appel supercl.
Il peut y avoir plusieurs cls pour une relation, mais on en choisit une comme cl primaire.
Notation : <Numro}, Nom> (la cl est Numro).
Lorsque deux attributs forment la DF lmentaire : <Num1, Num2, Nom> (la cl est le couple). La notation
<Num1, Num2, Nom> est identique.

D. Passage DF - schma relationnel : cas pratique


Une base de donnes sur les gtes d'une rgion donne comporte les attributs et les hypothses suivants :

33

nom de l'attribut
nom
catgorie
nb-chambres
num-chambre
type
prix
nbre-lits
douche
baignoire
WC
lib-div
gratuit
saison

type
chane
entier
entier
entier
entier
rel
entier
boolen
boolen
boolen
chane
boolen
{'H','B'}

descriptif
nom de l'htel (unique dans une rgion donne)
nombre d'toiles de l'htel
nombre total de chambres pour un htel donn
numro de chambre
type de chambre
prix d'une chambre
nombre de lits
vrai si la chambre comporte une douche prive
vrai si la chambre comporte une baignoire prive
vrai si la chambre comporte des WC privs
libell des divertissements proposs par l'htel
indique si un divertissement propos par un htel est gratuit ou payant
H : haute saison, B : basse saison

Le type de chambre dtermine les commodits offertes : nombre de lits, prsence de douche, de baignoire, de
WC indpendants. Le prix d'une chambre dpend du type de la chambre. Ainsi, dans un htel donn, toutes les
chambres de mme type auront le mme prix. Cette hypothse n'est pas vraie pour deux htels diffrents. Le prix
d'une chambre dpend galement de la saison : haute ou basse.
Les dpendances fonctionnelles vous semblent-elles correctes ?
1. nom catgorie, nb-chambres
2. num-chambre type
3. type prix
4. type nbre-lits
5. type, prix douche, baignoire, WC
6. nom, catgorie nb-chambres
7. nom, num-chambre type, douche, baignoire, WC
8. nom, gratuit lib-div
9. catgorie, lib-div gratuit
10. nom, saison, type nbre-lits
1. Rponses :
1. OUI
2. NON
3. NON
4. OUI
5. OUI

6. OUI
7. OUI
8. NON
9. NON
10. OUI

2. Chercher toutes les DF :


D'abord les plus simples :
nom catgorie
nom nb-chambre
nom lib-div
type nb-lit
type douche
type baignoire
type WC
Puis les autres :
nom catgorie, nb-chambre
type douche, baignoire, WC, nb-lit
nom, num-chambre type, douche, baignoire, WC
nom, type, saison prix

34

nom, lib-div gratuit


3. Dterminer F0 :
F0 = { nom catgorie, nbre-chambre
nom, num-chambre type
type nb-lit, douche, baignoire, WC
nom, lib-div gratuit
nom, type, saison prix }
4. Transformation en modle relationnel :
Gnralement, on a une relation par DF.
On obtient :

HOTEL < nom, catgorie, nbre-chambre >


CHAMBRE < nom, num-chambre, type >
COMMODITE < type, nb-lit, douche, baignoire, WC >
DIVERTISSEMENT < nom, lib-div, gratuit >
COUT < nom, type, saison, prix >

IV. Normalisation de relation


A. Principe
Problme :
minimiser les redondances
minimiser les anomalies de mise jour
On part de deux ensembles :
une relation universelle : relation unique qui contient tous les attributs de l'application,
l'ensemble F des DF sous forme minimale.
On dcompose la relation universelle en utilisant F pour obtenir un ensemble de relations pour une certaine
forme normale (FN) choisie l'avance : 1re, 2me, 3me, 3.5me (forme normale de Boyce Codd), 4me et 5me.
Les trois premires FN ont t dfinies par Codd (1972).
1FN : la plus simple, vite les domaines composs de plusieurs valeurs.
2FN : beaucoup de redondances cot lev de MAJ.
3FN : peu de redondances cot faible de MAJ, mais beaucoup de jointures.
Exemple :
base tudiant
net : numro d'tudiant
nom
ge
adresse
tarif : tarif CROUS {T1, T2, T3}$ selon l'ge de l'tudiant
matire
enseignant : enseignant responsable de la matire
moyenne : moyenne dans une matire donne
ETUDIANT < net, nom, ge, adresse, tarif, matire, enseignant, moyenne>
DF :

net nom, ge, adresse


matire enseignant
net, matire moyenne
ge tarif

35

Cl : net, matire (pas ge car net ge tarif).


Vrifier qu'aucun attribut ne manque.
Redondance et anomalie de mise jour :

net

nom

ge

adresse

tarif

matire

enseignant

moyenne

12
12
40

Meyer
Meyer
Muller

25
25
18

Strasbourg
Strasbourg
Brumath

T1
T1
T2

UV1
UV2
UV3

Brandel
Tellier
Agnus

NULL
10
14

Insertion, suppression : toujours une ligne complte.


Redondance si Meyer prend plusieurs UV.
Si Meyer change d'adresse, il faut la changer dans toutes les lignes.
Effet de bord : si Muller abandonne l'UV3 et qu'on supprime son inscription, alors on perd toutes les
informations qui le concerne s'il n'est pas inscrit dans une autre UV.

Exemple :
Relation employs < matricule, nom, dpt, nom-dpt > avec la DF dpt nom-dpt
Anomalies lors de modifications des donnes :
Anomalies d'insertion : on ne peut pas ajouter de nouveaux dpartements (numro et nom) si le
dpartement ne comporte pas d'employ.
Anomalies de modification : si on change le nom d'un dpartement, on doit le changer dans toutes les
lignes des employs de ce dpartement.
Anomalies de suppression : si on supprime le dernier employ d'un dpartement, on perd l'information
(numro et nom) du dpartement.
on dcoupe les tables en formes normales.

B. Dcomposition en formes normales


1) 1re forme normale (1FN)
Justifie par la simplicit et l'esthtique, la 1FN consiste viter les domaines constitus de plusieurs valeurs.
On dit qu'une relation est en 1FN si tous ses attributs sont de type lmentaires : char, string, int, float.
Interdit : les attributs de type structure, ensemble et liste.
Si on a besoin d'une structure mise plat de la structure, ou nouvelle relation.
Exemple :
net

adresse
numro

rue

nom
ville

CP
INTERDIT

Soit mise plat :


net

numro

rue

ville

CP

36

nom

Soit nouvelle relation :


net

adresse

nom

id-adr
et

1
2

rue

ville

CP

1
2

Si on a un ensemble (tous les lments distincts), on duplique :


net
1

matire

note

UV1

{12, 11, 16}

INTERDIT

net

matire

note

1
1
1

UV1
UV1
UV1

12
11
16

(cl = net, mat, note)


Si on a une liste (diffrent d'un ensemble car l'ordre a une importance et on peut avoir plusieurs fois la mme
valeur), il faut rajouter un attribut :
net

matire

note

UV1

{12, 11, 12}

INTERDIT

net

matire

note

ordre

1
1
1

UV1
UV1
UV1

12
11
12

1
2
3

Remarque : chaque valeur du domaine est atomique, mais du point de vue du modle relationnel : une date ou
une image peut tre considre comme atomique, tout dpend du niveau de dcomposition.
Exemple : base tudiant
ETUDIANT <net, nom, ge, adresse, tarif, matire, enseignant, moyenne>
En 1FN ? OUI.

2) 2me forme normale (2FN)


La 2FN permet d'liminer certaines redondances en assurant qu'aucun attribut n'est dtermin par une partie
seulement de la cl.
Une relation est en 2FN si et seulement si :
elle est en 1FN
les attributs qui ne sont pas cl sont pleinement dpendant de chaque cl.
Exemple typique de relation NON en 2FN :

R:

La cl est le couple X, Y. Donc X, Y Z, W. Or Y dtermine lui seul W : Y W. Donc W dpend d'une partie
de la cl. Il faut donc dcomposer R en : R1 <X, Y, Z> et R2 <Y, W>.
Exemple : base tudiant
ETUDIANT <net, nom, ge, adresse, tarif, matire, enseignant, moyenne>
ETUDIANT est en 1FN.
La cl est le couple net, matire.
net, matire nom

pleine ? NON, car nom dpend uniquement de net

37

net, matire ge
net, matire adresse
net, matire tarif
net, matire enseignant
net, matire moyenne

pleine ? NON, car ge dpend uniquement de net


pleine ? NON, car adresse dpend uniquement de net
pleine ? NON, car tarif dpend uniquement de net
pleine ? NON, car enseignant dpend uniquement de matire
pleine ? OUI, car moyenne dpend des deux

pas en 2FN.
on dcoupe :
net nom, ge, adresse, tarif
matire enseignant
net, matire moyenne
Et on obtient le schma relationnel :
ETUDIANT
ENSEIGNEMENT
NOTE

<net, nom, ge, adresse, tarif>


<matire, enseignant>
<net, matire, moyenne>

En 2FN ? OUI.
Remarques :
Si on supprime une moyenne, on ne perd pas d'tudiant.
Par contre, il faut fixer une Contrainte d'Intgrit rfrentielle (CI rf) exprimant que si on supprime un tudiant,
il faut que la moyenne disparaisse aussi :
CI rf : projnet (NOTE) projnet (ETUDIANT)
projmatire (NOTE) projmatire (ENSEIGNEMENT)
Exemple de mauvais dcoupage :
Relation universelle : R = <A, B, C>, dcoupe en R1 = <A, B>$ et R2 = <A, C>.
A
a1
a1

B
b1
b2

C
c1
c2

a1
a1

b1
b2

et

a1
a1

c1
c2

Si on effectue le produit cartsien : R1 R2 :


A

a1
a1
a1
a1

b1
b1
b2
b2

c1
c2
c1
c2

FAUX.

3) 3me forme normale (3FN)


La 3FN permet d'assurer l'limination des redondances dues aux dpendances transitives.
Une relation est en 3FN si et seulement si :
Elle est en 2FN.
Tout attribut n'appartenant pas une cl ne dpend pas d'un autre attribut non cl. Autrement dit, tous les
attributs n'appartenant aucune cl sont directement et non transitivement dpendants d'une cl.
Exemple typique de relation NON en 3FN :

R:

38

La cl de la relation est X. Donc X Y, Z, W. Or Y dtermine lui seul W : Y W. Donc W dpend d'un


attribut non cl. Il faut donc dcomposer R en : R1 <X, Y, Z> et R2 <Y, W>.
Exemple : base tudiant
La relation ETUDIANT <net, nom, ge, adresse, tarif> n'est pas en 3FN parce que net ge tarif.
Donc on dcoupe cette relation en ETUDIANT <net, nom, ge, adresse> et PRIX <ge, tarif>.
Les autres relations sont dj en 3FN.
Le schma relationnel tudiant devient donc :
ETUDIANT <net, nom, ge, adresse>
PRIX <ge, tarif>
ENSEIGNEMENT <matire, enseignant>
NOTE <net, matire, moyenne>
En 3FN ? OUI.
CI rf ajouter pour viter des redondances en cas de suppression dans la relation ETUDIANT :
projge (PRIX) projge (ETUDIANT)

4) Forme normale de Boyce-Codd


La 2FN limine les anomalies cres par des DF entre parties de cl et attribut non cl.
La 3FN limine les anomalies cres par des DF entre les attributs non cls.
Et les DF de parties de cls entre elles ou d'attributs non cl vers une partie de cl ?
3FN insuffisante FNBC.
Une relation est en FNBC si et seulement si les seules DF lmentaires sont celles dans lesquelles une cl entire
dtermine un attribut.
En clair, pas de DF autres que K A, K tant la cl et A un attribut non cl.
Exemple typique de relation NON en FNBC :
R:

La cl est le couple X, Y. Donc X Z, W. Or W dtermine X : W X. Donc une partie de la cl dpend d'un


attribut non cl. Il faut donc dcomposer R en : R1 <X, Y, Z> et R2 <W, X>.
Exemple : base tudiant
Le schma dcompos en 3FN est-il en FNBC ? OUI !
Exemple : base vins
LOCALISATION <cru, pays, rgion, qualit>
cl : cru, pays
DF : {

cru, pays rgion


cru, pays qualit
rgion pays }
cru

pays

rgion

qualit

Julinas
Morgon
Chablis
Brouilly
Chablis

France
France
US
US
France

Beaujolais
Beaujolais
Californie
Californie
Beaujolais

TB
TB
M
M
M

39

En 3FN, parce que le cru ne dtermine pas la rgion (il parait !), mais pas en FNBC.
On dcompose :

DF :{

CRUS <cru, pays, qualit>


REGION <rgion, pays>

cru, pays qualit


rgion pays }

La dcomposition est sans perte, malgr la perte d'une DF.

5) 4me forme normale (4FN)


Utilisation des dpendances multivalues (DM, notes X Y), pour supprimer certaines redondances.
Exemple : base tudiant
Soit la relation :

net

matire

sport

1
1
1
1
2

BD
BD
Algo
Algo
Algo

escalade
tennis
escalade
tennis
VTT

cl : net, cours, sport


Il est possible de suivre plusieurs matires et de pratiquer plusieurs sports.
Les redondances apparaissent clairement, mais il n'est pas possible de dcomposer parce qu'il n'y a pas de DF le
permettant.
On utilise pour cela les dpendances multivalues : indpendance entre deux ensembles d'attributs corrls par
un troisime.
La 4FN est obtenue en dcomposant la relation partir des DM.
DM : { net matire
net sport }
La relation est dcompose en :
COURS <net, cours>
SPORT <net, sport>

6) 5me forme normale (5FN)


Utilisation des dpendances de jointure (DJ), pour supprimer certaines redondances.
Exemple : base vins
buveur

cru

producteur

Meyer
Meyer
Meyer
Brandel

Edel
Edel
Gewurtz
Edel

Claude
Andr
Andr
Andr

En 4FN parce qu'il n'existe pas de DM (par exemple buveur cru est faux parce qu'il n'existe pas le tuple
(Meyer, Gewurtz, Claude)).

40

Mais il reste encore des redondances : on apprend deux fois que Meyer boit de l'Edel et que Andr produit de
l'Edel.
Mais il est impossible de dcomposer de deux relations.
Les DM permettent de dcomposer une relation en deux, les DJ permettent de dcomposer une relation en N
relations.
On obtient alors le schma :
buveur

cru

buveur

producteur

cru

producteur

Meyer
Meyer
Brandel

Edel
Gewurtz
Edel

Meyer
Meyer
Brandel

Claude
Andr
Andr

Edel
Edel
Gewurtz

Claude
Andr
Andr

En 5FN.

41

C. Exemples
R <A, B, C>
Donnez le schma conceptuel de la BD en 3FN dans les trois cas suivants :
1. F = {A B, B C }
2. F = {A B, C}
3. F = { }
1. 1FN ? OUI
R <A, B, C>, cl : A
2FN ? OUI
3FN ? NON, car transitif
R1 <A, B>, R2 <B, C>

en 3FN.

2. 1FN ? OUI
R <A, B, C>, cl : A
2FN ? OUI
3FN ? OUI (dcoupage possible R1 <A, B>, R2 <A, C> mais inutile).
3. 1FN ? OUI
R <A, B, C>, cl : A, B, C
2FN ? OUI (ne surtout pas dcomposer)
3FN ? OUI
Exemple des gtes
GITES < nom, nb-chambres, num-chambre, type, prix, nbre-lits, douche, baignoire, WC, lib-div, gratuit, saison>
F0 = {

nom catgorie, nbre-chambres


nom, num-chambre type
type nb-lits, douche, baignoire, WC
nom, lib-div gratuit
nom, type, saison prix }

En 1FN ? OUI (tous les attributs sont atomiques).


En 2FN ? NON, parce que par exemple, nb-chambres ne dpend que de nom, et donc n'est pas pleinement
dpendant de la cl.
on dcompose :
R1 <nom, catgorie, nbre-chambres>
R2 <nom, num-chambres, type, nb-lits, douche, baignoire, WC>
R3 <nom, lib-div, gratuit>
R4 <nom, type, saison, prix>
En 2FN ? OUI, tous les attributs sont pleinement dpendants de la cl.
En 3FN ? NON, parce que dans R2, type dfinit nb-lits par exemple, et donc un attribut non cl dfinit un autre
attribut non cl.

42

on dcompose :
R1 <nom, catgorie, nbre-chambres>
R21 <nom, num-chambres, type>
R22 <type, nb-lits, douche, baignoire, WC>
R3 <nom, lib-div, gratuit>
R4 <nom, type, saison, prix>
En 3FN ? OUI.
En FNBC ? OUI.

V. Insertion - suppression
Emploi de n-uplets, sans prcision sur son mode d'obtention (entre au clavier + vrification).
Couples pr-conditions - post-conditions :
pr-condition : doit tre vrifie pour avoir le droit d'excuter l'opration
post-condition : le rsultat de l'opration doit la vrifier
Exemple : base tudiants
Attributs : net, nom, ge, adresse, tarif, matire, enseignant, moyenne
ETUDIANT <net, nom, ge, adresse>
PRIX <ge, tarif>
ENSEIGNEMENT <matire, enseignant>
NOTE <net, matire, moyenne>

DF = { net nom, ge, adresse


matire enseignant
net, matire moyenne
ge tarif }
CI rfrentielles :

projnet (NOTE) projnet (ETUDIANT)


projmatire (NOTE) projmatire (ENSEIGNEMENT)
projge (ETUDIANT) projge (PRIX)

Insertion dans PRIX :


On cherche insrer du n-uplet n dans PRIX.
pr-condition : n.ge projge (PRIX)
post-condition : PRIX = PRIX {n}
Suppression dans PRIX :
On cherche supprimer un n-uplet n de PRIX.
pr-condition : n.ge projge (ETUDIANT)
post-condition : PRIX = PRIX - {n}
Suppression en cascade :
pr-condition : VRAI
post-condition :
- PRIX = PRIX - {n}
- ETUDIANT = ETUDIANT - (ETUDIANT | ge = n.ge)
- NOTE = NOTE - (NOTE | net projnet (ETUDIANT | ge = n.ge))
Insertion d'un n-uplet $n$ dans ETUDIANT :

43

pr-condition :
- n.net projnet (ETUDIANT)
- n.ge projge (PRIX)
post-condition : ETUDIANT = ETUDIANT {n}

Suppression dans ETUDIANT :


pr-condition : n.net projnet (NOTE)
post-condition : ETUDIANT = ETUDIANT {n}
Suppression en cascade :
pr-condition : VRAI
post-condition :
- ETUDIANT = ETUDIANT {n}
- NOTE = NOTE - (NOTE | net = n.net)
Insertion d'un n-uplet n dans NOTE :
pr-condition :
- (n.net, n.matire) projnet, matire (NOTE) (diffrent de n.net projnet (NOTE) et (n.matire)
projmatire (NOTE))
- n.net projnet (ETUDIANT)
- n.matire projmatire (ENSEIGNEMENT)
post-condition : NOTE = NOTE {n}
Suppression dans NOTE :
pr-condition : VRAI (ne vient pas de suppression en cascade mais de l'absence de conditions)
post-condition : NOTE = NOTE - {n}
Remarques :
L'ordre d'insertion / suppression dans les relations est important.
Vrifier qu'il n'y a pas de situation d'interblocage : par exemple insrer avant un net peut permettre d'insrer
autre chose.

VI. SQL
A. Cration de tables
Syntaxe :
CREATE TABLE <nom-de-table> (<colonne> | <contrainte-de-relation>)+
<nom-de-table> : chane de caractres simple (par exemple etudiant), ou compos (un nom de schma suivi d'un
nom de table, par exemple crous.etudiant).
<colonne> = <nom-de-colonne> <type-de-donnes> [<dfaut>] [<contrainte-de-colonne>]
<type-de-donnes> :
chanes de caractres de longueur fixe : CHAR (size), o size est facultatif (omis : taille = 1, max = 255).
chanes de caractres de longueur variable :
VAR CHAR 2 (size), o size est obligatoire (max = 2000).
LONG, sans prciser de taille (on peut y mettre des valeurs jusqu' 2 Go), mais avec restrictions :
un seul champ de type LONG par relation
contrainte d'intgrit : uniquement NULL ou NOT NULL pour ce champ (NULL = on ne peut
rien y mettre)
index interdits
ne peut pas apparatre dans certaines parties d'une commande SQL (WHERE, GROUP BY,
DISTINCT...)
numrique (entier positif, ngatif, virgule fixe ou flottante) : NUMBER(p,s), o :

44

p = prcision : nombre total de chiffres (1 p 38), facultatif


s = scale : nombre de chiffres droite de la virgule (s > 0), facultatif. Si s < 0, alors arrondi gauche
de la virgule.
NUMBER(p) : s = 0 entiers.
NUMBER : p = 38 et s indfini nombres virgule flottante.
par compatibilit, on peut utiliser NUMERIC, DECIMAL, INTEGER, INT, SMALLINT, FLOAT,
REAL, DOUBLE PRECISION.
dates : DATE, toutes les dates valides comprises entre le 1 er janvier 4712 av. JC et le 31 dcembre 4712
ap. JC. Format : centenaire + anne + mois + jour + heure + min + sec.
<dfaut> : DEFAULT val, o val est la valeur que l'on donne l'attribut lorsque l'utilisateur n'en fournit pas.
Restriction :
cohrence de type
ne peut pas contenir de rfrence une autre colonne
ne peut pas contenir de date non compltement spcifie
<contrainte-de-colonne> : permet de spcifier diffrentes CI portant sur un seul attribut, y compris les
contraintes rfrentielles :
valeur null impossible : NOT NULL
unicit de l'attribut : UNIQUE ou PRIMARY KEY
contrainte rfrentielle : REFERENCES <table-rfrence> [<colonne-rfrence>] (le second argument
est optionnel s'il est identique la colonne rfrenante)
contrainte gnrale : CHECK <condition>, la condition pouvant tre exprime avec :
<Attribut> <Valeur>, {=, , <, , >, }
prdicat d'intervalle : BETWEEN AND
prdicat de comparaison de texte : LIKE
test de nullit : NULL
test d'appartenance : IN
<contrainte-de-relation> : peuvent porter sur plusieurs attributs :
contrainte d'unicit : UNIQUE (<attribut>) +
contrainte rfrentielle : [FOREIGN KEY (<colonne-rfrenante>) +] REFERENCES <tablerfrence> [(<colonne-rfrence>)+]
contrainte gnrale : CHECK <condition>

Exemple :
CREATE TABLE prix (

age NUMBER (2) PRIMARY KEY,


tarif CHAR (2) DEFAULT 'T1',
CHECK (age > 25) )

CREATE TABLE etudiant (

net NUMBER (2),


nom VAR CHAR 2 (30),
age NUMBER (2) [ REFERENCES prix [ age ] ],
adresse VAR CHAR 2 (60),
PRIMARY KEY (net),
[ FOREIGN KEY (age) REFERENCES prix [ age ] ] )

B. Insertion de donnes
Syntaxe :
INSERT INTO <nom-de-table> [ ( <nom-de-colonne> )+ ]
{ VALUES ( <constantes> )+ | <commande-de-recherche> }
Exemple :
INSERT INTO etudiant (net, nom, age, adresse)

45

VALUES (1, Meyer, 28, Strasbourg)


INSERT INTO prix
VALUES SELECT DISTINCT age FROM etudiant WHERE...
Remarque : si toutes les colonnes ne sont pas prcises, les manquantes sont remplies avec NULL.

C. Suppression de donnes
Syntaxe :
DELETE FROM <nom-de-table>
[ WHERE { <condition-de-recherche> | CURRENT OF <nom-de-curseur> } ]
Exemple :
DELETE FROM etudiant WHERE nom LIKE Meyer OR age > 36
DELETE FROM prix
Remarque : le second exemple limine toute la table !

D. Mises jour
Syntaxe :
UPDATE <nom-de-table>
SET { <nom-de-colonne> = { <expression-de-valeur> | NULL } }+
WHERE { <condition-de-recherche> | CURRENT OF <nom-de-curseur> }
Exemple :
UPDATE prix
SET tarif = 'T12'
WHERE age = 30
UPDATE etudiant \\
SET age = age + 1
WHERE nom = Meyer
Remarque : seuls les n-uplets vrifiant la condition (optionnelle) sont mis jour.

46

Chapitre 3 : Le modle Entits /


Associations
(source : C. Silber)
(E/A, ou E/R en anglais)
Modle plus intuitif que le modle relationnel, le modle E/A est la base de MERISE.
Concepts voisins, le passage de l'un l'autre est immdiat.
Evolution du modle E/A : il existe des modles tendus :
concepts de base : Entit, association, attribut
concepts tendus : agrgation (abstraction), spcialisation (concrtion)
Amalgame de nombreux modles, en gardant le meilleur de chacun.
Actuellement : UML

I. Entit
Entit = individu dans MERISE
Entit = objet concret ou abstrait qui peut tre distinctement identifi dans l'esprit du concepteur et qui prsente
un intrt particulier.
Exemple : M. Meyer, dpartement de vente d'une entreprise... M. Meyer est UNE entit.
classe (ou type) d'entit : une classe regroupe toutes les entits de mme nature.
Exemple : M. Meyer classe Personne (M. Meyer est une occurrence de la classe Personne).
Reprsentation graphique :

<nom-classe>

En gnral, une entit reprsente le nom dans une phrase.


Exemple : M. Meyer possde une 205 :
Personne

Personne

Voiture

II. Association
Association = relation dans MERISE.
Une association est une relation entre une ou plusieurs entits.
L'association reprsente gnralement le verbe d'une phrase.
Classe (ou type) d'association = ensemble des associations ayant mme smantique, dfinies sur un mme type
d'entits.
Reprsentation graphique : il en existe de nombreuses, il faut en choisir une.
classe d'ass.

classe d'ass.

classe d'ass.

47

classe d'ass.

classe d'ass.

Un type d'association ne peut pas tre directement reli avec un autre type d'association :
INTERDIT (sauf extension agrgation)
Un type d'entit de peut tre reli un autre type d'entit que par un lien d'association :
INTERDIT
Il n'y a pas de restriction sur le nombre de types d'associations entre types d'entits :
Possde

Personne

Voiture

Conduit
Habite

Ville

Une occurrence d'association associe plusieurs entits : une et une seule entit par classe d'entits intervenant
dans le type d'association.

III. Cardinalits et fonctionnalits


Cardinalit min et max reportes sur la graphique :
Personne

a,b

Possde

c,d

Voiture

a = nombre min d'occurrences de B lies l'occurrence de A par A - B ( {0,1})


b = nombre max d'occurrences de B lies l'occurrence de A par A - B ( {1,n})
c = nombre min d'occurrences de A lies l'occurrence de B par A - B ( {0,1})
d = nombre max d'occurrences de A lies l'occurrence de B par A - B ( {1,n})
Exemple :
1n
Personne
0,n
Habite

0,n
0,n
0,n

Possde

1,1

Conduit
mn

0,n

Voiture

Ville

Remarque : selon les auteurs, les couples (a,b) et (c,d) peuvent tre reprsents sur une liaison ou sur l'autre.
cardinalit : couple (a,b) ou (c,d). 4 alternatives pour les deux couples (a,b) et (c,d) :
0,1
0,n
1,1
1,n
Pas d'autre choix possible.

48

fonctionnalit : couple (b,d). 3 alternatives :


1x1
1xn
n x m (= n x n car les deux n peuvent tre diffrents, il s'agit du max des 2 cardinalits)
Concept de dimension (ou ordre ou degr) du type d'association : c'est le nombre de types d'entits distinctes
qui interviennent dans le type d'association.
Exemples :
relation unaire (dimension = 1) :
Personne

mari

mari

Personne

Personne

mari
femme

relation binaire (dimension = 2) :


Personne

Voiture

Personne

relation ternaire (dimension = 3) :


Personne

Voiture

Personne
Chateau

...relation n-aire (dimension = n) :


Salle

Enseignant
Emploi du temps

Horaire

Groupe d'tudiants

Quand il y a plus de deux types d'entits, il peut y avoir des problmes :

Produit

0,n

Client

1,1

Commande

Ligne produit
mauvaise modlisation

Les cardinalits peuvent varier selon les questions que l'on se pose :

Produit

0,n

Ligne produit

1,n

Commande

49

1,1

Passe par

0,n

Client

IV. Attribut
attribut = proprit dans MERISE
Un attribut est la proprit d'un type d'entit ou d'association.
Une proprit a une valeur.
Exemple :
Personne
id
nom
ge
adresse

Personne
- id
- nom
- ge
- adresse

Autre notation :

Attributs :
valeurs simples, pas de structure, pas d'ensemble
valeurs facultatives ou obligatoires
Les attributs peuvent tre :
des identifiants : cls, souligns dans la reprsentation graphique
des descripteurs : tous les autres.
Les attributs du type d'association regroupent les cls de chacun des types d'entits de l'association + des attributs
propres l'association :
Fournisseur
Id-fourn
Nom

0,n

Ligne catalogue

0,n

Prix

Produit
Id-produit
Dsignation

Cl de l'association : a priori, elle est constitue de toutes les cls de l'ensemble des cls des entits qui
interviennent dans l'association :
Exemple : la cl de ligne catalogue est (Id-fourn, Id-produit).
En pratique, ce n'est pas toujours le cas :

0,1

Produit
Le prix ne dpend que du numro de produit

Dans ce cas, le prix peut se placer ailleurs (dans produit).


Exemple :
Elve
Id-lve
Nom

0,n

0,n

Inscrit
Note

Matire
Id-matire
Libell

inscrit < Id-lve, Id-matire, note > n'autorise pas d'avoir plusieurs notes pour un tudiant donn dans une
matire donne.

50

Remde : analyser la cause de la rptitivit et introduire un type d'entits pour la traduire :

Elve
Id-lve
Nom

0,n

0,n

Inscrit
Note

Matire
Id-matire
Libell

1,n
Date'
Date

inscrit < Id-lve, Id-matire, Date, note >, on peut prsent avoir plusieurs notes par lve (une par date).
Il existe des exemples o cela ne fonctionne pas :

Bandit
Id-bandit
Nom

Sjour prison
0,n

Date dbut
Date fin
dbut

0,n

Prison
Id-prison

1,n

Date'
Date

cl : id-bandit + id-prison + date + date-dbut une date en entit + une date en association.

V. Rgles de normalisation
L'attribut est affect au type d'entits ou d'associations qu'il dcrit le plus directement :
Personne

Possde

Voiture

Date de naissance

Date d'achat

Date de 1re imat

0,1

0,n

Les trois dates sont trs diffrentes.


Choix entit / attribut :
Employ
Id-emp
Nom
No_bureau
Surface

Employ
OU

Id-emp
Nom

Occupe
Surface

Si plusieurs employs par bureau

Bureau
Id-bureau
Surface

Si un seul employ par bureau

Le choix dpend de l'importance du bureau.

51

Un type d'entit qui ne comporte qu'un identifiant peut tre trait comme un attribut, condition qu'il
n'intervienne pas dans un nouveau type d'association et qu'il ne gnre pas d'attribut valeur multiple.
Il faut toujours vrifier si les associations de degr suprieur deux ne peuvent pas tre rapportes plusieurs
associations de degr infrieur.
Un type d'association peut tre limin s'il est la composition de deux types d'associations qui, par des
cardinalits (0,1) ou (1,1), expriment la mme ralit.
Exemple :
1,n

Station ski

Situation

1,1

1,n

Htel

Affectation

1,1

Chambre

1,n

1,1
Lieu
INTERDIT

VI. Passage du modle E/A au modle relationnel


Une entit
Une association

une relation
soit intgre dans une relation existante (card max 1)
soit donne lieu a une nouvelle relation

A. Exemple voitures
Personne
Id-pers
Nom

0,n

Possde
Date d'achat

Plusieurs possibilits, selon les cardinalits :


Personne < Id-pers., nom, date, Immatriculation, type >
Personne < Id-pers., nom >
Voiture < Immatriculation, type >
Possde < Id-pers., Immatriculation, date >
Personne < Id-pers., nom >
Voiture < Immatriculation, type, Id-pers., date >
Contrainte d'intgrit rfrentielle pour le dernier cas :
projId-pers. (Voiture) projId-pers. (Personne) { NULL }

B. Exemple tudiant
ETUDIANT <net, nom, ge, adresse>
PRIX <ge, tarif>
ENSEIGNEMENT <matire, enseignant>
NOTE <net, matire, moyenne>

52

0,1

Voiture
Immatriculation
Type

Passage du modle relationnel au modle E/A :

Etudiant
net
Nom
Adresse

0,n

0,n

Note

Enseignement
Matire
Enseignant

1,1
Ag de
0,n
Anne

1,1

Dtermine

0,n

Tarif
Id-tarif

Age
Ou encore :
Etudiant
net
Nom
Adresse

0,n

Note

1,1
0,n

Paie

0,n

Enseignement
Matire
Enseignant

Prix
Age
Tarif

C. Exemple Employ
SERVICE <nS, nomS>
EMPLOYE <nE, nomE, nS>
PROJET <nP, nomP, cot>
PARTICIPE <nE, nP, nomR>

Employ
nE
NomE

0,1

Travaille

0,n
Participe
nomR

0,n

Projet
nP
nomP
Cot

53

0,n

Service
nS
nomS

VII. Concepts complmentaires}


A. Gnralisation / spcialisation
Gnralisation : regrouper les diffrents types d'entit en faisant abstraction de leurs diffrences.
type gnrique (mise en facteur des attributs communs).
Spcialisation : pour un type donn, on dfinit des sous-types en mettant en vidence leur particularits.
Exemple :
Personne
id
nom

Homme

Femme

service militaire

nom jeune fille

Il y a hritage des attributs du type gnrique :


Exemple : Homme < id, nom, service militaire > (id et nom proviennent de Personne).
Dans ce modle, il n'y a plus de raison d'admettre des attributs valeur nulle.
Il peut y avoir N niveaux d'abstraction :
Vhicule

Terrestre

Arien

Diesel

Atmosphrique

Essence

Compress

Diesel

Injection

Essence

Sur N critres :

Homme

Carburation

Personne

Femme

Majeur

54

Mineur

Association tous les niveaux :

Programmeur

Employ

Travaille

Chef de projet

Secrtaire

Dirige

Dispose

Voiture

Berline

Monospace

B. Modle tendu : MERISE 2


Intgration d'informations supplmentaires dans le modle E/A :
partition (+) : disjonction + couverture (l'un ou l'autre)
totalit (T) : disjonction + couverture (l'un ou l'autre ou les deux, mais pas autre chose)
exclusion () : disjonction + couverture (l'un ou l'autre ou autre chose, mais pas les deux)
Fait appel aux notions de :
Couverture : ensemble recouvrant tous les lments.
Disjonction : pas d'lments commun deux sous-ensembles.
Partition :

Personne Homme

Totalit :

Femme

Voiture

Exclusion :

Diesel

Voiture

Turbo

Essence
(GPL)

Reprsentation graphique :

Partition :

Totalit :

Exclusion :

55

Diesel

Exemple :
Personne
Id-pers
Nom

+
Chanteur

Musicien

Voix

Instrument

Expression des contraintes rfrentielles :


Une relation :
personne <Id-pers, nom, voix, instrument >
partition :
totalit :
exclusion :

voix NULL XOR instrument NULL


voix NULL OR instrument NULL
voix = NULL OU instrument = NULL

Autre possibilit :
personne < id-pers, nom, type, voix, instrument >
partition :

totalit :
exclusion :

type {C,M}
type = C ET voix NULL ET instrument = NULL
type = M ET voix = NULL ET instrument NULL
type {C,M,D}
type {C,M,NULL}
type = C ET voix NULL ET instrument = NULL
type = M ET voix = NULL ET instrument NULL

Trois relations :
personne < id-pers, nom >
chanteur < id-pers, voix >
musicien < id-pers, instrument >
C1 : projid-pers (chanteur) projid-pers (personne)
C2 : projid-pers (musicien) projid-pers (personne)
C3 : projid-pers (musicien) projid-pers (chanteur) =
C4 : projid-pers (musicien) projid-pers (chanteur) = projid-pers (personne)
partition :
totalit :
exclusion :

C3 (C1 et C2 non ncessaires)


C4 (C1 et C2 non ncessaires)
C1 ET C2 ET C3

Autre mthode :
personne < id-pers, nom, type >
chanteur < id-pers, voix >
musicien < id-pers, instrument >

56

partition :

totalit :
exclusion :

type {C,M}
projid-pers (chanteur) projid-pers (personne | type = C)
projid-pers (musicien) projid-pers (personne | type = M)
type {C,M,D}
type {C,M,NULL}
projid-pers (chanteur) $ projid-pers (personne | type {C,D})
projid-pers (musicien) projid-pers (personne | type {M,D})

VIII. Exercices de synthse


A. Exercice employs.
1) Enonc
Soit la base de donnes mmorisant les informations au sujet des employs des diffrents services d'une
entreprise et leur participation aux projets. Chaque employ appartient un seul service ; on ne mmorisera pas
l'historique de sa carrire. Il participe un ensemble de projets avec diffrents rles. Toutefois au sein d'un
projet, un employ ne peut avoir plusieurs rles.
Les attributs de la base sont :
nom de l'attribut
nS
nomS
nE
nomE
nomR
nP
nomP
cot
Les relations sont :
Service (nS, nomS)
Employ (nE, nomE, nS)
Projet (nP, nomP, cot)
Participe (nE, nP, nomR)

type
entier
chane
entier
chane
chane
entier
chane
rel

descriptif
numro de service
nom de service
numro de l'employ
nom de l'employ
rle de l'employ dans un projet
numro de projet
nom de projet
cot estim d'un projet, ventuellement NULL

cl : nS
cl : nE
cl : nP
cl : (nE, nP)

avec les contraintes d'intgrit rfrentielles :


projnS (Employ) projnS (Service)
projnE (Participe) projnE (Employ)
projnP (Participe) projnP (Projet)
Donner les expressions en algbre relationnelle et en SQL :
1.

Liste de tous les triplets (nP, nomP, cot) de tous les projets dont le cot est suprieur 1M dEuros.

2.

Liste de tous les triplets (nE, nomE, nS) des employs qui travaillent dans le service numro 1, 5 ou 8.

3.

Liste de tous les rles tenus par les employs.

4.

Liste de tous les numros de projets.

5.

Liste de tous les noms et numros des employs de la socit.

6.

Nom des employs qui travaillent dans le service numro 45.

7.

Numros des employs qui travaillent pour le projet 72.

57

8.

Noms des employs qui travaillent pour le projet 98.

9.

Noms et numros de service des employs dont le rle est "chef de projet" quel que soit le projet
considr.

10. Noms d'employs et numros de service pour les employs travaillant dans un projet dont le nom est
"station d'puration".
11. Noms des employs travaillant dans un projet de cot infrieur 1M d'Euros.
12. Numros des employs qui ont le mme rle que celui occup par l'employ 103 dans le projet 60.

2) Rponses
1. Liste de tous les triplets (nP, nomP, cot) de tous les projets dont le cot est suprieur 1M dEuros.
projet | cot 1M
SELECT * FROM Projet
WHERE cout 1000000 ;
2. Liste de tous les triplets (nE, nomE, nS) des employs qui travaillent dans le service numro 1, 5 ou 8.
Employ | nS {1, 5, 8}
SELECT * FROM Employe
WHERE nS = 1 OR nS = 5 OR nS = 8 ;
3. Liste de tous les rles tenus par les employs.
projnomR (Participe)
SELECT DISTINCT nomR FROM Participe ;
4. Liste de tous les numros de projets.
projnomP (Projet)
SELECT DISTINCT nomP FROM Projet ;
5. Liste de tous les noms et numros des employs de la socit.
projnomE,nE (Employ)
SELECT DISTINCT nomE, nE FROM Employe ;
6. Nom des employs qui travaillent dans le service numro 45.
projnomE (Employ | nS = 45)
SELECT nomE FROM Employe
WHERE nS = 45 ;
7. Numros des employs qui travaillent pour le projet 72.
projnE (Participe | nP = 72)
SELECT nE FROM Participe
WHERE nP = 72 ;
8. Noms des employs qui travaillent pour le projet 98.
projnomE (Employ Participe | Employ.nE = Participe.nE ET np = 98)
ou
projnomE (Employe (Participe | nP = 98)) | Employ.nE = Participe.nE
ou
projnomE (Employ | nE projnE (Participe | nP = 98))
SELECT nomE FROM Employe, Participe
WHERE Employe.nE = Participe.nE AND nP = 98 ;
ou

58

SELECT nomE FROM Employe


WHERE nE IN (SELECT nE FROM Participe
WHERE nP = 98) ;
9. Noms et numros de service des employs dont le rle est "chef de projet" quel que soit le projet considr.
projnomE,nS (Employ Participe | Employ.nE = Participe.nE ET nomR = chef de projet)
ou
projnomE,nS (Employ Service Participe | Employ.nS = Service.nS
ET Employ.nE = Participe.nE
ET nomR = chef de projet)
SELECT nomE, nS FROM Employe E, Service S, Participe P
WHERE E.nE = P.nE AND E.nS = S.nS AND nomR = 'chef de projet' ;
10. Noms d'employs et numros de service pour les employs travaillant dans un projet dont le nom est "station
d'puration".
projnomE,nS (Employ Participe Projet | nomP = Station d'puration
ET Projet.nP = Participe.nP
ET Participe.nE = Employ.nE)
SELECT nomE, nS FROM Employe E, Participe P, Projet J
WHERE nomP = Station d'epuration AND J.nP = P.nP AND P.nE = E.nE ;
11. Noms des employs travaillant dans un projet de cot infrieur 1M d'euros.
projnom (Employ Participe Projet | cot 1M
ET Projet.nP = Participe.nP
ET Participe.nE = Employ.nE
SELECT nomE FROM Employe E, Participe P, Projet J
WHERE cout 1000000 AND J.nP = P.nP AND P.nE = E.nE ;
12. Numros des employs qui ont le mme rle que celui occup par l'employ 103 dans le projet 60.
projnE (Participe | nomR projnomR (Participe | nE = 103 ET nP = 60))
ou
projP2.nE (Participe P1 Participe P2 | P1.nomR = P2.nomR
ET P1.nE = 103 ET P1.nP = 60)
SELECT P2.nE FROM Participe P1, Participe P2
WHERE P1.nomR = P2.nomR AND P1.nE = 103 AND P1.nP = 60 ;

B. Elments de correction des examens de bases de donnes en DESS CCI


prcdents

59

Vous aimerez peut-être aussi