Vous êtes sur la page 1sur 168

Bases de donnes

M. RAMDANI

PLAN

1.
2.
3.
4.
5.
6.

Introduction sur les BD et SGBD


Modlisation des donnes
Modle relationnel
Algbre Relationnel
SQL
Modle relationnel Normalisation

Bibliographie

Ouvrages en Franais

Carrez C., Des Structures aux Bases de Donnes, Masson


Delobel A. et M. Adiba, Bases de donnes et Systmes
Relationnels, Dunod Informatique
Gardarin G., Matriser les Bases de Donnes : Modles et
langages, Eyrolles

Ouvrages en anglais

Ullman J.D., Principles of Database and Knowledge-Base


Systems, volumes 2, Computer Sciences Press
Dates C. J., an Introduction to Database Systemes,
Addison-Wesley
Abiteboul S., Hull R., Vianu V. Foundations of Databases,
Addison-Weslay

Exemples dapplications
Classiques

1.

Gestion (salaires, stock, )


Transactionnel (comptes, centrales dachat,.)
Rservations (avions, trains,)

Multimdia / Mobilit

2.

Documentation (bibliothques, journaux,)


Bureautique (textes, images, son), C.A.O
Gographique (cartes routires, thmatiques,), SIG

Bases de connaissances

3.

Systmes experts, knowledge management (KM ou GC)


Bases de Donnes Dductives, Datamaning

SGF vers SGBD


Historique

La notion de Base de donnes date des annes 60


Applications grant de grandes quantits de
donnes :

Donnes dans des fichiers


fortran, PL1, Pascal ou Cobol
Mthodes daccs standards

Dveloppement des techniques daccs aux


fichiers et enregistrements
Intgration des fichiers et applications ?
Reprsentation des liens plus complexes?

Redondance et incohrence
des donnes
Modifications
anarchiques

noCompte
100
200
300
400
600

nomClient
Hugh Paycheck
Dollard Cash
Hugh Paycheck
Ye San Le Su
Ye San Le Su

noPrt nomClient adresse


Client
1000
Hugh
Alma
Paycheck
2000
Ye San Le Montral
Su
3000
Hugh
Ottawa
Paycheck

adresseClient
Ottawa
Montral
Qubec
Montral
Montral
noTlphone

noTlphone
(999)999-9999
(888)888-8888
(555)555-5555
(777)777-7777
(777)777-7777

dateOuverture
5/ 05/ 1999
10/ 10/ 1999
10/ 10/ 1999
20/ 7/ 2000
15/ 10/ 2000

solde
1000.00
2000.00
1000.00
5.00
10.00

(444)444-4444

montant
Prt
10000.00

dateDbut taux
frquence
Intrt Paiement
10/ 6/ 2000 10
12

(777)777-7777

20000.00

20/ 7/ 2000

12

52

(999)999-9999

5000.00

15/ 8/ 2000

12

12

BD et SGBD

Donnes Bases de Donnes (B.D.)

Une B.D. est un GROS ENSEMBLE dinformations


STRUCTUREES mmorises sur un support
PERMANENT, accessible pour satisfaire simultanment
plusieurs utilisateurs en un temps opportun

LOGICIEL SGBD

Un Systme de gestion de Bases de Donns (SGBD) est un


logiciel de Haut Niveau qui permet de manipuler ces
informations.
Objectifs dun SGBD
Liens entre les donnes, cohrences des donnes,
souplesse
daccs aux donnes, scurit, Partage des donnes,
Indpendance des donnes

Intgrit smantique

Contrainte d'intgrit smantique


(semantic integrity constraint)

ou simplement contrainte d'intgrit

une rgle qui doit toujours tre respecte


par les donnes de la BD

ex: le solde d'un compte ne peut tre


ngatif

Support par SGBD (pas SGF)


8

Fiabilit
Exemple de panne
SGBD : mcanismes de
rcupration
Revenir un tat cohrent suite
une panne

journal des transactions

Scurit

SGF :

lecture, criture au niveau fichier

SGBD : contrle plus fin

types de donnes
enregistrements
champs
type dopration
cryptage
10

Gestion des transactions

Transaction

squence
d'oprations
de
manipulation de donnes excutes
par un programme

dlimites par une opration de


dbut et une opration de fin de
transaction

11

Indpendances des Donnes

Indpendance Physique

On peut modifier limplantation physique sans


modifier les programmes dapplication

Indpendance logique

On peut modifier les programmes dapplication sans


toucher limplantation

12

Modle de donnes

Les Systmes de gestion de fichiers ne permettent pas de


dfinir et de manipuler des liens complexes entre les donnes.

SGBD doit tre fond sur un modle de donnes


(Structuration des donnes).
Faon de reprsenter les informations du monde rel dans
le SGBD

entit-relation,
Rseau (CODASYL) (SOCRATE),
Hirarchique IMS dIBM,
Relationnel,
Orient-objet,
Modles smantiques,
..

13

Entit-Relation

propritaire

vhicule

N
VEH.

Mar
que

Type

Cou
leur

Date

personne

NCIN

Nom

Pr
nom

14

Modles de SGBD

Hirarchique
Pointeurs entre les
diffrents
enregistrements
Rseau
Pointeurs
Arborescence
modifie

15

Modles de SGBD

Relationnel (SGBDR)
Tables deux dimensions
Relations

Dductifs
Tables
Prdicats
Objets
Classes et instances

16

O et comment sont stockes les


donnes

Nature du support: bandes, disques


magntiques, disque optique
Organisations des fichiers : index, arbres-B,
hachage,
Sur quel site : centralis, distribu, sur
dautres bases accessibles par rseau

17

Hachage
Fichier dans lequel les articles sont placs dans
des paquets dont ladresse est calcule laide
dune fonction de hachage applique la cl:
La cl dun article est une donne dans larticle
fichier dtudiant
tudiant (N, Nom, prnom, Adresse, rsultats)
Le fichier est divis en p paquet de longueur L

Parmi les fonctions de hachage : le modulo


Soit un fichier de 47 paquets et des articles de cl
numrique. Ainsi larticle de cl 100 sera plac dans le
paquet 6

18

Index

Table permettant dassocier chaque cl


darticle ladresse relative de cet article

a5
0

a2
4

6 7 8

a57

a3
12

a10

a5 a2 a57 a3 a10
0

12 18

18

19

Architecture dun SGBD: ANSISPARC (1975)


Niveau Externe

Niveau Logique

Niveau Physique

20

Fonctionnalit dun SGBD

Chaque niveau du SGBD remplit (ralise) un


certain nombre de fonctions :

Niveau Physique

Gestion sur mmoire secondaire (fichier) de donnes,


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

ladministrateur

21

Fonctionnalit dun SGBD

Niveau Logique

Dfinition de la structure de donnes : Langage de


description de donnes (LDD)
Consultation et Mise jour des donnes : Langages
de Requtes (LR) et Langage de Manipulation de
Donnes (LMD)
Gestion de la confidentialit (Scurit)
Maintien de lintgrit
Concerne

ladministrateur et le
dveloppeur

22

Fonctionnalit dun SGBD

Niveau externe

Vues
Environnement de programmation (intgration
avec un langage de programmation
Interfaces conviviales et Langages de 4e
Gnration
Outils daides (e.g. conception de Schmas)
Outils de saisie, dimpression dtats
Dbogueurs
Passerelles (rseaux, autres SGBD, etc..)
Concerne

lutilisateur et le dveloppeur
23

Le Facteur Humain
Lditeur (le constructeur) du SGBD
Ladministrateur de la base

Rle de ladministrateur
discute avec les diffrents utilisateurs
conception dun schma logique (diffrentes
vues)
conception du schma physique
installation de la base et rglages fins (tuning)
gre lvolution de la base (nouveaux besoins,
utilisateurs)
Outils sa disposition fournis par lditeur du
SGBD

24

Le Facteur Humain

Utilisateur expert: informaticien connaissant


langages programmation et langages BD

Concepteur et programmeur dapplication


partir : besoins des diffrents utilisateurs,
crit lapplication pour des utilisateurs nafs

Utilisateur naf: du non spcialiste des SGBD


au non informaticien.

25

Mise en uvre dun SGBD

Monde rel
Modle rseau
Modlisation
Modle relationnel
.
Schma conceptuel
.
LDD<>MD
.
Schma physique
schma externe n
schma externe 1
LDD

26

En rsum, on veut Grer

Un Gros volume dinformations

Persistantes (annes) et fiables(protection


sur pannes)
Partageables (utilisateurs, programmes)
Manipules indpendamment de leur
reprsentation physique

27

Perspective historique

Modle de dfinition de donnes ( data definition model )

nature des types de donnes supports par le SGBD.

1re gnration (annes 70): rseau, hirarchique (CODASYL, IMS,...)


LMD navigationnel
2ime gnration (annes 80) :relationnel (Oracle, Ingres, DB2, SQL
server,)
LMD non procdural
3ime gnration (annes 90)
objet (Object Store, Versant,)
relationnel objet (Oracle8, DB2 UDS, Informix US)
4ime gnration ?
dductif ( Datalog ), entrept de donnes, data mining, support du
WEB (XML, XMLQL)
Modles pour conception
E/R, UML

28

Modlisation des donnes


Processus de conception d'une
BD
Monde rel

Analyse

Indpendant d'un
SGBD
Spcifications
de la BD

Conceptio
n

Schma
conceptuel
(MCD)

Transformation en
modle logique

Spcifique un
SGBD
Schma
logique
(Schma
relationnel)

Conceptio
n physique

Schma
interne
(tables)

29

Modlisation des donnes


Analyse

Avant de concevoir il faut rflchir au


problme et l'analyser

Validation par les utilisateurs avant la mise en


uvre du systme concret

Mthodes d'analyse: MERISE

30

Modlisation des donnes


Conception: MCD

MCD (modle conceptuel de donnes):


Reprsentation de l'information d'une
manire comprhensible aux diffrents
services de l'entreprise.

Description statique du systme


d'informations l'aide d'entits et d'
associations

31

Modlisation des donnes


Entits et Attributs

Entit:

Reprsentation dans le
systme d'information d'un
objet, matriel ou immatriel
ayant une existence propre et
conforme aux choix de
l'entreprise.(ex: une personne,
une voiture, un client, un
projet)

Client
Nom

Prnom

Attribut:

Proprit de l'entit (ex: date


de dbut de projet, couleur de
voiture, note d'tudiant)

32

Modlisation des donnes


Entits et Attributs

Prnom

Attribut compos
Subdivis en
attributs

Prnom
Nom

Prnom
Prnom

Attribut driv
Valeur calcule

ge

33

Modlisation des donnes


Entits et Attributs

Nom

Rue

Prnom

jj/mm/aa

Client

ge

Code postal

Ville

- Exemple dentit avec ses


attributs -

34

Modlisation des donnes


Types et occurrences

Type dentit: ex. CLIENT


Occurrences du type CLIENT:
Albert DUPONT
James WEST
Marie MARTIN
Gaston DURAND

35

Modlisation des donnes


Types et occurrences

Type dattribut
Nom et Prnom: chanes de caractres
Date de naissance: Date
ge: nombre entier

Occurrences dattributs
Ex.: Bleu, rouge sont les occurrences dun
attribut Couleur

36

Modlisation des donnes


Identifiant
Liste des
clients
Nom

Prnom

Date de
naissance

Etc

DUPONT

Albert

01/06/70

WEST

James

03/09/63

MARTIN

Marie

05/06/78

DUPONT

Albert

03/05/82

Problme: Comment distinguer les Dupont ?


37

Modlisation des donnes


Identifiant

Solution: Ajouter un attribut Nclient

N client

Nom

Prnom

Date de
naissance

Etc

DUPONT

Albert

01/06/70

WEST

James

03/09/63

MARTIN

Marie

05/06/78

DUPONT

Albert

03/05/82

38

Modlisation des donnes


Identifiant

Le numro de client est un identifiant. Un


identifiant caractrise de faon unique les
occurrences dun type dentit

Notation graphique:

CLIENT

Numro

39

Modlisation des donnes


Associations et cardinalits

Association: liaison perue entre les Entits


Ex. Les clients commandent des produits

CLIENT

Commande

PRODUIT

Nbre dentits participantes=degr de


lassociation

40

Modlisation des donnes


Associations et cardinalits

Associations rcursives et rles


Association rcursive
Une mme occurrence dentit peut
jouer plusieurs rles dans la mme
association (ex. employs et suprieur
hirarchiques)
Rle
Fonction de chaque type dentit
Est suprieur de
participant
Hirarchie
EMPLOYES
Est subalterne de

41

Modlisation des donnes


Associations et cardinalits

Associations 1-1
Ex. un client donn ne commande quun seul
produit. Un produit donn nest command
que par un seul client

CLIENT

1,1

Commande

1,1

PRODUIT

X,Y: X cardinalit mini et Y cardinalit maxi


Lire un client commande X Y produits

42

Modlisation des donnes


Associations et cardinalits

Associations 1-N
Ex. un client donn commande plusieurs
produits. Un produit donn nest command
que par un seul client.

CLIENT

1,N

Commande

1,1

PRODUIT

La cardinalit un plusieurs (1-N) peut


aussi tre 0 plusieurs (0-N).

43

Modlisation des donnes


Associations et cardinalits

Associations M-N
EX. un client donn commande plusieurs
produits. Un produit donn est command
par plusieurs clients.

CLIENT

1,N

Commande

1,N

PRODUIT

44

Modlisation des donnes


Associations et cardinalits

Attributs dassociations
Dans une association M-N il est possible de
caractriser lassociation par des attributs.
Ex. une commande est passe une Date
donnes et concerne une Quantit de
produit fixe.
CLIENT

1,N

Date

Commande

1,N

PRODUIT

Quantit
45

Modlisation des donnes


Exemple complet

Spcifications
Les clients sont caractriss par un numro
de client, leur nom, prnom, date de
naissance, rue, code postal et ville.
Ils commandent des produits une date
donne et dans une quantit donne.
Les produits sont caractriss par un
numro de produit, leur dsignation et leur
prix unitaire.

46

Modlisation des donnes


Exemple complet

Spcifications (suite)
Chaque produit est fourni par un
fournisseur unique (mais un fournisseur
peut fournir plusieurs produits).
Les fournisseurs sont caractriss par un
numro de fournisseur et leur raison
sociale

47

Modlisation des donnes


Exemple complet

Marche suivre pour produire le MCD


1) identifier les donnes
2) identifier les associations entre entits
3) identifier les attributs de chaque entit et
de chaque association
4) valuer les cardinalits des associations

48

Modlisation des donnes


Exemple complet

Nom

N produit

N client

Date

Quantit

Dsignation

Prnom
Date de
naissance

Client

Commande

1,N

1,N

Produit
1,1 Prix unitaire

Rue

Code postal

Ville

fourni
N fourn.

Raison soc.

1,N

Fournisseur
49

Modle relationnel
Relations et attributs

Une relation R est un ensemble dattributs


{A1,A2,,An}
Ex. La relation Produit est lensemble des
attributs {NumProd, Dsignation,Prix
unitaire}

50

Modle relationnel
Gnralits

Le modle relationnel est un modle associ


aux SGBD relationnels
Objectifs
Indpendance physique
Traitement de la redondance
Langages faciles utiliser
Chaque attribut Ai prend ses valeurs dans un
domaine dom(Ai)
Ex. PU ]0, 10000]

51

Modle relationnel

Relations, attributs et tuples

Un tuple est un ensemble de valeurs


t=<V1,V2,,Vn> o Vi dom(Ai)
Ex. <112,Raquette de tennis, 300> est un
tuple de la relation produit

Notation: R(A1,A2,,An)
Ex. PRODUIT(Nproduit,dsignation,PU)

52

Modle relationnel

Contraintes dintgrit

Cl primaire:
ensemble dattributs dont les valeurs
permettent de distinguer les tuples les uns
des autres (identifiant)
Ex. Nproduit cl primaire de la relation
PRODUIT
Notation: clef primaire

53

Modle relationnel

Contraintes dintgrit

Cl trangre:
Attribut qui est cl primaire dune autre
relation
Ex. connatre le fournisseur de chaque
produit ajout de lattribut Nfournisseur
la relation PRODUIT
Notation: Clef trangre

54

Modle relationnel

Contraintes dintgrit

Notation
Clef primaire
Clef secondaire
Ex. PRODUIT(Nproduit,
dsignation,PU,Nfournisseur)

Contraintes de domaine
PU 0 et PU 10000

55

Modle relationnel

Traduction MCD - relationnel

Chaque Entit devient une Relation


Les attributs de lentit deviennent les
attributs de la relation. Seuls les attributs
simple des attributs composs sont inclus.
Lidentifiant de lentit devient cl primaire
de la relation.
Ex. CLIENT(Nclient,nom,prnom,date
de naissance,rue,CP,ville)

56

Modle relationnel

Traduction MCD - relationnel

Chaque association 1-1 est prise en compte en


incluant la clef primaire dune des relations
comme clef trangre dans lautre relation

Ex. Si un client peut possder un compte


COMPTE(Ncompte,Solde)
CLIENT(Nclient,,Ncompte)

57

Modle relationnel

Traduction MCD - relationnel

Chaque association 1-N est prise en compte


en incluant la clef primaire de la relation dont
la cardinalit maximale est N comme clef
trangre dans lautre relation
Exemple:
PRODUIT(Nproduit, dsi,
,Nfournisseur)
FOURNISSEUR(Nfournisseur, raison
sociale)

58

Modle relationnel

Traduction MCD - relationnel

Chaque relation M-N est prise en compte en


crant une nouvelle relation dont la clef
primaire est la concatnation des clefs
primaires des relations participantes. Les
attributs de lassociation sont insrs dans
cette nouvelle relation

Ex.
COMMANDE(Nclient,Nproduit,Date,Qua
ntit)

59

Modle relationnel

Traduction MCD - relationnel

Schma relationnel complet

CLIENT(Nclient,nom,prnom,Date de
naissance,Rue,CP,Ville)

PRODUIT(Nproduit,dsignation,PU,Nfournisse
ur)

FOURNISSEUR(Nfournisseur,raison sociale)

COMMANDE(Nclient,Nproduit,Date,Quantit)

60

Modle Relationnel:
Dfinitions

Un Domaine est un ensemble de valeurs. Exemples : {0,1}, N,


lensemble des chanes de caractres, lensemble des chanes
de caractres de longueur 10.

Un ATTRIBUT prend ses valeurs dans un domaine. Plusieurs


attributs peuvent avoir le mme domaine.

Un NUPLET est une liste de n valeurs (v1,,vn) o chaque


valeur vi est la valeur dun attribut Ai de domaine Di : vi Di

Le PRODUIT CARTSIEN D1xxDn entre des domaines


D1,,Dn est lensemble de tous les nuplets (v1,,vn)
o vi Di

61

Dfinition (suite 1)

RELATION : soit D1,,Dn les domaines respectifs des attributs A1,


,An.
Une relation R dfinie sur les attributs A1,,An est un sousensemble fini du produit cartsien D1xxDn est un ensemble de
nuplets.

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.

62

Dfinition (suite 2)

LUNIVERS DATTRIBUTS DUNE BASE DE


DONNES est lensemble de tous les attributs des
relations de la base.

Le SCHMA DUNE RELATION R est dfini par le


nom de la relation et la liste des attributs avec pour
chaque attribut son domaine. Notation :
R(A1:D1,,An:Dn) ou plus simplement : R(A1,,An)

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

63

Dfinition (suite 3)

Si la relation a n attributs (n colonnes), n est


appel ARIT de la relation.
La relation VEHICULE est darit 3
Le SCHMA DUNE BASE DE DONNES
est lensemble des schmas de ses relations.

64

Exemple de Base de Donnes

SCHMA :
FOURNISSEURS (FNOM:CHAR(20),
FADRESSE:CHAR(30))
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)

65

Exemple de B.D. (1)

UNIVERS DATTRIBUTS :
U={FNOM, PNOM, NOM, FADRESSE,
CADRESSE, PRIX, NUM_CODE, QUANTITE,
BALANCE}

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

66

Modle Relationnelle :
Oprations et Langages

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
Modification dune relation : insertion, suppression et maj des
nuplets
Requtes : consultation dune relation ou calcul dune nouvelle
relation

GESTION DES TRANSACTIONS

GESTION DES VUES

67

Langages de Requtes Relationnels

POUVOIR DEXPRESSION : Quest-ce quon


peut calculer ? Quelles oprations peut-on
faire ?
Les langages de requte relationnels utilisent
deux approches :
- calcul relationnel
- algbre relationnelle
Les deux approches ont mme pouvoir
dexpression.

68

Algbre Relationnelle

Une opration prend en entre une ou deux relations


le rsultat est toujours une relation

5 Oprations de base pour exprimer toutes les


requtes :

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

69

Projection

LA PROJECTION LIMINE UNE OU


PLUSIEURS COLONNES DUNE RELATION.
Notation :
(A1,A2,An) (R)

70

Projection: Exemples
a) On limine la colonne C dans la relation R
R
ABC
a b c
d a b
c b d
a b e
e e a

A,B(R)
<

<

A
a
d
c
e

B
b
a
b
e

Le nuplet (a,b) napparat quune fois dans la relation


R bien quil existe deux nuplets (a,b,c) et (a,b,e) dans
R.

71

Projection: Exemples
b) On limine la colonne B dans la relation R
R
A
a
d
c
a
e

A,C(R)
B
b
a
b
b
e

C
c <
b
d
e <
a

A
a
d
c
a
e

C
c
b
d
e
e

72

Slection

Slection sur la condition C :

On garde les nuplets qui satisfont C.


NOTATION :
C ( R )

73

Slection: Exemples
a) On slectionne les nuplets dans la relation R
tels que lattribut B vaut b :
RABC
ABC
a b1
B= b( R )
a b1
d
c
a
e

a2
b3
b4
e5

c b3
a b4

74

Slection: Exemples
b) On slectionne les nuplets :
(A=a v B= a) C3

R:

a 2

ABC
a b1
d a2
c b3
a b4
e e5

AB C

(A=av B=a) C3( R )

a b 1
d

75

Slection: Exemples
c) On slectionne les nuplets tels que la 1re et
la 2me colonne sont identiques :
R:
ABC
AB C
a b1
A= B( R )
e e 5
d a2

c b3
a b4
e e5

76

Condition de Slection
La condition C dune slection peut tre une
formule logique quelconque avec des et ()
et des ou () entre termes de la forme Ai Aj
et Ai a O :
Ai et Aj sont des attributs,
a est un lment (une valeur) du domaine de
Ai,
est lun de =,<,<=,>,>=,!=

77

Expressions de lAlgbre Relationnelle

le rsultat dune opration est une relation


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

=>Les oprations peuvent tre composes


pour former des expressions de lalgbre
relationnelle.

78

Expressions de lAlgbre Relationnelle


EXEMPLE : COMMANDES (NOM, PNOM,
NUM, QTE)
R=

( NOM=Jean (COMMANDES) )
-----------------------------R
La relation R(NOM, PNOM, NUM, QTE)
contient les nuplets dont lattribut NOM a la
valeur Jean
La relation R(PNOM) contient tous les
produits commands par Jean.
PNOM

79

Produit Cartsien

NOTATION : RS
ARGUMENTS : 2 relations quelconques:
R(A1,..,An) S(B1,Bk)

SCHMA DE T=RS : T(A1,..,An, B1,Bk)

VALEUR DE T=RS : ensemble de tous les


nuplets ayant n+k composants (attributs)

dont les premiers composants forment un nuplet de


R
et les derniers composants forment un nuplet de S

80

Exemple de Produit Cartsien

|R|

RxS

A B

1 1
1 2
3 4

a
a
b

b
b
a

a
c
a

|S|

|R|x |S|

A B C D E
1

81

Opration renommer ()

Quels sont les Clients qui ont le mme numro de


tlphone?

Client2
(Client)

Client.noClient, Client2.noClient, (
Client2 (Client)))

Client.noTlphone = Client2.noTlphone

Client. noClient
40
40
60
60

(Client

Client2.noClient
40
60
40
60

82

Renommer les colonnes

Quels sont les Clients qui ont le mme numro de


tlphone?

Client2(noClient2, nomClient2,

(Client)
noClient, noClient2 (Client Client2(noClient2, nomClient2,
noTlphone) (Client)) Client. noClient Client2.noClient
noTlphone)

40
40
60
60

40
60
40
60

83

Jointure Naturelle

NOTATION : RS

ARGUMENTS : 2 relations quelconques:


R(A1,..,Am ,X1,..,Xk) S(B1,Bn ,X1,..,Xk)

SCHMA DE T=R S : T(A1,..,Am, B1,Bn ,X1,..,Xk)

VALEUR DE T=R S : ensemble de tous les nuplets


ayant m+n+k composants (attributs)

Dont les m premiers et les k derniers composants forment


un nuplet de R

et les n+k derniers composants forment un nuplet de S

84

Jointure Naturelle : Exemple

RS

B C D

A B C D

b c

b c

a d

b
85

Jointure Naturelle

Soit U={A1,..,Am, B1,Bn ,X1,..,Xk} lensemble des


attributs de relations et V={X1,..,Xk} lensemble
des attributs en commun
RS =U(AV :R.A=S.A(Rx S))
Notation : R.A veut dire lattribut A de la
relation R

86

Jointure Naturelle :Exemple

R.
A

R.
B

S.A S.B D

A B D

1 a b

2 c b

4 a a

RxS

87

Jointure Naturelle : Exemple


RS
A

RS =R.A,R.B,D(R.A=S.AR.B=S.B(Rx S))

88

Jointure Naturelle : Algorithme


Pour chaque a nuplet dans R et pour chaque b nuplet
dans S:
On concatne a et b et on obtient un nuplet qui a pour
attributs
bn ,X1,..,Xk
A1,..,Ama, X1,..,Xk,B1,B
On ne garde que si chaque attribut Xi de a est gal
lattribut Xi de b: i=1..K a.Xi=b.Xi
On limine les valeurs (les colonnes) dupliques:
A1,..,Am,B1,Bn ,X1,..,Xk

89

jointure

NOTATION : RAiBiS , {=, , , , <, >}

ARGUMENTS : 2 relations quelconques:


R(A1,..,Am ) S(B1,Bn )

SCHMA DE T= RAiBiS : T(A1,..,Am, B1,Bn )

VALEUR DE T= RAiBiS :T=AiBi(RxS))

Equijointure : est lgalit


90

Jointure : Exemple
RxS
S

91

Jointure : Exemple
T=AC(RxS) =R AC S
A

T=B=D(RxS) =R B=D S
A

Equijointure

92

IMMEUBLE(ADI,NBETAGES,AGES,DATESC,PROP)
APPIM(ADI,NAP, OCCUP, ETAGE)
Nom du propritaire de limmeuble o est situ
lappartement occup par Durand :
PROP(IMMEUBLE OCCUP="Durand"(APPIM))
Appartements occups par des propritaires
dimmeuble :
ADI,NAP,ETAGE (IMMEUBLE OCCUP=PROPAPPIM)
93

Autre Exemple de REQUTE : Nom et adresse des


clients qui ont command des parpaings:
Schma Relationnel :
COMMANDES (PNOM,CNOM,NUM_COM,QTE)
CLIENTS(CNOM,CADRESSE,BALANCE)
CNOM,CADRESSZ(CLIENTS
PNOM="parpaing"(COMMANDES))
94

UNION

NOTATION : RS
ARGUMENTS : 2 relations quelconques:
R(A1,..,Am) S(A1,Am)

SCHMA DE T= RS : T(A1,..,Am)

VALEUR DE T: union ensembliste sur D1x


xDm
T={t| tR t S}

95

UNION : Exemple

S A

RS A

96

Diffrence

NOTATION : R-S
ARGUMENTS : 2 relations quelconques:
R(A1,..,Am) S(A1,Am)

SCHMA DE T= R-S : T(A1,..,Am)

VALEUR DE T: diffrence ensembliste sur


D1xxDm
T={t| tR t S}

97

Diffrence : Exemple
R
A

S A

R-S A

98

INTERSECTION

NOTATION : RS

ARGUMENTS : 2 relations quelconques:


R(A1,..,Am) S(A1,Am)

SCHMA DE T= R S : T(A1,..,Am)

VALEUR DE T: intersection ensembliste sur


D1xxDm

T={t| t R t S}
99

INTERSECTION: Exemple

S A

RS A

B
A

RS = R-(R-S)

100

Semijointure

NOTATION : RS

ARGUMENTS : 2 relations quelconques:


R(A1,..,Am ,X1,..,Xk) S(B1,Bn

,X1,..,Xk)

SCHMA DE T=R S : T(A1,..,Am ,X1,..,Xk)

VALEUR DE T=R S :Projection sur les


attributs de R de la jointure naturelle
entre S et R

101

Semijointure

La semijointure correspond une slection o la


condition de slection est dfinie par le biais dune
autre relation.
Soit U={A1,..,Am} lensemble des attributs de R
R S =URS

102

Semijointure : Exemple

R S =A,B,CRS

B C D

b c

b c

a d

103

Division: Exemple

REQUTE : Clients qui commandent tous les produits:


COMM

NU
M

NOM

PNOM QTE

1
2
3
4
5
6

Jean
Jean
Jean
Paul
Paul
Vincen
t

brique
s
ciment
parpai
ng
brique
s
Parpai
ng
parpai
ng

100
2
2
200
3
3

104

Division: Exemple

R=NOM,PNOM(COMM)
R

NOM

PNOM

Jean
Jean
Jean
Paul
Paul
Vincen
t

brique
s
ciment
parpai
ng
brique
s
Parpai
ng
parpai
ng

PROD

PNOM
brique
s
ciment
parpai
ng

RPROD

NOM
Jean

105

Division: Exemple
R

RS

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
p

x
y
z

m
n
o

a
c

b
e

106

Division

NOTATION : R S

ARGUMENTS : 2 relations:
R(A1,..,Am ,X1,..,Xk) S( X1,..,Xk)

O tous les attributs de S sont des


attributs de R

SCHMA DE T=R S : T(A1,..,Am )

VALEUR DE T=R S :

R S={(a1,..,am)| (x1,,xk) S :(a1,..,am, x1,,xk)


R}

107

Division
La division sexprime en fonction du produit
cartsien, de la projection et de la diffrence :
R S=R1-R2 o
R1= A1,..,Am (R) et R2= A1,..,Am ((R1xS)-R)

108

SQL prsentation Gnrale

109

Principe
SQL (Structured Query Language) est le Langage de
Requtes standard pour les SGBD relationnels (Standard
dvelopp par ANSI et adopt par ISO/IEC 1986)
Expression dune requte par un bloc SELECT FROM
WHERE
SELECT <liste des attributs a projeter>
FROM <liste des relations argument>
WHERE <conditions sur un ou plusieurs attributs>
Dans les requtes simples, la correspondance avec
lalgbre relationnelle est facile mettre en vidence.

110

EXPRESSION DE BASE

111

Projection
Soit le schma de relation COMMANDES
(NUM,CNOM,PNOM,QUANTITE)
REQUTE: Information sur toutes les commandes
SQL:
SELECT NUM,CNOM,PNOM,QUANTITE
FROM COMMANDES
ou
SELECT *
FROM COMMANDES

112

Projection :
Distinct
Soit le schma de relation
COMMANDES(NUM,CNOM,PNOM,QUANTITE)
REQUTE: Produits commands
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

113

Slection
Soit le schma de relation
COMMANDES(NUM,CNOM,PNOM,QUANTITE)
REQUTE: Produits commands par Jean

PNOM (CNOM=JEAN(COMMANDES))
SQL:
SELECT PNOM
FROM COMMANDES
WHERE CNOM = JEAN
REQUTE : produits commands par Jean en quantit suprieur
100
SELECT PNOM
FROM COMMANDES

114

Conditions de slection en SQL :


Conditions simples
Les conditions de base sont exprimes de deux faons:
1. attribut comparateur valeur
2. attribut comparateur attribut
O comparateur est =,<, >, <>,,
Soit le schma de relation
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Produits de prix suprieur 200F
SQL:
SELECT PNOM
FROM FOURNITURE
WHERE PRIX > 2000

115

Soit le schma de relation


FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Produits dont le nom est celui du fournisseur
SQL:
SELECT PNOM
FROM FOURNITURE
WHERE PNOM = FNOM

116

Conditions de slection en SQL : Suite

Le comparateur est BETWEEN, LIKE, IS NULL, IN


Soit le schma de relation
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Produits avec un cot entre 1000F et 2000F
SQL:
SELECT PNOM
FROM FOURNITURE
WHERE PRIX BETWEEN 1000 AND 2000
NOTE: La condition y BETWEEN x AND z est quivalente
y <=z AND x <= y (NOT BETWEEN)

117

Conditions de slection en SQL : Suite


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%
NOTE: Le littral qui suit LIKE doit tre une chane de
caractres ventuellement avec des caractres jokers (_, %).
Pas exprimable avec lalgbre relationnelle.

118

Conditions de slection en SQL : Suite

Soit le schma de relation


FOURNISSEUR(FNOM,STATUT,VILLE)
REQUTE: Les Fournisseurs de Paris.
SQL:
SELECT FNOM
FROM FOURNISSEUR
WHERE VILLE = Paris
On ne trouve pas les fournisseurs avec VILLE = NULL !

119

Conditions de slection en SQL : Suite

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}
120

Jointure
Soit le schma de relations
COMMANDES(NUM,CNOM,PNOM,QUANTITE)
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Nom, Cot, Fournisseur des Produits commands
par Jean
SQL :
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,

121

Opration de jointure
SQL2

opration

Algbre

R1 CROSS JOIN R2
R1 JOIN R2 ON R1.A <
R2.B
R1 NATURAL JOIN R2

produit
R1R2
cartsien
R1 R1.A < R2.B R2
thta-jointure
R1 R2
Jointure
naturelle

122

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


REQUTE: Fournisseurs qui habitent deux deux dans la mme ville
SQL:
SELECTPREM.FNOM,SECOND.FNOM
FROMFOURNISSEURPREM,FOURNISSEURSECOND
WHEREPREM.VILLE=SECOND.VILLEAND
PREM.FNOM<SECOND.FNOM
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.

123

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


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

SQL:
SELECTE1.ENOM,E1.SAL
FROMEMPLOYEE1,EMPLOYEE2
WHEREE2.EMPNO=12546AND
E1.SAL>E2.SAL
124

Union

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

125

SQL:
SELECTPNOM
FROMFOURNITURE
WHEREPRIX>=1000
UNION
SELECTPNOM
FROMCOMMANDES
WHERECNOM=Jean

NOTE: Lunion limine les dupliqus. Pour garder les dupliqus on utilise
lopration UNIONALL

126

Intersection

Lintersection ne fait pas partie du standard.


EMPLOYE(EMPNO,ENOM,DEPTNO,SAL)
DEPARTEMENT(DEPTNO,DNOM,LOC)
REQUTE: Dpartements ayant des employs qui gagnent
plus que 20000F et qui se trouvent Paris

127

SQL:
SELECTDEPTNO
FROMDEPARTEMENT
WHERELOC=Paris
INTERSECT
SELECTDEPTNO
FROMEMPLOYE
WHERESAL>20000;
NOTE: Lintersection limine les dupliqus. Pour garder les
dupliqus on utilise lopration INTERSECTALL

128

Requtes imbriques simples

La Jointure sexprime par deux blocs SFW imbriqus


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

PNOM,PRIX,FNOM (CNOM=JEAN(COMMANDES FOURNITURE))

129

Requtes imbriques simples


SQL:
SELECT
FROM
WHERE

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

ou
SELECT
FROM

FOURNITURE.PNOM,PRIX,FNOM
FOURNITURE,COMMANDES

WHERE
FOURNITURE.PNOM =
COMMANDES.PNOM
AND CNOM = JEAN

130

Requtes imbriques simples

La Diffrence sexprime aussi par deux blocs SFW


imbriqus
Soit le schma de relations
EMPLOYE(EMPNO,ENOM,DEPNO,SAL)
DEPARTEMENT(DEPTNO,DNOM,LOC)
REQUTE: Dpartements sans employs
ALGBRE:
DEPTNO (DEPARTEMENT )- DEPTNO (EMPLOYE)

131

Requtes imbriques simples


SELECT DEPTNO
FROM DEPARTEMENT
WHERE DETPNO NOT IN (SELECT DISTINCT DEPTNO
FROM EMPLOYE)
ou
SELECT DEPTNO
FROM DEPARTEMENT
EXCEPT
SELECT DISTINCT DEPTNO
FROM EMPLOYE

132

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 : SELECT FNOM
FROM FOURNITURE
WHERE PNOM = Brique
AND PRIX < ANY (SELECT PRIX
FROM FOURNITURE
WHERE PNOM = Ardoise)

133

Requtes imbriques plus complexes :


ANY - ALL
le schma de relations
COMMANDE(NUM,CNOM,PNOM,QUANTITE)
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Nom, Cot et Fournisseur des Produits commands
par Jean
SQL:
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

134

Soit le schma de relation


COMMANDE(NUM,CNOM,PNOM,QUANTITE)
REQUTE: Client ayant command la plus petite quantit de
Briques
SQL:
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 v est vraie pour toutes les valeurs v 135
du

Soit le schma de relations


EMPLOYE(EMPNO,ENOM,DEPNO,SAL)
DEPARTEMENT(DEPTNO,DNOM,LOC)
REQUTE: Dpartements sans employs
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.

136

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
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

137

Soit le schma de relations


FOURNISSEUR(FNOM,STATUS,VILLE)
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Fournisseurs qui ne fournissent aucun
produit
SQL:
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

138

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
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))

139

Soit le schma de relations


COMMANDE(NUM,CNOM,PNOM,QUANTITE)
FOURNITURE(PNOM,FNOM,PRIX)
REQUTE: Nom, prix et fournisseur des produits
commands par Jean
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

140

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:
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

141

Division

Soit le schma de relations


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

142

R1=PNOM,,FNOM (FOURNITURE) PNOM (PRODUIT)


R2= FNOM (FOURNISSEURR1))
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))

143

Fonctions de calcul

144

COUNT, SUM, AVG, MIN, MAX

REQUTE: Nombre de Fournisseurs de Paris


SELECT COUNT(*) FROM FOURNISSEUR
WHERE VILLE = Paris
REQUTE: Nombre de Fournisseurs qui fournissent
actuellement des produits
SELECT COUNT(DISTINCT FNOM) FROM FOURNITURE
NOTE: La fonction COUNT(*) compte le nombre des nuplets du rsultat dune requte sans limination des
dupliqus ni vrification des valeurs nulles. Dans le cas
contraire on utilise la clause COUNT(UNIQUE . . . ).

145

REQUTE: Quantit totale de Briques commandes


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

SELECT SUM

FROM FOURNITURE

ou

WHERE PNOM = Brique

WHERE PNOM = Brique

FROM FOURNITURE

146

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


SELECT MAX (PRIX)
FROM FOURNITURE
WHERE PNOM = Briques;
REQUTE: Fournisseurs des Briques au cot moyen des
Briques
SELECT FNOM
FROM FOURNITURE
WHERE PNOM = Brique AND
PRIX < (SELECT AVG(PRIX)
FROM FOURNITURE
WHERE PNOM = Brique)

147

Oprations dAgrgation

148

GROUP BY

REQUTE: Nombre de fournisseurs par ville


SELECT VILLE, COUNT(FNOM)
FROM FOURNISSEUR
GROUP BY VILLE

149

GROUP BY
LA BASE

LE RESULTAT :

VILLE

FNOM

PARIS

TOTO

VILLE

COUNT(FNOM)

PARIS

DUPON
D

PARIS

LYON

LYON

DURAN
D

LYON

LUCIEN

LYON

REMI

NOTE: La clause GROUP BY permet de prciser les


attributs de partitionnement des relations dclares dans
la clause FROM. Par exemple on regroupe les fournisseurs
par ville.

150

REQUTE: Donner pour chaque produit fourni son cot


moyen
SELECT PNOM, AVG (PRIX)
FROM FOURNITURE
GROUP BY PNOM
PNOM

AVG(PRIX)

Briques

10.5

ardoise

8.9

NOTE: Les fonctions de calcul appliques au rsultat de


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

151

HAVING

REQUTE: Produits fournis par deux ou plusieurs


fournisseurs avec un cot suprieur de 100
SELECT PNOM
FROM FOURNITURE
WHERE PRIX > 100
GROUP BY PNOM
HAVING COUNT(*) >= 2

152

HAVING
Avant la clause Having
PNOM

FNOM

PRIX

Aprs la clause Having


PNOM

FNOM

PRIX

BRIQUE TOTO
105
ARDOIS LUCIEN 110
ARDOIS LUCIEN 110
E
DURAN 120
E
DURAN 120
ARDOIS D
ARDOIS D
E
E
NOTE: La clause HAVING permet dliminer des
partitionnements, comme la clause WHERE limine des nuplets du rsultat dune requte. Par exemple on garde les
produits dont le nombre des fournisseurs est >= 2. De cette
faon des conditions de slection peuvent tre appliques
avant le calcul dagrgat (clause WHERE) mais aussi aprs
(clause HAVING).

153

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
SELECT PNOM, AVG(PRIX)
FROM FOURNITURE, FOURNISSEUR
WHERE VILLE = Paris AND
FOURNITURE.FNOM = FOURNISSEUR.FNOM
GROUP BY PNOM
HAVING MIN(PRIX) > 1000

154

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 :
SELECT VILLE, FNOM, PNOM
FROM FOURNITURE, FOURNISSEUR
WHERE FOURNITURE.FNOM =
FOURNISSEUR.FNOM
ORDER BY VILLE, FNOM DESC
Le rsultat est tri par les villes (ASC) et le noms des
fournisseur dans lordre inverse (DESC).

155

Normalisation et formes normales :


Une relation normalise est une relation qui prsente :
- le moins possible de redondance dinformations
-le moins possible danomalies de stockage
- Exemple :la relation ENSEIGNANT.
NOM

FONCTION

Toumani
Aubire
Lopes
Quilliot
Clermont
Schneider
Jaudouin
Clermont

SALAIRE

PA
PA

2000
2000

Professeur
Professeur

ADRESSE

Versailles
3500

3500

Professeur

Cournon
3500

156

Normalisation et formes normales :


- le couple (Professeur, 3500) est rpt 3 fois.
- Le couple (Matre de confrence,2000) est rpt
deux fois.

Anomalie dajout

si on veut ajouter une nouvelle fonction (par exemple


Moniteur )

Anomalie de modification :

si le salaire dun professeur (en gnral) change,

Anomalie de suppression

on supprime lATER De Marchi, alors on perd linformation


qui dit quun ATER gagne 1100.

Conclusion :
La relation norganise pas les informations sous une forme
normalise : elle nest pas normalise.

157

Normalisation et formes normales :


Solution :
Dcomposer ENSEIGNANT en 2 relations ENSEIGNANT et
REMUNERATION dont une particulire (REMUNERATION) relative la
DF FONCTION SALAIRE.
ENSEIGNANT(Nom,Fonction, salaire)
REMUNIRATION(Fonction,salaire)
Sous cette forme il y a moins de redondance dinformations
On peut ajouter (Moniteur, 1200) dans REMUNERATION,
On peut modifier un salaire en une seule opration
On supprime lATER De Marchi, on ne perd pas linformation qui dit que les ATER
gagnent 1100.

158

Dpendance fonctionnelle (DF)

Soit R(A,B,C,D) une relation On a :


A B (t1,t2)R2, t1(A) = t2(A) t1(B) = t2(B)
On a A B si et seulement si quel que soit le couple de tuple
(t1,t2) de la relation, quand on a t1 et t2 qui ont la mme valeur
pour lattribut A, alors t1 et t2 ont la mme valeur pour
lattribut B.
La notion de dpendance fonctionnelle sapplique aussi
un ensemble dattributs. : A,B C

159

Dpendance fonctionnelle (DF)


Relation PERSONNALITES
t1
t2
t3
t4
t5
t6

VILLE
Casa
Casa
Rabat
Rabat
Rabat
Fs

FONCTI
maire
prfet
maire
prfet
adjoint
maire

NOM
Sajid
jalal
Bahraoui
Amrani
faycal
kabaj

B_PUBLIC
mairie
prfecture
mairie
prfecture
mairie
mairie

DATE_DE_CON
1678
1854
1784
926
1784
1872

On a la DF FONCTION BATIMENT_PUBLIC
On a la DF (VILLE,BATIMENT_PUBLIC) DATE_DE_CONSTRUCTION.

160

Dpendance fonctionnelle (DF)

Soit une relation R et A un attribut ou ensemble dattribut de R.


(A est cl primaire de R) ( lattribut B de R (diffrent ou non d
on a la DF A B)

161

Dpendance fonctionnelle (DF)


Proprits des dpendances fonctionnelles :

REFLEXIVITE :
si un ensemble dattributs Y est inclus dans un autre ensemble dattribu

X Y

Exemple : {A,B,C} {A,C}, ou A A


AUGMENTATION :
si X Y et lens. des attributs W est inclus dans lens. des attributs Z,

Y,W

Exemple : si F G alors F,A,B,C G,B,C


TRANSITIVITE :

si X Y et Y Z alors X Z
PSEUDO-TRANSITIVITE :

si X Y et Y,Z T alors X,Z T


DECOMPOSITION :

si X Y,Z alors X Y et X Z
REUNION :

si X Y et X Z alors X Y,Z

162

1re forme normale (1NF)

relation nayant que des attributs atomiques, cest--dire


ayant au plus une valeur par tuple pour un attribut (pas
plusieurs valeurs lintersection dune ligne et dune
colonne), est 1NF.)
NISBN
AUTEURS
DATE_PARUTION
3452986
Frdrique Amblard
1985
Alphonse Rebutand
3334689
Eric Germante
Lontine Truchet

TITRE
la route sinueuse
Ludivine
lextravertie

1998

La relation LIVRE nest pas en 1NF car pour certains tuples, il


peut y avoir plusieurs valeurs pour lattribut AUTEURS.

163

2me forme normale (2NF)

Une relation R(X,Y), avec X et Y des ensembles dattributs et


X cl primaire, est en 2NF si et seulement si :
elle est en 1NF,
quel que soit lensemble dattribut X inclus dans X mais
diffrent de X, et quel que soit lattribut ou ensemble
dattributs Z nappartenant pas X (donc appartenant Y),
on na PAS XZ.
(autre formulation : aucune sous-partie stricte de la cl
primaire nimplique un attribut qui nest pas dans la cl)
(autre formulation 2 : il ny a aucune DF entre une souspartie stricte de la cl et un autre attribut de la relation)

164

2me forme normale (2NF)


Dcomposition

Quand on veut mettre une relation en 2NF, cest quelle


nest pas dj en 2NF, ce qui signifie quil existe une souspartie stricte X de la cl X qui implique un attribut ou
ensemble dattributs Z de la relation qui nest pas dans la cl
(cest--dire quil y a une DF X Z) .
Pour dcomposer la relation en un ensemble de relations en
2NF, on cre une nouvelle relation, que lon nomme comme
on veut (rflchir un nom pertinent), et qui possde comme
attributs X et Z, avec X la cl primaire de la nouvelle
relation, et on enlve de R, la relation initiale, lattribut ou
ensemble dattributs Z.

165

2me forme normale (2NF)


Dcomposition Exemple
Soit la relation

COMMANDE(NOM_FOURNISSEUR, ADRESSE_FOURNISSEUR, ARTICLE,


QITE, PRIX).
La cl primaire est (NOM_FOURNISSEUR, ARTICLE).
NOM_FOURNISSEUR ADRESSE_FOURNISSEUR.
COMMANDE nest pas en 2NF

COMMANDE(NOM_FOURNISSEUR, ADRESSE_FOURNISSEUR, ARTICLE, Q


dcomposition en 2NF
COMMANDE_bis(NOM_FOURNISSEUR, ARTICLE, QITE, PRIX)
FOURNISSEUR(NOM_FOURNISSEUR,
ADRESSE_FOURNISSEUR)

166

3me forme normale (3NF)

Une relation R(X,Y), avec X et Y des ensembles dattributs et X


cl primaire, est en 2NF si et seulement si :
- elle est en 2NF,
- il ny a aucune DF entre deux attributs qui ne sont pas dans la
cl, cest--dire entre deux attributs qui appartiennent Y.

167

3me forme normale (3NF)


Dcomposition Exemple
VOITURE(NIMMATRICULATION, COULEUR, MARQUE, MODELE).

(modle Clio Fabriqu par marque Renault)

MODELE
MARQUE

VOITURE nest pas en 3NF


Dcomposition correspondante Pour mettre une relation en 3NF:
On dcompose comme dhabitude en crant une nouvelle relation partir des attributs de la
DF, avec la partie gauche de la DF comme cl primaire, puis en enlevant la partie droite de la
DF de la relation initiale.

VOITURE_bis(NIMMATRICULATION, COULEUR, MODELE)


TYPE(MODELE, MARQUE)

168

Vous aimerez peut-être aussi