Vous êtes sur la page 1sur 103

Vertigo/CNAM, Paris

ENSTA, Paris
BASES DE DONNES Relationnelles
Slide 1

P. Rigaux, M. Scholl et D. Gross-Amblard


(rigaux scholl dgram)@cnam.fr
2002/2003

Vertigo/CNAM, Paris

INTRODUCTION

Slide 2

Objectif
Slide 3

OBJECTIF:
Comprendre et Maitriser la technologie relationnelle

Vertigo/CNAM, Paris

BIBLIOGRAPHIE
Ouvrages en franais
1. P. Rigaux, Cours bases de donnes, cedric/cnam.fr/vertigo voir support de cours.
2. Date C.J, Introduction aux Bases de Donnes, Vuibert, 970
Pages, Janvier 2001
Ouvrages en anglais
Slide 4

1. R. Ramakrishnan et J. Gehrke, DATABASE MANAGEMENT SYSTEMS,


MacGraw Hill
2. R. Elmasri, S.B. Navathe, Fundamentals of database
systems, 3e dition, 1007 pages, 2000, Addison Wesley
3. Ullman J.D. and Widom J. A First Course in Database
Systems, Prentice Hall, 1997
4. Garcia-Molina H., Ullman J. and Widom J., Implementation of

Database Systems, Prentice Hall, 1999


5. Ullman J.D., Principles of Database and Knowledge-Base
Systems, 2 volumes, Computer Science Press
6. Abiteboul S., Hull R., Vianu V., Foundations of Databases,
Addison-Wesley
Slide 5

Le standard SQL
1. Date C.J., A Guide to the SQL Standard, Addison-Wesley
Trois Systmes
1. Date C.J., A Guide to DB2, Addison-Wesley
2. Date C.J., A Guide to Ingres, Addison-Wesley
3. ORACLE version 7 Server Concepts Manual 1992 Oracle

Vertigo/CNAM, Paris

Plan
Plan gnral du cours
1. Modle et langages relationnels
2. Aspects pratiques des SGB relationnels
3. Aspects systmes des modles relationnels
4. TP
Slide 6

Plan des trois premiers cours:


1. Introduction
2. Modle relationnel
3. Algbre Relationnelle
4. Langage de requte SQL
5. Techniques de stockage, organisation de fichiers
6. Indexation des fichiers

Exemples dApplications
1. CLASSIQUES
Gestion (salaires, stocks, . . . )
Transactionnel (comptes, centrales dachat, . . . )
Rservations (avions, trains, . . . )
2. PLUS RECENTES
Slide 7

Librairie et commerce lectroniques (bibliothques, journaux,


web, . . . )
Documentation technique (nomenclature, plans, dessins,. . . )
Multimdia (textes, images, son, vido, . . . )
Gographique (cartes routires, thmatiques,
...)
Gnie Logiciel (programmes, manuels, . . . )

Vertigo/CNAM, Paris

Comment Stocker et Manipuler les Donnes?


DONNES

BASE DE DONNES (B.D.)

Une B.D. est un GROS ENSEMBLE dinformations


STRUCTURES mmorises sur un support
Slide 8

PERMANENT.
LOGICIEL

SGBD

Un Systme de Gestion de Bases de


Donnes (SGBD) est un logiciel de HAUT NIVEAU qui
permet de manipuler ces informations.

Diversit -> Complexit


Diversit des utilisateurs, des interfaces et des Architectures:
1. diversit des utilisateurs: administrateurs, programmeurs,
non informaticiens, . . .
Slide 9

2. diversit des interfaces: utilisateur final, langages BD, menus, saisies,


rapports, . . .
3. diversit des architectures : centralis, distribu,
accs plusieurs bases htrognes accessibles
par rseau, pair pair

Vertigo/CNAM, Paris

FONCTIONNALITS dun SGBD


Chaque niveau du SGBD ralise un certain nombre de fonctions :
NIVEAU PHYSIQUE
Accs aux donnes, gestion sur mmoire secondaire
Slide 10

(fichiers) des donnes, des index


Partage de donnes et gestion de la concurrence daccs
Reprise sur pannes (fiabilit)
Distribution des donnes et interoprabilit (accs
aux rseaux)

NIVEAU LOGIQUE
Dfinition de la structure de donnes : Langage de
Description de Donnes (LDD)
Slide 11
Consultation et Mise Jour des donnes : Langages de
Requtes (LR) et Langage de Manipulation de Donnes
(LMD)

Vertigo/CNAM, Paris

Fonctionnalits du SGBD au NIVEAU EXTERNE


Gestion des Vues
Environnement de programmation (intgration avec un
langage de programmation)
Interfaces conviviales et Langages de 4e Gnration
Slide 12

(L4G)
Outils daides (e.g. conception de schmas)
Outils de saisie, dimpression dtats
Dbogueurs
Passerelles (rseaux, autres SGBD,etc. . . )

En Rsum, on Veut Grer


un GROS VOLUME DINFORMATIONS
Slide 13

Persistantes (annes) et fiables (protection sur pannes)


Partageables (utilisateurs, programmes)
Manipules indpendamment de leur organisation
physique

Vertigo/CNAM, Paris

Slide 14

Dfinition du schma de donnes

Modles de donnes
Un modle de donnes est caractris par :
Slide 15
Une structuration des objets
Des oprations sur ces objets

Vertigo/CNAM, Paris

Dans un SGBD, il existe plusieurs modles plus ou moins


abstraits des mmes objets, e.g. :
le modle conceptuel : la description du systme
dinformation
Slide 16

le modle logique : interface avec le SGBD


le modle physique : fichiers
ces diffrents modles correspondent aux niveaux
dans larchitecture dun SGBD.

Modle Conceptuel: Exemple Entit-Association


Modle trs abstrait, pratique pour :
lanalyse du monde rel
la conception du systme dinformation
la communication entre diffrents acteurs de
Slide 17

lentreprise
Mais nest pas associ un langage.
DONC UNE STRUCTURE
MAIS PAS
DOPRATIONS

Vertigo/CNAM, Paris

10

Modle logique
1. Langage de dfinition de donnes (LDD) pour dcrire
la structure.
2. Langage de manipulation de donnes (LMD) pour
appliquer des oprations aux donnes.
Slide 18
Ces langages sont abstraits :
1. Le LDD est indpendant de la reprsentation
physique des donnes.
2. Le LMD est indpendant de limplantation des
oprations.

Les avantages de labstraction


1. Simplicit daccs
Les structures et les langages sont plus simples, donc
plus faciles pour lusager non expert.
Slide 19

2. INDPENDANCE PHYSIQUE.
On peut modifier limplantation physique sans modifier les
programmes dapplication
3. INDPENDANCE LOGIQUE.
On peut modifier les programmes dapplication sans toucher
limplantation.

Vertigo/CNAM, Paris

11

HISTORIQUE DES SGBD


chaque gnration correspond un modle logique
Les premiers taient peu abstraits (navigationnels)

Slide 20

Slide 21

60
mi-60

S.G.F. (e.g. COBOL)


HIRARCHIQUE IMS (IBM)
RSEAU (CODASYL)
73-80 RELATIONNEL
mi-80 RELATIONNEL
Fin 80 ORIENT-OBJET
Fin 90 Objet-relationnel
2003 XML

navigationnel
navigationnel
dclaratif
explosion sur micro
dclaratif + navigationnel
nouvelles appli
documents

Oprations sur les donnes

Vertigo/CNAM, Paris

12

Exemples de questions (requtes) poses la base


Insrer un employ nomm Jean
Augmenter Jean de 10%
Dtruire Jean
Slide 22

Chercher les employs cadres


Chercher les employs du dpartement comptabilit
Salaire moyen des employs comptables, avec deux enfants,
ns avant 1960 et travaillant Paris
Les requtes sont mises avec un langage de requtes (SQL2, OQL, SQL3, XQUERY,
etc.).

Le Traitement dune Requte


ANALYSE SYNTAXIQUE
OPTIMISATION
Gnration (par le SGBD) dun programme optimis
partir de la
Slide 23

connaissance de la structure des donnes, de lexistence


dindex, de statistiques sur les donnes.
EXCUTION POUR OBTENIR LE RSULTAT.
NB : on
doit tenir compte du fait que dautres utilisateurs sont
peut-tre en train de modifier les donnes quon interroge !

Vertigo/CNAM, Paris

13

Concurrence daccs et reprise sur pannes


Plusieurs utilisateurs doivent pouvoir accder en mme temps
aux mmes donnes. Le SGBD doit savoir :
Slide 24

Grer les conflits si les deux font des mises--jour sur


les mmes donnes.
Offrir un mcanisme de retour en arrire si on dcide
dannuler des modifications en cours.
Restaurer la base et revenir un tat cohrent en cas de panne.

LE MODLE RELATIONNEL
Slide 25

Prsentation Gnrale

Vertigo/CNAM, Paris

14

Exemple de Relation
Nom de la Relation

VEHICULE

Slide 26

Nom dAttribut

Proprietaire

Type

Annee

Loic

Espace

1988

Nadia

Espace

1989

Loic

R5

1978

Julien

R25

1989

Marie

ZX

1993

n-uplet

un exemple de conception (schma EA)


FNOM

FOURNISSEURS

PRIX

FOURNIT

PNOM

PRODUITS

Slide 27

C_ADRESSE
FADRESSE
NUM_COMDE

COMMANDE

QUANTITE

CLIENTS

BALANCE

NOM

Vertigo/CNAM, Paris

15

Reprsentation par un ensemble de relations


FOURNISSEUR

FNOM

FADRESSE

Abounayan

92190 Meudon

Cima

75010 Paris

Preblocs

92230 Gennevilliers

Sarnaco

75116 Paris

Slide 28
FOURNITURE

COMMANDES

FNOM

PNOM

PRIX

Abounayan

sable

300

Abounayan

briques

1500

Preblocs

parpaing

1200

Sarnaco

parpaing

1150

Sarnaco

ciment

125

NUM_COMDE

NOM

PNOM

QUANTITE

Jean

briques

Jean

ciment

10

Paul

briques

Paul

parpaing

Vincent

parpaing

Slide 29

CLIENTS

NOM

CADRESSE

BALANCE

Jean

75006 Paris

-12000

Paul

75003 Paris

Vincent

94200 Ivry

3000

Pierre

92400 Courbevoie

7000

Vertigo/CNAM, Paris

16

Retour sur le Modle EA


1) Entits: un fournisseur est une entit
Slide 30

1. Type dentits: tous les fournisseurs ont mme type: Fournisseurs


2. Attribut: reprsente une proprit (caractristique) d1 entit, exemple: FNOM
3. concept: synonyme dentit.

Modle EA
2) Associations: fournit est une association
1. relie deux (ou plus) entits, exemple: fournit relie Fournisseurs et Produits
2. Attribut: Une association peut avoir des attributs propres
Slide 31

3. role: synonyme dassociation.


4. association 1,n entre E et F: 1 entit de type E on peut associer 1 ou plusieurs
entits de type F: exemple rajoutons lassociation sige social entre Fournisseurs et
Ville
5. Association n,n: 1 entit E correspond 1 ou plusieurs entits F et rciproquement,
exemple: Founit.

Vertigo/CNAM, Paris

17

Cl

Slide 32

1. Attribut ou groupe dattributs identifiant 1 entit: 2 entits de mme type ne peuvent


pas avoir la mme valeur de cl, exemple FNOM pour Fournisseurs (hyp: 2
forunisseurs ne peuvent avoir le mme nom)
2. Cl primaire: il peut y avoir plusieurs cls, exemple : si on rajoute le no de SS
comme attribut Fournisseurs, on a deux cls. Une est choisie comme cl primaire,
e.g; NoSS

Passage EA-Relationnel
A partir dun schma entit-association (niveau conceptuel) comment passer au niveau
logique (comment choisir les relations)?
1. Une relation par type dentit (e.g; Fournisseur). A une entit correspond un nuplet.
2. la cl primaire de la relation (attribut(s) de la relation qui identifie un nuplet) est
celle du type dentit
Slide 33

3. Une relation par association n,n: Les attributs sont les cls primaires des relations
relies par lassociation, ainsi que les attributs propres de lassociation
4. Cl trangre: si lassociation A entre R et S est 1,n, (n entits de type S pour une
entit de type R), on ne cre pas de relation associe cette association: on rajoute
dans la table qui reprsente S la cl de R comme attribut. Celle-ci et appele cl
trangre.
5. exercice: rajouter le type dentit VILLE (cl: nom de ville) et lassociation sige
social entre VILLE et FOURNISSEURS. Comment est modifie la relation
FOURNISSEURS?

Vertigo/CNAM, Paris

Slide 34

18

Modle relationnel: Dfinitions

Dfinitions
Un Domaine est un ensemble de valeurs. Exemples :  , , lensemble des
chanes de caractres, lensemble des chanes de caractres de longueur 10.

Slide 35

Un ATTRIBUT prend ses valeurs dans un domaine. Plusieurs attributs peuvent avoir
le mme domaine.
Un NUPLET est une liste de
valeurs   o chaque valeur  est la valeur
dun attribut  de domaine  :  
Le PRODUIT CARTSIEN !"#$"% entre des domaines !& est
lensemble de tous les nuplets     o  %  .

Vertigo/CNAM, Paris

19

RELATION : soit      les domaines respectifs des attributs   &  .



Une relation dfinie sur les attributs   &  est un sous-ensemble fini du

produit cartsien   "# "   : est un ensemble de nuplets.

Slide 36

Une relation est reprsente sous forme dune table. Lordre des colonnes ou des
lignes na pas dimportance. Les colonnes sont distingues par les noms dattributs

et chaque ligne reprsente un lment de lensemble (un nuplet).
Un attribut peut apparatre dans plusieurs relations.
Une BASE DE DONNES est un ensemble de relations.

LUNIVERS DATTRIBUTS DUNE BASE DE DONNES est lensemble de tous


les attributs des relations de la base.

Le SCHMA DUNE RELATION est dfini par le nom de la relation et la liste


des attributs avec pour chaque attribut son domaine. Notation :

Slide 37
ou plus simplement :



 



     

  

    

Exemple :
VEHICULE(NOM:CHAR(20), TYPE:CHAR(10),
ANNEE:ENTIER)

Vertigo/CNAM, Paris

Slide 38

20

Si la relation a
attributs (
colonnes),
est appel ARIT de la relation. La
relation 
 est darit .
Le SCHMA DUNE BASE DE DONNES est lensemble des schmas de ses
relations.

Exemple de Base de Donnes


SCHMA :
FOURNISSEURS(FNOM:CHAR(20), FADRESSE:CHAR(30))
Slide 39

FOURNITURE(FNOM:CHAR(20), PNOM:CHAR(10), PRIX:ENTIER))


COMMANDES(NUM_COMDE:ENTIER, NOM:CHAR(20),
PNOM:CHAR(10), QUANTITE;ENTIER))
CLIENTS(NOM: CHAR(20), CADRESSE:CHAR(30), BALANCE:RELATIF)

Vertigo/CNAM, Paris

21

Exemple de Base de Donnes


UNIVERS DATTRIBUTS :

Slide 40

U={FNOM, PNOM, NOM, FADRESSE, CADRESSE,


PRIX, NUM_CODE, QUANTITE, BALANCE}
RELATION UNIVERSELLE :
FPCC(FNOM, PNOM, NOM, FADRESSE, CADRESSE,
PRIX, NUM_CODE, QUANTITE, BALANCE)

Slide 41

Oprations et Langages

Vertigo/CNAM, Paris

Oprations sur une Base de Donnes Relationnelle


Slide 42

LANGAGE DE DFINITION DES DONNES (dfinition et MAJ du schma) :


Cration et destruction dune relation ou dune base
Ajout, suppression dun attribut

LANGAGE DE MANIPULATION DES DONNES


Saisie des nuplets dune relation
Affichage dune relation
Slide 43

Modification dune relation : insertion, suppression et maj des nuplets


Requtes : consultation dune relation ou calcul dune nouvelle relation
GESTION DES TRANSACTIONS
GESTION DES VUES

22

Vertigo/CNAM, Paris

23

Langages de Requtes Relationnels


POUVOIR DEXPRESSION : Quest-ce quon peut calculer ? Quelles oprations
peut-on faire ?
Slide 44

Les langages de requte relationnels utilisent deux approches :


calcul relationnel
algbre relationnelle
Les deux approches ont mme pouvoir dexpression.

Slide 45

ALGBRE RELATIONNELLE

Vertigo/CNAM, Paris

24

Algbre Relationnelle
Slide 46

une opration prend en entre une ou deux relations


le rsultat est toujours une relation

Oprations de lAlgbre Relationnelle


5 Oprations de base pour exprimer toutes les requtes :
Slide 47

Oprations unaires : slection, projection


Oprations binaires : union, diffrence, produit cartsien
Autres oprations qui sexpriment en fonction des 5 oprations de base : jointure
(naturelle, -jointure), intersection, division

Vertigo/CNAM, Paris

25

Projection
LA PROJECTION LIMINE UNE OU PLUSIEURS COLONNES DUNE
RELATION.
Slide 48

  

  

Notation :

Projection: Exemples
a) On limine la colonne  dans la relation

Slide 49


 
  '   )(

 
 

Le nuplet   napparat quune fois dans la relation



nuplets    et    dans .

!#"%$ &

 , bien quil existe deux

Vertigo/CNAM, Paris

26

b) On limine la colonne
R
Slide 50

Projection: Exemples
dans la relation

(on garde  et  ) :

  

 

Slection
Slection sur la condition :
Slide 51

On garde les nuplets qui satisfont .


NOTATION :

  

Vertigo/CNAM, Paris

27

Slection: Exemples
a) On slectionne les nuplets dans la relation
R

Slide 52

    




tels que lattribut

vaut b :

Slection: Exemples
b) On slectionne les nuplets tels que

 
  

R
Slide 53

"

 

&



 :

  !" # $ %! &('*),+.- 




Vertigo/CNAM, Paris

28

Slection: Exemples
c) On slectionne les nuplets tels que la 1re et la 2e colonne sont identiques :
R
Slide 54




  

Condition de Slection

La condition dune slection peut tre une formule logique quelconque avec des et ( )
et des ou (  ) entre termes de la forme    et  
o
Slide 55

  et  sont des attributs,

est un lment (une valeur) du domaine de   ,


est lun de




    
.

Vertigo/CNAM, Paris

29

Expressions de lAlgbre Relationnelle


le rsultat dune opration est une relation
Slide 56

sur cette relation, on peut faire une autre opration de lalgbre


Les oprations peuvent tre composes pour former des expressions de lalgbre
relationnelle.

Expressions de lAlgbre Relationnelle


EXEMPLE : 

Slide 57

 

   



   


           !          

La relation   !    !    contient les nuplets dont lattribut

 a la valeur  #"

  . La relation   #   contient tous les produits


commands par Jean.

(

Vertigo/CNAM, Paris

30


NOTATION :

Produit Cartsien
"

ARGUMENTS : 2 relations quelconques :

Slide 58

SCHMA DE

VALEUR DE
(attributs)

 

  
"

 

"

 :

  

   

 )  )
)   ) 


    



 

 

: ensemble de tous les nuplets ayant


 composants

dont les
premiers composants forment un nuplet de

et les  derniers composants forment un nuplet de 

Exemple de Produit Cartsien


Slide 59



 

 

Vertigo/CNAM, Paris

31

R" S

 

Slide 60

 
"

Jointure Naturelle

 
NOTATION :

ARGUMENTS : 2 relations quelconques :

Slide 61





  

   

   :



 



 

sont les attributs en commun.

)

)
)

 



 



  




            





 : ensemble de tous les nuplets ayant  
 attributs
VALEUR DE 
dont les premiers et  derniers composants forment un nuplet de et les
 
derniers composants forment un nuplet de  .

SCHMA DE

Vertigo/CNAM, Paris

32

Jointure Naturelle: Exemple


R

Slide 62

Slide 63

Jointure Naturelle





Soit 
    
     !   lensemble des attributs des 2
relations et
    lensemble des attributs en commun.

NOTATION :






 

!  "  


"
"

veut dire lattribut  de la relation

"



Vertigo/CNAM, Paris

33

Jointure Naturelle: Exemple


R

Slide 64




R.A

R.B

S.A

S.B

Slide 65

  
 

  

  "!#!

Vertigo/CNAM, Paris

34

Pour chaque nuplet

Jointure Naturelle: Algorithme

dans

 

et pour chaque nuplet dans  :

1. on concatne et et on obtient un nuplet qui a pour attributs

Slide 66

 ! 

  

 &

  $  

2. on ne le garde que si chaque attribut



 

  
  .

 




 

 de

)





 
est gal lattribut !
  de 

 

 

 

3. on limine les valeurs (colonnes) dupliques : on obtient un nuplet qui a pour


attributs

 ! 

   

 








Slide 67

NOTATION :



SCHMA DE

VALEUR DE

" &

   



" )&
 " &

  

, 

  

  





-Jointure

ARGUMENTS : 2 relations quelconques :

  !   

:
:

QUIJOINTURE : est lgalit.





 

    

   

 

" &




"

  



Vertigo/CNAM, Paris

35

Slide 68

T := R

Slide 69




-Jointure: Exemple

 
(T)
= R  
S

Vertigo/CNAM, Paris

36

quijointure: Exemple
R

Slide 70




T := R

Slide 71





 

(T)

=R

 

Vertigo/CNAM, Paris

37

quijointure vs. Jointure Naturelle

 

   

!  

  

 

   

  !   
 !       

  

1. Nom du propritaire de limmeuble o est situ lappartement occup par Durand :


Slide 72

!   

 

   

  !    !  



  ) )       ,       

"

2. Appartements occups par des propritaires dimmeuble :

! "  $  "  $  "




  

        !


 ) )           

  



Autre Exemple de REQUTE : Nom et adresse des clients qui ont command des
parpaings:
Schma Relationnel :
Slide 73

   
 $ #        _      

           !   
 

)

Requte Relationnelle :

 
 !

"#%$&$'#( )*&+-,/.10

32 4  2  " 2 3567 ( 8-9:9

1,

+0<;=;

Vertigo/CNAM, Paris

38

Union
ARGUMENTS : 2 relations de mme schma :

Slide 74

   

 &

 
  :   &  
SCHMA DE 
VALEUR DE : Union ensembliste sur   "  "
        

NOTATION :

Union: Exemple
R
Slide 75

Vertigo/CNAM, Paris

39

Diffrence
ARGUMENTS : 2 relations de mme schma :

Slide 76

   

  &

 
  :      
SCHMA DE 
VALEUR DE : Diffrence ensembliste sur  " $"
       
 




NOTATION :

Diffrence: Exemple
R

Slide 77

R-S

S-R

Vertigo/CNAM, Paris

40

Intersection
ARGUMENTS : 2 relations de mme schma :

Slide 78

   






 :      
SCHMA DE 
VALEUR DE : Intersection ensembliste sur   "
        
NOTATION :

 &

 " 

Intersection: Exemple
R

Slide 79

R-S

S = R - (R - S)

Vertigo/CNAM, Paris

41

Semijointure
ARGUMENTS : 2 relations quelconques :

Slide 80





 &

  



 



 $

)

 



 



 



sont les attributs en commun.






SCHMA DE

 :  &     




VALEUR DE 
: Projection sur les attributs de de la jointure naturelle

entre et  .
NOTATION :

Semijointure

Slide 81

La semijointure correspond une slection o la condition de slection est dfinie par le


biais dune autre relation.
Soit 

    

 lensemble des attributs de



 

!

 

.


Vertigo/CNAM, Paris

42

Semijointure: Exemple
R

Slide 82

! "%$ & $ )

 

Division: Exemple
REQUTE : Clients qui commandent tous les produits:
COMM
Slide 83

NUM

NOM

PNOM

QTE

Jean

briques

100

Jean

ciment

Jean

parpaing

Paul

briques

200

Paul

parpaing

Vincent

parpaing

Vertigo/CNAM, Paris

43

! $

     # 


R

Slide 84

 :

NOM

PNOM

Jean

briques

Jean

ciment

Jean

parpaing

Paul

briques

Paul

parpaing

Vincent

parpaing

   

PROD

PNOM
briques
ciment
parpaing

NOM
Jean

Division: Exemple
R

Slide 85

a
a
a
b
b
c
c
c
d
d

b
b
b
c
d
e
e
e
a
a

x
y
z
x
x
x
y
z
z
y

m
n
o
o
m
m
n
o
p
m

x
y
z

m
n
o

R\S

a
c

b
e

Vertigo/CNAM, Paris

44

Division: Exemple
R

Slide 86

Division
ARGUMENTS : 2 relations :

   

  ! 

o tous les attributs de  sont des attributs de


Slide 87





 
NOTATION :
   :  &  
SCHMA DE 
   :
VALEUR DE 
 0  ( 


  ;  ( 


 ; 0 ( 


  


  ;



Vertigo/CNAM, Paris

45

Division
Slide 88

 

La division sexprime en fonction du produit cartsien, de la projection et de la


      o
diffrence :

  

! " $


$ "  (     ! " $


$ "

 "




Renommage
NOTATION : 
ARGUMENTS : 1 relation :
Slide 89

" &
" &

   &  


SCHMA DE     :  


VALEUR DE      : 
de lattribut  a t remplac par

)

&   

 &        

. La valeur de R est inchange. Seul le nom

Vertigo/CNAM, Paris

46

Et si les attributs sont connus par leur rang?


On peut dans les oprations de lalgbre indiquer un attribut par son rang au lieu de son
nom.
Slide 90

Dans ce cas lordre des attributs dans une relation a de limportance.

" "" "

Lexemple de la slection :

          
           

Le premier attribut

Slide 91

 

 

au lieu de



 correspond a lattribut

 


SQL

Vertigo/CNAM, Paris

47

Principe
SQL (Structured Query Language) est le Langage de Requtes standard pour les
SGBD relationnels
Expression dune requte par un bloc SELECT FROM WHERE
Slide 92

SELECT
FROM
WHERE

liste des attributs a projeter 


liste des relations arguments 
conditions sur un ou plusieurs attributs 

Dans les requtes simples, la correspondance avec lalgbre relationnelle est facile
mettre en vidence.

Historique*
SQL86 - SQL89 ou SQL1 La rfrence de base:
Requtes compiles puis excutes depuis un programme dapplication.
Types de donnes simples (entiers, rels, chanes de caractres de taille fixe)
Oprations ensemblistes restreintes (UNION).
Slide 93

SQL92 ou SQL2 Standard actuel:


Requtes dynamiques: excution diffre ou immdiate
Types de donnes plus riches (intervalles, dates, chanes de caractres de taille
variable)
Diffrents types de jointures: jointure naturelle, jointure externe
Oprations ensemblistes: diffrence (EXCEPT), intersection (INTERSECT)
Renommage des attributs dans la clause SELECT

Vertigo/CNAM, Paris

48

SQL3 (en cours) : SQL devient un langage de programmation :


Extensions orientes-objet
Slide 94
Oprateur de fermeture transitive (recursion)
...

Slide 95

Expressions de Base

Vertigo/CNAM, Paris

49

Projection
Soit le schma de relation COMMANDES(NUM,CNOM,PNOM,QUANTITE)
REQUTE: Information sur toutes les commandes
SQL:
Slide 96

SELECT NUM,CNOM,PNOM,QUANTITE
FROM
COMMANDES
ou
SELECT *
FROM
COMMANDES

Projection : Distinct
Soit le schma de relation COMMANDES(NUM,CNOM,PNOM,QUANTITE)
REQUTE: Produits commands

Slide 97

SELECT PNOM
FROM
COMMANDES
NOTE: Contrairement lalgbre relationnelle, SQL nlimine pas les dupliqus. Pour
les liminer on utilise DISTINCT :
SELECT DISTINCT PNOM
FROM
COMMANDES
Le DISTINCT peut tre remplac par la clause UNIQUE dans certains systmes

Vertigo/CNAM, Paris

50

Slection
Soit le schma de relation COMMANDES(NUM,CNOM,PNOM,QUANTITE)

!  

"

REQUTE: Produits commands par Jean


Slide 98

ALGBRE:

 )        

 

 



SQL:
SELECT PNOM
FROM
COMMANDES
WHERE CNOM = JEAN

REQUTE: Produits commands par Jean en quantit suprieure 100


SQL:
Slide 99

SELECT
FROM
WHERE
AND

PNOM
COMMANDES
CNOM = JEAN
QUANTITE > 100

Vertigo/CNAM, Paris

51

Conditions de slection en SQL : Conditions simples


Les conditions de base sont exprimes de deux faons:
1. attribut comparateur valeur
Slide 100

2. attribut comparateur attribut


o

'     (

est




 

&

Soit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)


REQUTE: Produits de prix suprieur 200F

SQL:
Slide 101

SELECT PNOM
FROM
FOURNITURE
WHERE PRIX > 2000

Vertigo/CNAM, Paris

52

Soit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)


REQUTE: Produits dont le nom est celui du fournisseur
Slide 102

SQL:
SELECT PNOM
FROM
FOURNITURE
WHERE PNOM = FNOM

Le

'      ( 

Conditions de slection en SQL : Suite


est BETWEEN, LIKE, IN

Soit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)


REQUTE: Produits avec un cot entre 1000F et 2000F
Slide 103

SQL:

  

SELECT PNOM
FROM
FOURNITURE
WHERE PRIX BETWEEN 1000 AND 2000

NOTE: La condition BETWEEN


.

AND est quivalente

 

AND

Vertigo/CNAM, Paris

53

Soit le schma de relation COMMANDES(NUM,CNOM,PNOM,QUANTITE)


REQUTE: Clients dont le nom commence par "C"
SQL:
SELECT CNOM
FROM
COMMANDES
WHERE CNOM LIKE C%

Slide 104

NOTE: Le littral qui suit LIKE doit tre une chane de caractres ventuellement avec
des caractres jokers (_, %). Pas exprimable avec lalgbre relationnelle.

Soit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)


REQUTE: Produits avec un cot de 100F, de 200F ou de 300F
SQL:
SELECT PNOM
FROM
FOURNITURE
WHERE PRIX IN {100,200,300}

Slide 105

NOTE: La condition
.

 

IN

 

    est quivalente

 

OR



OR  OR

Vertigo/CNAM, Paris

54

Jointure
Soit le schma de relations

Slide 106

COMMANDES(NUM,CNOM,PNOM,QUANTITE)
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Nom, Cot, Fournisseur des Produits commands par Jean
ALGBRE :

!   $    $  




"

 )        




 

   



SQL :

Slide 107

SELECT COMMANDES.PNOM, PRIX, FNOM


FROM
COMMANDES, FOURNITURE
WHERE CNOM = JEAN AND
COMMANDES.PNOM = FOURNITURE.PNOM
NOTE: Cette requte est quivalente une jointure naturelle. Noter quil faut toujours
expliciter les attributs de jointure.
NOTE: SELECT COMMANDES.PNOM, PRIX, FNOM FROM COMMANDES,
FOURNITURE quivaut un produit cartsien des deux relations, suivi dune projection.

Vertigo/CNAM, Paris

55

Soit le schma de relation FOURNISSEUR(FNOM,STATUT,VILLE)


REQUTE: Fournisseurs qui habitent deux deux dans la mme ville
SQL:
SELECT PREM.FNOM, SECOND.FNOM
FROM
FOURNISSEUR PREM, FOURNISSEUR SECOND
WHERE PREM.VILLE = SECOND.VILLE AND
PREM.FNOM < SECOND.FNOM

Slide 108

La deuxime condition permet


1. llimination des paires (x,x)
2. dviter dobtenir au rsultat la fois (x,y) et (y,x)
NOTE: PREM reprsente une instance de FOURNISSEUR, SECOND une autre
instance de FOURNISSEUR.

Soit le schma de relation EMPLOYE(EMPNO,ENOM,DEPNO,SAL)


REQUTE: Nom et Salaire des Employs gagnant plus que lemploy de numro 12546
ALGBRE:

!    $   

!
"         
   "    

R1 :=

R2 :=
Slide 109

    
   
  



"

SQL:
SELECT E1.ENOM, E1.SAL
FROM
EMPLOYE E1, EMPLOYE E2
WHERE E2.EMPNO = 12546 AND
E1.SAL > E2.SAL




"



Vertigo/CNAM, Paris

56

Expressions Ensemblistes

Slide 110

Union
COMMANDES(NUM,CNOM,PNOM,QUANTITE)
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Produits qui cotent plus que 1000F ou ceux qui sont commands par Jean
ALGBRE:
Slide 111

   

   

   

 
  "

  
   

 

(    

 

 

 

Vertigo/CNAM, Paris

57

SQL:
SELECT
FROM
WHERE
UNION
SELECT
FROM
WHERE

Slide 112

PNOM
FOURNITURE
PRIX >= 1000
PNOM
COMMANDES
CNOM = Jean

 

 

NOTE: Lunion limine les dupliqus. Pour garder les dupliqus on utilise lopration
UNION ALL : le rsultat contient chaque n-uplet 
fois, o et sont le nombre
doccurrences du n-uplet dans la premire et la deuxime requte.

Diffrence
La diffrence ne fait pas partie du standard.
EMPLOYE(EMPNO,ENOM,DEPTNO,SAL)
DEPARTEMENT(DEPTNO,DNOM,LOC)

REQUTE: Dpartements sans employs


ALGBRE: 4
Slide 113

   

      



!%    

    


SQL:
SELECT
FROM
EXCEPT
SELECT
FROM

DEPTNO
DEPARTEMENT
DEPTNO
EMPLOYE

NOTE: La diffrence limine les dupliqus. Pour garder les dupliqus on utilise
lopration EXCEPT ALL :

Vertigo/CNAM, Paris

58

Intersection
Lintersection ne fait pas partie du standard.
EMPLOYE(EMPNO,ENOM,DEPTNO,SAL)
DEPARTEMENT(DEPTNO,DNOM,LOC)

Slide 114

REQUTE: Dpartements ayant des employs qui gagnent plus que 20000F et qui se
trouvent Paris
ALGBRE :

 










   



 % 

     

 



 

 

SQL:
SELECT DEPTNO
FROM
DEPARTEMENT
WHERE LOC = Paris
INTERSECT
SELECT DEPTNO
FROM
EMPLOYE
WHERE SAL > 20000

Slide 115

 

NOTE: Lintersection limine les dupliqus. Pour garder les dupliqus on utilise

lopration INTERSECT ALL : le rsultat contient chaque n-uplet
  fois, o
et sont le nombre doccurrences du n-uplet dans la premire et la deuxime requte.

Vertigo/CNAM, Paris

59

Imbrication des Requtes en SQL

Slide 116

Requtes imbriques simples


La Jointure sexprime par deux blocs SFW imbriqus
Soit le schma de relations
Slide 117

COMMANDES(NUM,CNOM,PNOM,QUANTITE)
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Nom, prix et fournisseurs des Produits commands par Jean
ALGBRE:

!   $    $  




"

 )        




 

   



Vertigo/CNAM, Paris

60

SQL:

Slide 118

SELECT PNOM,PRIX,FNOM
FROM
FOURNITURE
WHERE PNOM IN (SELECT PNOM
FROM
COMMANDES
WHERE CNOM = JEAN)
ou
SELECT
FROM
WHERE
AND

FOURNITURE.PNOM,PRIX,FNOM
FOURNITURE,COMMANDES
FOURNITURE.PNOM = COMMANDES.PNOM
CNOM = JEAN

La Diffrence sexprime aussi par deux blocs SFW imbriqus


Soit le schma de relations

Slide 119

EMPLOYE(EMPNO,ENOM,DEPNO,SAL)
DEPARTEMENT(DEPTNO,DNOM,LOC)
REQUTE: Dpartements sans employs
ALGBRE :

!%    

     



!4    

  




Vertigo/CNAM, Paris

61

SQL:
SELECT DEPTNO
FROM
DEPARTEMENT
WHERE DETPNO NOT IN (SELECT DISTINCT DEPTNO
FROM
EMPLOYE)
Slide 120

ou
SELECT DEPTNO
FROM DEPARTEMENT
EXCEPT
SELECT DISTINCT DEPTNO
FROM EMPLOYE

Requtes imbriques plus complexes : ANY - ALL


Soit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Fournisseurs des Briques un cot infrieur au cot maximum des Ardoises
SQL :
Slide 121

SELECT
FROM
WHERE
AND

FNOM
FOURNITURE
PNOM = Brique
PRIX < ANY (SELECT PRIX
FROM
FOURNITURE
WHERE PNOM = Ardoise)

ANY (SELECT F FROM . . . ) est vraie ssi la comparaison 


NOTE: La condition
est vraie au moins pour une valeur du rsultat du bloc (SELECT F FROM . . . ).

Vertigo/CNAM, Paris

62

Soit le schma de relations


COMMANDE(NUM,CNOM,PNOM,QUANTITE)
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Nom, Cot et Fournisseur des Produits commands par Jean
SQL:
Slide 122

SELECT PNOM, PRIX, FNOM


FROM
FOURNITURE
WHERE PNOM = ANY (SELECT PNOM
FROM
COMMANDE
WHERE CNOM = JEAN)
NOTE: Les prdicats IN et = ANY sont utiliss de faon quivalente.

Soit le schma de relation COMMANDE(NUM,CNOM,PNOM,QUANTITE)


REQUTE: Client ayant command la plus petite quantit de Briques
SQL:

Slide 123

SELECT CNOM
FROM
COMMANDE
WHERE PNOM = Brique AND
QUANTITE <= ALL (SELECT QUANTITE
FROM
COMMANDE
WHERE PNOM = Brique)
NOTE: La condition
ALL (SELECT F FROM . . . ) est vraie ssi la comparaison 
est vraie pour toutes les valeurs du rsultat du bloc (SELECT F FROM . . . ).

Vertigo/CNAM, Paris

63

Soit le schma de relations


EMPLOYE(EMPNO,ENOM,DEPNO,SAL)
DEPARTEMENT(DEPTNO,DNOM,LOC)
REQUTE: Dpartements sans employs
Slide 124

SQL:
SELECT DEPTNO
FROM
DEPARTEMENT
WHERE DETPNO NOT = ALL (SELECT DISTINCT DEPTNO
FROM
EMPLOYE)
NOTE: Les prdicats NOT IN et NOT = ALL sont utiliss de faon quivalente.

Requtes imbriques plus complexes : EXISTS


Soit le schma de relations
FOURNISSEUR(FNOM,STATUS,VILLE)
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Fournisseurs qui fournissent au moins un produit
Slide 125

SQL :

SELECT FNOM
FROM
FOURNISSEUR
WHERE EXISTS (SELECT *
FROM
FOURNITURE
WHERE FNOM = FOURNISSEUR.FNOM)

NOTE: La condition EXISTS (SELECT * FROM . . . ) est vraie ssi le rsultat du bloc
(SELECT F FROM . . . ) nest pas vide.

Vertigo/CNAM, Paris

64

Soit le schma de relations


FOURNISSEUR(FNOM,STATUS,VILLE)
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Fournisseurs qui ne fournissent aucun produit
SQL:
Slide 126

SELECT FNOM
FROM
FOURNISSEUR
WHERE NOT EXISTS (SELECT *
FROM
FOURNITURE
WHERE FNOM = FOURNISSEUR.FNOM)
NOTE: La condition NOT EXISTS (SELECT * FROM . . . ) est vraie ssi le rsultat du
bloc (SELECT F FROM . . . ) est vide.

Formes quivalentes de Quantification


Si est un des oprateurs de comparaison

  




La condition x ANY (SELECT Ri.y FROM R1,  Rn WHERE p) est quivalente

Slide 127

EXISTS (SELECT * FROM R1,  Rn WHERE p AND x Ri.y)


La condition x ALL (SELECT Ri.y FROM R1,  Rn WHERE p) est quivalente

NOT EXISTS (SELECT * FROM R1,  Rn WHERE (p) AND NOT (x Ri.y))

Vertigo/CNAM, Paris

Soit le schma de relations


COMMANDE(NUM,CNOM,PNOM,QUANTITE)
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Nom, prix et fournisseur des produits commands par Jean

Slide 128

SELECT PNOM, PRIX, FNOM FROM


FOURNITURE
WHERE EXISTS (SELECT * FROM
COMMANDE
WHERE CNOM = JEAN
AND PNOM = FOURNITURE.PNOM)
SELECT PNOM, PRIX, FNOM FROM
FOURNITURE
WHERE PNOM = ANY (SELECT PNOM FROM
COMMANDE
WHERE CNOM = JEAN)

Soit le schma de relation FOURNITURE(PNOM,FNOM,PRIX)


REQUTE: Fournisseurs qui fournissent au moins un produit avec un cot suprieur au
cot des produits fournis par Jean
SQL:

Slide 129

SELECT DISTINCT P1.FNOM


FROM
FOURNITURE P1
WHERE NOT EXISTS (SELECT * FROM
FOURNITURE P2
WHERE P2.FNOM = JEAN
AND
P1.PRIX <= P2.PRIX)
SELECT DISTINCT FNOM FROM
FOURNITURE
WHERE PRIX > ALL (SELECT PRIX FROM
FOURNITURE
WHERE FNOM = JEAN)

65

Vertigo/CNAM, Paris

66

Division
Soit le schma de relations
Slide 130

FOURNITURE(FNUM,PNUM,QUANTITE)
PRODUIT(PNUM,PNOM,PRIX)
FOURNISSEUR(FNUM,FNOM,STATUS,VILLE)
REQUTE: Fournisseurs qui fournissent tous les produits

ALGBRE:
R1 :=

!


     
R2 :=

         
  #
   
 #
      






SQL:

Slide 131

SELECT FNOM
FROM
FOURNISSEUR
WHERE NOT EXISTS
(SELECT *
FROM PRODUIT
WHERE NOT EXISTS
(SELECT *
FROM FOURNITURE
WHERE FOURNITURE.FNUM = FOURNISSEUR.FNUM
AND
FOURNITURE.PNUM = PRODUIT.PNUM))

Vertigo/CNAM, Paris

Slide 132

67

Fonctions de Calcul

COUNT, SUM, AVG, MIN, MAX


REQUTE: Nombre de Fournisseurs de Paris
SELECT COUNT(*) FROM
FOURNISSEUR
WHERE VILLE = Paris
Slide 133

REQUTE: Nombre de Fournisseurs qui fournissent actuellement des produits


SELECT COUNT(DISTINCT FNOM) FROM

FOURNITURE

NOTE: La fonction COUNT(*) compte le nombre des


-uplets du rsultat dune requte
sans limination des dupliqus ni vrification des valeurs nulles. Dans le cas contraire on
utilise la clause COUNT(UNIQUE . . . ).

Vertigo/CNAM, Paris

68

REQUTE: Quantit totale de Briques commandes


SELECT SUM (QUANTITE)
FROM
COMMANDES
WHERE PNOM = Brique
Slide 134
REQUTE: Cot moyen de Briques fournies
SELECT AVG (PRIX)
FROM
FOURNITURE
WHERE PNOM = Brique

ou

SELECT SUM (PRIX)/COUNT(PRIX)


FROM FOURNITURE
WHERE PNOM = Brique

REQUTE: Le prix des briques qui sont le plus chres.


Slide 135

SELECT MAX (PRIX)


FROM
FOURNITURE
WHERE PNOM = Briques;

Vertigo/CNAM, Paris

69

REQUTE: Fournisseurs des Briques au cot moyen des Briques

Slide 136

Slide 137

SELECT FNOM
FROM
FOURNITURE
WHERE PNOM = Brique AND
PRIX < (SELECT AVG(PRIX)
FROM
FOURNITURE
WHERE PNOM = Brique)

Oprations dAgrgation

Vertigo/CNAM, Paris

70

GROUP BY
REQUTE: Nombre de fournisseurs par ville
Slide 138

SELECT VILLE, COUNT(FNOM)


FROM
FOURNISSEUR
GROUP BY VILLE

LA BASE ET LE RESULTAT :

Slide 139

VILLE

FNOM

PARIS

TOTO

PARIS

DUPOND

LYON

DURAND

LYON

LUCIEN

LYON

REMI

VILLE

COUNT(FNOM)

PARIS

LYON

NOTE: La clause GROUP BY permet de prciser les attributs de partitionnement des


relations declares dans la clause FROM. Par exemple on regroupe les fournisseurs par
ville.

Vertigo/CNAM, Paris

71

REQUTE: Donner pour chaque produit fourni son cot moyen


SELECT PNOM, AVG (PRIX)
FROM
FOURNITURE
GROUP BY PNOM
RSULTAT:
Slide 140

PNOM

AVG (PRIX)

BRIQUE

10.5

ARDOISE

9.8

NOTE: Les fonctions de calcul appliques au rsultat de rgroupement sont directement


indiques dans la clause SELECT. Par exemple le calcul de la moyenne se fait par
produit obtenu au rsultat aprs le regroupement.

HAVING
REQUTE: Produits fournis par deux ou plusieurs fournisseurs avec un cot suprieur
de 100
Slide 141

SELECT PNOM
FROM
FOURNITURE
WHERE PRIX > 100
GROUP BY PNOM
HAVING COUNT(*) >= 2

Vertigo/CNAM, Paris

72

AVANT LA CLAUSE HAVING


PNOM
FNOM
PRIX

Slide 142

APRS LA CLAUSE HAVING


PNOM
FNOM
PRIX

BRIQUE

TOTO

105

ARDOISE

LUCIEN

110

ARDOISE

LUCIEN

110

ARDOISE

DURAND

120

ARDOISE

DURAND

120

NOTE: La clause HAVING permet dliminer des partitionnements, comme la clause


WHERE limine des
-uplets du rsultat dune requte.

REQUTE: Produits fournis et leur cot moyen pour les fournisseurs dont le sige est
Paris seulement si le cot minimum du produit est suprieur 1000F

Slide 143

SELECT PNOM, AVG(PRIX)


FROM
FOURNITURE, FOURNISSEUR
WHERE VILLE = Paris AND
FOURNITURE.FNOM = FOURNISSEUR.FNOM
GROUP BY PNOM
HAVING MIN(PRIX) > 1000

Vertigo/CNAM, Paris

73

ORDER BY
En gnral, le rsultat dune requte SQL nest pas tri. Pour trier le rsultat par rapport
aux valeurs dun ou de plusieurs attributs, on utilise la clause ORDER BY :
Slide 144

SELECT
FROM
WHERE
ORDER

VILLE, FNOM, PNOM


FOURNITURE, FOURNISSEUR
FOURNITURE.FNOM = FOURNISSEUR.FNOM
BY VILLE, FNOM DESC

Le rsultat est tri par les villes (ASC) et le noms des fournisseur dans lordre inverse
(DESC).

Slide 145

Cration et Mises jour avec SQL

Vertigo/CNAM, Paris

74

Valeurs NULL, par dfaut (*)


Valeur NULL pour un attribut: valeur spciale qui reprsente une information
inconnue (manquante, non fournie)
Slide 146
attention ce nest ni zro, ni chaine vide
pour forcer un attribut toujours avoir une valeur, option default, exemple: default
manquant: si lattribut na pas de valeur fournie, on la force manquant

Slide 147

1. 
de
2. 




La valeur NULL (*)


est inconnu (ni vrai, ni faux) si la valeur de  ou/et
     
).

est NULL si la valeur de  ou/et

est NULL (

est NULL ( est lun

est lun de  

  ).

Vertigo/CNAM, Paris

75

Trois Valeurs de Vrit (*)


Trois valeurs de vrit: vrai, faux et inconnu
1. vrai AND inconnu = inconnu
2. faux AND inconnu = faux
Slide 148

3. inconnu AND inconnu = inconnu


4. vrai OR inconnu = vrai
5. faux OR inconnu = inconnu
6. inconnu OR inconnu = inconnu
7. NOT inconnu = inconnu

Soit le schma de relation FOURNISSEUR(FNOM,STATUT,VILLE)


REQUTE: Les Fournisseurs de Paris.
SQL:
Slide 149

SELECT FNOM
FROM
FOURNISSEUR
WHERE VILLE = Paris
On ne trouve pas les fournisseurs avec VILLE = NULL !

Vertigo/CNAM, Paris

76

Soit le schma de relation FOURNISSEUR(FNOM,STATUT,VILLE)


REQUTE: Fournisseurs dont ladresse est inconnu.
SQL:
SELECT FNOM
FROM
FOURNISSEUR
WHERE VILLE IS NULL

Slide 150

NOTE: Le prdicat IS NULL (ou IS NOT NULL) nest pas exprimable en algbre
relationnelle.

Exemple (*)
Soit le schma de relation EMPLOYE(EMPNO,ENOM,DEPNO,SAL)
SQL:
Slide 151

SELECT E1.ENOM
FROM EMPLOYE E1, EMPLOYE E2
WHERE E1.SAL > 20000 OR
E1.SAL <= 20000
Est-ce quon trouve les noms de tous les employs sil y a des employs avec un salaire
inconnu ?

Vertigo/CNAM, Paris

77

Contraintes
Contraintes que lon peut exprimer lors de la cration de tables et que le systme peut
maintenir:
1. NOT NULL: un attribut doit toujours avoir une valeur
Slide 152

2. PRIMARY KEY: un (groupe d) attribut(s) constitue(nt) la cl primaire


3. UNIQUE un (groupe d) attribut(s) constitue(nt) une cl (secondaire).
4. FOREIGN KEY (A) REFERENCES R Lattribut A est la cl primaire de la table
R (cl trangre).
5. CHECK: contrainte sur la valeur

Cration de Tables
On cre une table avec la commande CREATE TABLE :
CREATE TABLE Produit(pnom VARCHAR(20),
prix INTEGER,
PRIMARY KEY (pnom));
Slide 153

CREATE TABLE Fournisseur(fnom VARCHAR(20) PRIMARY KEY,


ville VARCHAR(16));
CREATE TABLE Fourniture (pnom
fnom
FOREIGN KEY
FOREIGN KEY

VARCHAR(20) NOT NULL,


VARCHAR(20) NOT NULL,
(pnom) REFERENCES Produit,
(fnom) REFERENCES Fournisseur);

Vertigo/CNAM, Paris

78

Cration de Tables

Slide 154

CREATE TABLE ARTISTE (id INTEGER NOT NULL,


nom VARCHAR(30) NOT NULL,
anneeNaiss INTEGER, default 1900,
CHECK (anneeNaiss BETWEEN 1900 AND 2000),
film VARCHAR (30),
PRIMARY KEY (id),
UNIQUE(nom),
FOREIGN KEY (film) REFERENCES FILM)
CREATE TABLE FILM (idfilm VARCHAR (30) NOT NULL,...)

Intgrit rfrentielle
Le systme vrifie les contraintes dintgrit rfrentielle. Ses ractions dpendent des
options choisies lors de la cration des tables, par exemple:

Slide 155

1. si on insre un artiste avec lattribut film renseign, le film doit exister dans la table
Film
2. si un film est supprim dans la relation FILM, les nuplets qui rfrent ce film dans la
table ARTISTE ont lattribut film mis NULL (option ON DELETE SET NULL).
3. rpercute une maj de lid faite dans FILM, dans les nuplets qui rfrent ce film dans
ARTISTE (option ON UPDATE CASCADE).

Vertigo/CNAM, Paris

79

Destruction de Tables
On dtruit une table avec la commande DROP TABLE :
Slide 156

DROP TABLE Fourniture;


DROP TABLE Produit;
DROP TABLE Fournisseur;

Insertion de n-uplets
On insre dans une table avec la commande INSERT dont voici la syntaxe.
INSERT INTO
Slide 157

  

    VALUES 

 

Donc on donne deux listes : celles des attributs (les   ) de la table et celle des valeurs
respectives de chaque attribut (les  ).
1. Bien entendu, chaque   doit tre un attribut de

2. Les attributs non-indiqus restent NULL ou leur valeur par dfaut.


3. On doit toujours indiquer une valeur pour un attribut dclar NOT NULL

Vertigo/CNAM, Paris

80

Insertion : exemples
Insertion dune ligne dans Produit :
INSERT INTO Produit (pnom, prix)
VALUES (Ojax, 15)
Insertion de deux fournisseurs :
Slide 158
INSERT INTO Fournisseur (fnom, ville)
VALUES (BHV, Paris), (Casto, Paris)
Il est possible dinsrer plusieurs lignes en utilisant SELECT
INSERT INTO NomsProd (pnom)
SELECT DISTINCT pnom FROM Produit

Modification
On modifie une table avec la commande UPDATE dont voici la syntaxe.

UPDATE
SET  
WHERE condition

&

  



 



Contrairement INSERT, UPDATE sapplique un ensemble de lignes.


Slide 159
1. On numre les attributs que lon veut modifier.
2. On indique chaque fois la nouvelle valeur.
3. La clause WHERE condition permet de spcifier les lignes auxquelles sapplique la
mise jour. Elle est identique au WHERE du SELECT
Bien entendu, on ne peut pas violer les contraintes sur la table.

Vertigo/CNAM, Paris

81

Modification : exemples
Mise jour du prix dOjax :
UPDATE Produit SET prix=17
WHERE pnom = Ojax
Slide 160

Augmenter les prix de tous les produits fournis par BHV par 20% :
UPDATE Produit SET prix = prix*1.2
WHERE pnom in (SELECT pnom
FROM Fourniture
WHERE fnom = BHV)

Destruction
On dtruit une ou plusieurs lignes dans une table avec la commande DELETE

Slide 161

DELETE FROM
WHERE condition
Cest la plus simple des commandes de mise--jour puisque elle sapplique des lignes
et pas des attributs. Comme prcdemment, la clause WHERE condition est
indentique au WHERE du SELECT

Vertigo/CNAM, Paris

82

Destruction : exemples
Destruction des produits fournit par le BHV :

Slide 162

DELETE FROM Produit


WHERE pnom in (SELECT pnom
FROM Fourniture
WHERE fnom = BHV)
Destruction du BHV :
DELETE FROM Fournisseur
WHERE fnom = BHV

Slide 163

ORGANISATION PHYSIQUE DES DONNEES

Vertigo/CNAM, Paris

83

Organisation des donnes en mmoire secondaire


1. Le disque est divis en blocs physiques (ou pages)
de tailles gales.
Slide 164

2. Accs un bloc par son adresse (par exemple le numro


de cylindre + le numro de secteur + le numro de face).
3. Le bloc est lunit dchange entre la mmoire
secondaire et la mmoire principale

Les fichiers
Les donnes sont stockes dans des fichiers :
Un fichier occupe un ou plusieurs blocs sur un disque.
Slide 165

Laccs aux fichiers est gr par un logiciel


spcifique : le Systme de Gestion de Fichiers (SGF).
Un fichier est caractris par son nom.
Enfin un fichier est un ensemble darticles.

Vertigo/CNAM, Paris

84

Les articles
Un article est une squence de champs.
1. Articles en format fixe.
(a) La taille de chaque champ est fixe
Slide 166

(b) Taille et nom des champs dans le


descripteur de fichier.
2. Articles en format variable.
(a) La taille de chaque champ est variable.
(b) Len tte du champ donne la taille relle

Articles et pages
Ladresse dun article est constitue de
Slide 167

1. Ladresse de la page dans laquelle il se trouve.


2. Un entier : indice dune table
place en dbut de page qui contient ladresse
relle de larticle dans la page.

Vertigo/CNAM, Paris

85

Structure interne dune page


...
Article 2

vers une
autre page

Article 1

Slide 168

Article 3
PLACE LIBRE

Oprations sur les fichiers


1. Insrer un article.
2. Modifier un article
3. Dtruire un article
Slide 169

4. Rechercher un ou plusieurs article(s)


Par adresse
Par valeur dun ou plusieurs champs.
Hypothse: Le cot dune opration est surtout fonction
du nombre dE/S (nb de pages)

Vertigo/CNAM, Paris

86

Organisation de fichiers
Lorganisation dun fichier est caractrise
par le mode de rpartition des articles dans les pages
Slide 170

Il existe trois organisations principales :


1. Fichiers squentiels
2. Fichiers indexs (squentiels indexs et arbres-B)
3. Hachage

Exemple de rfrence
Organisation dun fichier contenant les articles suivants :

Slide 171

Vertigo 1958

Annie Hall 1977

Brazil 1984

Jurassic Park 1992

Twin Peaks 1990

Metropolis 1926

Underground 1995

Manhattan 1979

Easy Rider 1969

Reservoir Dogs 1992

Psychose 1960

Impitoyable 1992

Greystoke 1984

Casablanca 1942

Shining 1980

Smoke 1995

Vertigo/CNAM, Paris

87

Organisation squentielle
Insertion : les articles sont stocks squentiellement
dans les pages au fur et mesure de leur cration.
Slide 172

Recherche : le fichier est parcouru


squentiellement.
Destruction : recherche, puis destruction (par
marquage dun bit par exemple).
Modification : recherche, puis rcriture.

Cot des oprations


Nombre moyen de lectures/critures sur disque,
Fichier de
pages.
Recherche :
Slide 173

. On parcourt en moyenne la moiti du

fichier.
Insertion : 

    (


 si on vrifie que larticle nexiste pas avant d crire).

Destruction et mises--jour :


 

 .

organisation utilise pour les fichiers de petite taille.

Vertigo/CNAM, Paris

88

Fichiers squentiels tris


Lorsque la recherche est faite par valeur dun champ, celui-ci est appel cl daccs.
Si le fichier est tri sur sa cl daccs, on peut effectuer une recherche par dichotomie :
1. On lit la page qui est au milieu du fichier.
Slide 174

2. Selon la valeur de la cl du premier enregistrement


de cette page, on sait si larticle cherch est
avant ou aprs.
3. On recommence avec le demi-fichier o se trouve larticle
recherch.
Cot de lopration :




.

Ajout dun index


Lopration de recherche peut encore tre amliore en
utilisant un index sur un fichier tri.
Un index est un second fichier possdant les caractristiques
suivantes :
Slide 175

1. Les articles sont des couples (Valeur de cl,


Adresse de page)

2. Une occurence   dans un index signifie

que le premier article dans


la page du fichier tri a pour valeur de cl .
Lindex est lui-mme tri sur la valeur de cl.

Vertigo/CNAM, Paris

89

Exemple
Annie Hall

Greystocke

Metropolis

Smoke

Slide 176
Annie Hall 1977

Greystoke 1984

Metropolis 1926

Smoke 1995

Brazil 1984

Jurassic Park 1992

Psychose 1960

Twin Peaks 1990

Casablanca 1942

Impitoyable 1992

Reservoir Dogs 1992

Underground 1995

Easy Rider 1969

Manhattan 1979

Shining 1980

Vertigo 1958

Recherche avec un index


Chercher larticle dont la valeur de cl est  .
1. On recherche dans lindex (squentiellement ou - mieux - par
dichotomie) la plus grande valeur
Slide 177

telle que

 .

2. On lit la page dsigne par ladresse associe


dans lindex.

3. On cherche squentiellement les articles de cl  dans


cette page.

Vertigo/CNAM, Paris

90

Cot dune recherche avec ou sans index




Soit un fichier

contenant 1000 pages. On suppose quune

page dindex contient 100 entres, et que lindex occupe


donc 10 pages.


non tri et non index. Recherche


Slide 178

squentielle : 500 pages.




tri et non index. Recherche dichotomique :




  =10 pages

tri et index. Recherche dichotomique sur


lindex, puis lecture dune page :

 

 

 =

5 pages

Squentiel index
1. Un index est un fichier : on peut lui-mme lindexer :
Slide 179

2. On obtient un index plusieurs niveaux sur la cl.


3. Cest un arbre dont les feuilles constituent
le fichier et les noeuds internes lindex.

Vertigo/CNAM, Paris

91

Index niveau 2

Index niveau 1

Annie Hall

Annie Hall

Metropolis

Greystocke

Metropolis Smoke

Slide 180
Annie Hall 1977

Greystoke 1984

Metropolis 1926

Smoke 1995

Brazil 1984

Jurassic Park 1992

Psychose 1960

Twin Peaks 1990

Casablanca 1942

Impitoyable 1992

Reservoir Dogs 1992

Underground 1995

Easy Rider 1969

Manhattan 1979

Shining 1980

Vertigo 1958

Index dense et index non dense


Lindex ci-dessus est non dense : une
seule valeur de cl dans lindex pour lensemble des articles du


fichier index

situs dans une mme page.

Un index est dense ssi il existe une valeur de cl dans lindex


Slide 181

pour chaque article dans le fichier

Remarques :
1. On ne peut crer un index non-dense que sur un fichier
tri (et un seul index non-dense par fichier).
2. Un index non-dense est beaucoup moins volumineux
quun index dense.

Vertigo/CNAM, Paris

92

Exemple dindex dense


1926

1979

1926 1942 1958 1960 1969 1977

1979 1980 1984 1990 1992 1995

Slide 182
Greystoke 1984

Metropolis 1926

Smoke 1995

Brazil 1984

Jurassic Park 1992

Psychose 1960

Twin Peaks 1990

Casablanca 1942

Impitoyable 1992

Reservoir Dogs 1992

Underground 1995

Easy Rider 1969

Manhattan 1979

Shining 1980

Vertigo 1958

Annie Hall 1977

Autres oprations : insertion


Etant donn un article  de cl  , on effectue dabord une

recherche pour savoir dans quelle page il doit tre plac. Deux
cas de figure :
Slide 183

1. Il y une place libre dans . Dans ce cas on rorganise le

contenu de pour placer  la bonne place.

2. Il ny a plus de place dans . On cre une page de dbordement.


Exercice: montrer lindex non dense prcdent aprs linsertion de [Insomnia, 2002],
[Lhomme sans pass, 2002], [Le Destin fabuleux..., 2001], [Lauberge espagnole, 2002],
[Jonathan aura 25 ans en lan 2000, 1975].

Vertigo/CNAM, Paris

93

Autres oprations : destructions et mises--jour


Relativement facile en gnral :
1. On recherche larticle.
Slide 184
2. On applique lopration.
on peut avoir rorganiser le fichier et/ou
lindex, ce qui peut tre couteux.

Inconvnients du squentiel index


Organisation bien adapte aux fichiers qui
voluent peu. En cas de grossissement :
1. Une page est trop pleine

on cre une page

de dbordement.
Slide 185

2. On peut aboutir des chanes de dbordement


importantes pour certaines pages.
3. Le temps de rponse peut se dgrader et dpend de larticle
recherch
on a besoin dune structure permettant une
rorganisation dynamique sans dgradation de performances.

Vertigo/CNAM, Paris

Un arbre-B (pour

94

   ' (  ( (



Arbres-B
ou arbre quilibr)

est une structure arborescente dans laquelle tous les chemins de la


Slide 186

racine aux feuilles ont mme longueur.


Si le fichier grossit : la hirarchie grossit par le haut.
Larbre-B est utilis dans tous les SGBD relationnels
(avec des variantes).

Arbre-B : dfinition
Un arbre-B dordre k est un arbre quilibr tel que :
1. Chaque noeud est une page contenant au moins  et au
plus 

Slide 187

articles,  % .

2. Les articles dans un noeud sont tris sur la cl.


3. Chaque pre est un index pour lensemble de ses fils.
4. Chaque noeud contenant
articles a

5. La racine a 0 ou au moins deux fils.


On dcrit la variante appele arbre B+

 fils.

Vertigo/CNAM, Paris

95

Structure dun noeud dans un arbre-B dordre

C1

Slide 188

C2

P1

P2

Les   sont les cls des articles, les

Cn

...

Pn

Pn+1

 reprsentent

le reste des attributs dun article de cl   . Les

 sont les pointeurs vers les noeuds fils dans lindex. NB :

 

 

Exemple d arbre-B
Jurassic Park

Psychose

Easy Rider

Slide 189

Brazil

Impitoyable

Annie Hall
Brazil

Casablanca
Easy Rider

Jurassic Park

Greystoke
Impitoyable

Metropolis

Smoke

Shining

Twin Peaks

Underground

Manhattan
Metropolis

Psychose

Vertigo

Reservoir Dogs
Shining

Smoke

Twin Peaks

Vertigo/CNAM, Paris

96

Larbre B
Slide 190

Les feuilles de larbre contiennent des couples [valeur de cl, adresse darticle dans
le fichier index par larbre]
Les feuilles sont chanes entre elles

Recherche dans un arbre-B


Rechercher les articles de cl  .
A partir de la racine, appliquer rcursivement
lalgorithme suivant :
Slide 191

Soit  
1. Si 

 

 les valeurs de cls de la page courante.

  

 (ou

 ), on continue la recherche avec

le noeud rfrenc par   (ou  

   tel que

  ).

2. Sinon, il existe 

  

   , on continue avec la page

rfrence par le pointeur     .

Vertigo/CNAM, Paris

97

Insertion dans un arbre-B dordre


On recherche la feuille de larbre o le couple (cl, adresse) doit prendre place:


  lments) : on alloue une

On place les    premiers articles (ordonns selon la cl)
dans  et les  derniers dans   .
On insre le     article dans le pre de  . Son
pointeur gauche rfrence  , et son pointeur droit
rfrence   .

1. On ly insre. Si la page dborde (elle contient 


nouvelle page .
2.
Slide 192

3.

4. Si le pre dborde son tour, on continue

comme en 1 (sauf quen 2 on ne place que les k premiers articles dans et non les
k+1).
Exercice: insrer Amlie Poulain et Citizen Kane

Destruction dans un arbre-B dordre

Chercher la page contenant larticle. Si cest une feuille :


1. On dtruit larticle.
2. Sil reste

au moins  articles dans , cest fini. Sinon :

Slide 193

(a) Si une feuille soeur contient

plus de  articles, on effectue une permutation

pour rquilibrer les feuilles. Ex : destruction


de 

(b) Sinon on descend un article du pre dans , et


on rorganise le pre.
Ex : destruction de

((

     

Vertigo/CNAM, Paris

98

Supposons maintenant quon dtruise un article dans un noeud


interne. Il faut rorganiser :
1. On dtruit larticle
2. On le remplace par larticle qui a la plus grande valeur de
Slide 194

 

' (

( 

cl dans le sous-arbre gauche. Ex : destruction de


, rempla par 

 

3. On vient de retirer un article dans une feuille : si elle


contient moins de  lments, on procde

comme indiqu prcdemment.


toute destruction a donc un effet seulement local.

Quelques mesures pour larbre-B


Hauteur

dun arbre-B dordre  contenant


articles :


Slide 195



Exemple pour 
1. si
2. si

  :

 ,
"#
 ,


"



  


 




Les oprations daccs cotent au maximum

E/S.






Vertigo/CNAM, Paris

99

Hachage
Accs direct la page contenant larticle recherch :
1. On estime le nombre

de pages quil faut allouer au

fichier.
Slide 196

2. fonction de hachage 
de domaine

: toute valeur de la cl

associe un nombre entre 0 et

 

'

' ,

 .

 &



3. On range dans la page de numro tous les articles


dont la cl est telle que  

.

Exemple : hachage sur le fichier 


On suppose quune page contient 4 articles :
1. On alloue 5 pages au fichier.
Slide 197

2. On utilise une fonction de hachage 

dfinie comme suit :

(a) cl : nom dun film, on ne sintresse qu linitiale de ce nom.

(b) On numrote les lettres de lalphabet de 1 26 :


(c) Si

     , etc.
est une lettre de lalphabet,  ,
     
  ,

 

  .

Vertigo/CNAM, Paris

100

Jurassic Park 1992

Annie Hall 1977

Twin Peaks 1990

Underground 1995

Easy Rider 1969

Psychose 1960

Slide 198

Brazil 1984

Vertigo 1958

Greystoke 1984

4
Repertoire
Manhattan 1979
Impitoyable 1992

1.

'


Le nombre  ,

Metropolis 1926

Shining 1980

Casablanca 1942

Smoke 1995

Reservoir Dogs 1992

Remarques
nest pas une adresse de page, mais

  

lindice d1 table ou rpertoire .


de la page associe

contient ladresse

2. si ce rpertoire ne tient pas en mmoire centrale, la recherche


cote plus cher.
Slide 199

3. Une proprit essentielle de 

est que la

distribution des valeurs obtenues soit uniforme dans






4. Quand on alloue un nombre

de pages, il est prfrable

de prvoir un remplissage partiel(non uniformit,


grossissement du fichier). On a choisi 5 pages alors
que 4 (16 articles / 4) auraient suffi.

Vertigo/CNAM, Paris

101

Hachage : recherche
Etant donn une valeur de cl :
1. On calcule
Slide 200

  

 .

2. On consulte dans la case du rpertoire ladresse de la page

3. On lit la page et on y recherche larticle.


donc une recherche ne cote quune seule lecture.

Hachage : insertion

'

Recherche par   la page o placer  et ly insrer.

Si la page est pleine, il faut :


1. Allouer une nouvelle page
2. Chaner

Slide 201

  



(de dbordement).

3. Insrer  dans

 .

lors dune recherche, il faut donc en fait parcourir


la liste des pages chanes correspondant une valeur de

 .

Moins la rparttion est uniforme, plus il y aura de dbordements

Vertigo/CNAM, Paris

102

Jurassic Park 1992

Annie Hall 1977

Twin Peaks 1990

Underground 1995

Easy Rider 1969

Psychose 1960

Slide 202

Brazil 1984

Vertigo 1958

Greystoke 1984

4
Repertoire
Manhattan 1979
Impitoyable 1992

Citizen Kane 1941

Metropolis 1926

Shining 1980

Casablanca 1942

Smoke 1995

Reservoir Dogs 1992

Hachage : avantages et inconvnients


Intrt du hachage :
1. Trs rapide. Une seule E/S dans le meilleur des cas
pour une recherche (rpertoire rsidant en mmoire)
Slide 203

2. Le hachage, contrairement un index, noccupe aucune place


disque.
En revanche :
1. Il faut penser rorganiser les fichiers
qui voluent beaucoup.
2. Les recherches par intervalle sont impossibles.

Vertigo/CNAM, Paris

103

Comparatif

Slide 204

Organisation

Cot

Avantages

Inconvnients

Sequentiel

Simple

Trs coteux !

Efficace

Peu volutive

Index



Intervalles
Arbre-B

 

Efficace

Traverse

Intervalles
Hachage

1+

Le plus efficace

Intervalles impossibles