Vous êtes sur la page 1sur 50

Bases de Donnes

Rosine CICCHETI, Lot LAKHAL, Sebastien NEDJAR

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Premire partie

Introduction
1 Approche par application
On informatise les entreprises, les organisations (lunivers rel) en tant guid par les programmes. Application 1 Application 2

Figure 1 Approche par application Ces approches ont conduit la crise du logiciel . Inconvnients Redondance de donnes : les donnes sont dupliques autant de fois quon en a besoin dans les direntes applications perte de place : dperdition de stockage danger dincohrence des donnes lors des mises jour Dpendance entre donnes et programmes do maintenance accrue Dpendance entre niveaux logique et physique : vision de lutilisateur des donnes et ce qui est eectivement stock sur son disque Dicult de dvelopper de nouvelles applications non prvues (informatique dcisionnelle) Avantage : dmarche relativement facile mettre en uvre et progressive

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Approche base de donnes

Figure 2 Approche base de donnes SGBD : Systme de Gestion de Bases de Donnes Avantages limination de la redondance de donnes Indpendance donnes/programmes Indpendance entre niveaux logique et physique Facilit de dvelopper de nouvelles applications non prvues Inconvnients dmarche longue, coteuse, dicile mettre en uvre

Modles de bases de donnes Modle hirarchique (1960) Modle Codasyl (1964) Modle relationnel (1970) Modle orient objet (1990)

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Deuxime partie

Le modle relationnel
3
3.1

Introduction
3 composantes

Les concepts relationnels Domaine, relations, tuples, attributs, clef primaire, clef trangre, relation statique, relation dynamique, schma relationnel. Algbre relationnel Projection, slection, jointure, division, union, intersection, dirence. Contraintes dintgrit relationnelle Intgrit de domaine, inligibilit de relation, intgrit de rfrences.

3.2

Rappels mathmatiques

Produit cartsien Soient A et B deux ensembles tels que : A B = {(a, b)/a A, b B } Exemple : A = {1, 2, 3} B = {4, 5} A B = {(1, 4), (1, 5), (2, 4), (2, 5), (3, 4), (3, 5)} Relation binaire Soient A et B deux ensembles et R A B une relation entre les lments de A et de B . R contient les couples de A B . Exemple : R1 = {a1 , b1 } R2 = {(a1 , b1 ), (a2 , b2 )}

4
4.1

Concepts relationnels
Domaine smantique

Un domaine smantique est un ensemble de valeurs atomiques, ou simples. Chaque domaine est caractris par un type de base (numrique : entier, rel ; alphanumrique : string, date,...). Exemple D_NOMAV = Domaine de nom des avions D_NOMPIL = Domaine de nom des pilotes D_NOMAV = {A310,A330,A340,B727,B747} D_NOMPIL = {DUPONT,ROGER} Le domaine smantique a comme objectif de vrier la validit des comparaisons (vite de comparer D_NOMPIL avec D_NOMAV).

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

4.2

Relations/tuples

Soient D1 , D2 , ..., Dn , n domaines non ncessairement distincts. Une relation R est le sous-ensemble du produit cartsien de ces n domaines : R D1 D2 Dn La relation en base de donnes est une relation n-aire avec des n-uplets comme lments. Exemple AVION D_NUMAV D_NOMAV D_CAP D_VILLE AVIOND_NUMAVD_NOMAVD_CAPD_VILLE Tuple reprsente un avion : (100,A310,250,MARSEILLE) 4.2.1 Reprsentation tabulaire dune relation

AVION={(100,A310,250,MARSEILLE),(200,B747,450,PARIS)} AVION NUMAV 100 200 NOMAV A310 B747 CAP 250 450 VILLE MARSEILLE PARIS

Table 1 Reprsentation tabulaire de la relation AVION Ici, AVION est len-tte NUMAV, NOMAV, CAP, VILLE sont les attributs Le corps est constitu des dirents tuples Les tuples sont les direntes lignes du tableau Le corps est lextension du schma relationnel Len-tte est le schma de la relation/intention

4.3

Attributs

Lattribut est un rle jou par un domaine dans une relation pour liminer les ambiguts (D_VILLED_VILLE). VOLD_NUMVOLD_VILLED_VILLED_HEURED_HEURE Attribut NUMVOL, VILLE_DEP, VILLE_ARR, H_DEP, H_ARR Un attribut joue un rle dans un domaine, un domaine a un type dni. Ainsi, (IT100, PARIS, LONDRES, 18, 20) avec les attributs D_NUMVOL NUMVOL D_VILLE VILLE_DEP D_VILLE VILLE_ARR D_HEURE HEURE_DEP D_HEURE HEURE_ARR Chaque attribut est dni sur un domaine.

4.4

Clef primaire

Une clef primaire est un attribut, ou groupe dattributs, permettant didentier de manire unique les tuples de la relation. 4

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Exemple NUMAV ne contient aucun doublon, et est ainsi le domaine de clef primaire de la relation AVION.

4.5

Domaine primaire

Cest le domaine dans lequel est dni un attribut, une clef primaire. Exemple D_NUMAV : domaine primaire NUMAV : clef primaire

4.6

Clef trangre

Cest un attribut, ou groupe dattribut, dni sur un ou plusieurs domaines primaires, qui est clef primaire dans une autre relation. Exemple AVION(NUMAV, NOMAV, CAP, LOC) VOL(NUMVOL, NUMAV#, NUMPIL#, VILLE_DEP, VILLE_ARR, HEURE_DEP, HEURE_ARR) PILOTE(NUMPIL, NOMPIL, ADR, SALAIRE)

4.7

Schma relationnel

Cest le schma de chaque relation, la liste des attributs. La clef trangre sert exprimer des liens smantiques entre les relations du schma relationnel. Cest lensemble du schma de relations lies travers des clefs primaires et trangres. Chaque schma de relation est dcrit par le nom de la relation et la liste de ses attributs : AVION(NUMAV, NOMAV, CAP, LOC).

4.8

Autres concepts

Degr et cardinalit dune relation Le degr dune relation est le nombre dattributs dune relation. La cardinalit dune relation est le nombre de ses tuples. Relations dynamiques et statiques Une relation dynamique est une relation qui contient une clef trangre. Une relation statique est une relation indpendante, qui ne contient pas de clef trangre. Attributs comparables ou compatibles Deux attributs sont comparables ou compatibles sils sont dnis sur le mme domaine.

5
5.1

Contraintes dintgrit relationnelles


Contraintes dintgrit statique/structurelle

Ce sont les rgles de cohrence de la base induite par les concepts relationnels. Elles sont invariantes et ne dpendant pas de lapplication. Contrainte de domaine Toute valeur aecte un attribut doit tre dans le domaine de lattribut.

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Contrainte de relation Toute valeur aecte la clef primaire doit tre unique et obligatoire (doit exister). Contrainte de rfrence Toute valeur aecte la clef trangre doit exister dans la clef primaire associe.

5.2

Contraintes dynamiques/applicatives

Les rgles de cohrence de la base de donnes dpendent de lapplication. Exemple Pour un vol, on a VILLE_DEP<>VILLE_ARR et HEURE_DEP<>HEURE_ARR. La contrainte statique est vrie automatiquement par le SGBD. Les contraintes dynamiques sont spcies et programmes par ladministrateur de la base de donnes.

6
6.1

Algbre relationnel
Gnralits

Oprateurs relationnels Relation unaire Projection, slction. Relation binaire Jointure, division. Oprateurs ensemblistes Union, qui sapparente un OR Intersection, qui sapparente un AND Dirence, qui sapparente un NOT

6.2
6.2.1

Oprateurs relationnels
Projection

Dnition Soit R(U ) une relation dattributs U telle que U = {A1 , A2 , . . . , An } , X U RS = PROJECTION(R/X ) RS = {t(X )/r R}

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

PILOTE

NUMPIL 100 200 300

NOMPIL Dupont Durand Martin

ADR Marseille Marseille Nice

SALAIRE 5000 4000 3000

Table 2 Reprsentation tabulaire de la relation PILOTE Exemple : quels sont les noms et adresses des pilotes ? RS = PROJECTION(P ILOT E/N OM P IL, ADR) RS NOMPIL Dupont Durand Martin ADR Marseille Marseille Nice

Table 3 Projection de PILOTE sur NOMPIL et ADR RS = PROJECTION(P ILOT E/ADR) RS ADR Marseille Nice

Table 4 Projection de PILOTE sur ADR La projection limine les doublons. Proprits Degr e(RS ) Degr e(R) Cardinalit e(RS ) Cardinalit e(R) 6.2.2 Slection

Soient R(U ) une relation dattributs U = {A1 , A2 , . . . , An } constante et Ai une valeur dans le domaine de A. RS = SELECTION(R/Aiconstante) est lun des oprateurs suivants : =, <, >, <> 1 , , . Exemple : chercher les pilotes habitant Marseille RS = SELECTION(P ILOT E/ADR = MARSEILLE ) RS NUMPIL 100 200 NOMPIL Dupond Durand ADR Marseille Marseille SALAIRE 5000 4000

Table 5 Pilotes habitant Marseille


1. oprateur de dirence, quivalent ! =

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Proprits Degr e(RS ) = Degr e(R) Cardinalit e(RS ) Cardinalit e(R) On a ainsi les oprateurs suivants : La projection : sert dcouper verticalement une relation La slection : sert dcouper horizontalement une relation Toujours commencer par la slection Exemple : quels sont les noms des pilotes habitant Marseille ? R1 = SELECTION(P ILOT E/ADR = M arseille ) RS = PROJECTION(R1/N OM P IL) RS NOMPIL Dupont Durand

Table 6 Slection et projection 6.2.3 Jointure

La jointure est un oprateur binaire : elle ncessite deux relations. Soient R(U1 ), S (U2 ) deux relations dattributs U1 = {A1 , A2 , . . . , An } et U2 = {B1 , B2 , . . . , Bn } et Ai U1 , Bj U2 deux attributs compatibles. RS = JOINTURE(R, S/Ai Bj ) RS = {(t, s)/t R, s S, t(Ai )S (Bj )} avec un oprateur de comparaison. Le schma de RS contient tous les attributs de A et tous les attributs de S . R A a1 a2 a3 B b1 b1 b2 C c1 c1 c1 S A a1 a1 a2 a2 D d1 d2 d3 d4 RS A a1 a1 a2 a2 B b1 b1 b1 b1 C c1 c1 c1 c1 A a1 a1 a2 a2 D d1 d2 d3 d4

Table 7 Jointure entre R et S sur A Exemple : quels sont les noms des pilotes en service ? PILOTE NUMPIL 10 20 30 NUMPIL 10 10 30 NOMPIL Dupont Durand Dupont NUMAV 100 100 200 ADR Nice Marseille Marseille VILLE_DEP Marseille Paris Toulous SAL 5000 6000 4000 VILLE_ARR Paris Marseille Paris

VOL

NUMVOL IT100 IT200 IT300

Table 8 Relations PILOTE et VOL 8

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

R1 = JOINTURE(P ILOT E, V OL/N U M P IL = N U M P IL) RS = PROJECTION(R1/N OM P IL) R1 NUMPIL 10 10 30 NOMPIL Dupont Dupont Dupont ADR Nice Nice Marseille SAL 5000 5000 4000 RS NUMVOL IT100 IT200 IT300 NOMPIL Dupont Dupont NUMPIL 10 10 30 NUMAV 100 100 200 VILLE_DEP Marseille Paris Toulouse VILLE_ARR Paris Marseille Paris

Table 9 Jointure entre PILOTE et VOL sur NUMPIL Dirents types de jointures quijointure RS = JOINTURE(P ILOT E, V OL/N U M P IL = N U M P IL) Jointure naturelle Enlve la deuxime occurreence dun attribut identique (ici, enlve NUMPIL). RS NUMPIL 10 10 30 NOMPIL Dupont Dupont Dupont ADR Nice Nice Marseille SAL 5000 5000 4000 NUMVOL IT100 IT200 IT300 NUMAV 100 100 200 VILLE_DEP Marseille Paris Toulouse VILLE_ARR Paris Marseille Paris

Table 10 Jointure naturelle entre PILOTE et VOL sur NUMPIL Jointure par <> RS = JOINTURE(P ILOT E, V OL/N U M P IL <> N U M P IL)

RS

NUMPIL 10 20 20 20 30 30

NOMPIL Dupont Durand Durand Durand Dupont Dupont

ADR Nice Marseille Marseille Marseille Marseille Marseille

SAL 5000 6000 6000 6000 4000 4000

NUMVOL IT300 IT100 IT200 IT300 IT100 IT200

NUMPIL 30 10 10 30 10 10

NUMAV 200 100 100 200 100 100

VILLE_DEP Toulouse Marseille Paris Toulouse Marseille Paris

VILLE_ARR Paris Paris Marseille Paris Paris Marseille

Table 11 Jointure entre PILOTE et VOL avec NUMPIL<>NUMPIL Autojointure RS = JOINTURE(P ILOT E, P ILOT E/N U M P IL = N U M P IL)

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

RS

NUMPIL 10 20 30

NOMPIL Dupont Durand Dupont

ADR Nice Marseille Marseille

SAL 5000 6000 4000

NUMPIL 10 20 30

NOMPIL Dupont Durand Dupont

ADR Nice Marseille Marseille

SAL 5000 6000 4000

Table 12 Autojointure de PILOTE sur NUMPIL 6.2.4 Division

Soient R(B, A) et S (A) deux relations respectivement binaire et unaire, avec Ar et As dnis sur le mme domaine. RS = DIVISION(R, S/Ar , As ) Ar et As nont pas forcment le mme nom. RS = {t(B )/t R, s S, (t(B ), S (A)) R} Contraintes R a deux attributs, S un seul. Les attributs de la division doivent tre compatibles. RS = DIVISION(R, S/A, A) R B b1 b1 b2 A a1 a2 a1

A a1 a2

RS

B b1

Table 13 Division de R par S b1 est associ dans R toutes les valeurs de A. B = {b1 , b2 } {(b1 , a1 ), (b1 , a2 )} Or b2 nest pas associ dans R a2 donc il nest pas conserv. Remarques La division exprime tous les , ou bien au moins tous les La jointure exprime un , il existe Exemple : numros des pilotes qui conduisent tous les avions de sa compagnie NUMAV est lattribut de la division. R1 = PROJECTION(AV ION/N U M AV ) R2 = PROJECTION(V OL/N U M AV, N U M P IL) RS = DIVISION(R1, R2/N U M AV, N U M AV ) Les pilotes apparaissant dans le rsultant sont associs tous les avions de la compagnie.

10

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

6.3

Oprateurs ensemblistes

Figure 3 Oprateurs ensemblistes ROUGE : intersection (R S ; RS = INTERSECTION(R, S ) = {t/t R t S }) VERT : union (R S ; RS = UNION(R, S ) = {t/t R t S }) BLEU : dirence (R S ; RS = DIFFERENCE(R, S ) = {t/t R t / S }) R et S sont uni-compatibles si : Degr e(R) = Degr e(S ) Les attributs de R et S sont dnis sur le mme domaine Exemple Soient R(A, B, C ) et S (D, E, F ) des relations. R et S sont uni-compatibles si A est sur le mme domaine que D B est sur le mme domaine que E C est sur le mme domaine que F Exemple : noms des pilotes habitant Nice et gagnant 5000e R1 = SELECTION(P ILOT E/ADR = N ice ) R2 = SELECTION(P ILOT E/SAL = 5000) R3 = INTERSECTION(R1, R2) RS = PROJECTION(R3/N OM P IL) R1 = SELECTION(P ILOT E/ADR = N ice ) R2 = SELECTION(R1/SALAIRE = 5000) RS = PROJECTION(R2/N OM P IL) Exemple : noms des pilotes qui nont jamais assur de vol R1 = PROJECTION(V OL/N U M P IL) R2 = PROJECTION(P ILOT E/N U M P IL) R3 = DIFFERENCE(R2, R1) R4 = JOINTURE(P ILOT E, R3/N U M P IL = N U M P IL) RS = PROJECTION(R4/N OM P IL)

11

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Troisime partie

Dpendances fonctionnelles
7 Dnition
Soient r(R) une relation dattributs R et x, y R. y dpend fonctionnellement de x, ou x dtermine y , ou x implique y , X Y , si et seulement si t, t r. Si t(x) = t (x), alors t(y ) = t (y ), tous les tuples ayant mme valeur sur x ont mme valeur sur y , chaque valeur de x correspond au plus une valeur de y , = |r(x)[ . |r(x, y )|
Cardinalit de r (x,y ) Cardinalit de r (x)

8
8.1

Axiomes dArmstrong
Rexivit
Si y X alors x y (x x).

8.2

Augmentation

Si x y et w z alors x, z y, w (x, z y si w = ).

8.3

Transitivit

Si x y et y z alors x z .

8.4

Pseudo-transitivit

Si x y et y, z t alors x, y t.

8.5

Dcomposition

Si x y, z alors x y et x z .

8.6

Union

Si x y et x z alors x y, z .

Dpendance fonctionnelle minimale


X A est une dpendance fonctionnelle minimale si et seulement si A est un attribut unique (les cibles de la DF 2 minimale comportent un seul attribut) x X, X x A (tous les attributs de la source de la DF sont ncessaires)

Exemple D A est une DF minimale (car A) BD A nest pas une DF minimale (car D A, B nest pas ncessaire)

10

Clef candidate

X R est une clef candidate si et seulement si X R.


2. dpendance fonctionnelle

12

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

11

Clef candidate minimale

X R est une clef candidate minimale si et seulement si X est une clef candidate minimale x X, X x R (tous les attributs de X sont ncessaires pour dterminer R)

12

Clef primaire

X R est une clef primaire si et seulement si X est une clef candidate minimale. Critres de choix dune clef primaire parmi les clefs candidates minimales 1. nombre dattributs (choisir le plus petit) 2. type (les types numriques sont prioritaires)

13

Attributs non-clef

A R est un attribut non-clef si et seulement si A nest pas une clef candidate minimale.

13

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Quatrime partie

Thorie de modlisation
14 Objectif
Un bon schma relationnel est un schma relationnel qui prsente le moins de redondance de donnes et le moins danomalies de stockage dans un environnement de mise jour.

14.1

Mauvais schma relationnel


ENSEIGNANT NOM CICCHETI MIRANDA LAKHAL DUPONT CASALI LAPORTE FONCTION PROF PROF PROF ASSISTANT MC MC SALAIRE 5000 5000 5000 2000 4000 4000

Table 14 Mauvais schma relationnel Ce schma relationnel est mauvais : Redondance de donnes : (Prof,5000) se rpte plusieurs fois Anomalie de stockage lors des oprations de mises jour Ajout dune nouvelle fonction et dun nouveau salaire (exemple : (-,MA,3000)) impossible car la valeur de la clef primaire nest pas dnie Baisser le salaire des professeurs ncessite plusieurs oprations Supprimer lenseignant DUPONT fait perdre de linformation (les assistants gagnent 2000e).

14.2

Bon schma relationnel


ENSEIGNANT NOM CICCHETI MIRANDA DUPONT CASALi FONCTION PROF PROF MA MC FONCTION FONCTION PROF MA MC SALAIRE 5000 3000 4000

Table 15 Bon schma relationnel

15

Formes normales

Il y a trois formes normales : 1NF, 2NF et 3NF. Plus le degr de normalit dune relation est important, moins on a de redondances de donnes et danomalie de stockage dans un contexte de mise jour.

15.1

1NF (1st Normal Form)

Une relation r(R) est en 1NF si et seulement si tous les attributs de r(R) sont mono-valus (pour tout tuple de r, chaque attribut prend une seule valeur).

14

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Exemple de relation N1NF LIVRE CODE C1 C2 C3 TITRE T1 T2 T4 AUTEUR A1 A1 , A2 A2 , A3 , A4

Table 16 Relation N1NF AUTEUR est un attribut multivalu, LIVRE nest donc pas en 1NF. 15.1.1 Normalisation en 1NF

Cas 1 : ajout dattributs LIVRE CODE C1 C2 C3 TITRE T1 T2 T4 AUTEUR 1 A1 A1 A2 AUTEUR 2 A2 A3 AUTEUR 3

A4

Table 17 Ajout dattributs Cas 2 : ajout dune relation toute clef AUTEURS LIVRE CODE C1 C2 C3 TITRE T1 T2 T4 CODE C1 C2 C2 C3 C3 C3 AUTEUR A1 A1 A2 A2 A3 A3

Table 18 Relation toute clef

15.2

2NF (2nd Normal Form)

Une relation r(R) est en 2NF si et seulement si : elle est en 1NF il ny a pas de DF entre une partie dune clef candidate minimale et un attribut qui nappartient pas une clef candidate minimale DF problmatique X
une partie dune CCM

A
un attribut qui nappartient pas une CCM

Exemple COMMANDE(NO_PROD, NO_FOURN, NOM_FOURN, QTE_FOURN) avec NO_PROD, NO_FOURN NOM_FOURN, QTE_FOURN NO_PROD NOM_FOURN Fcommande =
une partie dune CCM / CCM

15

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Une seule clef candidate minimale : (NO_PROD,NO_FOURN). COMMANDE nest pas en 2NF. 15.2.1 Normalisation en 2NF

Thorme de dcomposition de Casey-Delabel : Soit r(R) une relation, avec x, y R et x y . On a r = JointureNaturelle(r1 , r2 /x = x) avec r1 = Projection(r/x, y ) et r2 = Projection(r/y, x). Ce thorme nous garantit que la dcomposition de r(x, y, z ) en r1 (x, y ) et r2 (x, z ) est rversible (sans perte dinformation). Exemple de normalisation en 2NF COMMANDE(NO_PROD, NO_FOURN, NOM_FOURN, QTE_FOURN) devient : COMMANDE(NO_PROD,NO_FOURN,QTE_FOURN) r1 (NO_FOURN, NOM_FOURN)
FOURNISSEUR

Remarque lorsque les clefs candidates minimales ne comportent quun seul attribut, la relation est automatiquement en 2NF.

15.3

3NF (3rd Normal Form)

Une relation r(R) est en 3NF si et seulement si : r(R) est en 2NF il ny a pas de DF entre un attribut ou groupe dattributs qui nest pas une clef candidate minimale, et un attribut qui nappartient pas une clef candidate minimale DF problmatique X
nest pas une CCM

A
/ CCM

15.3.1

Normalisation en 3NF

PRODUIT(NO_PROD, LIBELLE, CODE_TVA, TAUX_TVA) avec FPRODUIT = NO_PROD LIBELLE, CODE_TVA, TAUX_TVA CODE_TVA TAUX_TVA

devient : TVA(CODE_TVA, TAUX_TVA) PRODUIT(NO_PROD, LIBELLE, CODE_TVA)

16

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Cinquime partie

Algorithmes et mthodes de normalisation


Objectif : aider la conception dun schma relationnel en 3NF

16
16.1

Concepts de base
Drivabilit des DF
x y)

Soit F un ensemble de DF sur r(R) et x, y R. On dit que x y est drivable partir de F(F si x y peut tre obtenue partir de F en appliquant les axiomes dArmstrong. Exemple F= AB BC

16.2

Couverture dun ensemble de DF


sur r(R). G est une couverture de F si et seulement si : x A) x A) et F est une couverture de G.

Soit F un ensemble de DF F G (x A G, F G F (x A F, G G est une couverture de F

16.3

Couverture minimale dun ensemble de DF

Soit F un ensemble de DF. M est une couverture minimale de F si et seulement si : Toutes les DF de M sont de la forme X A (un attribut cible) x A M, x X, MX x A (chaque DF de M est minimale) x A M, M {x A} X A (chaque DF de M est ncessaire) Si ces trois conditions sont vraies alors M est une couverture minimale de F.

16.4

Fermeture dArmstrong

Soit F un ensemble de DF sur r(R) et Z1 , Z2 , . . . , Zn une suite cumulative (Z1 Z2 Z3 . . . Zn ). La + fermeture dArmstrong dun ensemble dattributs selon un ensemble de DF est note (XF ). 16.4.1 Application +

S ( R) P ( R) + X XF = Zn avec Zn+1 = Zn , Z1 = X, Zn = Zn1 {A R/x A F, X Zn1 } 16.4.2


+ Exemple : BDF , la fermeture de BD selon F + BDF = Zn

Z1 = BD Z2 = BD {E, A} = ABDE Z3 = ABDE {C } = ABCDE Z4 = ABCDE {F} = Z3


+ XF = X tous les attributs dtermins par X (directement ou indirectement)

17

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

17
17.1

Algorithmes de normalisation
Algorithme de calcul dune clef candidate minimale

Entre : F un ensemble de DF sur r(R) Sortie : X R une clef candidate minimale pour r(R) Algorithme X := R Pour tout A R si (X A)+ F = R alors X := X A Renvoyer X

17.2

Algorithme de calcul dune couverture minimale

tapes de calcul 1. Dcomposer les DF (un seul attribut cible par DF) 2. Suppression des attributs de la source de chaque DF 3. Suppression des DF redondantes

17.3

Algorithme de calcul de la fermeture dArmstrong

Entre : F un ensemble de DF sur r(R) et X R + Sortie : XF la fermeture de X selon F Algorithme Fermeture:= X Rpter DF:= X Pour tout X A F faire Si x Fermeture et A / Fermeture alors Fermeture:=FermetureA Jusqu DF=Fermeture Renvvoyer Fermeture

18

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Sixime partie

Modlisation de bases de donnes


Jusqu prsent, nous avons prsent des approches de conception faisant abstraction de lunivers rel. partir dune liste dattributs et dun ensemble de dpendances fonctionnelles, on arrivait trouver le schma normalis relationnel directement. Cette approche a des limites : lidentication des DF est ardue voire impossible du premier coup les algorithmes ont un cot qui augmente exponentiellement avec le nombre dattributs un schma relationnel est dicilement comprhensible pour lutilisateur/client Pour rsoudre ces problmes, on va ajouter une phase la conception de la base de donnes :

Figure 4 Conception de base de donnes

18

Schma entit/relation

Dnition Le schma entit/relation est une reprsentation statique. Il a pour but de dcrire simplement les donnes ainsi que les liens pouvant exister.

18.1

Les types dentits

Une entit est la reprsentation dun objet (matriel ou immatriel) identiable de lunivers rel. Par exemple, une voiture dont le numro de srie est X123. Comme en programmation oriente objet, o les objets similaires sont regroups en classe, les entits sont regroupes en types dentits. Un type dentit est la description dentits qui possdent les mmes caractristiques. Par abus de langage, il peut arriver dutiliser le mot entit la place de type dentit . Pour parler dentits, prfrer occurrence . Pour parler de type dentit, prfrer TE .

Figure 5 Reprsentation graphique dun type dentit 19

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

18.2

Les proprits

Une proprit (ou attribut) est une information lmentaire (cest dire non dductible dautres informations) qui prsent un intrt pour le domaine tudi. Lensemble de valeurs permises pour une proprit est son domaine. Il faut tre vigilant en choisissant le nom dune proprit car il ne doit pas tre ambigu.

Figure 6 Reprsentation graphique des propriets

18.3

Les identiants (ou clefs)

Lidentiant dun TE est un ensemble de proprits dont la valeur permet didentier de manire unique une entit (occurrence).

Figure 7 Reprsentation graphique des identiants

18.4

Associations et types dassociations

Une association (ou relation) est un lien smantique entre plusieurs entits (occurrences). Un type dassociation est un ensemble dassociations qui partagent les mmes caractristiques.

20

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Figure 8 Reprsentation graphique dune association 18.4.1 Associations

Figure 9 Association un--un

Figure 10 Association un--plusieurs

21

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Figure 11 Association plusieurs--plusieurs 18.4.2 Cardinalits

Les cardinalits permettent de caractriser la multiplicit du lien qui existe entre les occurrences et lassociation laquelle elle est relie. La cardinalit dun type dassociation (TA) est le nombre de fois minimal et maximal quune entit peut intervenir dans une association de ce type. Une TA dont lune des cardinalits est (n,1) est dite hirarchique.

Figure 12 Reprsentation des cardinalits 18.4.3 Dimension dune TA

La dimension dun TA est le nombre de TE qui participent lassociation.

22

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Figure 13 TA unaire (reective)

Figure 14 TA binaire

23

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Figure 15 TA ternaire 18.4.4 Identication dune association

Une association na pas dexistence en dehors des entits lies. On utilise donc pour lidentier la combinaison des clefs des TE lis. La valeur de lidentiant doit tre unique.

19

Drivation relationnelle

La drivation relationnelle est la transformation dun schma Entits/Associations en un schma relationnel normalis (3NF). Pour ce faire, on applique trois rgles simples : 1. Drivation des TE : 1 TE = 1 relation 2. Drivation des TA non-hirarchiques : 1 TA non-hirarchique = 1 relation. La clef primaire de la relation est lidentiant du TA. 3. Drivation des TA hirarchiques : 1 TA hirarchique = 1 clef trangre du ct de la cardinalit (n,1)

24

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Figure 16 Drivation relationnelle COMPAGNIE(NumComp, NomComp, AdrComp) AVION(NumAv, TypeAv, NumComp#) AFFRETER(NumComp#, NumAv#)

20

Rgles de conception
1. tout TE doit tre identit (avoir une clef) 2. tout TA non(hirarchique doit tre identi par la combinaison des clefs des TE lis 3. tout TE doit tre normalis (3NF) 4. un TA hirarchique ne doit pas avoir dattribut 5. un TA de degr suprieur 1 ne peut pas tre hirarchique

25

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Septime partie

Le langage SQL
SQL (Structured Query Language) prend trois aspects : langage de manipulation de donnes (LMD) : requtes et mises jours des donnes (INSERT,DELETE, UPDATE ) langage de dnition de donnes (LDD) : manipulation de la structure, cration de relations, ajout dattributs,... langage de contrle des donnes (LCD) : intgrit, condentialit SQL est une norme ANSI, mais suivant les SGBD, on a des variantes (dialectes) de SQL comme SQL*Plus dOracle.

21

SQL comme langage de manipulation des donnes (LMD)

Toute requtes SQL sexprime sous forme de blocs.

21.1

Expression des projections

Les attributs projets sont mentionns dans la clause SELECT, spars par des virgules. Exemple : numros et noms des pilotes SELECT FROM NumPil, NomPil PILOTE

Quand on doit conserver tous les attributs, on utilise *. En SQL, il ny a pas dlimination automatique des doublons. Cest la charge de lutilisateur grce au mot-clef DISTINCT. Exemple : numros et noms des pilotes SELECT FROM DISTINCT NumPil, NomPil PILOTE

21.2

Expression des slections

Les slections sexpriment dans la clause WHERE comme en langage algbrique. Exemple : numros des pilotes habitant Marseille SELECT FROM WHERE NumPil PILOTE ADR=Marseille

On peut combiner des conditions avec AND et OR. Exemple : numros des pilotes nomms Dupont habitant Marseille SELECT FROM WHERE NumPil PILOTE ADR=Marseille AND NOMPIL=Dupont

26

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

21.2.1

Prdicats de slection

On peut utiliser les prdicats suivants dans la clause WHERE : <attribut> BETWEEN <valeur1> AND <valeur2> <attribut> IN (<valeur1>, <valeur2>,...) <attribut> LIKE valeur_gnrique% (_ = nimporte quel caractre, % = nimporte quel nombre de caractres) <attribut> IS NULL

21.3

Calculs horizontaux

Ces calculs peuvent gurer soit dans la clause SELECT (le rsultat du calcul fait partie de la requte), soit dans la clause WHERE (la condition porte sur le rsultat du calcul). Il est possible dutiliser les oprateurs +, -, *, / sur les nombres, + et - sur les dates, et || (concatnation) sur les chaines ; il est aussi possible dutiliser les fonctions UPPER (passer une chane en majuscules), LOWER (passer une chane en minuscule) et LENGTH (renvoie la taille de la chane).

21.4

Calculs verticaux

Les cinq fonctions classiques sont : SUM (somme) AVG (moyenne) COUNT (comptage) MIN (valeur minimum) MAX (valeur maximum) Un calcul vertical seectue une seule fois pour tous les tuples dune relation. Il est possible de combiner les calculs horizontaux et verticaux. Exemple : donner le total des salaires des pilotes SELECT FROM SUM (SAL) PILOTE

Les valeurs nulles sont ignores. Le seul cas o SUM, AVG, MIN et MAX renvoient NULL est quand toutes les valeurs sont nulles. Pour donner une valeur par dfaut au lieu de NULL, on utilise NVL. Exemple : somme des salaires et primes des pilotes SELECT FROM NVL (SUM (SAL),0) + NVL (SUM (Prime),0) PILOTE

21.5

Jointures prdicatives

Elles sexpriment dans la clause WHERE de la mme faon quen langage algbrique : <attribut1> <attribut2>, o est un oprateur de comparaison. Exemple : numro des avions localiss dans la ville de dpart du vol IT100 SELECT FROM WHERE NUMAV AVION, VOL NUMVOL=IT100 AND LOC=VILLE_DEP

27

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Exemple : numro et nom des pilotes faisant au moins un vol au dpart de Nice SELECT FROM WHERE DISTINCT NOMPIL, PILOTE.NUMPIL PILOTE, VOL VILLE_DEP=Nice AND PILOTE.NUMPIL=VOL.NUMPIL

Exemple : auto-jointure, nom des pilotes habitant la mme ville que le pilote 100 SELECT FROM WHERE P.NUMPIL PILOTE P, PILOTE P100 P100.NUMPIL=100 AND P.VILLE=P100.VILLE

21.6

Jointures imbriques

Une jointure imbrique sexprime avec deux blocs : le premier bloc et un bloc imbriqu (ou sous-requte). 21.6.1 La sous-requte renvoie une seule valeur

Exemple : numro des pilotes qui gagnent plus que la moyenne SELECT FROM WHERE NUMPIL PILOTE SAL > ( SELECT FROM

AVG (SAL) PILOTE )

Le bloc imbriqu est excut en premier et une seule fois. 21.6.2 La sous-requte renvoie un seul tuple

Exemple : numro des pilotes ayant la mme adresse et le mme salaire que le pilote 100 SELECT FROM WHERE NUMPIL PILOTE (ADR,SAL)=(SELECT FROM WHERE

ADR,SAL PILOTE NUMPIL=100)

21.6.3

La sous-requte rend un ensemble de rsultats

La comparaison se fait avec un des rsultats du bloc imbriqu Exemple : numro des vols faits par un Airbus SELECT FROM WHERE NUMVOL VOL NUMAV=ANY (SELECT FROM WHERE

NUMAV AVION NUMAV LIKE A%)

28

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Exemple : numro des pilotes ayant le mme salaire et la mme adresse quun Dupont SELECT FROM WHERE NUMPIL PILOTE (SAL,ADR)=ANY (SELECT FROM WHERE

SAL,ADR PILOTE NUMPIL=Dupont)

La comparaison se fait avec tous les resultats du bloc imbriqu Exemple : numro des pilotes marseillais gagnant plus que tous les pilotes parisiens SELECT FROM WHERE NUMPIL PILOTE ADR=Marseille AND SAL > ALL (SELECT FROM WHERE

SAL PILOTE ADR=Paris)

21.7

Oprateurs ensemblistes

Il faut que les clauses SELECT des blocs comportent le mme nombre dattributs, et que ces attributs soient compatibles. Exemple : numro des avions localiss Paris ou faisant un vol au dpart de Paris SELECT FROM WHERE UNION SELECT FROM WHERE NUMAV AVION LOC=Paris NUMAV VOL VILLE_DEP=Paris

Exemple : numro des avions faisant un vol au dpart de leur localisation SELECT NUMAV, LOC FROM AVION INTERSECT SELECT NUMAV, VILLE_DEP FROM VOL

Exemple : numro des avions neectuant aucun vol SELECT FROM MINUS SELECT FROM NUMAV AVION NUMAV VOL

29

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Remarque avec les oprateurs ensemblistes, il y a limination des doublons

21.8

Jointures externes

Une jointure classique entre r1 et r2 parcourt les tuples de r1 et gnre un rsultat pour chaque tuple satisfaisant la condition de jointure. Une jointure externe procde de la mme manire mais conserve les tuples de r1 ne satisfaisant pas la condition de jointure. Exemple : jointure externe entre PILOTE et VOL avec NUMPIL=NUMPIL PILOTE NUMPIL VOL NUMVOL NUMPIL 100 IT100 100 101 IT200 102 102 IT300 100 103 IT400 102 JOINTURE NUMPIL NUMVOL NUMPIL 100 IT100 100 100 IT300 100 101 NULL 101 102 IT200 102 102 IT400 102 103 NULL 103 Table 19 Jointure externe En SQL, la jointure externe est indique par un (+) derrire lattribut de jointure qui pourra prendre des valeurs nulles : SELECT FROM WHERE * PILOTE,VOL PILOTE.NUMPIL=VOL.NUMPIL(+)

21.9

Test de non-existence de tuples

Pour ces requtes, il faut vrier quun tuple appartenant un ensemble E1 nexiste pas dans cet ensemble E2 . Par exemple, les pilotes ne faisant aucun vol. Il y a 5 formulations. 21.9.1 SELECT FROM WHERE Jointure imbrique avec NOT IN NUMPIL PILOTE NUMPIL NOT IN (SELECT FROM

NUMPIL VOL )

21.9.2 SELECT FROM WHERE

Jointure imbrique avec <> ALL NUMPIL PILOTE NUMPIL<>ALL (SELECT FROM

NUMPIL VOL )

30

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

21.9.3 SELECT FROM MINUS SELECT FROM

Dirence ensembliste NUMPIL PILOTE NUMPIL VOL

21.9.4 SELECT FROM WHERE

Jointure externe et prdicat IS NULL * PILOTE,VOL PILOTE.NUMPIL=VOL.NUMPIL(+) AND NUMVOL IS NULL

21.9.5

Bloc imbrique et prdicat NOT EXISTS

Devant un bloc imbrique, NOT EXISTS renvoie : vrai si le bloc imbriqu ne rend aucun rsultat faux si le bloc imbriqu rend des rsultats SELECT FROM WHERE NUMPIL PILOTE NOT EXISTS (SELECT * FROM VOL)

Avec NOT EXISTS, il faut une excution corrle des deux blocs : pour chaque tuple dans le premier bloc, il faut excuter le bloc imbriqu. Pour cela, il faut exprimer une jointure entre les relations des deux blocs. Il faut donner un alias la relation du premier bloc et faire la jointure avec cet alias dans le bloc imbriqu. SELECT FROM WHERE NUMPIL PILOTE P NOT EXISTS (SELECT * FROM VOL WHERE VOL.NUMPIL=P.NUMPIL)

21.10

Oprations de partitionnement

Partitionner une relation consiste crer des classes dquivalence (ou sous-ensembles) telles que : leur union soit gale la relation de dpart les classes dquivalence soient disjointes deux deux (pas de tuples en commun) Le ou les critres permettant de crer ces classes sont les attributs de partitionnement. Par exemple, partitionner VOL sur NUMPIL consiste crer trois classes dquivalence (une par pilote). Chaque classe regroupe les vols dun mme pilote. Avec un partitionnement, on peut appliquer les fonctions agrgatives sur les classes dquivalence. En SQL, le partitionnement se fait dans la clause GROUP BY dans laquelle on indique le ou les attributs de partitionnement. Cette clause suit le WHERE.

31

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Exemple : donner pour chaque pilote, le nombre de vols SELECT NUMPIL, COUNT (*) FROM VOL GROUP BY NUMPIL

Exemple : donner pour chaque pilote et chaque avion, le nombre de vols SELECT NUMPIL, NUMAV, COUNT (*) FROM VOL GROUP BY NUMPIL, NUMAV

Remarque Avec un GROUP BY, on peut combiner un attribut atomique avec une fonction agrgative condition que ce soit lattribut de partitionnement. Exemple : donner pour chaque pilote, le nombre de villes darrives SELECT NUMPIL, COUNT (DISTINCT VILLE_ARR) FROM VOL GROUP BY NUMPIL

Exemple : donner le salaire moyen et maximum des pilotes par ville de rsidence, sauf Paris SELECT ADR, AVG (SAL), MAX (SAL) FROM PILOTE WHERE ADR<>Paris GROUP BY ADR On peut exprimer des conditions sur des classes dquivalence (conditions utilisant des fonctions agrgatives), on utilise la clause HAVING qui suit le GROUP BY. Exemple : donner pour chaque pilote faisant au moins 5 vols, le nombre de vols SELECT NUMPIL FROM PILOTE GROUP BY NUMPIL HAVING COUNT (*)>=5

Exemple : donner le numero des pilotes faisant autant de vols que le pilote 100 SELECT NUMPIL FROM PILOTE GROUP BY NUMPIL HAVING COUNT (*)>=(SELECT FROM WHERE

COUNT (*) VOL NUMPIL=100)

Remarque GROUP BY ne sutilise pas avec DISTINCT, et pas sur une clef primaire.

32

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

21.11
21.11.1

Recherche dans des arborescences


Reprsentation des hirarchies

Exemple : hirarchie des lieux

Figure 17 Hirarchie des lieux Reprsentation avec le modle entit/relation

Figure 18 Hirarchie des lieux avec le modle entit/relation Remarque Ce TA est hirarchique. Reprsentation avec le modle relationnel Lieu(IdLieux, Nom, IdLieuPere#)

33

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

21.11.2

Manipulation de hirarchies

En SQL classique, il faut faire des auto-jointures. Exemple : liste des villes des Bouches-du-Rhne SELECT FROM WHERE LV.NomLieu LIEU LD, LIEU LV LD.NomLieu=Bouches-du-Rhne AND LD.IdLIeu=LV.IdLieuPere

Exemple : liste des villes de PACA SELECT FROM WHERE LV.NomLieu LIEU LR, LIEU LD, LIEU LV LR.NomLieu=PACA AND LR.IdLieu=LD.IdLieuPere AND LD.IdLieu=LV.IdLieuPere

En SQL*Plus dOracle, la clause CONNECT BY permet de parcourir des hirarchies. SELECT <liste_attributs> FROM <relation> -- Une seule relation [WHERE <liste_conditions>] CONNECT BY [PRIOR ] <attribut_fils>=[PRIOR ] <attribut_pere> [AND <condition_hierarchique>] [START WITH <condition_depart>] [ORDER BY LEVEL ] CONNECT BY permet de donner le sens du parcours dans les hirarchies. On met PRIOR devant lattribut ls pour une recherche descendante, ou devant lattribut pre pour une recherche ascendante. Par exemple, CONNECT BY PRIOR IdLieu=IdLieuPere pour descendre dans la hirarchie des lieux. START WITH permet dedonner une condition de dpart pour la recherche. Exemple : donner tous les lieux de la rgion PACA SELECT NomLieu FROM LIEU CONNECT BY PRIOR IdLieu=IdLieuPere START WITH NomLieu=PACA

Remarques si plusieurs tuples satisfont la condition de dpart, la recherche arborescente se fait pour chacun de ces tuples sil ny a pas de START WITH, Oracle part de toutes les racines pour un parcours descendant, ou de toutes les feuilles pour un parcours ascendant on peut mettre des jointures imbriques dans la clause START WITH

34

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Exemple : hirarchie des localisations des villes de dpart des vols SELECT NomLieu FROM LIEU CONNECT BY IdLieu=PRIOR IdLieuPere START WITH NomLieu IN (SELECT Ville_Dep FROM VOL ) AND permet dliminer de la recherche une partie de larbre. Si un nud (tuple) ne satisfait pas cette condition, tous ses descendants sont limins (pour un parcours descendant), ou tous ses ascendants sont limins (pour un parcours ascendant). Exemple : hirarchie des lieux, sauf ceux de la rgion PACA SELECT NomLieu FROM LIEU CONNECT BY IdLieu=PRIOR IdLieuPere AND NomLieu<>PACA

Remarque Si on met NomLieu<>PACA dans le WHERE, la rgion PACA est limine du rsultat mais pas ses dpartements ni ses villes.

ORDER BY permet de trier les rsultats. Exemple : liste alphabtique des pilotes SELECT NOMPIL FROM PILOTE ORDER BY NOMPIL ASC On peut utiliser DESC pour un tri inverse. LEVEL correspond au niveau. Le niveau 1 correspond aux premiers tuples slectionns.

21.12

Calculs imbriques dans le SELECT et le FROM

Exemple : donner le numro des pilotes, lcart entre leur salaire et le salaire moyen 21.12.1 Bloc imbriqu dans le SELECT

Il faut que le bloc renvoie au plus un rsultat. SELECT NUMPIL,SAL-(SELECT AVG (SAL) FROM PILOTE ) FROM PILOTE

21.12.2

Bloc imbriqu dans le FROM

Le rsultat est une relation temporaire. On peut donc limbriquer dans un FROM. SELECT NUMPIL, SAL-SMOY FROM PILOTE, (SELECT AVG (SAL) SMOY FROM PILOTE )

35

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Exemple : donner lcart entre le salaire des pilotes et le salaire moyen de leur ville de rsidence SELECT NUMPIL, SAL-SMOY FROM PILOTE, (SELECT AVG (SAL) SMOY,ADR FROM PILOTE GROUP BY ADR ) PILSAL WHERE PILOTE.ADR=PILSAL.ADR

21.13

Expression des divisions

Il y a deux mthodes. 21.13.1 Avec GROUP BY et comptage

Exemple : numro des pilotes qui conduisent tous les avions (pilotes qui conduisent autant davions quil en existe) SELECT NUMPIL FROM VOL GROUP BY NUMPIL HAVING COUNT (DISTINCT NUMAV)=(SELECT COUNT (*) FROM AVION )

Exemple : numro des pilotes qui conduisent tous les types dappareils SELECT NUMPIL FROM VOL, AVION WHERE VOL.NUMAV=AVION.NUMAV GROUP BY NUMPIL HAVING COUNT (DISTINCT NOMAV)=(SELECT COUNT (DISTINCT NOMAV) FROM AVION )

21.13.2

Avec un double NOT EXISTS

Exemple : numro des pilotes qui conduisent tous les avions (numro des pilotes tels quil nexiste aucun avion qui ne soit pas conduit par ces pilotes) SELECT NUMPIL FROM PILOTE P WHERE NOT EXISTS (SELECT * FROM AVION A WHERE NOT EXISTS (SELECT * FROM VOL WHERE VOL.NUMAV=A.NUMAV AND VOL.NUMPIL=P.NUMPIL))

36

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Exemple : numro des pilotes qui conduisent au moins les mmes avions que le pilote 100 (numro des pilotes tels quil nexiste aucun avion non conduit par le pilote 100 qui ne soit pas conduit par eux) SELECT NUMPIL FROM PILOTE P WHERE NOT EXISTS (SELECT * FROM VOL V WHERE NUMPIL=100 AND NOT EXISTS (SELECT * FROM VOL WHERE P.NUMPIL=VOL.NUMPIL AND V.NUMAV=VOL.NUMAV))

22
22.1

SQL comme langage de contrle des donnes (LCD)


Concept de vue

UNe vue est une table virtuelle. On peut la voir comme une relation temporaire rsultant dune requte. On cre une vue ainsi : CREATE VIEW <nomvue> AS <requete>. Exemple : vue des pilotes habitant Marseille CREATE SELECT FROM WHERE VIEW PIL_MARSEILLE AS NUMPIL, NOMPIL PILOTE ADR=Marseille

22.2

Premier rle des vues : limiter la consultation des donnes

Les vues permettent de limiter laccs aux donnes certains utilisateurs. Lutilisateur aura accs une vue, mais ne pourra pas voir les attributs et tuples qui ne sont pas dans la vue. Lutilisateur peut manipuler les vues comme des relations.

22.3

Deuxime rle des vues : crire des requtes complexes

CREATE VIEW VOL_HORAIRE AS SELECT NUMPIL, SUM (HEURE_ARR-HEURE_DEP) FROM VOL GROUP BY NUMPIL Pour mettre jour une vue, il ne faut pas mettre de GROUP BY, CONNECT BY, DISTINCT, fonctions agrgatives, oprateurs ensemblistes, dans le premier bloc.

37

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Huitime partie

Mmento des ordres SQL*Plus


A SQL comme langage de dnition de donnes (LDD)
Types syntaxiques des attributs : VARCHAR2(n) CHAR[(n)] NUMBER[(n[,m)]] DATE LONG

A.1

Cration de relation
<nom_table> (<nom_colonne1> <type1> [DEFAULT <expression1>] [, <nom_colonne2> <type2> [DEFAULT <expression2>]] [, <contrainte1>[, <contrainte2>]])

CREATE TABLE

o : <contraintei> = CONSTRAINT <nom_contrainte> <spec_contrainte> [<etat>] <spec_contrainte> = PRIMARY KEY (<attribut1[, <attribut2>, ...]) | FOREIGN KEY (<attribut1>[, <attribut2>,...]) REFERENCES <nom_relation_associe>(<attribut1>[, <attribut2>,...]) [ON DELETE <CASCADE|SET NULL> ] | CHECK (<nom_attribut | expression> <condition>) <etat> = ENABLE | DISABLE CREATE TABLE <nom_relation> [(liste_attributs>, <liste_contraintes>)] AS <requete>

A.2

Ajout dattributs et de contraintes dans une relation

ALTER TABLE <nom_table> ADD ([nom_colonne1> <type1>] [DEFAULT <expression1>] [NOT NULL ] [UNIQUE ] [,<nom_colonne2> <type2> [DEFAULT <expression2>] [NOT NULL ] [UNIQUE ]...] [,<contrainte1> ...]) o <contraintei> = CONSTRAINT <nom_contrainte> <spec_contrainte> [<etat>] <spec_contrainte> = PRIMARY KEY (<attribut1[, <attribut2>, ...]) | FOREIGN KEY (<attribut1>[, <attribut2>,...]) REFERENCES <nom_relation_associe>(<attribut1>[, <attribut2>,...]) [ON DELETE <CASCADE|SET NULL> ] | CHECK (<nom_attribut | expression> <condition>) <etat> = ENABLE | DISABLE | VALIDATE | NOVALIDATE | ENABLE VALIDATE | ENABLE NOVALIDATE | DISABLE VALIDATE | DISABLE NOVALIDATE

A.3

Modication de la dnition dun attribut

ALTER TABLE <nom_table> MODIFY [(]<nom_colonne1> [<nouveau_type1>] [DEFAULT <expression1>] [NOT NULL ] [,<nom_colonne2> [<nouveau_type2>] [DEFAULT <expression2>] [NOT NULL ] ... [)]

38

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

A.4

Modication de ltat dune contrainte

ALTER TABLE <nom_table> MODIFY CONSTRAINT <nom_contrainte> <etat_contrainte>

A.5

Suppression de contrainte dans une relation

ALTER TABLE <nom_table> DROP CONSTRAINT <nom_contrainte> [CASCADE ] ALTER TABLE <nom_table> DROP UNIQUE (<nom_attribut>) [CASCADE ] ALTER TABLE <nom_table> DROP PRIMARY KEY [CASCADE ]

A.6

Suppression dattribut dans une relation

ALTER TABLE <nom_table> SET UNUSED COLUMN <nom_attribut> ALTER TABLE <nom_table> SET UNUSED (<nom_attribut1>[, <nom_attribut2> ...]) ALTER TABLE <nom_table> DROP COLUMN <nom_attribut> [CASCADE CONSTRAINTS ] ALTER TABLE <nom_table> DDROP (<nom_attribut1>[, <nom_attribut2>, ...]) [CASCADE CONSTRAINTS ] ALTER TABLE <nom_table> DROP UNUSED COLUMNS

A.7

Suppresion de relation

DROP TABLE <nom_table> [CASCADE CONSTRAINTS ]

A.8

Cration/suppression de synonyme et changement du nom dune relation

CREATE [PUBLIC ] SYNONYM <nom_synonyme> FOR <nom_objet> DROP SYNONYM <nom_synonyme> RENAME <ancien_nom> TO <nouveau_nom>

A.9

Gestion de squences
[START WITH <valeur_initiale>] [INCREMENT BY <valeur_increment>] [MAXVALUE <valeur_maximale> | NOMAXVALUE ] [MINVALUE <valeur_minimale> | NOMINVALUE ] [CYCLE | NOCYCLE ]

CREATE SEQUENCE <nom_sequence>

DROP SEQUENCE <nom_sequence>

ALTER SEQUENCE <nom_sequence>

[INCREMENT BY <valeur_increment] [MAXVALUE <valeur_maximale> | NOMAXVALUE ] [MINVALUE <valeur_minimale> | NOMINVALUE ] [CYCLE | NOCYCLE ]

39

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

A.10

Index sur les relations

CREATE [UNIQUE | BITMAP ] INDEX <nom_index> ON <nom_table> ([<nom_colonne1>[, <nom_colonne2>, ...]) ALTER TABLE <nom_index> RENAME TO <nouveau_nom> DROP INDEX <nom_index>

A.11

Principales tables systmes Oracle


(OWNER, CONSTRAINT_NAME, TABLE_NAME, COLUMN_NAME,...) (OWNER, CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, SEARCH_CONDITION,...) (OWNER, INDEX_NAME, INDEX_TYPE, TABLE_OWNER, TABLE_NAME, TABLE_TYPE, UNIQUENESS, COMPRESSION) (OWNER, OBJECT_NAME, OBJECT_ID, DATA_OBJECT_ID, OBJECT_TYPE, CREATED, ...) (SEQUENCE_OWNER, SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT, CYCLE_FLAG) (OWNER, SYNONYM_NAME, TABLE_OWNER, TABLE_NAME) (OWNER, TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGHT) (OWNER, TABLE_NAME, TABLESPACE_NAME) (OWNER, VIEW_NAME, TEXT_LENGTH, TEXT,...)

ALL_CONS_COLUMNS ALL_CONSTRAINTS ALL_INDEXES ALL_OBJECTS ALL_SEQUENCES ALL_SYNONYMS ALL_TAB_COLUMNS ALL_TABLES ALL_VIEWS

Les tables de mme nom prxes par USER_ ont la mme structure hormis lattribut OWNER, et dcrivent seulement les composants du schma de lutilisateur. Pseudo-colonnes <nom_sequence>.CURRVAL , <nom_sequence>.NEXTVAL , LEVEL , ROWID , ROWNUM , USER

B
B.1

SQL comme langage de manipulation de donnes (LMD)


Requtes
SELECT <liste_resultat | *> FROM <liste_relations> [WHERE <liste_conditions>] [GROUP BY <liste_attributs_de_partitionnement> [HAVING <liste_conditions_de_partitionnement>]] [ORDER BY <liste_attributs_a_trier>]

<requete> =

o : liste_resultat = [DISTINCT ] <attribut1 | expr1 | requete1> [<alias1>] [,<attribut2 | expr2 | requete2> [<alias2>], ...] liste_relations = <relation1 | vue1 | requete1> [alias1] [, <relation2 | vue 2 | requete2> |alias2]... liste_conditions = [NOT ] <condition1> [AND | OR <condition2> ...] Condition de slection : <condition1> = <attribut [(+)] | expression> <comparateur | predicat_conditionnel> <constante>

40

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

<predicat_conditionnel> =

IS NULL | IN | BETWEEN ... AND | LIKE | IS NOT NULL | NOT IN | NOT BETWEEN | NOT LIKE

Condition de jointure prdicative : <conditionj> = <attribut1[(+)] | expr1> <comparateur> <attribut2[(+)] | expr2 > Condition de jointure imbrique : <conditionji> = <expression1>[, <expression2>,...] (<requete>) | <expression1>[, <expression2>,...] ANY | IN (<requete>) | <expression1>[, <expression2>,...] ANY (<requete>)

B.2

Calculs verticaux (fonctions aggrgatives)

<nom_fonction> ([DISTINCT ] <nom_colonne>) o : <nom_fonction> = SUM | AVG | COUNT | MAX | MIN | STDDEV | VARIANCE

B.3

Tri des rsultats

ORDER BY <expression1> [ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,<expression2> ...]

B.4

Oprateurs ensemblistes

<requete1> UNION | INTERSECT | MINUS <requete2>

B.5
SELECT FROM WHERE

Test dabsence ou dexistence de donnes


<liste_attributs> <relation1> [<alias1>] [,<relation2> [<alias2>] ...] [<liste_conditions> AND | OR ] [NOT ] EXISTS (<sous_requete>)

B.6

Classications ou partitionnement
<colonne1> [, <colonne2>,...] <liste_conditions_classe>

ORDER BY HAVING

B.7

Recherche dans une arborescence


<colonne1> [, <colonne2>, ...] <table> [<alias>] <liste_conditions>] BY [PRIOR ] <colonne1> = [PRIOR ] <colonne2> [AND <condition_hierarchique>] [START WITH <condition_depart>] [ORDER BY LEVEL ]

SELECT FROM [WHERE CONNECT

41

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

B.8
UPDATE SET [WHERE UPDATE SET

Mise jour des donnes


<nom_table> <nom_colonne1> = <expression1> [, <nom_colonne2> = <expression2>,...] <condition_selection>] <nom_table> (<nom_colonne1>[, <nom_colonne2>, ...]) = (SELECT <colonne1>[,<colonne2>,...] FROM ... WHERE ... ) <condition_selection>]

[WHERE

INSERT INTO VALUES

<nom_table> [(<liste_attributs>] (<valeur1>[,<valeur2>,...])

INSERT INTO <nom_table> [(<liste_attributs>)] <requte> DELETE FROM <nom_table> WHERE <condition>

C
C.1

SQL comme langage de contrle des donnes (LCD)


Gestion des transactions

COMMIT, ROLLBACK

C.2

Cration et suppression de roles et dutilisateurs

CREATE ROLE <nom_role> [IDENTIFIED BY <mot_de_passe>] ALTER ROLE <nom_role> [IDENTIFIED BY <nouveau_mot_de_passe>] DROP ROLE <nom_role> CREATE USER <nom_utilisateur> [IDENTIFIED BY <mot_de_passe>] DEFAULT TABLESPACE <nom_tablespace> QUOTA <taille> PROFILE <nom_profil> ALTER USER <nom_utilisateur> [IDENTIFIED BY <nouveau_mot_de_passe>] DROP USER <nom_utilisateur>

C.3

Attribution ou suppression de privilges

GRANT <systeme_privileges | ALL [PRIVILEGES ]> TO <liste_role_utilisateur | PUBLIC > [WITH ADMIN OPTION ] o : <systeme_privilege> = CREATE ROLE | CREATE SEQUENCE | CREATE SESSION | CREATE SYNONYM | CREATE PUBLIC | CREATE TABLE | CREATE USER | CREATE VIEW

42

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

GRANT <liste_droits> TO <nom_composant> [WITH GRANT OPTION ] o : <liste_droits> = SELECT | INSERT | UPDATE [nom_colonne1,...] | DELETE | ALTER | INDEX | REFERENCES | ALL [PRIVILEGES ]

GRANT <liste_roles_attribues> TO <liste_roles_utilisateurs> [WITH ADMIN OPTION ]

C.4

Gestion de vues

CREATE [OR REPLACE ] [[NO ] FORCE ] VIEW <nom_vue> [(alias1[,alias2,...])] AS <requete> [WITH CHECK OPTION | WITH READ ONLY ] ALTER VIEW <nom_vue> COMPILE DROP VIEW <nom_vue>

43

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Index
Table des matires
I Introduction 1
1 2

1 Approche par application 2 Approche base de donnes

II

Le modle relationnel

3
3 3 3 3 3 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 7 8 10 11

3 Introduction 3.1 3 composantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Rappels mathmatiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Concepts relationnels 4.1 Domaine smantique . . . . . . 4.2 Relations/tuples . . . . . . . . 4.2.1 Reprsentation tabulaire 4.3 Attributs . . . . . . . . . . . . 4.4 Clef primaire . . . . . . . . . . 4.5 Domaine primaire . . . . . . . 4.6 Clef trangre . . . . . . . . . . 4.7 Schma relationnel . . . . . . . 4.8 Autres concepts . . . . . . . . .

. . . . . . . . . . . . . . . . . . dune relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

5 Contraintes dintgrit relationnelles 5.1 Contraintes dintgrit statique/structurelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Contraintes dynamiques/applicatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Algbre relationnel 6.1 Gnralits . . . . . . . 6.2 Oprateurs relationnels 6.2.1 Projection . . . . 6.2.2 Slection . . . . . 6.2.3 Jointure . . . . . 6.2.4 Division . . . . . 6.3 Oprateurs ensemblistes

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

III

Dpendances fonctionnelles

12
12 12 12 12 12 12 12 12

7 Dnition 8 Axiomes dArmstrong 8.1 Rexivit . . . . . . 8.2 Augmentation . . . . 8.3 Transitivit . . . . . 8.4 Pseudo-transitivit . 8.5 Dcomposition . . . 8.6 Union . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

44

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

9 Dpendance fonctionnelle minimale 10 Clef candidate 11 Clef candidate minimale 12 Clef primaire 13 Attributs non-clef

12 12 13 13 13

IV

Thorie de modlisation

14
14 14 14 14 14 15 15 16 16 16

14 Objectif 14.1 Mauvais schma relationnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2 Bon schma relationnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Formes normales 15.1 1NF (1st Normal Form) 15.1.1 Normalisation en 15.2 2NF (2nd Normal Form) 15.2.1 Normalisation en 15.3 3NF (3rd Normal Form) 15.3.1 Normalisation en

. . . 1NF . . . 2NF . . . 3NF

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

Algorithmes et mthodes de normalisation


. . . . . . . . . . . . . . . . . . . . . . . . . selon F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17
17 17 17 17 17 17 17 18 18 18 18

16 Concepts de base 16.1 Drivabilit des DF . . . . . . . . . . . . . . 16.2 Couverture dun ensemble de DF . . . . . . 16.3 Couverture minimale dun ensemble de DF 16.4 Fermeture dArmstrong . . . . . . . . . . . 16.4.1 Application + . . . . . . . . . . . . . + 16.4.2 Exemple : BDF , la fermeture de BD

17 Algorithmes de normalisation 17.1 Algorithme de calcul dune clef candidate minimale . . . . . . . . . . . . . . . . . . . . . . . . 17.2 Algorithme de calcul dune couverture minimale . . . . . . . . . . . . . . . . . . . . . . . . . . 17.3 Algorithme de calcul de la fermeture dArmstrong . . . . . . . . . . . . . . . . . . . . . . . .

VI

Modlisation de bases de donnes


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19
19 19 20 20 20 21 22 22 24 24

18 Schma entit/relation 18.1 Les types dentits . . . . . . . . . . . 18.2 Les proprits . . . . . . . . . . . . . . 18.3 Les identiants (ou clefs) . . . . . . . 18.4 Associations et types dassociations . . 18.4.1 Associations . . . . . . . . . . . 18.4.2 Cardinalits . . . . . . . . . . . 18.4.3 Dimension dune TA . . . . . . 18.4.4 Identication dune association 19 Drivation relationnelle

45

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

20 Rgles de conception

25

VII

Le langage SQL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26
26 26 26 27 27 27 27 28 28 28 28 29 30 30 30 30 31 31 31 31 33 33 34 35 35 35 36 36 36 37 37 37 37

21 SQL comme langage de manipulation des donnes (LMD) 21.1 Expression des projections . . . . . . . . . . . . . . . . . . . . 21.2 Expression des slections . . . . . . . . . . . . . . . . . . . . . 21.2.1 Prdicats de slection . . . . . . . . . . . . . . . . . . 21.3 Calculs horizontaux . . . . . . . . . . . . . . . . . . . . . . . 21.4 Calculs verticaux . . . . . . . . . . . . . . . . . . . . . . . . . 21.5 Jointures prdicatives . . . . . . . . . . . . . . . . . . . . . . 21.6 Jointures imbriques . . . . . . . . . . . . . . . . . . . . . . . 21.6.1 La sous-requte renvoie une seule valeur . . . . . . . . 21.6.2 La sous-requte renvoie un seul tuple . . . . . . . . . . 21.6.3 La sous-requte rend un ensemble de rsultats . . . . . 21.7 Oprateurs ensemblistes . . . . . . . . . . . . . . . . . . . . . 21.8 Jointures externes . . . . . . . . . . . . . . . . . . . . . . . . 21.9 Test de non-existence de tuples . . . . . . . . . . . . . . . . . 21.9.1 Jointure imbrique avec NOT IN . . . . . . . . . . . . 21.9.2 Jointure imbrique avec <> ALL . . . . . . . . . . . . 21.9.3 Dirence ensembliste . . . . . . . . . . . . . . . . . . 21.9.4 Jointure externe et prdicat IS NULL . . . . . . . . . 21.9.5 Bloc imbrique et prdicat NOT EXISTS . . . . . . . . 21.10Oprations de partitionnement . . . . . . . . . . . . . . . . . 21.11Recherche dans des arborescences . . . . . . . . . . . . . . . . 21.11.1 Reprsentation des hirarchies . . . . . . . . . . . . . 21.11.2 Manipulation de hirarchies . . . . . . . . . . . . . . . 21.12Calculs imbriques dans le SELECT et le FROM . . . . . . . . . 21.12.1 Bloc imbriqu dans le SELECT . . . . . . . . . . . . . . 21.12.2 Bloc imbriqu dans le FROM . . . . . . . . . . . . . . . 21.13Expression des divisions . . . . . . . . . . . . . . . . . . . . . 21.13.1 Avec GROUP BY et comptage . . . . . . . . . . . . . . . 21.13.2 Avec un double NOT EXISTS . . . . . . . . . . . . . .

22 SQL comme langage de contrle des donnes (LCD) 22.1 Concept de vue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 Premier rle des vues : limiter la consultation des donnes . . . . . . . . . . . . . . . . . . . . 22.3 Deuxime rle des vues : crire des requtes complexes . . . . . . . . . . . . . . . . . . . . . .

VIII

Mmento des ordres SQL*Plus


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dune relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38
38 38 38 38 39 39 39 39 39 39 40 40

A SQL comme langage de dnition de donnes (LDD) A.1 Cration de relation . . . . . . . . . . . . . . . . . . . . . A.2 Ajout dattributs et de contraintes dans une relation . . . A.3 Modication de la dnition dun attribut . . . . . . . . . A.4 Modication de ltat dune contrainte . . . . . . . . . . . A.5 Suppression de contrainte dans une relation . . . . . . . . A.6 Suppression dattribut dans une relation . . . . . . . . . . A.7 Suppresion de relation . . . . . . . . . . . . . . . . . . . . A.8 Cration/suppression de synonyme et changement du nom A.9 Gestion de squences . . . . . . . . . . . . . . . . . . . . . A.10 Index sur les relations . . . . . . . . . . . . . . . . . . . . A.11 Principales tables systmes Oracle . . . . . . . . . . . . . 46

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

B SQL comme langage de manipulation de donnes B.1 Requtes . . . . . . . . . . . . . . . . . . . . . . . . B.2 Calculs verticaux (fonctions aggrgatives) . . . . . B.3 Tri des rsultats . . . . . . . . . . . . . . . . . . . B.4 Oprateurs ensemblistes . . . . . . . . . . . . . . . B.5 Test dabsence ou dexistence de donnes . . . . . . B.6 Classications ou partitionnement . . . . . . . . . B.7 Recherche dans une arborescence . . . . . . . . . . B.8 Mise jour des donnes . . . . . . . . . . . . . . .

(LMD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

40 40 41 41 41 41 41 41 42 42 42 42 42 43

C SQL comme langage de contrle des donnes (LCD) C.1 Gestion des transactions . . . . . . . . . . . . . . . . . C.2 Cration et suppression de roles et dutilisateurs . . . C.3 Attribution ou suppression de privilges . . . . . . . . C.4 Gestion de vues . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

47

Bases de donnes 1re anne

Rosine CICCHETI Lot LAKHAL Sebastien NEDJAR

Liste des tableaux


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Reprsentation tabulaire de la relation AVION . . . . . . . Reprsentation tabulaire de la relation PILOTE . . . . . . . Projection de PILOTE sur NOMPIL et ADR . . . . . . . . Projection de PILOTE sur ADR . . . . . . . . . . . . . . . Pilotes habitant Marseille . . . . . . . . . . . . . . . . . . Slection et projection . . . . . . . . . . . . . . . . . . . . . Jointure entre R et S sur A . . . . . . . . . . . . . . . . . . Relations PILOTE et VOL . . . . . . . . . . . . . . . . . . Jointure entre PILOTE et VOL sur NUMPIL . . . . . . . . Jointure naturelle entre PILOTE et VOL sur NUMPIL . . . Jointure entre PILOTE et VOL avec NUMPIL<>NUMPIL Autojointure de PILOTE sur NUMPIL . . . . . . . . . . . Division de R par S . . . . . . . . . . . . . . . . . . . . . . Mauvais schma relationnel . . . . . . . . . . . . . . . . . . Bon schma relationnel . . . . . . . . . . . . . . . . . . . . . Relation N1NF . . . . . . . . . . . . . . . . . . . . . . . . . Ajout dattributs . . . . . . . . . . . . . . . . . . . . . . . . Relation toute clef . . . . . . . . . . . . . . . . . . . . . . . Jointure externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 7 7 7 7 8 8 8 9 9 9 10 10 14 14 15 15 15 30

Table des gures


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Approche par application . . . . . . . . . . . . . . Approche base de donnes . . . . . . . . . . . . . . Oprateurs ensemblistes . . . . . . . . . . . . . . . Conception de base de donnes . . . . . . . . . . . Reprsentation graphique dun type dentit . . . . Reprsentation graphique des propriets . . . . . . Reprsentation graphique des identiants . . . . . Reprsentation graphique dune association . . . . Association un--un . . . . . . . . . . . . . . . Association un--plusieurs . . . . . . . . . . . . Association plusieurs--plusieurs . . . . . . . . Reprsentation des cardinalits . . . . . . . . . . . TA unaire (reective) . . . . . . . . . . . . . . . . TA binaire . . . . . . . . . . . . . . . . . . . . . . . TA ternaire . . . . . . . . . . . . . . . . . . . . . . Drivation relationnelle . . . . . . . . . . . . . . . Hirarchie des lieux . . . . . . . . . . . . . . . . . . Hirarchie des lieux avec le modle entit/relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 11 19 19 20 20 21 21 21 22 22 23 23 24 25 33 33

48

Liste des mots-clefs SQL


(+), 30 ALL, 29 AND, 26 ANY, 28 AVG, 27 BETWEEN, 27 CONNECT BY, 34 COUNT, 27 CREATE VIEW, 37 DISTINCT, 26 EXISTS, 31 FROM, 26 GROUP BY, 31 HAVING, 32 IN, 27, 30 INTERSECT, 29 IS NULL, 27 LENGTH, 27 LEVEL, 35 LIKE, 27 LOWER, 27 MAX, 27 MIN, 27 MINUS, 29 NVL, 27 OR, 26 ORDER BY, 35 SELECT, 26 SUM, 27 UNION, 29 UPPER, 27 WHERE, 26

49