Vous êtes sur la page 1sur 105

ANALYSE DES SYSTEMES DINFORMATION

METHODOLOGIE MERISE MERISE


INITIATION AUX BASES DE DONNEES
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 11
..
ENSA ENSA Safi Safi
Dr. Sad ECH CHADI Dr. Sad ECH CHADI
Introduction aux Base de donnes Introduction aux Base de donnes
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 22
Introduction aux Base de donnes Introduction aux Base de donnes
Ds le dbut de l'informatique,on
a voulu construire des systmes
Aujourdhui, la tendance actuelle
est la gestion de grandes
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 33
pour effectuer des calculs
(quations diffrentielles, calcul
matriciel, ... ).
quantits d'informations. Cela
revient stocker des donnes et
manipuler ces donnes.
Fonctionnalits d'un SGBD Fonctionnalits d'un SGBD
Stocker les donnes (BD) Stocker les donnes (BD) -- manipuler les donnes manipuler les donnes
(SGBD). (SGBD).
Gestion du stockage Gestion du stockage : : faire face des tailles normes de donnes. faire face des tailles normes de donnes.
Persistance Persistance: : Les donnes survivent aux programmes qui les Les donnes survivent aux programmes qui les
crent. crent.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 44
crent. crent.
Fiabilit Fiabilit :: Mcanismes de reprise sur pannes (logiciel ou matriel) Mcanismes de reprise sur pannes (logiciel ou matriel)
Scurit Scurit -- Confidentialit Confidentialit :: Droits d'accs aux donnes Droits d'accs aux donnes
Cohrence Cohrence :: Contraintes d'intgrit contrle de concurrence: Conflits Contraintes d'intgrit contrle de concurrence: Conflits
d'accs. Rpercussions sur la cohrence d'accs. Rpercussions sur la cohrence
Interfaces homme Interfaces homme machine machine : : Convivialit + diffrents types Convivialit + diffrents types
d'utilisateurs d'utilisateurs
Distribution Distribution :: Donnes stockes sur diffrents sites Donnes stockes sur diffrents sites
Optimisation Optimisation :: Transferts MC Transferts MC--MS MS
Architecture fonctionnelle d'un Architecture fonctionnelle d'un
SGBD SGBD
Niveau physique Niveau physique
Gestion de MS, de concurrence, de la fiabilit, transferts Gestion de MS, de concurrence, de la fiabilit, transferts
MG MG--MS, structure d'index, excution des programmes MS, structure d'index, excution des programmes
objet, optimiseur de requtes objet, optimiseur de requtes
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 55
Niveau logique Niveau logique
Scurit (confidentialit), Scurit (confidentialit), Intgrit (en partie) Intgrit (en partie)
Niveau externe Niveau externe
Environnement de programmation, Interfaces graphiques Environnement de programmation, Interfaces graphiques
Instance et schma Instance et schma
Schma: Schma: Cest la structure logique de la Cest la structure logique de la
base de donnes. base de donnes.
Exemples : Exemples : Ensembles de clients, de produits et de Ensembles de clients, de produits et de
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 66
Exemples : Exemples : Ensembles de clients, de produits et de Ensembles de clients, de produits et de
fournisseurs. fournisseurs.
Instance : Instance : Cest le contenu effectif de la Cest le contenu effectif de la
base de donnes un instant donn. base de donnes un instant donn.
Principes de base Principes de base
Indpendance physique: Indpendance physique: Les Les
applications manipulant la base au niveau applications manipulant la base au niveau
logique ne doivent pas tre rcrites si la logique ne doivent pas tre rcrites si la
structure physique est modifie. structure physique est modifie.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 77
structure physique est modifie. structure physique est modifie.
Indpendance logique : Indpendance logique : Une Une
modification au niveau logique nimplique modification au niveau logique nimplique
pas forcement une modification des pas forcement une modification des
applications utilisant le niveau externe. applications utilisant le niveau externe.
Utilisateurs d'un SGBD Utilisateurs d'un SGBD
Le SGBD offre deux types de langages Le SGBD offre deux types de langages ::
LDD: LDD: Dfinition des donnes (schma) Dfinition des donnes (schma)
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 88
LDD: LDD: Dfinition des donnes (schma) Dfinition des donnes (schma)
LMD: LMD: Manipulation des donnes (requte Manipulation des donnes (requte
et mise jour) et mise jour)
Utilisateurs d'un SGBD Utilisateurs d'un SGBD
Administrateur: Administrateur:
Dfinition du schma logique, dfinition des structures Dfinition du schma logique, dfinition des structures
de stockage et des mthodes d'accs, autorisations, de stockage et des mthodes d'accs, autorisations,
spcifications des contraintes, maintenance de la spcifications des contraintes, maintenance de la
performance performance
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 99
performance performance
Concepteur et programmeur d'applications Concepteur et programmeur d'applications
Gnralement, il est informaticien, il connat bien le Gnralement, il est informaticien, il connat bien le
SGBD et il connat au moins le LMD et un ou SGBD et il connat au moins le LMD et un ou
plusieurs langages de programmation. plusieurs langages de programmation.
Utilisateur "naf" Utilisateur "naf"
Secrtaire, caissire, ... Secrtaire, caissire, ...
Conception d'une BD Conception d'une BD
On peut la dcouper en plusieurs tapes On peut la dcouper en plusieurs tapes ::
11. . Analyse des besoins Analyse des besoins
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 10 10
22.. Description conceptuelle Description conceptuelle
33.. Conception logique (schma logique) Conception logique (schma logique)
44.. Conception physique Conception physique
Architecture d'un SGBD Architecture d'un SGBD
Requtes
Optimisation et excution
des requtes
Oprateurs relationnel
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 11 11
Oprateurs relationnel
Fichiers et mthodes
d'accs
Gestionnaire du tampon
Gestionnaires des disques
BD
Ces 3 modules tiennent
compte de la concurrence et
de la reprise sur panne
INTRODUCTION INTRODUCTION
AU AU
MODELE MODELE
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 12 12
MODELE MODELE
RELATIONNEL RELATIONNEL
Structure dune B.D. Structure dune B.D.
Relationnelle Relationnelle
Une relation est un Une relation est un ensemble de n ensemble de n--uplets uplets ((ou tuples) de la ou tuples) de la
forme <a forme <a
11
,... a ,... a
nn
> avec a > avec a
ii
AA
ii
..
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 13 13
Exemple : On a trois ensembles : Nom, Num_Cte et Rue avec
Nom = {Ahmed, Rachid, Ali}
Num_Cte = {123, 124, 235 , 226}
Rue = {Neuve, vieille, Courte }
Alors
{<Rachid, 123, Neuve >, <Rachid, 124, Neuve>, <Ali, 235, Neuve >,
<Ahmed, 123, Vieille> }
est une relation sur Nom x Num_Cte x Rue
Schma de relation Schma de relation
O O Une table est une relation (au sens mathmatique) qui a un Une table est une relation (au sens mathmatique) qui a un
nom nom
O O A A
11
,,. ,A ,,. ,A
nn
sont des sont des attributs attributs
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 14 14
O O R(A R(A
11
,,... ,A ,,... ,A
nn
) ) est un est un schma de relation schma de relation..
O O On note On note Att (R) Att (R) pour dsigner pour dsigner l'ensemble des attributs l'ensemble des attributs de de R. R.
L' L'arit arit de de R R est la cardinalit de est la cardinalit de Att(R). Att(R).
Le Le domaine domaine de de Ai Ai (not (not dom(Ai) dom(Ai)) ) est l'ensemble des valeurs est l'ensemble des valeurs
associes associes Ai. Ai. Cet ensemble peut tre fini ou non Cet ensemble peut tre fini ou non
Instance de relation Instance de relation
Emp Nom Num_Cte Rue
Ahmed 124 Neuve
Rachid 235 Neuve
Ali 123 Vieille
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 15 15
Att(Emp) = {Nom, Num_Cte Rue} Att(Emp) = {Nom, Num_Cte Rue}
Arit(Emp) = Arit(Emp) = 3 3
Dom(Num_Cte) = Dom(Num_Cte) = les entiers naturels (infini) les entiers naturels (infini)
Dom(Nom) Dom(Nom) = = chanes de moins de chanes de moins de 20 20 caractres (fini) caractres (fini)
Langages de requte Langages de requte
Ce sont les langages qui permettent Ce sont les langages qui permettent d'interroger d'interroger
la BD. la BD.
Langages relationnels "purs" Langages relationnels "purs"
O O Algbre relationnelle Algbre relationnelle
Calcul relationnel par n Calcul relationnel par n--uplet uplet
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 16 16
O O Calcul relationnel par n Calcul relationnel par n--uplet uplet
O O Calcul relationnel par domaine Calcul relationnel par domaine
Langages pratiques Langages pratiques
O O SQL (Structured Query Language) SQL (Structured Query Language)
O O QUEL (Query Language) QUEL (Query Language)
O O SEQUEL (Structured English as a Query Language) SEQUEL (Structured English as a Query Language)
O O QBE (Query By Example) QBE (Query By Example)
ALGEBRE RELATIONNELLE ALGEBRE RELATIONNELLE
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 17 17
ALGEBRE RELATIONNELLE ALGEBRE RELATIONNELLE
On peut la dfinir en six oprations de base dont certaines On peut la dfinir en six oprations de base dont certaines
sont unaires, d'autres sont binaires sont unaires, d'autres sont binaires : :
Projection Projection
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 18 18
Slection Slection
Union Union
Diffrence Diffrence
Produit cartsien Produit cartsien
Renommage Renommage
Projection Projection
AA
11
,...,A ,...,A
kk
(r) (r) o r est le nom de relation et o r est le nom de relation et 1 1 i i k A k A
i i
Att(r). Att(r).
Exemple de projection :
On veut extraire les noms des employs de la relation Emp ci-dessous :
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 19 19
Emp Emp Nom Nom Num_Cte Num_Cte Rue Rue
Ahmed 124 Neuve
Rachid 235 Neuve
Ali 123 Vieille
Nom (Emp) = Ahmed, Rachid, Ali
Slection Slection
Cond (r) Cond (r) o r est le nom d'une relation et o r est le nom d'une relation et Cond Cond est une est une
condition de la forme condition de la forme
1. 1. Atti Atti Attj Attj ou ou Atti Atti constante constante avec avec {< , {< , , =, , =, , >, , >, }, }, ou ou
bien bien
2. 2. une une conjonction conjonction (() ) ou une ou une disjonction disjonction ((V) V) de conditions de conditions
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 20 20
Le rsultat = une relation qui contient tous les n-uplets de r qui satisfont
la condition Cond
Exemple de slection :
On veut avoir les informations concernant les employs
dont le nom est Dupont
Emp Nom Num_Cte Rue
Ahmed 124 Neuve
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 21 21
Ahmed 124 Neuve
Ahmed 235 Neuve
Ali 123 Vieille
(Nom=Ahmed) =
Nom Nom Num_Cte Num_Cte Rue Rue
Ahmed 124 Neuve
Ahmed 235 Neuve
Union, Diffrence et Intersection Union, Diffrence et Intersection
Oprations ensemblistes classiques Oprations ensemblistes classiques
Notation : Notation : r r U s; U s; r r -- s; s; r r ss
r r U U s = s = {t | t {t | t r r ou t ou t s} s}
r r -- s = {t | t s = {t | t r r et t et t s} s}
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 22 22
r r -- s = {t | t s = {t | t r r et t et t s} s}
r r s = s = {t | t {t | t r r et t et t s} s}
Oprations binaires Oprations binaires
Il faut que Il faut que Att(r) = Att(r) = Att(s) Att(s)
Exemple Exemple
r A B s A B
1 2
2 3
1
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 23 23
r - s = A B r s = A B r s = A B
1 1 2
1 2
1
3
Produit cartsien Produit cartsien
r r xx ss avec avec r r x s = x s = { { tv | t tv | t r r et et v v s } s }
O tv O tv est la concatnation des tuples est la concatnation des tuples t t et et v. v.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 24 24
O tv O tv est la concatnation des tuples est la concatnation des tuples t t et et v. v.
Cette opration n'est pas dfinie si Cette opration n'est pas dfinie si Att(r) Att(r) Att(s) Att(s) 00..
Att(r Att(r x s) x s) = = Att(r) Att(r) U U Att(s) Att(s)
Exemple de Produit cartsien Exemple de Produit cartsien
r
A B
s
C D E
1 10 +
2 10 -
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 25 25
r x s
A B C D E
1 10 +
1 10 -
2 10 +
2 10 -
Renommage Renommage

Atti Atti Att'i Att'i
(r) (r) . .
Ceci permet de renommer l'attribut Ceci permet de renommer l'attribut Atti Atti par par
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 26 26
Ceci permet de renommer l'attribut Ceci permet de renommer l'attribut Atti Atti par par
Atti. Atti.
Le rsultat est la relation Le rsultat est la relation r r avec un nouveau avec un nouveau
schma schma
Exemple de Renommage Exemple de Renommage
rr
AA
10
20
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 27 27

A B
(r) = r
BB
10
20
Composition des oprateurs Composition des oprateurs
On peut appliquer un oprateur de l'algbre au On peut appliquer un oprateur de l'algbre au
rsultat d'une autre opration. rsultat d'une autre opration.
Exemple : Exemple : A ( A ( B= B=20 20(r)). (r)).
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 28 28
Exemple : Exemple : A ( A ( B= B=20 20(r)). (r)).
On dit que l'algbre relationnelle est un langage On dit que l'algbre relationnelle est un langage
ferm car chaque opration prend une ou deux ferm car chaque opration prend une ou deux
relations et retourne une relation. relations et retourne une relation.
Soient les schmas de relation Soient les schmas de relation Tit(Id, Nom, Adresse) Tit(Id, Nom, Adresse) et et Cte(Num, Solde, Cte(Num, Solde,
Id_Tit). Id_Tit). Le compte de numro Le compte de numro Num Num appartient au client identifi par appartient au client identifi par
Id_Tit. Id_Tit. On veut avoir ( On veut avoir (11) le numro, ( ) le numro, (22) le solde et ( ) le solde et (33) le nom du ) le nom du
titulaire de chaque compte dbiteur. titulaire de chaque compte dbiteur.
Id Id Nom Nom Adresse Adresse Num Num Solde Solde Id_Tit Id_Tit
A25 Ahmed Rue neuve 120 25234.24 A25
B212 Ali Rue vieille 135 -100 A25
275 230 B212
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 29 29
275 230 B212
1. 1. Cte Cte xx Tit Tit retourne une relation qui associe chaque tuple de Cte, tous les tuples de Tit.
2. Id=Id_Tit (Cte Id=Id_Tit (Cte xx Tit) Tit) limine les tuples o le compte n'est pas associ au bon titulaire.
3. So So11de < de < 0 0 (( Id=Id_Tit(Cte Id=Id_Tit(Cte xx Tit)) Tit)) retient les comptes dbiteurs
4. Nom, Num, Nom, Num, Solde Solde (( Solde< Solde<0 0 (( Id=Id_Tit (Cte Id=Id_Tit (Cte xx Tit))) Tit))) limine les attributs non
demands
Jointure Jointure
r ixi r ixi ss Att( Att(r ixi s) = r ixi s) = Att(r) Att(r) U U Att(s) Att(s)
Rsultat Rsultat : :
Soient tr Soient tr r r et et ts ts s. s. trts trts r r ixi s SSI ixi s SSI A A
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 30 30
Att(r) Att(r) Att(s) tr.A = ts.A Att(s) tr.A = ts.A
Exemple de Jointure Exemple de Jointure
rr AA BB ss BB CC
10 10 +
15 1 -
1
r ixi s = r ixi s = AA BB CC
10 +
1 -
le mme rsultat peut tre obtenu comme suit
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 31 31
11.. temp temp1 1 := := BB BB11(s) (s)
22.. temp temp2 2 := r := r xx temp temp11
33.. temp temp3 3 := := B=B B=B1 1 (temp (temp2 2) )
44.. res := res := A,B,C(temp A,B,C(temp33))
La jointure n'est pas une opration de base de l'algbre relationnelle
CALCUL RELATIONNEL CALCUL RELATIONNEL
par n par n--uplet uplet
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 32 32
par n par n--uplet uplet
Les requtes sont de la forme Les requtes sont de la forme {t | {t | P(t)} . P(t)} .
C'est l'ensemble des n C'est l'ensemble des n--uplets tels que le prdicat uplets tels que le prdicat P(t) P(t) est est
vrai pour vrai pour t. t.
t est une variable n t est une variable n--uplet et uplet et t [A] t [A] dsigne la valeur de dsigne la valeur de
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 33 33
t est une variable n t est une variable n--uplet et uplet et t [A] t [A] dsigne la valeur de dsigne la valeur de
l'attribut l'attribut A A dans dans tt
t t r r signifie que signifie que t t est un n est un n--uplet de uplet de rr
P P est une formule de la logique de premier ordre est une formule de la logique de premier ordre
Rappel sur le calcul des prdicats Rappel sur le calcul des prdicats
O O Des ensembles d'attributs, de constantes, de Des ensembles d'attributs, de constantes, de
comparateurs {<, } comparateurs {<, }
O O Les connecteurs logiques 'et' Les connecteurs logiques 'et' , ' , 'ou' ou' V et la V et la
ngation ngation
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 34 34
ngation ngation
O O Les quantificateurs Les quantificateurs et et
t t r (Q(t)) r (Q(t)) : Il existe un tuple t de r tel que Q est vrai : Il existe un tuple t de r tel que Q est vrai
t t r(Q(t)) r(Q(t)) : Q est vrai pour tout t de r : Q est vrai pour tout t de r
Exemples de requtes Exemples de requtes
Film (Titre, Ralisateur, Acteur) instance Film (Titre, Ralisateur, Acteur) instance ff
Programme (Nomcin, Programme (Nomcin, Titre, Horaire) instance Titre, Horaire) instance pp
ff contient des infos sur tous les films et contient des infos sur tous les films et pp concerne le programme Casablanca concerne le programme Casablanca
Les films raliss par Spielberg Les films raliss par Spielberg
{t | t f t [Ralisateur] = " Spielberg " }
Les films o Cage et Travolta jouent ensembles Les films o Cage et Travolta jouent ensembles
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 35 35
Les films o Cage et Travolta jouent ensembles Les films o Cage et Travolta jouent ensembles
{ t | t f s f (t[Titre] = s[Titre] t[Acteur] = Cage s[Acteur] = Travolta ) }
Les titres des films programms Casablanca Les titres des films programms Casablanca
{t | s p (t[Titre] = s[Titre]) }
Les films programms Megarama mais pas au rif Les films programms Megarama mais pas au rif
{t | s p ( s[Titre] = t[Titre] s[NomCin] = Megarama
u p ( u[NomCin] = Rif" u[Titre] = t[Titre] )) }
Les titres de films qui passent Megarama ainsi que leurs ralisateurs Les titres de films qui passent Megarama ainsi que leurs ralisateurs
{ t | s p ( u f (s[NomCin] = Megarama
s[Titre] = u[Titre] = t[Titre] t[Ral] = u[Ral])) }
Expressions "non saines" Expressions "non saines"
Il est possible d'crire des requtes en calcul qui retournent Il est possible d'crire des requtes en calcul qui retournent
une relation infinie. une relation infinie.
Exemple :
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 36 36
Exemple :
Soit NumCte(Num) avec l'instance n et la requte {t | t n} i.e les
numros de compte non recenss.
Si on considre que le Dom(Num) = N, alors la rponse cette
requte est infinie.
Une requte est saine si quelle que soit l'instance de la base dans
laquelle on l'value, elle retourne une rponse finie. Dpendance du
domaine.
Calcul relationnel par domaine Calcul relationnel par domaine
Les requtes sont de la forme Les requtes sont de la forme : { : { < < xx11,, ,,xxn > n > | | P(x P(x11,,..., x ,,..., xnn )} )}
Les Les xi xi reprsentent des variables de domaine. reprsentent des variables de domaine.
PP((xx1 1 ,... , x ,... , xn) n) est une formule similaire celles qu'on trouve dans la est une formule similaire celles qu'on trouve dans la
logique des prdicats. logique des prdicats.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 37 37
Exemple : Les titres de films programms Megarama de Casablanca
{<t> | <nc, t, h> p( nc = "UGC") }
Relation entre les Relation entre les 3 3 langages langages
O O Toute requte exprime en algbre peut tre exprime Toute requte exprime en algbre peut tre exprime
par le calcul. par le calcul.
O O Toute requte "saine" du calcul peut tre exprime par Toute requte "saine" du calcul peut tre exprime par
une requte de l'algbre. une requte de l'algbre.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 38 38
une requte de l'algbre. une requte de l'algbre.
O O Les Les 3 3 langages sont donc quivalents d'un point de vue langages sont donc quivalents d'un point de vue
puissance d'expression. puissance d'expression.
O O L'algbre est un langage L'algbre est un langage procdurale procdurale ((quoi et comment) quoi et comment)
alors que le calcul ne l'est pas (seulement quoi). alors que le calcul ne l'est pas (seulement quoi).
Arbres relationnels Arbres relationnels
Projection Slection
x
Produit cartsien
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 39 39
Jointure
u
-
Union Diffrence
LE LANGAGE SQL LE LANGAGE SQL
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 40 40
LE LANGAGE SQL LE LANGAGE SQL
O O langage fourni avec tout SGBD relationnel langage fourni avec tout SGBD relationnel
commercialis. C'est un standard reconnu par commercialis. C'est un standard reconnu par
l'IS l'IS0 0 depuis depuis 87 87 (standard donc portabilit). (standard donc portabilit).
O O On en est la version On en est la version 2 2 (SQL (SQL92 92) et la version ) et la version 3 3
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 41 41
O O On en est la version On en est la version 2 2 (SQL (SQL92 92) et la version ) et la version 3 3
est annonce pour bientt. est annonce pour bientt.
O O SQL est un LDD et un LMD. Il est aussi utilis SQL est un LDD et un LMD. Il est aussi utilis
pour dfinir des vues, les droits d'accs, pour dfinir des vues, les droits d'accs,
manipulation de schma physique manipulation de schma physique
Structure de base Structure de base
Une requte SQL typique est de la forme Une requte SQL typique est de la forme
SELECT SELECT AA
11
,, ... ,, ... , A , A
nn
FROM FROM rr
11
,... ,r ,... ,r
mm
WHERE WHERE PP
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 42 42
Les Ai sont des attributs, les rj sont des noms de relations et P est un prdicat.
Cette requte est quivalente A1 ,, An ( P(r1 x x rm))
La clause SELECT La clause SELECT
La clause SELECT correspond la projection de l'algbre. La clause SELECT correspond la projection de l'algbre.
Les titres des films Les titres des films ::
SELECT SELECT Titre Titre
FROM FROM film film
L'utilisation de l'astrisque permet de slectionner L'utilisation de l'astrisque permet de slectionner tous tous les attributs les attributs : :
SELECT SELECT **
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 43 43
SELECT SELECT **
FROM FROM film film
SQL autorise par dfaut les doublons. Pour le forcer les liminer, on SQL autorise par dfaut les doublons. Pour le forcer les liminer, on
utilise la clause utilise la clause DISTINCT DISTINCT ::
SELECT DISTINCT SELECT DISTINCT Titre Titre
FROM FROM film film
SELECT SELECT peut contenir des expressions arithmtiques ainsi que le peut contenir des expressions arithmtiques ainsi que le
renommage d'attributs renommage d'attributs ::
SELECT SELECT Prix_HT * Prix_HT * 11..206 206 AS AS Prix Prix TTC TTC
FROM FROM produit produit
La clause WHERE La clause WHERE
Elle correspond au prdicat de slection dans l'algbre. La condition porte sur Elle correspond au prdicat de slection dans l'algbre. La condition porte sur
des attributs des relations qui apparaissent dans la clause des attributs des relations qui apparaissent dans la clause SELECT SELECT
SELECT DISTINCT SELECT DISTINCT Titre Titre
FROM FROM film film
WHERE WHERE Ralisateur = Ralisateur = "Bergman" "Bergman" AND AND Acteur = "Stewart" Acteur = "Stewart"
SQL utilise les connecteurs SQL utilise les connecteurs AND, OR AND, OR et et NOT NOT. . Pour simplifier la clause Pour simplifier la clause
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 44 44
SQL utilise les connecteurs SQL utilise les connecteurs AND, OR AND, OR et et NOT NOT. . Pour simplifier la clause Pour simplifier la clause
WHERE, on peut utiliser la clause WHERE, on peut utiliser la clause BETWEEN. BETWEEN.
SELECT SELECT Num Num
FROM FROM compte compte
WHERE WHERE Solde Solde BETWEEN BETWEEN 00 AND AND 10000 10000
La clause FROM La clause FROM
Elle correspond au produit cartsien de l'algbre. Elle correspond au produit cartsien de l'algbre.
Le titre et le ralisateur des films programms MegaRama de Le titre et le ralisateur des films programms MegaRama de
Casablanca. Casablanca.
SELECT SELECT Titre, Ralisateur Titre, Ralisateur
FROM FROM film, programme film, programme
WHERE WHERE film.titre = programme.titre film.titre = programme.titre AND AND programme.NomCin = programme.NomCin =
MegaRama MegaRama
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 45 45
La clause ORDER BY
SQL permet de trier les rsultats de requte
SELECT *
FROM programme
WHERE NomCin=MegaRama"
ORDER BY Horaire ASC, Titre DESC
Les variables n Les variables n--uplets uplets
Elles sont dfinies dans la clause Elles sont dfinies dans la clause FROM FROM
SELECT SELECT Titre, Ralisateur Titre, Ralisateur
FROM FROM film film AS AS ff, , programme programme AS AS pp
WHERE WHERE f.titre = p.titre f.titre = p.titre AND AND p.NomCin = p.NomCin = MegaRama" MegaRama"
Soit Emp (Id, Nom, Id_chef) Soit Emp (Id, Nom, Id_chef)
SELECT SELECT el.Nom, e el.Nom, e22.Nom .Nom AS AS Nom_Chef Nom_Chef
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 46 46
SELECT SELECT el.Nom, e el.Nom, e22.Nom .Nom AS AS Nom_Chef Nom_Chef
FROM FROM emp el, emp el, emp e emp e22
WHERE WHERE el.Id_chef = e el.Id_chef = e22.Id .Id
SELECT SELECT ... ...

UNION/ INTERSECT/ EXCEPT UNION/ INTERSECT/ EXCEPT


SELECT SELECT ... ...
liminent les doublons, liminent les doublons,
Oprateurs ensemblistes Oprateurs ensemblistes
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 47 47
liminent les doublons, liminent les doublons,
pour pouvoir les garder, utiliser la place pour pouvoir les garder, utiliser la place INTERSECT ALL INTERSECT ALL... ...
Si t apparat m fois dans r et n fois dans s alors il apparat Si t apparat m fois dans r et n fois dans s alors il apparat ::
m + m + n fois dans r n fois dans r UNION ALL UNION ALL ss
min( min(m, n) m, n) fois dans fois dans r r INTERSECT INTERSECT ALL ALL ss
max( max(0 0, , m m -- n) n) fois dans fois dans r r EXCEPT ALL EXCEPT ALL ss
Les fonctions dagrgats Les fonctions dagrgats
AVG AVG :: la valeur moyenne de l'ensemble la valeur moyenne de l'ensemble
MIN MIN :: la valeur minimale la valeur minimale
MAX MAX :: la valeur maximale la valeur maximale
SUM SUM :: le total des valeurs de l'ensemble le total des valeurs de l'ensemble
COUNT COUNT :: le nombre de valeur dans l'ensemble le nombre de valeur dans l'ensemble
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 48 48
SELECT SELECT COUNT COUNT(Titre) (Titre) FROM FROM Programme Programme
Cette requte retourne le nombre de films programms Casablanca. Cette requte retourne le nombre de films programms Casablanca.
Attention Attention :: Un mme titre peut tre compt plusieurs fois s'il est Un mme titre peut tre compt plusieurs fois s'il est
programm des heures diffrentes et dans des salles diffrentes. programm des heures diffrentes et dans des salles diffrentes.
SELECT COUNT SELECT COUNT( ( DISTINCT DISTINCT Titre Titre) ) FROM FROM Programme Programme
Agrgats et GROUP BY Agrgats et GROUP BY
Le nombre de films programms dans chaque salle Le nombre de films programms dans chaque salle : :
SELECT SELECTNomCin, NomCin, COUNT COUNT ((DISTINCT DISTINCT Titre Titre))
FROM FROM Programme Programme
GROUP BY GROUP BY NomCin NomCin
Les attributs qui apparaissant dans la clause Les attributs qui apparaissant dans la clause SELECT SELECT en dehors des agrgats en dehors des agrgats
doivent doivent tre associs la clause tre associs la clause GROUP BY GROUP BY
Agrgats et la clause HAVING Agrgats et la clause HAVING
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 49 49
Agrgats et la clause HAVING Agrgats et la clause HAVING
Les salles o sont programms plus de 3 films :
SELECT NomCin, COUNT(DISTINCT Titre)
FROM Programme
GROUP BY NomCin
HAVING COUNT (DISTINCT Titre) > 3
Le prdicat associ la clause HAVING est test aprs la formation des
groupes dfinis dans la clause GROUP BY.
Requtes imbriques Requtes imbriques
SELECT SELECT--FROM FROM--WHERE WHERE sous requte sous requte
Limbrication apparat au niveau de la clause WHERE de la premire requte.
Les films programms MegaRama non programms au Rif
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 50 50
SELECT Titre
FROM Programme
WHERE NomCin=MegaRama" and Titre NOT IN (
SELECT Titre
FROM Programme
WHERE NomCin =Rif" )
Trouver les comptes dont les soldes sont suprieurs aux soldes des Trouver les comptes dont les soldes sont suprieurs aux soldes des
comptes de Ahmed comptes de Ahmed ::
Compte (Num, Compte (Num, Solde, NomTit) Solde, NomTit)
SELECT SELECT **
FROM FROM Compte Compte
WHERE WHERE Solde > Solde > ALL ALL ((
SELECT SELECT Solde Solde
FROM FROM Compte Compte
WHERE WHERE NomTit = NomTit = Ahmed" ) Ahmed" )
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 51 51
WHERE WHERE NomTit = NomTit = Ahmed" ) Ahmed" )
En remplaant En remplaant ALL ALL par par SOME SOME, , on obtient les comptes dont les soldes on obtient les comptes dont les soldes
sont suprieur au solde d'au moins un compte de Ahmed. sont suprieur au solde d'au moins un compte de Ahmed.
Les cinmas qui passent tous les films programms Les cinmas qui passent tous les films programms
MegaRama MegaRama
SELECT SELECT NomCin NomCin
FROM FROM programme pi programme pi
WHERE NOT EXISTS WHERE NOT EXISTS ((
((SELECT DISTINCT SELECT DISTINCT Titre Titre
FROM FROM programme programme
WHERE WHERE NomCin = MegaRama" NomCin = MegaRama"))
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 52 52
WHERE WHERE NomCin = MegaRama" NomCin = MegaRama"))
EXCEPT EXCEPT
((SELECT DISTINCT SELECT DISTINCT Titre Titre
FROM FROM programme p programme p22
WHERE WHERE pl.NomCin = p pl.NomCin = p2 2.NomCin .NomCin)) ))
Test d'absence de doublons Test d'absence de doublons
La clause La clause UNIQUE UNIQUE permet de tester Si une sous requte permet de tester Si une sous requte
contient des doublons. contient des doublons.
Les titres de films programms dans une seule salle et un Les titres de films programms dans une seule salle et un
seul horaire seul horaire ::
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 53 53
SELECT SELECT p.Titre p.Titre
FROM FROM programme p programme p
WHERE UNIQUE WHERE UNIQUE ((
SELECT SELECT pl.Titre pl.Titre
FROM FROM programme p programme p11
WHERE WHERE p.Titre = p.Titre = pl Titre pl Titre))
Les relations drives Les relations drives
Titulaire (Nom, Adresse) Titulaire (Nom, Adresse)
Compte (Num, Compte (Num, Solde, NomTit) Solde, NomTit)
Donner le solde moyen des comptes de chaque personne ayant un Donner le solde moyen des comptes de chaque personne ayant un
solde moyen > solde moyen > 1000 1000
SELECT SELECT
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 54 54
SELECT SELECT NomTit, SoldeMoyen NomTit, SoldeMoyen
FROM FROM ((
SELECT SELECT NomTit, NomTit, AVG AVG(Solde) (Solde)
FROM FROM Compte Compte
GROUP BY GROUP BY NomTit ) NomTit )
AS AS Result (NomTit, SoldeMoyen) Result (NomTit, SoldeMoyen)
WHERE WHERE SoldeMoyen > SoldeMoyen > 1000 1000
Noter qu'on aurait pu exprimer cette requte en utilisant la clause Noter qu'on aurait pu exprimer cette requte en utilisant la clause
HAVING HAVING
Sous Sous--requtes renvoyant plusieurs lignes requtes renvoyant plusieurs lignes
Oprateurs permettant dutiliser de telles sous Oprateurs permettant dutiliser de telles sous--requtes : requtes :
a IN (sous a IN (sous requete requete))
vrai si vrai si a apparat dans le rsultat de sous a apparat dans le rsultat de sous requete requete..
a ?? a ?? ANY (sous ANY (sous requete requete))
O ?? O ?? peut tre {=, <,>,<=,>=} peut tre {=, <,>,<=,>=}
vrai si il existe un vrai si il existe un b parmi les lignes renvoyes par sous b parmi les lignes renvoyes par sous requete requete tel que a ?? b soit tel que a ?? b soit
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 55 55
vrai si il existe un vrai si il existe un b parmi les lignes renvoyes par sous b parmi les lignes renvoyes par sous requete requete tel que a ?? b soit tel que a ?? b soit
vrai. vrai.
a ?? a ?? ALL (sous ALL (sous requete requete))
o`u o`u ?? ?? peut tre {=, <,>,<=,>=} peut tre {=, <,>,<=,>=}
vrai si pour toutes les lignes vrai si pour toutes les lignes b renvoyes par sous b renvoyes par sous requete requete,,
a?? b est vrai. a?? b est vrai.
EXISTS (sous EXISTS (sous requete requete))
vrai si le rsultat de vrai si le rsultat de sous sous requete requete nest pas vide. nest pas vide.
Exemple Exemple 11
Schma : Schma :
Employe Employe(Nom, (Nom, Num Num, Fonction, , Fonction, Num Num sup, sup, Embauche, Salaire, Embauche, Salaire, Num Num
Dept Dept))
Quels sont les employs, donns avec leur salaire, gagnant plus que Quels sont les employs, donns avec leur salaire, gagnant plus que
tous les employs du dpartement tous les employs du dpartement 20 20 ??
SELECT Nom, SELECT Nom, Salaire Salaire
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 56 56
SELECT Nom, SELECT Nom, Salaire Salaire
FROM FROM Employe Employe
WHERE WHERE Salaire Salaire >> ALL (SELECT ALL (SELECT Salaire Salaire
FROM FROM Employe Employe
WHERE WHERE Num Numdept dept == 20 20) ; ) ;
Exemple Exemple 22
Schma : Schma :
Employe Employe(Nom, (Nom, Num Num, Fonction, , Fonction, Num Num sup, sup, Embauche, Salaire, Embauche, Salaire, Num Num Dept Dept))
Quels sont les employs qui ont un subalterne ? Quels sont les employs qui ont un subalterne ?
SELECT Nom SELECT Nom
FROM FROM Employe Employe Chef Chef
WHERE EXISTS (SELECT Nom WHERE EXISTS (SELECT Nom
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 57 57
WHERE EXISTS (SELECT Nom WHERE EXISTS (SELECT Nom
FROM FROM Employe Employe
WHERE WHERE Employe.Num Employe.Num sup = sup = Chef.Num Chef.Num) ; ) ;
Sous Sous--requte avec un rsultat plusieurs colonnes requte avec un rsultat plusieurs colonnes
On peut utiliser la notation (a, b, . . .) pour former un n On peut utiliser la notation (a, b, . . .) pour former un n--uplet uplet comparer comparer
avec le rsultat de la sous avec le rsultat de la sous--requte : requte :
Schma : Schma :
Employe Employe(Nom, (Nom, Num Num, Fonction, , Fonction, Num Num sup, sup, Embauche, Salaire, Embauche, Salaire, Num Num Dept Dept))
Quels sont les employs ayant mme fonction et mme suprieur Quels sont les employs ayant mme fonction et mme suprieur
que Sadik ? que Sadik ?
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 58 58
SELECT Nom SELECT Nom
FROM FROM Employe Employe
WHERE (Fonction, WHERE (Fonction, Num Num sup) sup) = (SELECT Fonction, = (SELECT Fonction, Num Num sup sup
FROM FROM Employe Employe
WHERE Nom=Sadik) ; WHERE Nom=Sadik) ;
Sous Sous--requte imbriques requte imbriques
Il est possible dimbriquer les sous Il est possible dimbriquer les sous--requtes : requtes :
Employe Employe(Nom, (Nom, Num Num, Fonction, , Fonction, Num Num sup, sup, Embauche, Salaire, Embauche, Salaire, Num Num Dept Dept))
Donner le nom et la fonction des employs du dpartement Donner le nom et la fonction des employs du dpartement 20 20 ayant mme ayant mme
fonction quune personne du dpartement de fonction quune personne du dpartement de Fellahi Fellahi. .
SELECT Nom, SELECT Nom, Fonction Fonction
FROM FROM Employe Employe
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 59 59
FROM FROM Employe Employe
WHERE WHERE Num Numdept dept == 20 20
AND fonction IN AND fonction IN
((SELECT Fonction SELECT Fonction
FROM FROM Employe Employe
WHERE Num dept = (SELECT Num dept WHERE Num dept = (SELECT Num dept
FROM FROM Employe Employe
WHERE WHERE Nom = Nom = Fellahi Fellahi)) ; )) ;
Dclaration de tables et Dclaration de tables et
contraintes contraintes
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 60 60
contraintes contraintes
Dclaration de tables
Pour crer une table on utilise la commande CREATE TABLE. Voici sa
syntaxe :
Create table < nom de table > ( { < element de table > } ) ;
la dfinition des lments de table :
< lment de table > : = < dfinition attribut > / < contrainte de
table >
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
table >
Create table < nom de table >
(< nom_attribut1 > < type attribut1 > < contrainte attribut1 <
>nom_attribut2 > < type attribut2 > < contrainte attribut >,.. )
< contrainte de table <
Il y a des rgles respecter :
Chaque table de la base de donne
possde un nom unique
Une table est compose d'au moins un
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Une table est compose d'au moins un
attribut
Chaque attribut au sein d'une table
possde un nom unique
On peut mettre des contraintes sur les
attributs lors de la cration de table
Exemple :
Create table Commande ( numcom
NUMERIC (5), datecomm DATE)
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Dclaration d'un attribut
< nom attribut > < type_donnes >
[default <valeur> ] [contrainte_attribut]
Commentaires Syntaxe Type de donne
Chane de caractres de longueur fixe n CHAR(n ( Alphanumrique
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Chane de caractres de longueur fixe n CHAR(n ( Alphanumrique
Chane de n caractres maximums VARCHAR(n ( Alphanumrique
Nombre de n chiffres avec en option le nombre de dcimales . NUMERIC(n,[d ([ Numrique
Entier sign de 32 bits INTEGER Numrique
Entier sign de 16 bits SMALLINT Numrique
Nombre rel (avec virgule ( FLOAT Numrique
Date au format : JJ/MM/AA DATE Temps
Heure au format : hh : mm :ss.ml TIME Temps
Date et heure TIMESTAMP Temps
La valeur par dfaut : default
La clause DEFAULT doit tre suivie par la valeur
affecter. Cette valeur peut tre un des types suivants:
constante numrique
constante alphanumrique (chane de caractres)
le mot cl USER (nom de l'utilisateur)
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
le mot cl USER (nom de l'utilisateur)
le mot cl NULL
le mot cl CURRENT_DATE (date de saisie)
le mot cl CURRENT_TIME (heure de saisie)
le mot cl CURRENT_TIMESTAMP (date et heure de
saisie)
Les contraintes d'attribut
Il est possible d'exiger des contraintes sur les attributs d'une
table. Voici la liste de ces contraintes :
La valeur nulle impossible : NOT NULL
L'unicit : UNIQUE . Il existe aussi PRIMARY KEY qui
quivaut l'association de NOT NULL+ UNIQUE mais on
ne peut mettre qu'une cl primaire (PRIMARY KEY) par
table.
La contrainte rfrentielle qui pose la contrainte sur le fait
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
La contrainte rfrentielle qui pose la contrainte sur le fait
qu'un attribut doit exister dans une autre table. La syntaxe
est donc :
REFERENCES <table rfrence> [ <attribut rfrenc > ]
La contrainte gnrale : sa syntaxe est : CHECK
<condition > . La condition peut tre simple (exemple :
CHECK BETWEEN 1 and 10) ou alors on peut tre une
condition avec un ordre SELECT.
Exemple :
On veut crer la table des commandes comportant
3 attributs : le numro de commande qui doit
tre unique et
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Create table COMMANDE (numcom NUMERIC
(5) PRIMARY KEY,
Datecom DATE,
Numfou
NUMERIC(5) REFERENCES FOURNISSEUR) ;
Les contraintes de tables
Lors de la dclaration d'une table, une fois aprs avoir
dfini les attributs on peut rajouter des contraintes
spcifiques la table. Voici la liste de ces contraintes :
L'unicit : sa syntaxe est UNIQUE / PRIMARY KEY (
<nom_attribut1>, < nom_attibut2 >,)
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Les cls trangres (CONTRAINTES
REFERENTIELLES) :
FOREIGN KEY (< nom attribut rfrenant > )
REFERENCES < nom de table rfrence >
[ <attributs rfrenc1>, <attribut rfrenc2>, ]
[ partie trigger ]
Dfinition de PARTIE TRIGGER
Les cls trangres permettent de dfinir les colonnes
d'une table garantissant la validit d'une autre table.
Ainsi, il existe des lments (appels triggers, en
franais gchettes) permettant de garantir ces
contraintes appeles intgrit rfrentielle, c'est--dire
notamment de garantir qu'un nuplet utilis partir d'une
autre table existe rellement.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
autre table existe rellement.
Ces triggers sont ON DELETE et ON UPDATE. On a
donc ON DELETE qui sert dans le cas o l'on voudrait
supprimer une donne et ON UPDATE sert lorsque l'on
met jour une donne. La syntaxe de partie trigger est
donc :
ON UPDATE <action>
ON DELETE <action>
Dfinition de ACTION
L'action permet de savoir quelle va tre la
rpercussion lors d'un effacement (delete) ou
d'une mise jour (update)
Parmi les actions l'on a :
- CASCADE permet de rpercuter ON
DELETE ou ON UPDATE en cascade sur les
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
DELETE ou ON UPDATE en cascade sur les
autres attributs
- RESTRICT permet d'indiquer un message
d'erreur
- SET DEFAULT permet de mettre la valeur
par dfaut
- SET NULL permet de mettre la valeur NULL
Contrainte gnrale : CHECK
<condition>
Exemple :
Create table Ligne
( numcomm NUMERIC(5),
numligne NUMERIC(5),
code_produit NUMERIC(5) NOT NULL,
qt NUMERIC(6) NOT NULL
PRIMARY KEY (numcomm, numligne)
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
PRIMARY KEY (numcomm, numligne)
FOREIGN
KEY (numcomm) REFERENCES COMMANDE
ON DELETE CASCADE
ON DATE CASCADE
FOREIGN
KEY (code_produit) REFERENCES PRODUIT
(code_produit)
Dclaration de domaine
Les domaines sont utiliss lors de la
dfinition des attributs de table. Voici la
syntaxe d'un domaine :
Create Domain < nom_domaine > As
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Create Domain < nom_domaine > As
<type de donne>
[default <valeur> ] [ check <condition> ]
Exemple :
Create Domain acquisition As DATE
Default CURRENT_DATE
Ici CURRENT_DATE est une variable qui
donne la date du jour.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
donne la date du jour.
La dclaration de domaine sert dfinir un
nouveau type de donne que l'on utilisera
lors de la dclaration d'un attribut par
exemple.
Dclaration des assertions
Les assertions sont des expressions devant tre
satisfaites lors de la modification de donnes
pour que celles-ci puissent tre ralises. Ainsi,
elles permettent de garantir l'intgrit des
donnes. Par contre la dclaration d'assertion
n'est prise en compte par tous les SGBD. Les
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
n'est prise en compte par tous les SGBD. Les
assertions permettent des contraintes multi-
tables.
La syntaxe pour dclarer une contrainte
d'intgrit :
Create assertion <nom_assertion> Check
<condition>
exemple
Create assertion PU_PV
Check ( NOT EXISTS (Select *
From LIGNE_CMD
Where lcd_pu <0.75 *
(Select art_pv
From ARTICLE
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Where art_num = lcd_art))) ;
Voici la traduction de cette requte :
Il ne doit pas exister de ligne de commande infrieure
75% du prix normal de vente.
La suppression de table
Une requte de destruction d'une table
provoque :
- la destruction des informations contenues
dans la table.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
dans la table.
- la destruction du schma de la relation.
(Aucune requte ne pourra tre effectuer
sur cette table dans le futur)
La syntaxe:
Drop Table < nom de table >
Modification de table
Ajout ou modification de colonne Ajout ou modification de colonne
ALTER TABLE ALTER TABLE nom_table nom_table {ADD/MODIFY} ([ {ADD/MODIFY} ([nom_colonne nom_colonne type type
[contrainte], ...]) [contrainte], ...])
Ajout dune contrainte de table Ajout dune contrainte de table
ALTER TABLE ALTER TABLE nom_table nom_table ADD [CONSTRAINT ADD [CONSTRAINT nom_contrainte nom_contrainte] ]
contrainte La syntaxe de dclaration de contrainte est identique contrainte La syntaxe de dclaration de contrainte est identique
celle vue lors de la cration de table. celle vue lors de la cration de table.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Si des donnes sont dj prsentes dans la table au moment o la Si des donnes sont dj prsentes dans la table au moment o la
contrainte dintgrit est ajoute, toutes les lignes doivent vrifier la contrainte dintgrit est ajoute, toutes les lignes doivent vrifier la
contrainte. Dans le cas contraire, la contrainte nest pas pose sur la contrainte. Dans le cas contraire, la contrainte nest pas pose sur la
table. table.
Renommer une colonne Renommer une colonne
ALTER TABLE ALTER TABLE nom_table nom_table RENAME COLUMN RENAME COLUMN ancien_nom ancien_nom TO TO
nouveau_nom nouveau_nom
Renommer une table Renommer une table
ALTER TABLE ALTER TABLE nom_table nom_table RENAME TO RENAME TO nouveau_nom nouveau_nom
Dclaration de tables et
contraintes
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Insertion de tuples (lignes)
Voici la syntaxe pour Insert avec la
clause Values :
Insert Into < Nom de table > [ <nom des attributs
> ]
Values ( < valeur attribut1>, < valeur attribut 2>,
)
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
)
Exemple : On veut insrer un nouvel employ qui
s'appelle Burton qui est Directeur, son
responsable est l'employ n15, etc..
Insert Into EMPLOYES
Values ( 10, Burton, Directeur, 15, 01/13/88,
250000, NULL, 60 )
Voici la syntaxe pour Insert avec la clause Select:
Insert Into < Nom de table > [ <nom des attributs > ]
Select < nom des attributs >
From < nom de table2>
Where < condition >
Exemple: On veut insrer le nom , la fonction , la salaire et
la commission des employs qui sont " directeur " ou
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
la commission des employs qui sont " directeur " ou
que leur commission soit suprieure 25% de leur
salaire dans la table PRIMES.
Insert Into PRIMES (nomemp, fonction, sala, comm)
Select nomemp, fonction, sala, comm
From EMPLOYES
Where fonction = " directeur " or comm > 0.25*sala
Mise jour de tuples
Pour la mise jour des donnes, la modification on
utilise la commande UPDATE.
Voici sa syntaxe :
Update < nom de table >
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Exemple : On veut augmenter le salaire de Rachid de
10%.
Update < EMPLOYES >
Set { sala = 1.1*sala }
Where nomemp = Rachid "
Suppression de tuples
Pour supprimer un tuple dans une table on utilise
la commande DELETE.
Voici sa syntaxe :
Delete From < nom table >
Where < condition de recherch >
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Where < condition de recherch >
Exemple : On veut enlever l'employ Ahmed de la
table des PRIMES.
Delete From PRIMES
Where nomemp = " Ahmed "
Les Vues
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Les vues
On dfinit une vue par une table virtuelle, c'est--dire dont
les donnes ne sont pas stockes dans une table de la
base de donnes, et dans laquelle il est possible de
rassembler des informations provenant de plusieurs
tables. On parle de "vue" car il s'agit simplement d'une
reprsentation des donnes dans le but d'une
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
reprsentation des donnes dans le but d'une
exploitation visuelle. Le contenu de cette vue est dfini
par une requte SQL.
Elles ralisent le niveau externe de l'architecture 3
niveaux ANSI/SPARC.
La dfinition d'une vue est mmorise dans la mta
base.
Dclaration
Create View < nom vue > [ {<liste des attributs> }
] As <requte SQL> [ With Check Option]
La clause facultative with check option permet de dfinir, lors
de la mise jour de donnes via la vue, que la (les)
conditions de la clause where doit tre vrifie. Si elle n'est
pas prsente, aucune vrification ne sera faite.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
pas prsente, aucune vrification ne sera faite.
Avec cette clause, on peut insrer des lignes, mettre jour
des colonnes, par l'intermdiaire d'une vue, si les conditions
du where sont respectes ( voir dans le G)
Pour dtruire une vue :
Drop view <nom de vue >
Exemple
Create view EMPLOYES10 As
Select noemp, nomemp, fonction
From EMPLOYES
Where nodep = 10
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Ici on cre une vue pour pouvoir faire des
requtes uniquement sur les employs du
dpartement 10. Donc ensuite on peut effectuer
des requtes sur cette vue exactement de la
mme manire qu'avec une table.
Avantages
Grces aux vues on a de nombreux avantages :
O Perception plus proche des besoins des
utilisateurs.
O D-normalisation de la structure de la base de
donnes sans introduire de la redondance.
Meilleure indpendance logique des
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
O Meilleure indpendance logique des
programmes par rapport aux donnes.
O Limiter les accs aux donnes.
O Simplification des requtes utilisateurs.
O Regroupement de donnes au sein d'une entit.
Interrogation travers des vues
Pour interroger une vue on procde exactement de la
mme manire que pour une table. Voici un exemple
complet montrant la cration d'une vue, une requte
sur cette vue et la requte sans la cration de la vue.
On veut crer une table avec les gros consommateurs.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
On veut crer une table avec les gros consommateurs.
Create View GROSCONSO
As Select numconso, nom, prnom, adresse
From ABUS, CONSOMMATEUR
Where ABUS.numconso = ABUSnumconso and qte
> 10
Maintenant on veut le nom et prnom des
gros consommateurs qui habite Safi.
Select nom, prnom
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Select nom, prnom
From GROSCONSO
Where adresse like Safi";
Mise jour travers des vues
Si l'on veut vrifier que les donnes mises
jour dans la vue sont bien les proprits
demandes on rajoute la clause with
check option. Donc une fois cette clause
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
check option. Donc une fois cette clause
mise lors de la dclaration, on ne peut
mettre jour les donnes seulement si
elles correspondent aux proprits
demandes.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
PRIVILGES DACCES A LA PRIVILGES DACCES A LA
BASE BASE
91 91
GRANT GRANT
GRANT privilge ON table/vue TO GRANT privilge ON table/vue TO
utilisateur [WITH GRANT OPTION] utilisateur [WITH GRANT OPTION]
SELECT, INSERT, SELECT, INSERT, UPDATE, DELETE, UPDATE, DELETE,
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
SELECT, INSERT, SELECT, INSERT, UPDATE, DELETE, UPDATE, DELETE,
ALTER, ALL ALTER, ALL
92 92
REVOKE REVOKE
REVOKE privilge ON table/vue FROM REVOKE privilge ON table/vue FROM
utilisateur utilisateur
Reprise du privilge Reprise du privilge
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Reprise du privilge Reprise du privilge
93 93
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
LES TRANSACTIONS EN LES TRANSACTIONS EN SQL SQL
94 94
COMMIT COMMIT
COMMIT COMMIT Valider la transaction en cours Valider la transaction en cours
COMMIT [ COMMIT [ WORK | TRANSACTION ] WORK | TRANSACTION ]
Description Description
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Description Description
COMMIT COMMIT valide la transaction en cours. Tout le monde valide la transaction en cours. Tout le monde
peut dsormais voir les modifications ralises au cours peut dsormais voir les modifications ralises au cours
de la transaction. De plus, leur persistance est garantie de la transaction. De plus, leur persistance est garantie
en cas d'arrt brutal du serveur. en cas d'arrt brutal du serveur.
95 95
ROLLBACK ROLLBACK
ROLLBACK ROLLBACK annule la transaction en cours annule la transaction en cours
ROLLBACK [ ROLLBACK [ WORK | TRANSACTION ] WORK | TRANSACTION ]
Description Description
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Description Description
ROLLBACK ROLLBACK annule la transaction en cours et toutes les annule la transaction en cours et toutes les
modifications effectues lors de cette transaction. modifications effectues lors de cette transaction.
96 96
ROLLBACK TO SAVEPOINT ROLLBACK TO SAVEPOINT
ROLLBACK TO SAVEPOINT ROLLBACK TO SAVEPOINT annule les annule les
instructions jusqu'au point de sauvegarde instructions jusqu'au point de sauvegarde
ROLLBACK [ ROLLBACK [ WORK | TRANSACTION ] TO WORK | TRANSACTION ] TO
[ SAVEPOINT ] [ SAVEPOINT ] nom_pointsauvegarde nom_pointsauvegarde
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
[ SAVEPOINT ] [ SAVEPOINT ] nom_pointsauvegarde nom_pointsauvegarde
Description Description
Annule toutes les commandes qui ont t excutes aprs Annule toutes les commandes qui ont t excutes aprs
l'tablissement du point de sauvegarde. Le point de l'tablissement du point de sauvegarde. Le point de
sauvegarde reste valide. Il est possible d'y sauvegarde reste valide. Il est possible d'y d'y d'y revenir revenir
encore si cela s'avrait ncessaire. encore si cela s'avrait ncessaire.
97 97
SAVEPOINT SAVEPOINT
SAVEPOINT SAVEPOINT dfinit un nouveau point de dfinit un nouveau point de
sauvegarde l'intrieur de la transaction en sauvegarde l'intrieur de la transaction en
cours cours
SAVEPOINT SAVEPOINT nom_pointsauvegarde nom_pointsauvegarde
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Description Description
SAVEPOINT SAVEPOINT tablit un nouveau point de sauvegarde tablit un nouveau point de sauvegarde
l'intrieur de la transaction en cours. l'intrieur de la transaction en cours.
Un point de sauvegarde est une marque spciale l'intrieur Un point de sauvegarde est une marque spciale l'intrieur
d'une transaction qui autorise l'annulation de toutes les d'une transaction qui autorise l'annulation de toutes les
commandes excutes aprs son tablissement, restaurant commandes excutes aprs son tablissement, restaurant
la transaction dans l'tat o elle tait au moment de la transaction dans l'tat o elle tait au moment de
l'tablissement du point de sauvegarde. l'tablissement du point de sauvegarde.
98 98
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
NORMALISATION DES BASES NORMALISATION DES BASES
DE DE
DONNES DONNES
99 99
Buts et Principe Buts et Principe
Conformit des tables et relations avec le Conformit des tables et relations avec le
modle relationnel utilis par le Moteur. modle relationnel utilis par le Moteur.
Ecriture Ecriture simplifie des requtes simplifie des requtes
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Assurer lintgrit des donnes Assurer lintgrit des donnes
Utilisation optimale des ressources Utilisation optimale des ressources
Appliquer des rgles : Formes Normales. Appliquer des rgles : Formes Normales.
100 100
Les dpendances fonctionnelles Les dpendances fonctionnelles
Dpendance Dpendance
fonctionnelle simple fonctionnelle simple
Dpendance Dpendance
De plusieurs valeurs De plusieurs valeurs
A A BB A A B B
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 101 101
A dtermine B A dtermine B A dtermine A dtermine
plusieurs B plusieurs B
Les Formes Normales Les Formes Normales
Ce sont des rgles appliquer : Ce sont des rgles appliquer :
A la conception dune base pour sassurer A la conception dune base pour sassurer
de sa cohrence. de sa cohrence.
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
de sa cohrence. de sa cohrence.
Sur une base existante pour en vrifier la Sur une base existante pour en vrifier la
cohrence. cohrence.
102 102
1 1 NF NF -- 11
re re
Forme Normale Forme Normale
Les champs doivent tre atomiques Les champs doivent tre atomiques
Il ne peut y avoir de champs rptitifs Il ne peut y avoir de champs rptitifs
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI
Les champs ont une signification constante Les champs ont une signification constante
et prcise dans le temps. et prcise dans le temps.
103 103
1 1 NF NF -- Exemple Exemple 11
Nom Adresse Ville
Ahmed RAAD 5 Rue des fleurs Rabat, Rabat
Farid SAMAH 45 Immeuble ARAR Fs, Fs-Boulmane
Bouchra DALIL 19 Avenue FAR Eljadida, Doukkala-Abda
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 104 104
Nom Adresse Ville Rgion
Ahmed
RAAD
5 Rue des
fleurs
Rabat, Rabat Rabat
Farid
SAMAH
45 Immeuble
ARAR
Fes, fs-Boulmane Fs-Boulmane
Bouchra
DALIL
19 Avenue
FAR
Eljadida, Doukkala-
Abda
Doukkala-Abda
1 1 NF NF -- Exemple Exemple 11
Num-
emprunteur
Livre 1 Livre 2 Livre 3
150001 James Bond et
Dr No
Mobby Dick
150002 Alice au pays
des Merveilles
Colargol TinTin et le
lotus bleu
150009 La relativit
ENSA Safi Analyse des Systmes dInformation : MERISE Dr. Sad ECH CHADI 105 105
Num-
emprunte
ur
Nom
emprunteur
150001 Farid
RAMADAN
150002 Aya DAHAN
150009 Nour FADIL
Num-emprunteur Nom emprunteur
James Bond et Dr No 150001
Mobby Dick 150001
Alice au pays des
Merveilles
150002
La relativit 150009
Colargol 150002
TinTin et le lotus bleu 150002