Vous êtes sur la page 1sur 28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

Introduction aux
Systmes de Gestion de Bases de Donnes Relationnelles

Olivier Losson

L'objectif de ce cours est l'acquisition des connaissances fondamentales relatives aux systmes
de gestion de bases de donnes relationnelles (SGBDr), de la conception du schma de donnes la
construction du modle relationnel et l'exploitation des donnes.
La premire partie prsente dans ses grandes lignes la notion de SGBDr ainsi que les principes
fondamentaux du modle relationnel. La seconde partie se focalise sur la construction du modle de
donnes, en dtaillant comment le modle entit-association permet d'obtenir un premier schma
relationnel et comment ce dernier est normalis pour obtenir une base cohrente. La troisime partie
concerne la phase d'exploitation des donnes, et porte en particulier sur le langage de slection et de
manipulation de donnes SQL.

- Sommaire I. Vers un systme de gestion des donnes ................................................................................................... 2


I.1. Introduction....................................................................................................................................................... 2
I.2. Objectifs et proprits d'un SGBD ................................................................................................................... 2
I.3. Composants et organisation de la mise en uvre d'un SGBD.......................................................................... 3
I.4. Niveaux et modles de description des SGBD ................................................................................................. 4
I.5. Principes fondamentaux du modle relationnel................................................................................................ 5

II. Construire un modle de donnes............................................................................................................. 6


II.1. Phases de construction..................................................................................................................................... 6
II.2. Le modle entit-association ........................................................................................................................... 6
II.3. Passage au modle relationnel......................................................................................................................... 8
II.4. Ncessit de la normalisation dans la conception d'une BDr.......................................................................... 9
II.5. Dpendances fonctionnelles et normalisation des relations.......................................................................... 10
II.6. Intgrit structurelle....................................................................................................................................... 13

III. Exploiter les donnes ............................................................................................................................ 15


III.1. Bases de l'algbre relationnelle .................................................................................................................... 15
III.2. Le langage SQL (Structured Query Language)............................................................................................ 17

1/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

I. Vers un systme de gestion des donnes


I.1. Introduction
I.1.1. Quelques jalons historiques
1960 Uniquement des systmes de gestion de fichiers plus ou moins sophistiqus
1970 Dbut des SGBD rseaux et hirarchiques proches des systmes de gestion de fichiers
L'ouvrage de Codd paru en 1970, "Un modle relationnel pour les grandes banques de donnes
partages", jette les bases thoriques du concept de BDr
1980 Les SGBDr font leur apparition sur le march
1990 Les SGBDr dominent le march et apparaissent les SGBD orients objets (SGBDOO)
I.1.2. Qu'est-ce qu'une base de donnes ?
De faon informelle, on peut considrer une Base de Donnes comme un ensemble structur de
donnes, centralises ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et
modifiables par un groupe d'utilisateurs en un temps opportun.
Plus formellement, une BD est un ensemble d'informations exhaustives, non redondantes, structures et
persistantes, concernant un sujet.
Une condition ncessaire pour mriter le titre de base de donnes est, pour un ensemble de donnes non
indpendantes, d'tre interrogeable par le contenu (pouvoir retrouver toutes les donnes qui satisfont
un critre quelconque).
Un Systme de Gestion de Base de Donnes peut tre dfini comme un ensemble de logiciels prenant
en charge la structuration, le stockage, la mise jour et la maintenance des donnes. Autrement dit, il
permet de dcrire, modifier, interroger et administrer les donnes. C'est, en fait, l'interface entre la base
de donnes et les utilisateurs (qui ne sont pas forcment informaticiens).
I.2. Objectifs et proprits d'un SGBD
I.2.1. Objectifs d'un SGBD
Un SGBD doit rsoudre certains problmes et rpondre des besoins prcis :
-

Indpendance physique : la faon de dfinir les donnes doit tre indpendante des structures
utilises pour leur stockage

Indpendance logique : un utilisateur doit pouvoir percevoir seulement la partie des donnes qui
l'intresse (c'est ce que l'on appelle une vue) et modifier la structure de celle-ci sans remettre en
cause la majorit des applications

Manipulation aise des donnes par des non informaticiens, ce qui suppose des langages "naturels"

Accs efficaces aux donnes et obtention de rsultats aux interrogations en un temps "acceptable"

Administration centralise des donnes pour faciliter l'volution de leur structure

Non-redondance : chaque donne ne doit tre prsente qu'une seule fois dans la base afin d'viter les
problmes lors des mises jour

2/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

Cohrence (ou intgrit) : les donnes ne doivent prsenter ni ambigut, ni incohrence, pour
pouvoir dlivrer sans erreur les informations dsires. Cela suppose un mcanisme de vrification
lors de l'insertion, de la modification ou de la suppression de donnes

Partage des donnes pour un accs multi-utilisateur simultan aux mmes donnes. Il faut entre
autre assurer un rsultat d'interrogation cohrent pour un utilisateur consultant une base pendant
qu'un autre la modifie

Scurit des donnes : robustesse vis--vis des pannes (il faut pouvoir retrouver une base "saine" en
cas de plantage au cours de modifications) et protection par des droits contre les accs non autoriss

I.2.2. Proprits d'un SGBDr


Des objectifs cits ci-dessus dcoulent les proprits fondamentales d'un SGBDr :
-

Base formelle reposant sur des principes parfaitement dfinis

Organisation structure des donnes dans des tables interconnectes (d'o le qualificatif
relationnelles), pour pouvoir dtecter les dpendances et redondances des informations

Implmentation d'un langage relationnel ensembliste permettant l'utilisateur de dcrire aisment


les interrogations et manipulation qu'il souhaite effectuer sur les donnes

Indpendance des donnes vis--vis des programmes applicatifs (dissociation entre la partie
"stockage de donnes" et la partie "gestion" - ou "manipulation")

Gestion des oprations concurrentes pour permettre un accs multi-utilisateur sans conflit

Gestion de l'intgrit des donnes, de leur protection contre les pannes et les accs illicites

I.3. Composants et organisation de la mise en uvre d'un SGBD


I.3.1. Composants des SGBD
Un SGBD va donc possder un certain nombre de composants logiciels chargs de :
-

la description des donnes au moyen d'un Langage de Dfinition de Donnes (LDD). Le rsultat de
la compilation est un ensemble de tables, stockes dans un fichier spcial appel dictionnaire (ou
rpertoire) des donnes

la manipulation des donnes au moyen d'un Langage de Manipulation de Donnes (LMD) prenant
en charge leur consultation et leur modification de faon optimise, ainsi que les aspects de scurit

la sauvegarde et la rcupration aprs pannes, ainsi que des mcanismes permettant de pouvoir
revenir l'tat antrieur de la base tant qu'une modification n'est pas finie (notion de transaction)

les accs concurrents aux donnes en minimisant l'attente des utilisateurs et en garantissant
l'obtention de donnes cohrentes en cas de mises jours simultanes

Une architecture Client-Serveur met en uvre un ou plusieurs ordinateurs (Clients), qui excutent un
programme applicatif, communiquant avec un ordinateur distant (Serveur) qui traite leurs requtes.
Dans ce modle, la communication des requtes et des rsultats entre le programme applicatif du client
et le SGBDr, qui se trouve sur le serveur, est assure par une couche logicielle mdiatrice (Middleware).
I.3.2. Organisation de la mise en uvre des BD
Les donnes constituent aujourd'hui une ressource vitale et stratgique pour l'entreprise. Les besoins
concernent autant les donnes propres que celles de l'extrieur, avec pour objectif de scuriser,

3/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

maintenir et mettre jour ces informations. Quatre catgories de fonctions sont impliques dans cette
gestion de donnes :
-

les tches lies l'architecture de donnes consistent analyser, classifier et structurer les donnes
au moyen de modles confirms

l'administration de donnes vise superviser l'adquation des dfinitions et des formats de donnes
avec les directives de standardisation et les normes internationales, conseiller les dveloppeurs et
les utilisateurs, et s'assurer de la disponibilit des donnes l'ensemble des applications.
L'administrateur assume en outre des responsabilits importantes dans la maintenance et la gestion
des autorisations d'accs

les professionnels en technologie de donnes ont en charge l'installation, la supervision, la


rorganisation, la restauration et la protection des bases. Ils en assurent aussi l'volution au fur et
mesure des progrs technologiques dans ce domaine.

l'exploitation de donnes consiste mettre disposition des utilisateurs les fonctions de requte et
de reporting (gnrateurs d'tats), ainsi qu' assurer une assistance aux diffrents services pour qu'ils
puissent grer leur stock propre de donnes en autonomie (service infocentre).

I.4. Niveaux et modles de description des SGBD


I.4.1. Niveaux de description
Trois niveaux de description (ou d'abstraction) des donnes sont dfinis (norme ANSI/SPARC) :
-

Niveau interne (ou physique) : concerne le stockage des donnes au niveau des units de stockage,
des fichiers; c'est ce que l'on appelle le schma interne

Niveau conceptuel (ou logique) : dcrit la structure des donnes dans la base, leurs proprits et
leurs relations, indpendamment de toute proccupation technologique d'implmentation ou d'accs
par les utilisateurs; c'est ce que l'on appelle le schma conceptuel

Niveau externe : dcrit comment chaque utilisateur peroit les donnes; c'est ce que l'on appelle le
schma externe ou vue.

I.4.2. Modles de description


Le rsultat de la conception d'une base de donnes est une description des donnes (appele schma) en
termes de proprits d'ensembles d'objets et d'organisation logique des donnes. Pour obtenir une telle
reprsentation partir d'un problme rel, on utilise un outil appel modle de description, bas sur un
ensemble de concepts et de rgles formant le langage de description. Un SGBD peut tre caractris par
le modle de description qu'il supporte. Une fois la base de donnes ainsi spcifie, il est possible de
manipuler les donnes en ralisant des oprations de slection, d'insertion, de modification et de
suppression, et ce au moyen d'un langage spcifique de manipulation de donnes, mais aussi par des
langages de programmation "classiques". Plusieurs types de modles sont utiliss :
-

modles rseau et hirarchique : une base de donnes est vue comme un ensemble de fichiers relis
par des pointeurs (ces modles privilgiant l'optimisation des entres-sorties, ils sont nomms
modles d'accs) et les donnes y sont organises en rseau et en arbre (respectivement). Un nud
quelconque peut avoir plusieurs pres dans le modle rseau, un seul dans le modle hirarchique

modle relationnel : les donnes et les relations qui les unissent sont organiss sous forme de lignes
regroupes au sein de tables. Chaque table est compose d'une ou plusieurs colonnes, dont certaines
servent caractriser chaque ligne de manire unique (notion de cl, voir section I.5 ci-dessous)

4/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

modle objet : ns dans le prolongement de la programmation oriente objets (POO), les SGBDOO
permettent de reprsenter et de manipuler des objets complexes. Leur avantage est la rduction des
cots de dveloppement et de maintenance, ainsi qu'une performance accrue, puisque la base
"connat" la structure objet du programme (relations d'hritage, pointeurs entre objets, etc.). On
distingue :
-

les systmes d'encapsulation d'objets, surcouches logicielles de bases relationnelles intgrant le


code d'interfaage pour le stockage d'objets. Ces systmes permettent de bnficier des gains de
productivit des bases objets, mais non des performances

les bases objets proprement dites sont totalement fondes sur le modle objet. Elles ne
ncessitent plus de langage spcifique de manipulation de donnes (comme SQL), car la base
utilise directement un langage objet (comme C++, Smalltalk ou Eiffel), en implmentant une
extension propre aux mcanismes des BD (verrouillage, transactions, intgrit rfrentielle, ).

I.5. Principes fondamentaux du modle relationnel


I.5.1. Table (ou Relation) et Attribut
Une table (ou relation) est un tableau deux
dimensions dans lequel chaque colonne (appele
attribut) porte un nom diffrent et o les donnes
figurent en ligne. Aussi bien pour les colonnes que
pour les lignes, une table peut en contenir un
nombre quelconque et leur ordre est indiffrent. On
trouve encore les vocables d'enregistrement, n-uplet
ou tuple pour dsigner une ligne et de champ pour
une colonne ; un enregistrement est donc un
ensemble de valeurs, chacune renseignant un champ.

Colonne = attribut

Nom de la table

ETUDIANTS

NEtu
034582
147230
128745
04371

Nom
Durand
Caspar
Coupet
Durand

Promo
DeugSM
DeugSM
LEEA
Valeur de l'attribut

Ligne = enregistrement = tuple

Figure 1 : Exemple de relation

I.5.2. Cl
Dans la table de l'exemple ci-dessus, le numro d'tudiant est un attribut constitu d'un code artificiel.
Cet attribut particulier, appel cl, est indispensable pour pouvoir identifier chaque tudiant de manire
unique, car aucun autre attribut ni aucune combinaison d'attributs n'auraient pu garantir cela. En effet,
l'attribut nom peut prendre plusieurs fois la mme valeur et n'est donc pas un bon candidat pour tre une
cl de la table ; de mme, si l'on avait dispos du prnom des tudiants, la composition d'attributs
<nom,prnom> n'aurait pas t davantage satisfaisante comme cl, car il est possible que 2 tudiants
portent la fois le mme nom et le mme prnom.
Une cl d'identification ou cl d'une table est un attribut ou une combinaison d'attributs qui satisfait :
-

une contrainte d'unicit : chaque valeur cl dsigne de manire unique une ligne de la table ;
autrement dit, deux lignes ne peuvent possder des valeurs identiques pour le(s) attribut(s) de la cl

une contrainte de minimalit : si une cl est compose d'un ensemble d'attributs, cette combinaison
doit tre minimale (aucun attribut ne peut en tre retir sans violer la rgle d'unicit).

S'il y a plusieurs cls envisageables pour une mme table, on choisit parmi celles-ci une cl primaire.

5/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

II. Construire un modle de donnes


II.1. Phases de construction
Un modle de donnes est une description formelle et structure des donnes et de leurs liens de
dpendance dans un systme d'information. Pour aboutir une base de donnes relationnelle dcrivant
le monde rel, il faut procder en trois tapes :
-

analyse des donnes. A partir d'une ralit perue, il s'agit de spcifier les donnes ncessaires pour
en construire un systme d'information reprsentatif. Les utilisateurs participent activement cette
phase en exprimant leurs besoins dans leur langage. Le rsultat de ces consultations est une
documentation aussi complte que possible, comportant une description explicite des objectifs
recherchs, ainsi qu'une spcification textuelle des donnes et de leurs interdpendances.

laboration d'un modle entit-association. Partant de l'analyse des donnes ralise, on identifie les
objets - concrets ou abstraits - propos desquels on veut conserver des informations, ainsi que les
liens entre ceux-ci. Dans ce modle, un objet est appel entit et un lien, association ; les ensembles
d'entits et d'associations sont, respectivement, reprsents graphiquement par des rectangles et par
des losanges. Le modle entit-association fournit des outils et un cadre rigoureux pour l'analyse des
donnes et de leurs liaisons.

conversion du modle entit-association en un modle relationnel. Il s'agit de transformer en tables


toutes les entits et les associations du modle prcdent. Chaque liaison est convertie en une table
contenant les cls des ensembles d'entits y participant (appeles cls trangres), en plus
d'ventuels attributs de la liaison.

BUT : Retrouver les rfrences et les


options des tudiants d'une promotion
1. Les tudiants sont rattachs une
promotion. Un tudiant ne peut
appartenir qu' une promotion
2. Un tudiant peut suivre plusieurs
options simultanment
3.
ANALYSE de DONNEES

Promotion

Ensemble d'entits
Ensemble de liens

Appartenance

Etudiant

Choix

Option

MODELE ENTITE-ASSOCIATION

PROMOTION
CodeP
Intitul
ETUDIANT
NE Nom Prnom Adresse CodeP
CHOIX
NE NO

OPTION
NO Intitul

MODELE RELATIONNEL

Figure 2 : Phases de construction d'une base de donnes relationnelle


Une fois ainsi obtenu un schma de base de donnes relationnelle, il faut dtecter et tudier les
dpendances au sein des tables pour en liminer les informations redondantes et les anomalies qui en
rsultent. Les concepts de dpendance fonctionnelle, de forme normale et d'intgrit rfrentielle,
permettent de raliser ces objectifs.
II.2. Le modle entit-association
II.2.1 Dfinitions
-

Une entit est un objet spcifique, concret ou abstrait, de la ralit perue. Ce peut tre une
personne, un objet inerte, un concept abstrait, un vnement,

6/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

Un attribut est une caractristique ou une qualit d'une entit ou d'une association. Il peut tre
atomique (ex. nom, prnom) ou compos (ex. adresse=n+rue+code_postal+ville) et peut prendre
une ou plusieurs valeur(s) (on parle d'attribut mono- ou multivalu). Le domaine d'un attribut est
l'ensemble des valeurs que peut prendre celui-ci; il est utile pour vrifier la validit d'une donne.

Un type d'entit est la classe de toutes les entits de la ralit perue qui sont de mme nature et qui
jouent le mme rle. Un type d'entit est dfini par un nom et un ensemble d'attributs, qui sont les
caractristiques communes toutes les entits de mme type; ces dernires forment un ensemble
d'entits (par exemple, un ensemble d'tudiants, caractriss par leurs nom et prnom). Par
simplification de la terminologie, on appellera entit un type d'entit, et occurrence d'une entit un
individu particulier faisant partie d'une entit.

Le schma ou intention d'une entit en est la description ; l'ensemble des occurrences d'une entit
qui existent dans la base un instant donn s'appelle l'extension de l'entit. Le schma d'une entit
ne change pas frquemment car il en dcrit la structure ; son extension, en revanche, change
chaque insertion ou suppression d'une occurrence d'entit.

L'attribut cl ou identifiant d'une entit est un groupe minimal d'attributs permettant de distinguer
sans ambigut les occurrences d'entits dans l'ensemble considr.

Une association est une correspondance entre 2 ou plusieurs occurrences d'entits propos de
laquelle on veut conserver des informations. On dit que les occurrences d'entits participent ou
jouent un rle dans l'association. Un type d'association est dfini par un nom et une liste d'entits
avec leur rle respectif (notation : A(ro1:E1, ro2:E2,, ron:En)). Pour simplifier, on appelle
association un type d'association et occurrence d'association toute correspondance qui existe entre 2
ou plusieurs occurrences d'entits. L'ensemble des occurrences d'une association qui existe dans la
base un instant donn s'appelle l'extension de l'association.
Exemple d'association : APPARTENANCE(appartient: ETUDIANT, inclut: PROMOTION) dcrit
le fait qu'un tudiant appartient une promotion et, symtriquement, qu'une promotion inclut
plusieurs tudiants (cf. figure 3)
PROMOTION
(1,1)

ETUDIANT

APPARTENANCE

e1

a1
<appartient:e1, inclut:p1>

(1,N)

REPRESENTANT

e2

APPARTENANCE

ETUDIANT

(0,N)

CHOIX

p1

a2
<appartient:e2, inclut:p2>

p2

a3
<appartient:e3, inclut:p2>

e3

(1,1)

(0,1)

PROMOTION

(1,N)

OPTION

Figure 3-1 : Exemple de modle entit-association

Figure 3-2 : Exemples d'occurrences de


l'association APPARTENANCE

Une association peut aussi possder des attributs. Un attribut de l'association APPARTENANCE
pourrait tre, par ex., un entier indiquant le(s) semestre(s) universitaire(s) suivi(s) par l'tudiant.

Le degr (ou la dimension) d'une association est le nombre d'entits y participant. Le cas le plus
frquent est celui de l'association binaire

7/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

II.2.2. Cardinalit d'une association


La cardinalit d'une association spcifie le nombre minimum et le nombre maximum de participations
de chaque occurrence d'entit chaque rle de l'association. Autrement dit, la cardinalit de A(ro1:E1,
ro2:E2,,ron:En) est dfinie par un ensemble de couples (mini, maxi) o mini (resp. maxi) indique le
nombre minimum (resp. maximum) de fois que toute occurrence de Ei doit assumer le rle roi. On
distingue 4 cas principaux :
Type

Cardinalit
Simple (1,1) (ou de type 1)
(0,1) (ou conditionnelle)
(1,N) (ou multiple)
Complexe
(0,N) (ou multiple conditionnelle)

Exemple (cf. figure 3)


Chaque tudiant est inscrit dans une et une seule promotion
Chaque tudiant n'est pas forcment reprsentant de sa promo
Chaque promotion comporte plusieurs tudiants
Chaque tudiant choisit un nombre quelconque d'options

La section suivante dcrit des rgles permettant d'obtenir un modle relationnel partir du modle
entit-association. Ce dernier occupe une place importante dans la modlisation de donnes assiste par
ordinateur, mais le processus de traduction en un modle relationnel n'est que partiellement automatis,
mme dans les ateliers de gnie logiciel CASE (Computer-Aided Software Ingeneering).
II.3. Passage au modle relationnel
II.3.1. Notion de cl trangre
Une cl trangre d'une relation R est un sous-ensemble C des attributs de R tel que :
-

il existe une relation R' (pas ncessairement distincte de R) possdant une cl candidate C' ;

pour chaque valeur diffrente de C dans R, il existe une valeur (unique) de C' dans R' identique C.

Autrement dit, une cl trangre dans une table est un attribut ou une concatnation d'attributs qui forme
une cl d'identification d'une autre table (ou ventuellement de la mme table). La cl primaire d'une
table comportant des cls trangres peut tre soit une concatnation de celles-ci, soit une autre cl
candidate - par exemple une cl cre artificiellement.
II.3.2. Rgles de passage
L'opration consiste reprsenter sous forme de tables les entits et les associations obtenues
prcdemment. Pour cela, on applique les rgles suivantes :
-

Chaque entit est traduite en une table distincte, dont la cl primaire peut tre soit celle de l'entit,
soit une autre cl candidate. Les autres attributs de l'entit sont reports comme attributs de la
nouvelle table.

La conversion d'une association dpend de sa cardinalit :


R1. Une association de dimension 2 de type simple-complexe (par exemple, (1,1)-(1,N)) ne ncessite
pas la cration d'une nouvelle table, mais est traduite en dfinissant une cl trangre dans la
table qui se situe du ct "simple" de l'association. Cette cl doit faire rfrence la cl
d'identification de la seconde table, et son nom est judicieusement choisi en consquence.
R2. Une association de dimension 2 de type simple-simple (par exemple, (1,1)-(0,1)) se traite de la
mme faon, en choisissant en principe d'introduire la cl trangre dans la table situe du ct
(1,1) de l'association.
R3. Chaque association de dimension 2 de type complexe-complexe (par exemple, (0,N)-(1,N)) est
reprsente par une table distincte, contenant les identifiants des deux entits associes comme

8/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

cls trangres. Ces attributs constituent souvent, eux deux, la cl primaire de la nouvelle table.
Si l'association comporte d'autres attributs, ceux-ci sont galement ajouts la table.
R4. Une association de dimension suprieure 2 se rcrit selon la rgle R3.
II.3.3. Exemples
Rgle
R1

Modle entit-association

Traduction en modle relationnel


PROMOTION

PROMOTION

CodeP

(1,N)

Intitul

Liaison par
cl trangre

APPARTENANCE
ETUDIANT

(1,1)

NE Nom Prnom Adresse _CodePromo

ETUDIANT

R2

PROMOTION
CodeP Intitul _NReprsentant

PROMOTION
(1,1)

Liaison par
cl trangre

REPRESENTANT
(0,1)

NE

ETUDIANT

ETUDIANT
Nom Prnom Adresse

ETUDIANT

R3

ETUDIANT
NE Nom Prnom Adresse

(0,N)
CHOIX

CHOIX

(1,N)
Liaison par
cl trangre

OPTION

R4

_NE _NO

OPTION
Liaison par
cl trangre

MEDECIN

MEDECIN

PATIENT

NM Nom Prnom Adresse

(0,N)
(0,N)
PRATIQUE

NSS

ACTE
Liaisons par
cl trangre

PATIENT

_NM

_SecuP

Nom

ACTE

PRATIQUE

(1,N)

NO Intitul

_Acte

Lieu

Figure 4 : Ex. d'applications des rgles de passage modle entit-association

CodeA Descrip

modle relationnel

II.4. Ncessit de la normalisation dans la conception d'une BDr


II.4.1. Redondance d'un attribut
Supposons que le modle relationnel obtenu pour reprsenter les donnes relatives l'inscription des
tudiants dans une promotion se soit rduit une seule table (suite une mauvaise conception du
modle entit-association) :
ETUDIANT
NE Nom Prnom Adresse Promotion

IntitulPromo

9/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

Une telle conception entrane des problmes de redondance des informations. On s'aperoit en effet que
l'intitul de la promotion est rpt pour chaque tudiant, et qu'il est identique pour tous les tudiants
inscrits dans la mme promotion. Cet attribut est donc redondant, et il est prfrable de stocker ces
informations, relatives une promotion, dans une table spare.
II.4.2. Anomalies de mutation
En outre, le schma prcdent n'est pas satisfaisant car il engendre certaines anomalies lors des
oprations de mise jour, d'insertion et de suppression des donnes (anomalies dites de mutation).
-

Si par exemple on modifie l'intitul d'une promotion dans un tuple (ex. de "Sciences de la Vie" en
"Sciences du Vivant"), ce mme intitul devra tre chang pour tous les autres tudiants concerns,
sans quoi cette promotion possdera plusieurs intituls diffrents (anomalie de mise jour).

Si une nouvelle promotion se cre, elle ne pourra pas tre ajoute dans la table sans y inscrire
immdiatement des tudiants, car la cl primaire (NE) ne peut tre laisse vide. Cette anomalie
d'insertion peut tre gnante, par exemple, parce que le stockage d'informations sur la nouvelle
formation (maquette, intervenants, ) doit pouvoir intervenir avant toute inscription d'tudiant.

Si l'on supprime tous les tudiants de la table (par exemple parce qu'ils ont tous eu leur diplme !),
on perd du mme coup toutes les informations relatives aux promotions (anomalie de suppression).

Une base de donnes relationnelle doit stocker un ensemble de schmas relationnels sans redondance
inutile et sans comportement anormal des relations lors des oprations de mise jour. C'est pourquoi la
thorie de la normalisation des relations a t associe au modle relationnel.
II.5. Dpendances fonctionnelles et normalisation des relations
II.5.1. Dpendance fonctionnelle : dfinitions
Introduite par Codd en 1970, la notion de dpendance fonctionnelle (DF) permet de caractriser des
relations qui peuvent tre dcompose sans perte d'information. Sa formalisation mathmatique dcoule
de l'observation des rles de cardinalit simple (au plus gale 1). Intuitivement, une DF traduit le fait
que les valeurs de certains attributs sont ncessairement dtermines (fixes) lorsque le sont celles
d'autres attributs.
On dit qu'un attribut ou un ensemble d'attributs Y est fonctionnellement dpendant d'un autre (ensemble
d') attribut(s) X si, chaque valeur prise par X correspond une valeur unique de Y. Autrement dit, des
valeurs identiques de X impliquent des valeurs identiques de Y. Cette dpendance est note XY.
Une proprit remarquable des cls d'identification est que, justement, tout attribut non-cl dpend
fonctionnellement de la cl, puisque celle-ci identifie chaque tuple de manire unique.
Une des proprits de la DF est la transitivit : XY et YZ XZ. On dit qu'un attribut Z est
transitivement dpendant d'un attribut X s'il existe un attribut Y tel que XY et YZ, et aussi que X
ne dpend pas fonctionnellement de Y.
II.5.2. Normalisation des relations
Afin d'liminer les divers types de dpendances, et donc viter les anomalies de mutation, on applique
un processus de normalisation sur les diffrentes relations de la base. Les tapes successives de ce
processus imposent des critres de plus en plus restrictifs aux tables normalises :
-

Une relation est en premire forme normale (note 1NF) si les domaines de tous ses attributs sont
des valeurs atomiques (et non des ensembles, types numrs ou listes). Tout attribut d'une relation
1NF doit donc tre monovalu.

10/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

La 1NF permet d'liminer les domaines composs.


Pour normaliser une table la 1NF, il suffit de crer un tuple distinct pour chaque valeur de l'attribut
multivalu. Cela introduit des redondances, mais la deuxime forme normale permet d'y remdier.
-

Une relation est en deuxime forme normale (2NF) si elle est 1NF et si, de plus, tout attribut non-cl
dpend fonctionnellement de toute la cl (et pas seulement d'une partie de celle-ci). Pour qu'une
table soit 2NF, il faut donc, si sa cl est compose (sous-entendu, de plusieurs attributs), que tout
autre attribut soit fonctionnellement dpendant de la cl entire (on dit parfois qu'il y a dpendance
fonctionnelle totale).
La 2NF garantit qu'aucun attribut n'est dtermin seulement par une partie de la cl
Pour normaliser la 2NF une table possdant une cl compose, il faut dcomposer celle-ci en :
- une table forme des attributs dpendants d'une partie de la cl, et de cette partie mme.
- une seconde table forme de la cl compose et des attributs restants :
R

C1 C2

R1

C2

R2

C1 C2

Y
X

Une relation est en troisime forme normale (3NF) si elle est 2NF et si, de plus, tout attribut non-cl
ne dpend pas transitivement de la cl (ou, autrement dit, si tout attribut non-cl ne dpend pas
fonctionnellement d'un attribut non-cl).
La 3NF permet d'liminer les redondances dues aux dpendances transitives.
Pour normaliser la 3NF une table possdant une dpendance transitive, il faut dcomposer celle-ci
en :
- une table forme de l'attribut redondant et de l'attribut dont il dpend (nomm ici X); ce dernier
devient la cl de la nouvelle table
- une seconde table forme de la cl, de l'attribut X comme cl trangre, et des autres attributs :
R

R1

_X Y

R2

Liaison par
cl trangre

Les formes normales 2NF et 3NF assurent l'limination des redondances parmi les attributs non-cl,
mais pas les redondances potentielles au sein d'attributs formant une cl composite. C'est pourquoi
Boyce et Codd ont propos une extension de la 3NF.
-

Une relation est en forme normale de Boyce-Codd (BCNF) si, et seulement si, les seules
dpendances fonctionnelles lmentaires1 sont celles dans lesquelles une cl dtermine un attribut
non-cl.
Plus simple que la 3NF, un peu plus restrictive, cette forme est utile lorsqu'une table possde
plusieurs cls candidates. Plus prcisment, lorsque les cls se chevauchent dans une table, celle-ci
risque de transgresser la forme normale de Boyce-Codd, mme si elle est en 3NF. Il faut alors la
dcomposer d'aprs les cls candidates :
R1
R

C1 C2

R2

C1 Y

Y
Y

C2

Une dpendance fonctionnelle lmentaire est de la forme XA, o A est un attribut unique n'appartenant pas X et o il
n'existe pas X' inclus dans X tel que X'A.

11/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

Toute relation admet au moins une dcomposition en BCNF qui est sans perte ; cependant, une telle
dcomposition ne prserve gnralement pas les dpendances fonctionnelles.
Remarque :
Il existe deux autres formes normales, encore plus restrictives, mais qui se rencontrent bien moins
frquemment. La quatrime (4NF), par exemple, est base sur les dpendances multivalues1.
II.5.3. Exemple
Dans la pratique, les critres des formes normales sont satisfaits si le modle entit-association est bien
construit et si les rgles de passage au modle relationnel ont t correctement appliques. La
vrification de toutes les formes normales successives n'a plus alors besoin d'tre systmatique.
Supposons au contraire que le modle entit-association ait fourni la relation suivante (figure 5-1). A
l'vidence, celle-ci n'est pas en 1NF ; il faut donc la transformer conformment la figure 5-2. La cl de
la nouvelle table, compose des attributs NE et Option, dtermine bien de manire unique les attributs
non-cl
(c'est--dire
qu'on
a
les
dpendances
fonctionnelles
(NE,Option)Nom,
(NE,Option)Prnom, et (NE,Option)Adresse). Cependant, la transformation a manifestement cr
des redondances et, intuitivement, on sait que l'adresse de l'tudiant n'a aucun rapport avec l'option
choisie. Cela se traduit par le fait que les attributs non-cl sont fonctionnellement dpendants d'une
partie de la cl (NENom, NEPrnom, et NEAdresse). La deuxime forme normale exige donc
de crer deux tables spares (figure 5-3).
ETUDIANT
NE Nom Adresse Options
0001 Dulac 2, alle d{O2,O3,O4}
0002 Abbou 35, rue V{O1,O3}
0003 Caron La plage{O2}

Fig. 5-1: Forme non normalise

ETUDIANT
NE Option Nom Adresse

0001 O2
0001 O3
0001 O4
0002 O1
0002 O3
0003 O2

Dulac 2, alle d
Dulac 2, alle d
Dulac 2, alle d
Abbou 35, rue V
Abbou 35, rue V
Caron La plage

ETUDIANT
NE Nom Adresse
0001 Dulac 2, alle d
0002 Abbou 35, rue
V plage
0003 Caron La

Figure 5-2: Forme 1NF

CHOIX
NE Option

0001 O2
0001 O3
0001 O4
0002 O1
0002 O3
0003 O2

Figure 5-3 : Forme 2NF

Supposons qu'en plus des attributs prcdents, on ait stock dans la table ETUDIANT le code postal et
la ville, et qu'on ait spar le numro de voie et la rue. La 2NF correspondante est reprsente figure 6-1
(la table CHOIX n'a pas t reprsente). Dans cette table, l'attribut CodePostal dpend
fonctionnellement de l'attribut compos (Rue,Ville)2 et, par l mme, dpend transitivement de la cl.
Pour passer en 3NF, il faut donc crer une table CODE_POSTAL distincte, et faire apparatre dans
ETUDIANT l'attribut codant la rue et la ville sous forme de cl trangre (figure 6-2) :
E
E

NE N NR R

V CP
C_P

NE N NR _R _V
R V

CP

On dit qu'il existe une dpendance multivalue d'un attribut X vers un attribut Z (note XZ) si toute combinaison d'une
valeur donne de X avec celle d'un autre attribut Y dtermine un ensemble identique de Z.
2 Il faut entendre "Ville" ici au sens de "Bureau distributeur". S'il peut en effet y avoir plusieurs codes postaux pour un mme
bureau distributeur (ex. 59000 et 59800 pour Lille), un bureau distributeur peut regrouper plusieurs petites "villes"
rurales. On a suppos de surcrot que (Rue,Ville)CodePostal, c'est--dire que la connaissance d'un nom de rue et de la
ville dtermine sans ambigut le code postal. En consquence, l'attribut compos (Rue,Ville) est choisi comme cl, ce qui
implique qu'il n'y a qu'une seule rue portant un nom donn dans une ville donne, mme pour des secteurs de codes
postaux diffrents.

12/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

Dans la nouvelle table, on s'aperoit toutefois qu'il y a encore de la redondance. En effet, si la cl


compose de la rue et de la ville dtermine bien le code postal, la ville est aussi fonctionnellement
dpendante du code postal (c'est--dire (Rue,Ville)CodePostal et CodePostalVille). Ceci est li au
fait que l'attribut (Rue, CodePostal) constitue galement une cl candidate (cl secondaire). Pour obtenir
une forme normale de Boyce-Codd, il faut donc dcomposer cette relation en deux (figure 6-3) :
C_P

ETUDIANT
NE Nom Nrue
Rue
Ville CP
0001 Dulac 2
alle du chne Lille 59000
0002 Abbou 35 rue V. Hugo Lille 59800
0003 Caron 3
place Allende Calais 62000
0004 Fabre 428 rue V. Hugo Calais 62000

C_R

ETUDIANT
NE Nom Nrue
_Rue
_Ville
0001 Dulac 2
alle du chne Lille
0002 Abbou 35 rue V. Hugo Lille
0003 Caron 3
place Allende Calais
0004 Fabre 428 rue V. Hugo Calais
PROMOTION

ETUDIANT
NE Nom Nrue
Rue
Ville
0001 Dulac 2
alle du chne Lille
0002 Abbou 35 rue V. Hugo Lille
0003 Caron 3
place Allende Calais
0004 Fabre 428 rue V. Hugo Calais
PROMOTION

CODE_POSTAL

CODE_VILLE

Rue

Ville

alle du chne Lille


rue V. Hugo Lille
place Allende Calais
rue V. Hugo Calais

Figure 6-1: Forme 2NF

C_V
C

CP
59000
59800
62000
62000

Figure 6-2: Forme 3NF

CP
Ville
59000 Lille
59800 Lille
62000 Calais

CODE_RUE
CP

Rue

59000
59800
62000
62000

alle du chne
rue V. Hugo
place Allende
rue V. Hugo

Figure 6-3 : Forme BCNF

II.6. Intgrit structurelle


II.6.1. Dfinition et typologie
Une contrainte d'intgrit (CI) est une proprit ou une rgle que doivent satisfaire les donnes de la
base pour tre considres comme correctes (sans ambiguts ni incohrences). Une base de donnes est
dite intgre ou cohrente si ses contraintes d'intgrit sont satisfaites. En pratique, ces contraintes ont
pour effet de limiter les occurrences possibles des structures d'informations. La conception d'une base de
donnes relationnelle se compose du schma relationnel mme et d'un ensemble de CIs.
De faon gnrale, on distingue :
-

les contraintes d'intgrit statiques sont des proprits qui doivent tre vrifies tout moment :
-

les contraintes individuelles imposent un type de donne (ex. entier long), un ensemble de
valeurs (par exemple, AnneEmbauche={1980..2002}, AnneEmbauche={1980, 1984, 1995},
AnneEmbauche>AnneNaissance) ou une valeur obligatoire (ex. "l'attribut pilote doit tre
obligatoirement renseign")

les contraintes intra-relation portent sur les valeurs des attributs : unicit de valeur, cardinalit,
dpendances entre les valeurs d'attributs diffrents (ex. "les espces e3 et e6 ne peuvent
cohabiter")

les contraintes inter-relations sont des dpendances rfrentielles ou existentielles (ex. "tout vol
doit avoir comme commandant de bord une personne rfrence dans la table des pilotes")

les contraintes d'intgrit dynamiques sont des proprits que doit respecter tout changement d'tat
de la base de donnes; elles en dfinissent les squences possibles de changement d'tat. (ex. "le
salaire d'un employ ne peut qu'augmenter")

13/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

Trois catgories de contraintes d'intgrit structurelles sont particulirement importantes dans le modle
relationnel : les contraintes d'unicit (chaque table possde une cl d'identification qui en identifie les
tuples de manire unique), les contraintes de domaine (les valeurs possibles d'un attribut sont restreintes
un ensemble de valeurs prdfinies) et les contraintes d'intgrit rfrentielle (chaque valeur d'une cl
trangre doit exister comme valeur de la cl d'identification dans la table rfrence).
II.6.2. Intgrit rfrentielle
Comme il a dj t dit, le mcanisme d'intgrit rfrentielle impose que chaque valeur d'une cl
trangre existe comme valeur de la cl d'identification dans la table rfrence1. Tout SGBDR digne de
ce nom supporte ce concept fondamental ; prenons un exemple pour l'illustrer. Supposons que la
normalisation en 3NF de la table ETUDIANT, dans laquelle figure la promotion d'inscription, ait fourni
la table de la figure 7-2. On constate qu'aucune valeur de la cl trangre _Promo ne viole l'intgrit
rfrentielle. Mais l'insertion d'un tuple tel que "0005, Mader, DESSDC" serait rejete si la cl primaire
de la table PROMOTION ne contient pas la valeur "DESSDC".
ETUDIANT
NE Nom Promo
0001 Dulac MEEA
0002 Abbou LEEA
0003 Caron MEEA
0004 Fabre LIE

ETUDIANT
NE Nom _Promo
0001 Dulac MEEA
0002 Abbou LEEA
0003 Caron MEEA
0004 Fabre LIE
PROMOTION

Intitul
Matrise EEA
Licence EEA
Matrise EEA
Licence Ingnie

R1
R

NE

NE N _P

I
R2

Figure 7-1: Table ETUDIANT en 2NF

Cl trangre

PROMOTION

Cl primaire

Promo

Intitul
Table rfrence
Matrise EEA
Licence EEA
Licence Ingnierie E

MEEA
LEEA
LIE

Figure 7-2: Forme 3NF et Intgrit rfrentielle

Le respect de l'intgrit rfrentielle implique certaines actions. On a vu que le SGBDR vrifiait


l'existence d'une valeur de cl trangre lors de l'insertion d'un nouveau tuple; mais que se passe-t-il si
l'on supprime ou si l'on modifie une valeur de la cl primaire dont dpendent d'autres valeurs dans une
cl trangre ? Plusieurs stratgies sont possibles :
-

la suppression (ou la mise jour) interdite : l'opration est tout simplement refuse (ex. la
suppression de la ligne "MEEA, Matrise EEA" est impossible car des tuples d'ETUDIANT y font
rfrence)

la suppression (ou la mise jour) en cascade : dans ce mode, lorsqu'un tuple de la table rfrence
est supprim (ou, respectivement, modifi dans ses attributs cls), tous les tuples dpendants sont
aussi supprims (resp. modifis). Par exemple, la suppression du tuple "MEEA, Matrise EEA"
entrane celle des tudiants portant les numros 0001 et 0003 ; le changement de cl "MEEA" en
"MEA" affecte de la mme faon les valeurs de la cl trangre pour ces tudiants.

la suppression avec initialisation : toutes les cls trangres gales la cl primaire supprime sont
mises la valeur nulle (ex. la suppression du tuple "MEEA, Matrise EEA" entrane la mise NULL
de l'attribut _Promo des tudiants portant les numros 0001 et 0003).

Dans les SGBDR, la liaison entre les tables assure par le mcanisme de cl trangre se fait par valeur, (comme dans les
systmes de gestion de fichiers); dans les systmes orients objets au contraire, cette liaison est ralise par adresse.

14/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

III. Exploiter les donnes


III.1. Bases de l'algbre relationnelle
III.1.1. Dfinitions prliminaires
Nous donnons ci-dessous une dfinition formelle de termes dj rencontrs (cf. exemple figure 8) :
-

Domaine : Ensemble des valeurs admissibles pour un composant d'une relation.


Plusieurs attributs peuvent avoir le mme domaine (ex. H_Dep et H_Arr: Heure = 00:00..23:59)

Relation : Sous-ensemble du produit cartsien d'une liste de n domaines Di : RD1D2Dn, o n


est appel arit ou degr de la relation. En d'autres termes, une relation est une table dans laquelle
chaque colonne correspond un domaine et porte un nom, ce qui rend leur ordre sans importance.
L'arit d'une relation est son nombre d'attributs, sa cardinalit est son nombre de tuples.

Attribut : colonne d'une relation caractrise par un nom unique et un domaine de dfinition.

Schma de relation : nom de la relation, suivi de la liste des attributs avec leurs domaines.
Ex. VOL1(N_Vol: NumeroVol, Vil_Dep: Ville, Vil_Arr: Ville, H_Dep: Heure, H_Arr: Heure)

Base de donnes relationnelle : Base de donnes dont le schma est un ensemble de schmas de
relations, o les donnes sont des tuples de ces relations, et dont la cohrence est dfinie par un
ensemble de contraintes d'intgrit.

Systme de gestion de bases de donnes relationnelles : logiciel supportant le modle relationnel et


qui peut manipuler les donnes avec des oprateurs de l'algbre relationnelle.
Ces derniers se divisent en oprateurs ensemblistes et oprateurs relationnels.

III.1.2. Oprateurs ensemblistes


-

Deux relations R et S sont dites dfinies sur le mme schma (ou encore compatibles avec l'union) si
elles ont mme nombre d'attributs (mme arit) et que ceux-ci sont dfinis sur les mmes domaines
(le ime attribut de R et le ime attribut de S ont des domaines identiques, ou sont de mme type).

L'union de 2 relations R et S dfinies sur le mme schma est une relation (T=RS ou
T=UNION(R,S)) de mme schma contenant l'ensemble des tuples de R et S distincts (ceux qui
figurent la fois dans R et S ne sont conservs qu'une fois).

L'intersection de 2 relations R et S dfinies sur le mme schma est une relation (T=RS ou
T=INTERSECT(R,S)) de mme schma et contenant les tuples communs R et S.

La diffrence de 2 relations R et S dfinies sur le mme schma est une relation (T=R-S ou T=R\S
ou T=DIFF(R,S)) contenant l'ensemble des tuples de R qui n'appartiennent pas S.

Le produit (cartsien) de 2 relations R et S (par forcment dfinies sur le mme schma) est une
relation (T=RS ou T=PROD(R,S)) contenant l'ensemble de toutes les combinaisons possibles des
tuples de R avec ceux de S.

VOL1

N_Vol
IT100
IT101
IT102

Vil_Dep
Lille
Paris
Lyon

Vil_Arr
Paris
Lille
Paris

H_Dep
7:00
11:00
14:00

H_Arr
7:20
11:20
14:35

N_Av
100
100
101

VOL2

CodeVol
IT105
IT101

Vil_Dep Vil_Arr
Lille
Toulouse
Paris
Lille

H_Dep
9:00
11:00

H_Arr
9:50
11:20

N_Av
101
100
15/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

VOL3=VOL1VOL2

N_Vol
IT100
IT101
IT102
IT105

Vil_Dep Vil_Arr
Lille
Paris
Paris
Lille
Lyon
Paris
Lille
Toulouse

H_Dep
7:00
11:00
14:00
9:00

H_Arr
7:20
11:20
14:35
9:50

N_Av
100
100
101
101

VOL3=VOL1VOL2

N_Vol
IT101

Vil_Dep
Paris

Vil_Arr
Lille

H_Dep
11:00

H_Arr
11:20

N_Av
100

VOL4=VOL1-VOL2

N_Vol
IT100
IT102

Vil_Dep
Lille
Lyon

Vil_Arr
Paris
Paris

H_Dep
7:00
14:00

H_Arr
7:20
14:35

N_A
100
101

AVION

N_A
100
101

Typ_Av
A300
B747

VOL5=VOL2AVION

CodeVol
IT105
IT105
IT101
IT101

Vil_Dep Vil_Arr H_Dep H_Arr


Lille
Toulouse 9:00
9:50
Lille
Toulouse 9:00
9:50
Paris
Lille
11:00 11:20
Paris
Lille
11:00 11:20

N_Av
101
101
100
100

N_A Typ_Av
100
A300
101
B747
100
A300
101
B747

Figure 8: Exemples de rsultats avec les oprateurs ensemblistes


III.1.3. Oprateurs relationnels
-

La projection (note M(R) ou PROJECT(R,M)) est une opration unaire consistant supprimer des
attributs d'une relation et liminer les tuples en doubles dans la nouvelle relation. Formellement, la
projection de la relation R(A1,A2,,An) sur un sous-ensemble de ses attributs M={Ai1,Ai2,Aip}
(avec ijik et p<n) produit la relation R'(Ai1,Ai2,,Aip) dont les tuples sont obtenus par limination
des valeurs des attributs de R n'appartenant pas R' et par suppression des tuples en double.

La slection (ou restriction, note F(R) ou RESTRICT(R,F)) est une opration unaire qui fournit
comme rsultat les seuls tuples de la relation R qui satisfont la condition de slection F. Cette
dernire est une formule comportant comme oprandes des attributs de R ou des constantes, lis par
des oprateurs de comparaison ("<", ">", "<=", ">=", "<>" ou "=") ou logique (AND, OR et NOT).

La jointure de deux relations R et S d'aprs le prdicat P (note R PS ou JOIN(R,S,P)) est une


combinaison de tous les tuples de R avec ceux de S, qui satisfont le prdicat de jointure P. Ce
dernier contient un attribut de R et un attribut de S qui doivent tre dfinis sur le mme domaine ,
lis par l'un des oprateurs de comparaison. Si cet oprateur est l'galit, on parle d'qui-jointure.
Remarque : L'oprateur de jointure P quivaut une restriction selon P du produit cartsien ,
c'est--dire que R PS=P(RS) ; si P est vide, on retrouve ce produit cartsien : R P={}S=RS.

La division (ou le quotient, nots RS) d'une relation R par une relation S n'est possible que si S est
une sous-table de R. Si R a pour schma R(T1,T2,,Tj,Tm) et S(Tp+1,Tp+2,,Tm), le rsultat est
une sous-table de R, Q=RS de schma Q(T1,T2,,Tj,,Tp), forme de tous les tuples qui,
concatns chacun des tuples de S, donnent toujours un tuple de R. En d'autre termes, le produit
cartsien QS doit tre contenu dans la table R.

16/28

Universit Lille1 Master Sciences et Technologies

VOL6=Vil_Arr(VOL3)

Vil_Arr
Paris
Lille
Toulouse

Bases de Donnes Relationnelles

VOL7=Vil_Arr,Vil_Dep (VOL5)

Vil_Arr
Lille
Paris

Vil_Dep
Toulouse
Lille

VOL8=Vil_Arr="Paris" (VOL1)

N_Vol
IT100
IT102

Vil_Dep
Lille
Lyon

Vil_Arr
Paris
Paris

H_Dep
7:00
14:00

H_Arr
7:20
14:35

VOL9=H_Dep>=11:00 AND H_Arr<15:00 (VOL3)

N_Vol
IT101
IT102

Vil_Dep
Paris
Lyon

Vil_Arr
Lille
Paris

H_Dep
11:00
14:00

H_Arr
11:20
14:35

VOL0=VOL2

N_Av=N_AAVION

CodeVol Vil_Dep Vil_Arr H_Dep


IT105
Lille
Toulouse 9:00
IT101
Paris
Lille
11:00

H_Arr
9:50
11:20

N_Av N_A Typ_Av


101 101
B747
100 100
A300

Figure 9 : Exemples de rsultats avec les oprateurs relationnels


III.2. Le langage SQL (Structured Query Language)
Nous ne prsentons ici que les fonctionnalits principales de SQL. Pour des informations
complmentaires, le lecteur peut se reporter au fichier fourni en annexe ainsi qu'aux ouvrages
(principalement les sites internet) cits en bibliographie.
III.2.1. Introduction
Les langages utiliss dans les bases de donnes relationnelles se fondent sur l'algbre relationnelle et/ou
le calcul relationnel. Ce dernier est bas sur la logique des prdicats (expressions d'une condition de
slection dfinie par l'utilisateur). On peut distinguer 3 grandes classes de langages :
-

les langages algbriques, bass sur l'algbre relationnelle de CODD, dans lesquels les requtes sont
exprimes comme l'application des oprateurs relationnels sur des relations. Le langage SQL,
standard pour l'interrogation des bases de donnes, fait partie de cette catgorie.

les langages bass sur le calcul relationnel de tuples, construits partir partir de la logique des
prdicats, et dans lesquels les variables manipules sont des tuples (ex. : QUEL, QUEry Language).

les langages bass sur le calcul relationnel de domaines, galement construit partir de la logique
des prdicats, mais en faisant varier les variables sur les domaines des relations.

Les langages de manipulation de donnes sont dits dclaratifs, ou assertionnels, c'est--dire que l'on
spcifie les proprits des donnes que l'on manipule et pas comme dans un langage impratif
comment y accder.
Un langage d'interrogation de bases de donnes est dit relationnel complet s'il permet au moins l'emploi
des trois oprateurs ensemblistes (union, diffrence et produit cartsien) et des deux oprateurs
relationnels de projection et slection. Plus gnralement, outre la recherche ou slection de donnes, les
langages de manipulation de donnes permettent souvent :
- la cration de table, l'insertion, la suppression et la modification de tuples vrifiant certains critres ;
- de raliser des calculs sur des agrgats (ex. somme, minimum ou moyenne de valeurs d'un attribut) ;
17/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

de prsenter les donnes sous certains formats (ex. squences de tris) ;


de grer les autorisations d'accs pour assurer la protection de la base ;
de garantir la scurit des donnes en prenant en compte
l'environnement multiutilisateurs.

Gnrateurs
de requtes
Gnrateur
Gnrateur
d'applications
de rapports
Gnrateur
A PI ClientSQL
d'crans
Serveur

SQL est un langage normalis (dernire version : SQL5) permettant :


- l'interrogation de la base (clause SELECT)
Dictionnaire
- la manipulation de donnes (UPDATE, INSERT, DELETE)
Moteur
Relationnel
- la dfinition des donnes (ALTER, CREATE, DROP)
- le contrle des donnes (GRANT, REVOKE, COMMIT, ROLLBACK)
Figure 10 : SQL au sein d'un SGBD
Tout SGBD contient un dictionnaire (figure 10) qui contient tout moment le descriptif complet des
donnes, sous la forme d'un ensemble de tables comprenant les bases de donnes prsentes, les tables et
leurs attributs, les cls candidates, primaires et trangres, les diffrentes contraintes et les vues cres
sur les tables. SQL utilise ce dictionnaire lors de l'excution de requtes pour vrifier les contraintes,
optimiser les requtes et assurer le contrle des accs.
III.2.2. Interroger une base de donnes
III.2.2.1. Introduction
La commande SELECT constitue, elle seule, le langage d'interrogation d'une base. Elle permet :
- de slectionner certaines colonnes d'une table (opration de projection) ;
- de slectionner certaines lignes d'une table en fonction de leur contenu (restriction) ;
- de combiner des informations venant de plusieurs tables (jointure, union, intersection, diffrence) ;
- de combiner ces diffrentes oprations
Une interrogation, ou requte de slection, est une combinaison d'oprations portant sur des tables et
dont le rsultat est lui-mme une table, mais phmre ou dynamique (car elle n'existe que le temps de
la requte).
Dans ce qui suit, nous utiliserons les conventions typographiques suivantes :
- en MAJUCULES les commandes ou oprateurs qu'il faut recopier tels quels (ex. SELECT)
- en italique les paramtres devant tre remplacs par une valeur approprie (ex. table, alias)
- en soulign la valeur par dfaut (ex. {ASC|DESC})
- des crochets [] encadrent une valeur optionnelle (ex. [DISTINCT], [AS alias])
- des accolades {} encadrent des valeurs (spares par | ) dont l'une doit tre saisie (ex. {ON|OFF})
- des points de suspension indiquent que les valeurs prcdentes peuvent tre rptes plusieurs
fois (ex. table, ... peut prendre comme valeur table1, table2, table3)
- les signes de ponctuation (parenthses, virgules et points-virgules) doivent tre saisis comme
prsents. En particulier, ne pas oublier le point-virgule obligatoire la fin de chaque requte.
Par ailleurs, on dsigne par :
- alias un synonyme d'un nom de table, de colonne, ou d'expression calcule
- condition une expression prenant la valeur vrai ou faux
- sous-interrogation (ou sous-requte) une expression de requte (SELECT) figurant dans une clause
WHERE d'une requte principale
- expr une colonne ou un attribut calcul par une expression
- num un numro de colonne
18/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

Enfin, dans ce qui suit, nous illustrerons les requtes sur une base forme des relations suivantes :
Employes(num_emp, nom, fonction, _superieur, date_embauche, salaire, comm,
_num_dep)
EMPLOYES

num_emp
7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934

nom
Coquillet
Parent
Henry
Dumoulin
Ferron
Capon
Martin
Colin
Patton
Benami
Calamon
James
Henry
Tozzi

fonction
Technicien
Commercial
Commercial
Directeur
Commercial
Directeur
Directeur
Analyste
Prsident
Commercial
Technicien
Technicien
Analyste
Technicien

_superieur date_embauche
7902
17/12/80
7698
20/02/81
7698
22/02/81
7839
02/04/81
7698
28/09/81
7839
01/05/81
7839
09/06/81
7566
19/04/87
17/11/81
7698
08/09/81
7788
23/05/87
7698
03/12/81
7566
03/12/81
7782
23/01/82

salaire
800
1600
1250
2975
1250
2850
2450
3000
5000
1500
1100
950
3000
1300

comm
300
500
1400

_num_dep

20
30
30
20
30
30
10
20
10
30
20
30
20
10

Departements(num_dep, nom, ville)


DEPARTEMENTS

num_dep
10
20
30
40

nom
Comptabilit
Recherche
Ventes
Oprations

ville
Paris
Lille
Marseille
Lyon

III.2.2.2. Syntaxe de base


La syntaxe de base de la commande SELECT est la suivante :
SELECT

attributs

FROM

tables

WHERE

prdicats;

Correspond l'oprateur de projection attributs(tables)


Correspond aux oprateurs de jointure

prdicat

et/ou de slection prdicat

Les attributs sont les colonnes que l'on souhaite voir apparatre dans la rponse. Si l'on souhaite
toutes les colonnes, il faut utiliser le symbole *.
Ex.
SELECT * FROM employes;
SELECT nom, fonction FROM employes;

Affiche la table employes avec toutes ses colonnes

Affiche le nom et la fonction de tous les

employs
Il est possible de faire prcder les noms des attributs de la table o ils figurent. Cela est obligatoire si
l'on extraie les donnes de plusieurs tables et que deux attributs slectionns portent le mme nom :
SELECT employes.nom, departements.nom FROM employes, departements;

Il est aussi possible de renommer une colonne ou une table par un alias, ce qui est utile lorsqu'on veut
donner un nom plus parlant ou plus court pour faciliter sa dsignation ultrieurement dans la requte.
Pour renommer une colonne, on utilise la syntaxe Col1 AS 'Nouveau nom' dans le SELECT (les
guillemets ne sont obligatoires que si l'alias comporte des espaces ou des caractres spciaux). Pour
renommer une table, il suffit de faire suivre son nom par son alias dans la clause FROM :
SELECT emp.nom, emp.salaire AS 'salaire mensuel' FROM employes emp;

19/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

Ceci est particulirement utile lorsque l'on dfinit un attribut calcul partir des attributs de tables. Il
est en effet possible de faire figurer comme rsultat d'un SELECT une expression compose
d'oprateurs, de fonctions prdfinies (cf. liste en annexe), de variables et de constantes :
SELECT nom, salaire+comm AS 'salaire total' FROM employes;

La clause WHERE permet de spcifier quelles sont les lignes slectionner. Le prdicat de slection,
form d'une expression comportant des oprandes lis par des oprateurs, sera valu pour chaque ligne
de la table, et seules les lignes pour lesquelles il est vrai seront retenues
Les oprandes figurant dans le prdicat peuvent tre des noms de colonnes, ou des constantes de type :
-

nombres : peuvent inclure un signe, un point dcimal et une puissance de dix (ex. -1.2E-5)

chanes : chanes de caractres entre apostrophes (Attention : 'Martin' 'MARTIN')

dates : chanes de caractres entre apostrophes dans un format spcial. Pour s'affranchir des
problmes inhrents aux incompatibilits dans les diffrentes langues, il est conseill d'utiliser le
format suivant : 'aaaa-mm-jj' (ex. {d '2001-10-31'})

la valeur NULL (valeur non dfinie), que l'on doit tester avec l'oprateur IS, et pas = (cf. ci-dessous).

Les oprateurs figurant dans le prdicat peuvent tre :


-

les oprateurs de comparaison traditionnels (= (gal), <> (diffrent de), <, <=, >, >=)

les oprateurs spciaux


- BETWEEN AND (valeur comprise entre 2 bornes) : expr1 BETWEEN expr2 AND expr3
- IN (valeur comprise dans une liste) : expr1 IN (expr2, expr3, )
- LIKE (chane semblable une chane gnrique) : expr1 LIKE chaine
La chane gnrique peut comporter les caractres jokers _ (remplace 1 seul caractre
quelconque) et % (remplace une chane de caractres quelconque, y compris de longueur nulle)
- les oprateurs logiques AND, OR et NOT (inversion logique) pour combiner plusieurs prdicats.
Des parenthses peuvent tre utilises pour imposer une priorit dans l'valuation du prdicat (par
dfaut, l'oprateur AND est prioritaire par rapport OR).
Exemples.
- Employs dont la commission est suprieure au salaire
SELECT nom, salaire, comm FROM employes WHERE comm > salaire;

Employs gagnant entre 1500 et 2850


SELECT nom, salaire FROM employes WHERE salaire BETWEEN 1500 AND 2850;

Employs commerciaux ou analystes


SELECT num_emp, nom, fonction FROM employes
WHERE fonction IN ('Commercial', 'Analyste');

Employs dont le nom commence par M


SELECT nom FROM employes WHERE nom LIKE 'M%';

Employs du dpartement 30 ayant un salaire suprieure 2500


SELECT nom FROM employes WHERE _num_dep=30 AND salaire>2500;

Employs directeurs ou commerciaux travaillant dans le dpartement 10


SELECT nom, fonction FROM employes
WHERE (fonction='Directeur' OR fonction ='Commercial') AND _num_dep=10;

Employs percevant une commission


SELECT nom, salaire, comm FROM employes WHERE comm IS NOT NULL;

20/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

III.2.2.3. Les jointures


La jointure est une opration permettant de combiner des informations issues de plusieurs tables. Elle se
formule simplement en spcifiant, dans la clause FROM , le nom des tables concernes et, dans la
clause WHERE, les conditions qui vont permettre de raliser la jointure (en effet, si l'on ne prcise pas
de condition de slection, on obtient le produit cartsien des tables prsentes derrire le FROM, ce qui
n'est en gnral pas souhait).
Il existe plusieurs types de jointures (cf. figure 11) :
-

equi-jointure (ou jointure naturelle, ou jointure interne) : permet de relier deux colonnes
appartenant deux tables diffrentes mais ayant le mme "sens" et venant vraisemblablement d'une
relation 1-N lors de la conception. Les tables sont relies par une relation d'galit entre leur attribut
commun ou, partir de SQL2, avec la clause INNER JOIN.
Ex. Donner le nom de chaque employ et la ville o il/elle travaille
SELECT employes.nom, Ville FROM employes, departements
WHERE employes._num_dep=departements.num_dep;

ou
SELECT employes.nom, departements.ville FROM employes
INNER JOIN departements ON employes._num_dep = departements.num_dep;

auto-jointure : cette jointure d'une table elle-mme permet de relier des informations venant d'une
ligne d'une table avec des informations venant d'une autre ligne de la mme table. Dans ce cas, il
faut renommer au moins l'une des deux occurrences de la table pour pouvoir prfixer sans ambigut
chaque nom de colonne.
Ex. Donner pour chaque employ le nom de son suprieur hirarchique
SELECT employes.nom, superieurs.nom FROM employes, employes AS superieurs
WHERE employes._superieur=superieurs.num_emp;

ou
SELECT employes.nom, superieurs.nom FROM employes
INNER JOIN employes AS superieurs
ON employes._superieur=superieurs.num_emp;

-jointure : si le critre d'galit correspond la jointure la plus naturelle, les autres oprateurs de
comparaison sont galement utilisables dans le prdicat de jointure. Nanmoins, cette possibilit
doit tre utilise avec prcaution car elle peut entraner une explosion combinatoire (on rappelle
qu'une jointure ne constitue qu'une restriction du produit cartsien de deux relations ou plus).
Ex. Quels sont les employs gagnant plus que Martin ?
SELECT e1.nom, e1.salaire, e1.fonction FROM employes AS e1, employes AS e2
WHERE e1.salaire>e2.salaire AND e2.nom='Martin';

jointure externe : lorsqu'une ligne d'une table figurant dans une jointure n'a pas de correspondant
dans les autres tables, elle ne satisfait pas au critre d'qui-jointure et ne figure donc pas dans le
rsultat de la requte. Une jointure externe est une jointure qui favorise l'une des tables en affichant
toutes ses lignes, qu'il y ait ou non correspondance avec l'autre table de jointure. Les colonnes pour
lesquelles il n'y a pas de correspondance sont remplies avec la valeur NULL. Pour dfinir une telle
jointure, on utilise les clauses LEFT OUTER JOIN (jointure externe gauche) et RIGHT OUTER
JOIN (jointure externe droite).
Ex. Le dpartement de Lyon n'apparaissait pas dans l'exemple de l'qui-jointure, mais figurera ici :
SELECT employes.nom, departements.ville FROM employes
RIGHT JOIN departements ON employes._num_dep = departements.num_dep;

Ex. Le Prsident Patton, sans suprieur hirarchique, n'apparaissait pas dans l'exemple de l'autojointure, mais figurera ici (avec NULL comme nom de suprieur) :
SELECT employes.nom, superieurs.nom FROM employes
LEFT JOIN employes AS superieurs ON employes._superieur=superieurs.num_emp;

21/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

Ex. Retrouver les dpartements n'ayant aucun employ :


SELECT departements.num_dep, employes.nom FROM employes
RIGHT JOIN departements ON employes._num_dep = departements.num_dep
WHERE employes.nom IS NULL;

Figure 11-1 : Equi-jointure

Figure 11-2 : Auto-jointure

Figure 11-3 : Jointure externe

Figure 11 : Les diffrents types de jointures


III.2.2.4. Fonctions de groupes
Dans les exemples prcdents, chaque ligne rsultat d'un SELECT tait calcule sur les valeurs d'une
seule ligne de la table consulte. Il existe un autre type de SELECT qui permet d'effectuer des calculs
sur l'ensemble des valeurs d'une colonne, au moyen de l'une des fonctions de groupe suivantes (toutes
portent sur une expression, qui peut-tre un attribut d'une table ou un attribut calcul) :
- SUM(expr)
- AVG(expr)
- COUNT([DISTINCT] expr)
- COUNT(*)
- MIN(expr) ou MAX(expr)
- VARIANCE(expr) ou STDDEV(expr)

Somme des valeurs


Moyenne des valeurs
Nombre de valeurs (diffrentes si DISTINCT est prsent)
Compte toutes les lignes de la table
Minimum ou maximum des valeurs
Variance ou cart-type des valeurs

Ex. : Donner le total des salaires des employs travaillant dans le dpartement 10 :
SELECT SUM(salaire) AS som_salaires FROM employes WHERE _num_dep=10;

Calcul de rsultats sur plusieurs groupes. Il est possible de subdiviser la table en groupes, chaque
groupe tant l'ensemble des lignes ayant une valeur commune pour les expressions spcifies. C'est la
clause GROUP BY qui permet de dcouper la table en plusieurs groupes :
GROUP BY expr1, expr2,
Si l'on regroupe suivant une seule expression, ceci dfinit les groupes comme les ensembles de lignes
pour lesquelles cette expression prend la mme valeur. Si plusieurs expressions sont prsentes, le
groupement va s'effectuer d'abord sur la premire, puis sur la seconde, et ainsi de suite : parmi toutes les
lignes pour lesquelles expr1 prend la mme valeur, on regroupe celles ayant expr2 identique, etc. Un
SELECT de groupe avec une clause GROUP BY donnera une ligne rsultat pour chaque groupe.
Ex. : Donner le total des salaires des employs pour chaque dpartement :
SELECT _num_dep, SUM(salaire) AS som_salaires FROM employes GROUP BY _num_dep;

Slection des groupes. De mme que la clause WHERE permet de slectionner certaines lignes, il est
possible de ne retenir, dans un SELECT comportant une fonction de groupe, que les lignes rpondant
un critre donn par la clause HAVING. Cette clause se place aprs la clause GROUP BY et son
prdicat suit les mmes rgles de syntaxe que celui de la clause WHERE, la diffrence prs qu'il ne
22/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

peut porter que sur des caractristiques du groupe (fonction de groupe ou expression figurant dans la
clause GROUP BY).
Ex. : Donner la liste des salaires moyens par fonction pour les groupes ayant plus de 2 employs :
SELECT fonction, COUNT(*) AS nb_employes, AVG(salaire) AS moy_salaires
FROM employes GROUP BY fonction HAVING COUNT(*)>2;

Remarques importantes :
-

Dans la liste des colonnes rsultat d'un SELECT comportant une fonction de groupe, ne peuvent
figurer que des caractristiques de groupe, c'est--dire soit des fonctions de groupe, soit des
expressions figurant dans la clause GROUP BY. En effet, de manire gnrale, lorsqu'un attribut est
slectionn dans une clause SELECT, le rsultat peut comporter de zro n valeurs ; cela pourrait
provoquer des conflits si l'on utilisait conjointement des fonctions statistiques qui, elles, ne
retournent qu'une seule valeur.

Un SELECT de groupe peut contenir la fois les clauses WHERE et HAVING. La premire sera
d'abord applique pour slectionner les lignes, puis les fonctions de groupe seront values, et les
groupes ainsi constitus seront slectionns suivant le prdicat de la clause HAVING.
Ex. : Pour les dpartements comportant au moins 2 employs techniciens ou commerciaux, donner
le nombre de ces employs par dpartement :
SELECT _num_dep, COUNT(*) AS nb_techn_ou_comm FROM employes
WHERE fonction in('Technicien','Commercial')
GROUP BY _num_dep HAVING COUNT(*)>=2;

Un SELECT de groupe peut tre utilis dans une sous-interrogation ; inversement, une clause
HAVING peut comporter une sous-interrogation.
III.2.2.5. Sous-interrogations

Une caractristique puissante de SQL est la possibilit qu'un critre de recherche employ dans une
clause WHERE (expression droite d'un oprateur de comparaison) soit lui-mme le rsultat d'un
SELECT ; c'est ce que l'on appelle une sous-interrogation ou un SELECT imbriqu. Cela permet de
raliser des interrogations complexes qui ncessiteraient sinon plusieurs interrogations avec stockage
des rsultats intermdiaires.
Un SELECT peut retourner de zro n lignes comme rsultat. On a donc les cas suivants :
-

Une sous-interrogation ne retournant aucune ligne se termine avec un code d'erreur, moins
d'utiliser l'oprateur EXISTS qui retourne faux dans ce cas, vrai si la sous-interrogation retourne au
moins une ligne. Cet oprateur permet d'empcher l'excution de l'interrogation principale si la sousinterrogation ne retourne aucun rsultat, mais s'emploie surtout avec les sous-interrogations
synchronises (cf. plus loin).
Ex. : Donner la liste des noms et salaires des employs si un des salaires est infrieur 1000 :
SELECT nom, salaire FROM employes
WHERE EXISTS(SELECT * FROM employes WHERE salaire<1000);

Si le rsultat d'une sous-interrogation ne comporte qu'une seule ligne, il peut tre utilis directement
avec les oprateurs de comparaison classiques.
Ex. : Donner le nom des employs exerant la mme fonction que Martin :
SELECT nom FROM employes
WHERE fonction =(SELECT fonction FROM employes WHERE nom='Martin');

23/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

Une sous-interrogation peut retourner plusieurs lignes condition que l'oprateur de comparaison
admette sa droite un ensemble de valeurs. Les oprateurs permettant de comparer une valeur un
ensemble de valeurs sont :
IN Retourne vrai si la valeur est gale l'une des valeurs retournes par la sous-interrogation.
ANY Retourne vrai si la comparaison est vraie pour l'une au moins des valeurs retournes par la
sous-interrogation. Peut suivre l'un des oprateurs =,<>,>,>=,<, ou <=.
ALL Retourne vrai si la comparaison est vraie pour toutes les valeurs retournes par la sousinterrogation. Peut suivre l'un des oprateurs =,<>,>,>=,<, ou <=.
Ex. : Donner la liste des employs gagnant plus que tous ceux du dpartement 30 :
SELECT nom, salaire FROM employes
WHERE salaire > ALL(SELECT salaire FROM employes WHERE _num_dep=30);

Sous-interrogation synchronise avec l'interrogation principale. Dans les exemples prcdents, la


sous-interrogation tait value d'abord, puis son rsultat tait utilis pour excuter l'interrogation
principale. SQL sait galement traiter une sous-interrogation faisant rfrence une colonne de la table
de l'interrogation principale. Dans ce cas, le traitement est plus complexe car il faut valuer la sousinterrogation pour chaque ligne de l'interrogation principale.
Ex. : Donner la liste des employs ne travaillant pas dans le mme dpartement que leur suprieur :
SELECT nom FROM employes e
WHERE _num_dep<>(SELECT _num_dep FROM employes WHERE
e._superieur=num_emp)
AND _superieur IS NOT NULL;

Il a fallu ici renommer la table Employes de l'interrogation principale pour pouvoir la rfrencer sans
ambigut dans la sous-interrogation. La dernire ligne est utile car le prsident ne possde pas de
suprieur (valeur NULL) et la sous-interrogation ne retourne alors aucune valeur.
Ex. : Donner les employs des dpartements qui n'ont pas embauch depuis le dbut de l'anne 1982 :
SELECT * FROM employes e
WHERE NOT EXISTS(SELECT * FROM employes WHERE
date_embauche>=to_date('01/01/1982','DD-MM-YYYY') AND _num_dep=e._num_dep);

III.2.2.6. Rcapitulatif : syntaxe tendue


La syntaxe tendue de l'instruction SELECT est la suivante :
SELECT [DISTINCT] {* | expr [AS alias], ... }
FROM table [alias], ...
[WHERE { conditions | sous conditions} ]
[GROUP BY expr, ...] [HAVING conditions]
[ORDER BY {expr | num}{ASC | DESC}, ...];

Clause
SELECT
FROM
WHERE

GROUP BY
HAVING
ORDER BY

24/28

Prcise

Notes

Colonnes qui vont apparatre dans la rponse


(DISTINCT permet d'liminer les tuples en double)
Table(s) intervenant dans l'interrogation
Conditions appliquer sur les lignes. Peut inclure :
- comparateurs : =, >, <, >=, <=,<>
- oprateurs logiques : AND, OR, NOT
- prdicats : IN, LIKE, ALL, SOME, ANY, EXISTS, ...
Colonne(s) de regroupement
Condition(s) associe(s) un regroupement
Ordre dans lequel vont apparatre les lignes de la rponse

* = toutes les colonnes


AS pour renommer une expression
Alias surtout utile dans les jointures
Jointures aussi dfinies par :
- INNER JOIN (qui- et auto-jointure)
- LEFT OUTER JOIN et RIGHT
OUTER JOIN (jointures externes)

DESC = ordre descendant

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

III.2.3. Modifier une base de donnes


III.2.3.1. Manipulation de donnes (LMD)
Le langage de manipulation de donnes permet de modifier les informations contenues dans la base de
donnes. Les modifications ne peuvent se faire que sur une seule table la fois, et l'unit manipule est
la ligne. Il existe une commande SQL correspondant chaque type de modification de donnes : ajout,
modification et suppression.
Remarques importantes : Les oprations de mise jour sont susceptibles d'tre rejetes par le moteur
SQL, notamment si elles violent des contraintes d'intgrit des donnes. Par ailleurs, ces commandes
doivent tre utilises avec prcaution car elles modifient les donnes de manire dfinitive (il est
impossible de revenir sur un ordre de mise jour si l'on s'est tromp).
La commande INSERT permet d'insrer une ligne dans une table existante en spcifiant les valeurs
insrer. On peut spcifier explicitement les colonnes pour lesquelles on va fournir des valeurs ; si elle
est omise, la liste des colonnes sera par dfaut celle de la table dans l'ordre donn lors de sa cration.
INSERT INTO nom_table (nom_col1, nom_col2,) VALUES (val_col1, val_col2,)

Ex. : Insrer un tuple dans la table Employes :


INSERT INTO employes(nom,fonction,salaire,comm)
VALUES ('Copin','Commercial',1500,150)

Il est possible d'insrer dans une table les lignes provenant d'une requte d'interrogation SELECT qui
peut contenir n'importe quelle clause sauf un ORDER BY (ce classement des lignes serait contraire
l'esprit du relationnel) :
INSERT INTO nom_table (nom_col1, nom_col2, ) SELECT

La commande UPDATE permet de modifier les valeurs d'une ou plusieurs colonnes, dans une ou
plusieurs lignes existantes d'une table :
UPDATE nom_table
SET nom_col1 = expr1, nom_col2 = expr2,
WHERE prdicat;

Les valeurs des colonnes nom_col1, nom_col2, sont modifies dans toutes les lignes satisfaisant au
prdicat ; celui-ci peut contenir une sous-requte afin de filtrer de manire plus complte. En l'absence
de clause WHERE, toutes les lignes sont mises jour.
Les expression de mise jour expr1, expr2, peuvent contenir des constantes (numriques, dates,
chanes), des oprateurs et fonctions, et peuvent mme faire rfrence aux anciennes valeurs de la ligne.
Ex. : Augmenter de 10% les analystes :
UPDATE employes SET salaire=salaire*1.1 WHERE fonction='Analyste'

La commande DELETE permet de supprimer des lignes d'une table :


DELETE FROM nom_table WHERE prdicat;

Toutes les lignes pour lesquelles le prdicat est vrai sont supprimes. En l'absence de clause WHERE, la
table est vide de toutes ses lignes.
III.2.3.2. Description des donnes (LDD)
Note : Les notions voques ici ne sont qu'un survol trs rapide du langage de description des donnes.
Pour un expos complet des commandes SQL de cration de schma, le lecteur peut se reporter au site
de Frdric Brouard (cf. bibliographie).
La commande CREATE TABLE permet de dfinir une table, avec ses colonnes et ses contraintes :
CREATE TABLE nom_table

{colonne|contrainte}, {colonne|contrainte_tbl},

25/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

o colonne dfinit la fois le nom de la colonne, mais aussi son type, sa valeur par dfaut et ses
ventuelles contraintes de colonne (la colonne peut en effet accepter ou non les valeurs nulles, certaines
valeurs de validation, les doublons, ou bien tre une cl primaire ou trangre) :
colonne:: nom_colonne {type|domaine} [DEFAULT val_default] [contrainte_col]
contrainte_col:: [NOT] NULL | CHECK (prdicat) | UNIQUE | PRIMARY KEY |
FOREIGN KEY [colonne] REFERENCES table(colonne) spcif_rfrence

et o les contraintes de table permettent de dfinir une cl multicolonne ainsi que des contraintes portant
sur plusieurs colonnes (unicit globale, validation multi-attributs ou intgrit rfrentielle) :
contrainte_tbl:: CONSTRAINT nom_contrainte
{PRIMARY KEY (liste_cols) | UNIQUE | CHECK (prdicat_tbl) | FOREIGN KEY
(liste_cols) REFERENCES table(liste_cols) spcif_rfrence}

Ex. : Si l'on souhaite imposer les contraintes suivantes la table Employs :


- les valeurs de dpartement doivent appartenir l'intervalle 10..100
- les fonctions sont forcment 'Directeur', 'Analyste', 'Technicien', 'Commercial' ou 'President'
- tout employ embauch aprs 1986 doit gagner plus de 1000
sa dfinition serait :
CREATE TABLE employes (
num_emp
SMALLINT
NOT NULL PRIMARY KEY,
nom
VARCHAR(9),
fonction
CHAR(10)
CHECK (fonction IN ('Directeur', 'Analyste',
'Technicien', 'Commercial', 'President')),
_superieur
SMALLINT
FOREIGN KEY REFERENCES employes (num_emp),
Date_embauche DATE,
salaire
DECIMAL(7,2),
comm
DECIMAL(7,2),
_num_dep
SMALLINT CHECK (_num_dep BETWEEN 10 AND 100),
CONSTRAINT ChkSal CHECK (YEAR(date_embauche)<=1986 OR salaire>1000) );

La commande ALTER TABLE permet de modifier la dfinition d'une table en y ajoutant ou en


supprimant une colonne ou une contrainte (mais elle ne permet pas de changer le nom ou le type d'une
colonne, ni d'ajouter une contrainte de ligne [NOT] NULL) :
ALTER TABLE nom_table {
ADD definition_colonne |
ADD CONSTRAINT definition_contrainte |
ALTER nom_colonne {SET DEFAULT valeur_def|DROP DEFAULT} |
DROP nom_colonne [CASCADE|RESTRICT] |
DROP CONSTRAINT nom_contrainte [CASCADE|RESTRICT] };

L'option CASCADE / RESTRICT permet de grer l'intgrit rfrentielle de la colonne ou la contrainte.


Ex. : Modifier la dfinition de la table Employs pour que le salaire total dpasse forcment 1000 :
ALTER TABLE employes ADD CONSTRAINT ChkSalTot CHECK (salaire+comm > 1000)

La commande DROP TABLE permet de supprimer la dfinition d'une table et, dans le mme temps,
de tout son contenu et des droits d'accs des utilisateurs la table ( utiliser avec prcaution, donc !) :
DROP TABLE nom_table

III.2.3.3. Contrle des donnes (LCD)


La protection des donnes consiste identifier les utilisateurs et grer les autorisations d'accs. Pour
cela, une mesure fondamentale est de ne fournir aux utilisateurs qu'un accs aux tables ou aux parties de
tables ncessaires leur travail, ce que l'on appelle des vues. Grce elles, chaque utilisateur pourra
avoir sa vision propre des donnes. Une vue est dfinie en SQL grce la commande CREATE VIEW
comme rsultat d'une requte d'interrogation SELECT :
26/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

CREATE VIEW nom_vue AS SELECT

Ex. : Crer une vue constituant une restriction de la table Employs aux nom et salaire des employs du
dpartement 10 :
CREATE VIEW emp10 AS SELECT nom, salaire FROM employes WHERE _num_dep =
10;

Il n'y a pas de duplication des informations, mais stockage de la dfinition de la vue. Une fois cre, la
vue peut tre interroge exactement comme une table. Les utilisateurs pourront consulter la base
travers elle, c'est--dire manipuler la table rsultat du SELECT comme s'il s'agissait d'une table relle.
En revanche, il existe deux restrictions la manipulation d'une vue par un INSERT ou un UPDATE :
- le SELECT dfinissant la vue ne doit pas comporter de jointure ;
-

les colonnes rsultats du SELECT doivent tre des colonnes relles et non pas des expressions.

Ex. : Augmentation de 10% des salaires du dpartement 10 travers la vue Emp10 :


UPDATE emp10 SET salaire=salaire*1.1;

Une vue peut tre supprime ou renomme par les commandes :


DROP VIEW nom_vue

ou

RENAME ancien_nom TO nouveau_nom

Une protection efficace des donnes ncessite en outre d'autoriser ou d'interdire certaines oprations, sur
les tables ou les vues, aux diffrentes catgories d'utilisateurs. Les commandes correspondantes sont :
GRANT type_privilege1, type_privilege2, ON {table|vue|*} TO utilisateur;
REVOKE type_privilege1, type_privilege2, ON {table|vue|*} FROM utilisateur;

Les types de privilges correspondent aux commandes SQL (SELECT pour la possibilit d'interroger,
UPDATE pour celle de mise jour, etc.) et les utilisateurs concerns sont dsigns par leur identifiant
de connexion au serveur, ou par le mot-cl PUBLIC pour dsigner tous les utilisateurs.
Ex. : Autoriser la suppression de la vue Emp10 au seul reprsentant du personnel identifi par ID7788 :
GRANT DELETE ON emp10 TO ID7788;

Gestion des transactions. Une transaction est un ensemble de modifications de la base qui forment un
tout indivisible, qu'il faut effectuer entirement ou pas du tout, sous peine de laisser la base dans un tat
incohrent. SQL permet aux utilisateurs de grer leurs transactions :
-

la commande COMMIT permet de valider une transaction. Les modifications deviennent dfinitives
et visibles tous les utilisateurs ;

la commande ROLLBACK permet tout moment d'annuler la transaction en cours. Toutes les
modifications effectues depuis le dbut de la transaction sont alors dfaites.

Pour assurer ainsi l'intgrit de la base en cas d'interruption anormale d'une tche utilisateur, les SGBD
dits transactionnels utilisent un mcanisme de verrouillage qui empche deux utilisateurs d'effectuer des
transactions incompatibles.

27/28

Universit Lille1 Master Sciences et Technologies

Bases de Donnes Relationnelles

- Bibliographie -

A. Meier (2002). Introduction pratique aux bases de donnes relationnelles. Springer-Verlag France,
Collection Iris (B.U. 005.756 MEI).

S. Maouche (2000). Bases de donnes et Systmes de gestion de bases de donnes. Cours universitaire (non
publi).

A. Abdellatif, M. Limame, A. Zeroual (1998). Oracle 7 : langage - architecture - administration. Eyrolles,


Paris.

J. Akoka, I. Comyn-Wattiau (2001). Conception des bases de donnes relationnelles, en pratique. Vuibert,
Paris, Collection Informatique (B.U. 005.756 AKO).

Sites web
-

Introduction aux modles EA et relationnel : www.iutc3.unicaen.fr/~moranb/cours/acsi/menu.htm

Bases de donnes, SGBD: www-lsr.imag.fr/Les.Personnes/Herve.Martin/HTML/FenetrePrincipale.htm

SGBD et SQL : wwwdi.supelec.fr/~yb/poly_bd/node1.html

Algbre relationnelle, SQL (exo en ligne): tlouahlia.free.fr/cours/tmp/SQL/ar&sql.htm

SQL (apprentissage interactif) : www.marc-grange.net/SQL.htm

Site de F. Brouard sur SQL (trs complet) : sqlpro.developpez.com/indexSQL.html

28/28

Vous aimerez peut-être aussi