Vous êtes sur la page 1sur 153

Master IPPSI Universit

Bordeaux I
LES SYSTEMES DE GESTION DE
BASES DE DONNEES

D.Chong-Wing dcw@free.fr

Sommaire

Evaluation prliminaire

Introduction
SGBDgnralits
LemodleE/A
LemodleRelationnel
SQL
Conclusion

Evaluation prliminaire
1.
2.
3.

Quest-ce quun SGBD ?


Quest-ce que SQL ?
Imaginons une table reprsentant un annuaire
tlphonique. Comment faire afficher les lments de cet
annuaire en ordre alphabtique croissant ?

Introduction

Bien plus quune simple calculette, lordinateur daujourdhui est


capable de traiter et de produire une quantit sans cesse
grandissante dinformation.

Introduction

Il est inconcevable de devoir tout ressaisir chaque fois que lon


rallume un ordinateur

Introduction

Comment stocker les donnes dune manire fiable ?


Comment les retrouver rapidement ?
Comment les modifier en toute scurit ?

Historique des bases de donnes

1960 Systmes de gestion de fichiers plus ou moins


sophistiqus.

1970 Dbut des systmes de gestion de bases de donnes


rseaux et hirarchiques proches des systmes de gestion de
fichiers.
Diffusion des travaux de CODD (chercheur IBM) sur la thorie des
relations, fondement de la thorie des bases de donnes
relationnelles.

Historique des bases de donnes

1975-80 Les systmes de gestion de bases de donnes


relationnels apparaissent sur le march.

1990 Les systmes de gestion de bases de donnes


relationnels dominent le march. Dbut des systmes de
gestion de bases de donnes orients objet.

Historique des bases de donnes


Aujourdhui les SGBD sont au cur du systme dinformation de
lentreprise. Leur domaine dapplication est trs large :

GPAO
Gestion commerciale, comptabilit
Echange de Donnes Informatis
Gestion Electronique de Documents
Base de connaissance
Systmes experts
Systmes dinformation gographique
ERP
E-technologies

Historique des bases de donnes

Les principaux diteurs de SGBD :

ORACLE
IBM DB2
Microsoft SQL Server
Informix
Ingres
MySql (internet)

Les systmes fichiers


Exemple : Un fichier de gestion des commandes
N cde
10449
10449
10449
10559
10559
10932
10932
10932
10932
10940
10940
11076
11076
11076
10311
10311
10609
10609
10609
10683
10890
10890
10890
10408
10408
10408
10480
10480
10634
10634
10634

Date cde
21/03/1995
21/03/1995
21/03/1995
06/07/1995
06/07/1995
05/04/1996
05/04/1996
05/04/1996
05/04/1996
10/04/1996
10/04/1996
05/06/1996
05/06/1996
05/06/1996
21/10/1994
21/10/1994
24/08/1995
24/08/1995
24/08/1995
27/10/1995
18/03/1996
18/03/1996
18/03/1996
08/02/1995
08/02/1995
08/02/1995
20/04/1995
20/04/1995
15/09/1995
15/09/1995
15/09/1995

Code client
BLONP
BLONP
BLONP
BLONP
BLONP
BONAP
BONAP
BONAP
BONAP
BONAP
BONAP
BONAP
BONAP
BONAP
DUMON
DUMON
DUMON
DUMON
DUMON
DUMON
DUMON
DUMON
DUMON
FOLIG
FOLIG
FOLIG
FOLIG
FOLIG
FOLIG
FOLIG
FOLIG

Socit
Blondel pre et fils
Blondel pre et fils
Blondel pre et fils
Blondel pre et fils
Blondel pre et fils
Bon app'
Bon app'
Bon app'
Bon app'
Bon app'
Bon app'
Bon app'
Bon app'
Bon app'
Du monde entier
Du monde entier
Du monde entier
Du monde entier
Du monde entier
Du monde entier
Du monde entier
Du monde entier
Du monde entier
Folies gourmandes
Folies gourmandes
Folies gourmandes
Folies gourmandes
Folies gourmandes
Folies gourmandes
Folies gourmandes
Folies gourmandes

Adresse
24, place Klber
24, place Klber
24, place Klber
24, place Klber
24, place Klber
12, rue des Bouchers
12, rue des Bouchers
12, rue des Bouchers
12, rue des Bouchers
12, rue des Bouchers
12, rue des Bouchers
12, rue des Bouchers
12, rue des Bouchers
12, rue des Bouchers
67, rue des Cinquante Otages
67, rue des Cinquante Otages
67, rue des Cinquante Otages
67, rue des Cinquante Otages
67, rue des Cinquante Otages
67, rue des Cinquante Otages
67, rue des Cinquante Otages
67, rue des Cinquante Otages
67, rue des Cinquante Otages
184, chausse de Tournai
184, chausse de Tournai
184, chausse de Tournai
184, chausse de Tournai
184, chausse de Tournai
184, chausse de Tournai
184, chausse de Tournai
184, chausse de Tournai

Ville
Strasbourg
Strasbourg
Strasbourg
Strasbourg
Strasbourg
Marseille
Marseille
Marseille
Marseille
Marseille
Marseille
Marseille
Marseille
Marseille
Nantes
Nantes
Nantes
Nantes
Nantes
Nantes
Nantes
Nantes
Nantes
Lille
Lille
Lille
Lille
Lille
Lille
Lille
Lille

C postal
67000
67000
67000
67000
67000
13008
13008
13008
13008
13008
13008
13008
13008
13008
44000
44000
44000
44000
44000
44000
44000
44000
44000
59000
59000
59000
59000
59000
59000
59000
59000

Rf prod
10
52
62
41
55
16
62
72
75
7
13
6
14
19
42
69
1
10
21
52
17
34
41
37
54
62
47
59
7
18
51

PU
Quantit
124,00 F
14
28,00 F
20
197,00 F
35
48,25 F
12
120,00 F
18
87,25 F
30
246,50 F
14
174,00 F
16
38,75 F
20
150,00 F
8
30,00 F
20
125,00 F
20
116,25 F
20
46,00 F
10
56,00 F
6
144,00 F
7
90,00 F
3
155,00 F
10
50,00 F
6
35,00 F
9
195,00 F
15
70,00 F
10
48,25 F
14
104,00 F
10
29,50 F
6
197,00 F
35
38,00 F
30
220,00 F
12
150,00 F
35
312,50 F
50
265,00 F
15

Les systmes fichiers


Architecture associe :
Descript
fichie r

Programme 1

Utilisateur

Descript
fichie r

Programme 2

Utilisateur

Fichiers

Laccs aux donnes se fait obligatoirement par des programmes. Ceux-ci tant
conus sur la base de la structure de donne dfinie.

Les systmes fichiers


Pour des applications nouvelles

Ncessit dcrire de nouveaux programmes


Cration de nouveaux fichiers qui contiendront peut-tre des
informations dj prsentes dans d'autres fichiers.

Les systmes fichiers


De telles applications sont rigides, contraignantes
Les donnes associes sont :

redondantes, leur mises jour est complexe : risque derreur


peu accessibles de manire ponctuelle,
peu fiables car les accs concurrents ne sont pas grs.

Les nouveaux besoins


Dans un contexte conomique difficile :
ractivit = survie
=> prise de dcision rapide.
=> Bonne vision de la situation : informations jour et disponibles
immdiatement.
On a donc recherch des solutions tenant compte la fois des dsirs
des utilisateurs et des progrs techniques. Cette recherche a abouti
au concept de base de donnes.

SGBD - Dfinitions

Base de donnes (BD) : Ensemble de donnes cohrentes et


structures.

Systme de Gestion de Bases de Donnes (SGBD) : Logiciel(s)


assurant structuration, stockage, maintenance, mise jour et
consultation des donnes dune BD.

SGBD Les modles


Modle hirarchique

structure arborescente d'enregistrements.


chemin d'accs aux donnes dtermin par des pointeurs.

SGBD Les modles


Modle rseau

Enregistrements structurs en un graphe.


chemin d'accs aux donnes dtermin par des
pointeurs.

SGBD Les modles


Modle rseau
Pour les modles hirarchique et rseau, les programmes ne sont
pas indpendants de la structure logique de la base et du
chemin d'accs aux donnes

SGBD Les modles


Modle relationnel : SGBDR
Il est fond sur la thorie mathmatique des relations. Cest la
concrtisation du modle Entit/Relation.
Les donnes sont organises sous forme de tables :

SGBD Les modles


Modle objet : SGBDOO
Les donnes, reprsentes sous forme d'objets sont encapsules
avec les procdures et fonctions qui permettent de les
manipuler.
Les SGBD orients objet supportent aussi la notion d'hritage
entre classes d'objets.

Architecture dun SGBD


Selon la norme ANSI/SPARC cette architecture a trois niveaux :
Le niveau externe. Il regroupe toutes les moyens daccs aux
donnes par les diffrents usagers..
Vue
"VENTES"

Commercial
Itinrant

intranet
Vue "PRODUCTION"

Suivi Prod 1

Suivi Prod 2

Ventes

Modem

Donn
es
Donn
es

SGBD

Architecture dun SGBD

Le niveau conceptuel (interne).

Vision des gnrale donnes indpendante


indpendamment de leur mode de stockage.

des

applications,

La smantique de linformation est exprime en utilisant les concepts de


relation, attributs et de contraintes dintgrit.
Le niveau conceptuel est dfini au travers du schma conceptuel.

Architecture dun SGBD

Le niveau physique.

Choix de lorganisation physique des fichiers ainsi que la mthode


daccs en fonction de la requte.
Partage des ressources, la gestion de la concurrence et des
pannes.

Architecture dun SGBD


En rsum :
Utilis ateur

Utilis ateur

Programmeur

Adminis tr ateur

Niveau
externe
Programme
d'applic ation

Interface
programmatique

Requtes
LMD

Processeur
de requtes

Prcompilateur du LMD

Programme
code objet

Schma
LDD

Compilateur
de LDD

Niveau
interne

gestionnaire
de donnes

Donnes

Niveau
physique

Caractristiques des SGBR


L'inventeur du modle relationnel Mr Codd (IBM) a nonc douze
rgles que doivent vrifier les SGBD pour tre relationnels :

1 : toutes les informations sur les donnes sont reprsentes au


niveau logique et non physique

2 : les donnes sont accessibles uniquement par la


combinaison du nom de la table, de la cl primaire et du nom de
la colonne

Caractristiques des SGBR

3 : une valeur spciale doit reprsenter l'absence de valeur


(valeur NULL)

4 : la description de la base de donnes doit tre accessible


comme les donnes ordinaires (un dictionnaire des donnes est
enregistr dans la base)

Caractristiques des SGBR

5 : un langage doit permettre :


de dfinir les donnes
dfinir des vues (visions particulires de la base, enregistres
comme des relations)
manipuler les donnes
dfinir des contraintes d'intgrit, des autorisations
grer des transactions.

6 : on peut faire des mises jour par les vues lorsque c'est
logiquement possible

Caractristiques des SGBR

7 : le langage doit comporter des ordres effectuant l'insertion, la


mise jour et la suppression de donnes (un seul ordre pour
effectuer chacune de ces fonctions)

8 : indpendance des programmes vis--vis de l'implantation


physique des donnes : un remaniement de lorganisation
physique des donnes nentrane pas de modification dans les
programmes dapplication (traitements)

Caractristiques des SGBR

9 : indpendance des programmes vis--vis de l'implantation


logique des donnes : un remaniement de lorganisation logique
des fichiers (ex.nouvelle rubrique) nentrane pas de
modification dans les programmes dapplication non concerns

10 : les contraintes d'intgrit doivent pouvoir tre dfinies dans


le langage relationnel et enregistres dans le dictionnaire des
donnes

Caractristiques des SGBR

11 : indpendance vis vis de la rpartition des donnes sur


divers sites

12 : on ne peut jamais contourner les contraintes (d'intgrit ou


de scurit) imposes par le langage du SGBD en utilisant un
langage de plus bas niveau (par exemple le langage C).

Fonctions des SGBD

Dfinition de Donnes (LDD)

Un langage spcifique pour :

dcrire la vision des donnes de chaque utilisateur et


l'intgration dans une vision globale.
dcrire le stockage physique des donnes.

Fonctions des SGBD

Manipulation de Donnes (LMD)

Recherche des donnes


Mise jour des donnes
Transformation des donnes.

Fonctions des SGBD

Contrle de laccs aux donnes (LCD)

scurit : gestion des droits daccs (mots de passe, etc.)


Concurrence :gestion des accs multiutilisateur.

Fonctions des SGBD

Gestion de transactions (atomicit des transactions).

Sauvegarder et de restaurer de faon explicite une base de


donnes.
Retour ltat initial en cas dabandon dune srie de
modification (rollback de transaction)

Processus de conception dune BD

Le modle E/A, gnralits

E/A est labrviation dEntit-Association


E/A est un modle conceptuel conu dans les annes 1970.
Utilise une reprsentation graphique.
De nombreuses mthodes de conception (ex.Merise) font appel
aux principes dE/A.
Mise en oeuvre dune BD : transformation dun schma E/A en
schma logique.

Le modle E/A, dfinitions

Entit : objet de lunivers du discours (ex. CLIENT)


Attribut : proprit de lentit (ex. Nom et Prnom du client)
Rue

Ville

Code postal

Client

Nom

Age

Date
de naissance

Prnom

Le modle E/A, dfinitions


Valeurnulle pour un attribut : (NULL) la valeur nest pas connue
ex. Un client dont on ne connat pas la date de naissance.

Domaine : ensemble des valeurs que peut prendre un Attribut


ex. Prix des produit de 1 10.000 F.

Le modle E/A, dfinitions


Typedentit : dfinit le type dobjet ,ex. CLIENT.
Occurrences du type CLIENT : les clients.
Type dattribut : Nom et Prnom sont des chanes de
caractres, Date de naissance est une date, ge est un nombre
entier
Occurrencesdattribut : valeur particulire dun attribut
ex. Bleu, Rouge sont des occurrences dun attribut Couleur.

Le modle E/A, dfinitions

Identifiants

Soit la liste suivante :

Problme : comment distinguer les Dupont ?

Le modle E/A, dfinitions


Solution : Ajouter une colonne Numro client

Le modle E/A, dfinitions


Le numro de client est un identifiant. Un identifiant caractrise de faon unique les
occurrences dun type dentit.
Notation graphique :

Le modle E/A, dfinitions


Associationsetcardinalits
Association : liaison perue entre des entits
ex. Les clients commandent des produits.

Les entits CLIENT et PRODUIT sont dites participantes la


relation COMMANDE.
Degr dune association = nombre de types dentits participants.
En gnral : associations binaires (de degr 2).

Le modle E/A, dfinitions

Association rcursive : une mme occurrence dentit peut jouer


plusieurs rles dans la mme association (ex. employs et suprieurs
hirarchiques).
Rle : fonction de chaque type dentit participant.

Le modle E/A, dfinitions


Cardinalit : Un client commande X Y produits.
=> X : cardinalit mini - Y : cardinalit maxi
Association1-1
ex. Un client donn ne commande quun seul produit. Un produit donn nest command que par un seul client.

Le modle E/A, dfinitions

Association1-N

ex. Un client donn commande plusieurs produits. Mais un produit


donn nest command que par un seul client.

La cardinalit un plusieurs (1-N) peut aussi tre zro


plusieurs (0-N).

Le modle E/A, dfinitions


Association0ou1-N
ex. Un client donn commande plusieurs produits. Un produit
donn est command au maximum par un client, mais peut ne
pas tre command.

La

cardinalit un plusieurs (1-N) peut aussi tre zro


plusieurs (0-N).

Le modle E/A, dfinitions


AssociationM-N
ex. Un client donn commande plusieurs produits. Un produit
donn est command par plusieurs clients.

Les cardinalits un plusieurs (1-N) peuvent aussi tre zro


plusieurs (0-N).

Le modle E/A, dfinitions

Attribut dassociation : Dans une association M-N, il est


possible de caractriser lassociation par des attributs.

ex. Une commande est passe une Date donne et concerne


une Quantit de produit fixe.

Le modle E/A, exemple

Exemple VPC complet

Spcifications

Les clients sont caractriss par un numro de client, leur nom,


prnom, date de naissance, rue, code postal et ville.
Ils commandent des produits une date donne et dans une quantit
donne.
Les produits sont caractriss par un numro de produit, leur
dsignation et leur prix unitaire.
Chaque produit est fourni par un fournisseur unique (mais un
fournisseur peut fournir plusieurs produits).
Les fournisseurs sont caractriss par un numro de fournisseur et
leur raison sociale.

Le modle E/A, exemple

Marche suivre pour produire un schma E/A

1) Identifier les entits.


2) Identifier les associations entre les entits.
3) Identifier les attributs de chaque entit et de chaque association.
4) Evaluer les cardinalits des associations.

Le modle E/A, exemple

Le Modle Relationnel - Gnralits

Propos par E.F. Codd en 1970.

Les objectifs du modle relationnel :


Permettre un haut degr d'indpendance entre les
applications (programmes, interfaces) et la reprsentation
interne des donnes (fichiers, chemins d'accs)
Etablir une base solide pour traiter les problmes de
cohrence et de redondance des donnes.

Langage de manipulation des donnes ensemblistes grce


l'algbre relationnelle.

Relations, attributs et tuples

Une relation R est un ensemble dattributs {A1 , A2 , , An }.

ex. La relation PRODUIT est lensemble des attributs {NumProd,


Dsi, PrixUni}
Chaque attribut Ai prend ses valeurs dans un domaine dom(Ai ).
ex. PrixUni ]0, 10.000]

Relations, attributs et tuples


Un tuple t est un ensemble de valeurs t = <V1 , V2 , , Vn > o
Vi dom(Ai ) ou Vi est la valeur nulle (NULL).
ex. <112, Raquette de tennis, 300> est un tuple de la relation
PRODUIT.

Notation : R (A1 , A2 , , An )
ex. PRODUIT (NumProd, Dsi, PrixUni)

Contraintes dintgrit

Cl primaire : Ensemble dattributs dont les valeurs permettent de distinguer


les tuples les uns des autres (identifiant).

ex: NumProd cl primaire de la relation PRODUIT

Cl trangre : Attribut qui est cl primaire dune autre relation.

ex. Connatre le fournisseur de chaque produit ajout de lattribut NumFour la


relation PRODUIT
Notations : cls primaires soulignes, cls trangres en italiques
ex. PRODUIT (NumProd, Dsi, PrixUni, NumFour)

Contraintes dintgrit

Contraintes de domaine : les attributs doivent respecter une


condition logique
ex. PrixUni > 0 ET PrixUni 10000

Du modle E/A au modle Relationnel

Chaque entit devient une relation.


Les attributs de lentit deviennent attributs de la relation.
Lidentifiant de lentit devient cl primaire de la relation.

ex. CLIENT (NumCli, Nom, Prnom, DateNaiss,Rue, CP, Ville)

Du modle E/A au modle Relationnel


Chaque association 1-1 est prise en compte en incluant la cl
primaire dune des relations comme cl trangre dans lautre
relation.
ex. Si un client peut possder un compte, on aura :

COMPTE (NumCom, Solde)


CLIENT (NumCli, Nom, Prnom, DateNaiss,Rue, CP, Ville, NumCom)
ou
COMPTE (NumCom, Solde , NumCli)
CLIENT (NumCli, Nom, Prnom, DateNaiss,Rue, CP, Ville)

Du modle E/A au modle Relationnel

Chaque association 1-N est prise en compte en incluant la cl


primaire de la relation dont la cardinalit maximale est N comme
cl trangre dans lautre relation.

PRODUIT (NumProd, Dsi, PrixUni, NumFour)


FOURNISSEUR (NumFour, RaisonSoc)
Dans ce cas, 1 fournisseur fabrique N produits

Du modle E/A au modle Relationnel


Chaque association M-N est prise en compte en crant une
nouvelle relation dont la cl primaire est la concatnation des
cls primaires des relations participantes. Les attributs de
lassociation sont insrs dans cette nouvelle relation.
ex. COMMANDE (NumCli, NumProd, Date,Quantit)

Du modle E/A au modle Relationnel

Schma relationnel complet de lexemple VPC

CLIENT (NumCli, Nom, Prnom, DateNaiss, Rue, CP, Ville)


PRODUIT (NumProd, Dsi, PrixUni, NumFour)
FOURNISSEUR (NumFour, RaisonSoc)
COMMANDE (NumCli, NumProd, Date, Quantit)

Modle Relationnel

Problmedelaredondance

ex. Soit la relation COMMANDE_PRODUIT

Modle Relationnel

Cette relation prsente diffrentes anomalies :

Anomalies de modification : Si lon souhaite mettre jour ladresse


dun fournisseur, il faut le faire pour tous les tuples concerns.

Modle Relationnel

Anomalies dinsertion : Pour ajouter un fournisseur nouveau, il


faut obligatoirement fournir des valeurs pour NumProd et
Quantit.

Modle Relationnel

Anomalies de suppression : ex. La suppression du produit 104


fait perdre toutes les informations concernant le fournisseur 902.

Modle Relationnel - normalisation

Objectifs de la normalisation :
Suppression des problmes de mise jour
Minimisation de lespace de stockage (limination des
redondances). La taille des fichiers normaliss crot de
faon arithmtique alors que la taille des fichiers non
normaliss crot de faon gomtrique.
Souplesse de conception

Modle Relationnel - normalisation

Lesdpendancesfonctionnelles(DF)

Soit R (X, Y, Z) une relation o X, Y, et Z sont des ensembles


dattributs. Z peut tre vide.

Dfinition : Y dpend fonctionnellement de X (X Y) si cest


toujours la mme valeur de Y qui est associe X dans la
relation R.

ex. PRODUIT (NumProd, Dsi, PrixUni)


NumProd Dsi, Dsi PrixUni

Modle Relationnel - normalisation

Propritsdesdpendancesfonctionnelles:

Rflexivit : Si Y X alors X Y.
Augmentation : Si W Z et X Y alors X, Z Y, W.
Transitivit : Si X Y et Y Z alors X Z.
Pseudo-transitivit : Si X Y et Y, Z T alors X, Z T.
Union : Si X Y et X Z alors X Y, Z.
Dcomposition : Si Z Y et X Y alors X Z.

NB : La notation X, Y signifie X Y.

Modle Relationnel - normalisation


Premireformenormale(1FN)
Une relation est en 1FN si tout attribut nest pas dcomposable.
ex.

Les relations PERSONNE (Nom, Prnoms, Age) et


DEPARTEMENT (Nom, Adresse, Tel) ne sont pas en 1FN si les
attributs Prnoms et Adresse peuvent tre du type [Jean, Paul]
ou [Rue de Marseille, Lyon].

Modle Relationnel - normalisation

Deuximeformenormale(2FN)

Une relation est en 2FN si :


elle est en 1FN ;
tout attribut non cl primaire est dpendant de la cl primaire
entire.

ex. La relation CLIENT (NumCli, Nom, Prnom, DateNaiss, Rue,


CP, Ville) est en 2FN.

Modle Relationnel - normalisation


La relation COMMANDE_PRODUIT(NumProd, Quantit, numFour,
Ville) nest pas en 2FN, car on a NumProd,NumFourQuantit
et NumFourVille.
Cette relation donne deux relations en 2FN : COMMANDE
(NumProd, NumFour, Quantit) ; FOURNISSEUR (NumFour,
Ville).

Modle Relationnel - normalisation

Troisimeformenormale(3FN)
Une relation est en 3FN si :
elle est en 2FN ;
il nexiste aucune DF entre deux attributs non cl primaire.

ex. La relation COMPAGNIE (Vol, Avion, Pilote) avec les DF Vol


Avion, Avion Pilote et Vol Pilote est en 2FN, mais pas en
3FN.

Modle Relationnel - normalisation

AnomaliesdemisejoursurlarelationCOMPAGNIE:il
nest pas possible dintroduire un nouvel avion sur un nouveau
vol sans prciser le pilote correspondant.
La dcomposition suivante donne deux relations en 3FN qui
permettent de retrouver (par transitivit) toutes les DF :

R1 (Vol, Avion) ;
R2 (Avion, Pilote).

Modle Relationnel - normalisation

Autreexempleillustrantlanormalisation:

Soit un systme dinformation dune entreprise regroupe les


donnes suivantes pour son domaine gestion :
Base_Entrep(Id_emp, nom, prenom, adresse, ville, code_postal,
tel, poste, desc_poste, date_embauche, coef_paie, salaire,
id_client, nom_client, adresse_client, code_postal_client,
ville_client, tel_client, num_cde, qte, date_cde, id_prod,
desc_prod, prix)

Modle Relationnel - normalisation

La 1re forme normale consiste regrouper les attributs en


units logiques.

Empl_Tbl(Id_emp, nom, prenom, adresse, ville, code_postal, tel,


poste, desc_poste, date_embauche, coef_paie, salaire)
Clients_Tbl(id_client, nom_client, adresse_client,
code_postal_client, ville_client, tel_client, num_cde, qte,
date_cde,)
Produits_Tbl(id_prod, desc_prod, prix)
Chaque relation possde une cl primaire, chaque attribut ne se
retrouve quune fois.

Modle Relationnel - normalisation

En poussant le processus de normalisation vers la 2 me


forme nous obtenons :

Empl_Tbl(Id_emp, nom, prenom, adresse, ville, code_postal, tel)


Empl_Paie_Tbl(Id_emp, poste, desc_poste, date_embauche,
coef_paie, salaire)
Clients_Tbl(id_client, nom_client, adresse_client,
code_postal_client, ville_client, tel_client)
Commandes_Tbl(num_cde, id_prod, qte, date_cde,)
Produits_Tbl(id_prod, desc_prod, prix)

Modle Relationnel - normalisation

3me forme normale : suppression des donnes ne dpendant


pas de la cl primaire.

Empl_Tbl(Id_emp, nom, prenom, adresse, ville, code_postal, tel)


Empl_Paie_Tbl(Id_emp, date_embauche, coef_paie, salaire)
Poste_Tbl(poste, desc_poste)
Clients_Tbl(id_client, nom_client, adresse_client,
code_postal_client, ville_client, tel_client)
Commandes_Tbl(num_cde, id_prod, qte, date_cde,)
Produits_Tbl(id_prod, desc_prod, prix)

Modle Relationnel - Algbre

Lalgbre relationnelle permet deffectuer des recherches


dans les relations par le biais doprateurs ensemblistes :

Union : T = R S ou T = UNION (R, S)


R et S doivent avoir mme schma.

ex. R et S sont les relations PRODUIT de deux socits qui


fusionnent et veulent unifier leur catalogue.
Notation graphique :

Modle Relationnel Algbre


Intersection:T = R S ou T = INTERSECT (R, S)

R et S doivent avoir mme schma.


ex. Permet de trouver les produits communs aux catalogues de
deux socits.
Notation graphique :

Modle Relationnel Algbre


Diffrence:T = R - S ou T = MINUS (R, S)
R et S doivent avoir mme schma.
ex. Permet de retirer les produits de la relation S existant dans la
relation R.

Notation graphique :

Modle Relationnel Algbre


Produitcartsien:T = R x S ou T = PRODUCT (R, S)
Associe chaque tuple de R chaque tuple de S.

Notation graphique :

Modle Relationnel Algbre


Produit cartsien

Modle Relationnel Algbre


Division:T = R S ou T = DIVISION (R, S)
R (A1, A2, , An) S (Ap+1 , , An)
T (A1, A2, , Ap) contient tous les tuples tels que leur
concatnation chacun des tuples de S donne toujours un tuple
de R.
Notation graphique :

Modle Relationnel Algbre


Division :

Modle Relationnel Algbre


Projection:T = <A, B, C> (R) ou T = PROJECT (R / A, B, C)
T ne contient que les attributs A, B et C de R.
ex. Noms et prnoms des clients.

Notation graphique :

Modle Relationnel Algbre


Restriction:T = <C> (R) ou T = RESTRICT (R / C)
T ne contient que les attributs de R qui satisfont la condition C.
ex. Clients qui habitent Lyon (C : Ville = Lyon)

Notation graphique :

Modle Relationnel Algbre


Jointurenaturelle:T = R >< S ou T = JOIN (R, S)
Produit cartsien R x S et restriction A = B sur les attributs A .R et
B .S.

Notation graphique :

Modle Relationnel Algbre

ex. Commandes avec le nom du client et pas son


numro

Modle Relationnel Algbre

Dcomposition des oprations :

Modle Relationnel Algbre

Rsultat final :

Modle Relationnel Exercice


On souhaite crer une base de donnes concernant une
entreprise. Une premire tude a mis en vidence trois
relations. Pour chacune des relations, la cl est souligne.
EMPLOYE (NumEmp, Nom, Prnom, Adresse, Tlphone,
Qualification)
SERVICE (NomService, Responsable, Tlphone)
PROJET (NomProjet, DateDeb, DateFin, NumEmp)

Modle Relationnel Exercice

En considrant les possibilits offertes par ce schma, rpondre aux


questions suivantes en justifiant vos rponses par rapport au modle
relationnel et par rapport la smantique intuitive des relations :
Question 1 :
Un employ peut il avoir plusieurs qualifications ?
Question 2 :
Un employ peut il faire plusieurs projets en mme temps ?
Question 3 :
Une personne peut elle tre responsable de plusieurs services ?
Question 4 :
Un service peut il avoir plusieurs responsables ?

Classification des SGBD relationnels


Niveau 1 : Systmesnonrelationnels.
Supportent uniquement la structure tabulaire.
Niveau 2 : Systmesrelationnellementminimaux.
Permettent les oprations de slection, projection et jointure.
Niveau 3 : Systmesrelationnellementcomplets.
Toutes les oprations de lalgbre relationnelle.
Niveau 4 : Systmesrelationnellementpleins.
Permettent la dfinition des contraintes dintgrit.

Le langage SQL- Gnralits

SQL = Structured Query Language, issu de SEQUEL


(Structured English as a Query Language)
SQL permet la dfinition, la manipulation et le contrle dune
base de donnes relationnelle. Il se base sur lalgbre
relationnelle.
SQL est un standard ANSI depuis 1986.

Nous adoptons dans ce chapitre la syntaxe de SQL*Plus (Oracle).

Le langage de manipulation des donnes

Expression gnrale dune requte.

" SELECT ... FROM ... WHERE " :

SELECT exprime le rsultat attendu sous la forme dune liste


dattributs auxquels il est possible dappliquer diffrents
oprateurs et fonctions.
FROM liste les relations
WHERE qui est facultative nonce une condition que doivent
respecter les enregistrements slectionns.

Le langage de manipulation des


donnes

Syntaxe

SELECT [DISTINCT] { * | <nom_de_relation>,<nom_dattribut>


[alias] | <nom_dattribut>[alias] [, ...]
FROM [<nom_dutilisateur>]<nom_de_relation> [alias] [, ...]
[WHERE <condition>]
[GROUP BY <nom_dattribut> [, ...] [HAVING <condition>] ]
[ {UNION | INTERSECT | MINUS [ALL]} <commande_SELECT>
[ ORDER BY {<nom_dattribut> | <numro_de_colonne>} [{ASC |
DESC}] [, ... ]

Le langage de manipulation des


donnes

LienentrealgbrerelationnelleetSQL

Soient les schmas relationnels R1, R2, R3 et R4


dfinis comme suit :

R1 (A :D1, B :D2)
R2 (C :D1, D :D2)
R3 (A :D1, E :D3)
R4 (B :D2)

Le langage de manipulation des


donnes

Projection

P A ( R1 )
SELECT A FROM R1
Ex : Noms et Prnoms des clients, uniquement
SELECT Nom, Prenom FROM Client;

Le langage de manipulation des


donnes

Slection

s < condition > ( R1 )


SELECT * FROM R1 WHERE <condition >
Ex : Commandes en quantit au moins gale 3
SELECT * FROM Commande
WHERE Quantite >= 3;

Le langage de manipulation des donnes

Slection (suite)

ex. Produits dont le prix est compris entre 50 et 100


SELECT * FROM Produit
WHERE PrixUni BETWEEN 50 AND 100;
ex. Commandes en quantit indtermine
SELECT * FROM Commande
WHERE Quantite IS NULL;

Le langage de manipulation des


donnes

Produit cartsien

R1 X R2
SELECT * FROM R1, R2
Jointure
R1 * R3
SELECT * FROM R1, R3 WHERE R1.A = R3.A

Ex : Liste des commandes avec le nom des clients


SELECT Nom, Date, Quantite
FROM Client, Commande
WHERE Client.NumCli =Commande.NumCli;

Le langage de manipulation des


donnes
Jointure

(suite)

Ex : Idem avec le numro de client en plus


SELECT C1.NumCli, Nom, Date, Quantite
FROM Client C1, Commande C2
WHERE C1.NumCli = C2.NumCli
ORDER BY Nom;
NB : Utilisation dalias (C1 et C2) pour allger lcriture + tri par
nom.

Le langage de manipulation des donnes

Union

R1 U R2
SELECT * FROM R1 UNION SELECT * FROM R2
Ex:Numro des produits qui soit ont un prix infrieur 100 , soit
ont t commands par le client n 2
SELECT NumProd FROM Produit WHERE PrixUni<100
UNION
SELECT NumProd FROM Commande WHERE NumCLi=2;

Le langage de manipulation des


donnes
Intersection
R1 R2
SELECT * FROM R1, R2 WHERE R1.A = R2.C and R1.B = R2.D
Ou
SELECT A, B FROM R1
WHERE R1.A IN (SELECT R2.A FROM E2) ;

Ex: SELECT nenseignant, NomEnseignant FROM E1


WHERE nenseignant IN (SELECT nenseignant FROM E2) ;
Diffrence
R1 / R2
SELECT * FROM R1 WHERE not exists (SELECT * FROM R2 WHERE
R2.C = R1.A and R2.D = R1.B )

Le langage de manipulation des


donnes
Division
R1 : R2
SELECT A FROM R1 GROUP BY A HAVING COUNT (distinct B )
= (SELECT count (distinct B ) FROM R4)

Calcul

Ex :Calcul de prix TTC


SELECT PrixUni+PrixUni*0.196 FROM Produit

LMD - Les requtes imbriques

IN

Ex :N de tlphone des abonns qui ont un auteur comme


homonyme :
SELECT Nom,Telephone FROM ABONNE
WHERE Nom IN (SELECT Nom FROM AUTEUR )

LMD - Les requtes imbriques

NOTIN

Permet de tester l'absence d'une valeur particulire dans un


ensemble.
Ex :N de tlphone des abonns qui n'ont pas d'auteur comme
homonyme :
SELECT Nom,Telephone FROM ABONNE
WHERE Nom NOT IN (SELECT Nom FROM AUTEUR )

LMD - Les requtes imbriques

ALL

Compare chacune des valeurs de l'ensemble une valeur


particulire et retourne "VRAI" si la comparaison est value
pour chacun des lments.
Les comparateurs sont: <, <=, >, >=, =, != .
Ex :Nom du salari qui gagne le plus :
SELECT Nom FROM PERSONNEL
WHERE Salaire >= ALL (SELECT Salaire FROM PERSONNEL )

LMD - Les requtes imbriques


ANY
Compare chacune des valeurs de l'ensemble une valeur
particulire et retourne "VRAI" si la comparaison est value
"VRAI" pour au moins un des lments.
Les comparateurs sont les mme que ceux cits prcdemment.

Ex :Nom des salaris qui possdent un homonyme chez les


abonns :
SELECT Nom FROM PERSONNEL
WHERE Nom = ANY (SELECT Nom FROM ABONNE )

LMD - Les requtes imbriques

EXISTS

Retourne "VRAI" si une requte imbrique retourne au moins une


ligne.
Ex :Liste des numros d'abonns qui n'ont pas emprunts
d'ouvrage :
SELECT NumAbo FROM ABONNE
WHERE NOT EXISTS (PRET )

LMD - Les prdicats

BETWEEN

Teste l'appartenance d'une valeur un intervalle.


Ex :Nom et prnom des salaris qui gagnent entre 1000 et 1200
:
SELECT Nom, Prenom FROM PERSONNEL
WHERE Salaire BETWEEN 1000 and 1200

LMD - Les prdicats

LIKE

Permet de faire une recherche approximative.


Ex :Nom des abonns qui habitent en Dordogne :
SELECT Nom FROM ABONNE
WHERE CodeP LIKE 24---' OR Dpt LIKE '%DORDOGNE%'

LMD - Les prdicats

ISNULL

Permet de tester si un champ a t affect.


Ex :Liste des abonns qui n'ont pas le tlphone (ou qui sont sur
liste rouge) :
SELECT Nom FROM ABONNE
WHERE Telephone IS NULL

LMD - Les clauses

GROUPBY

Application de fonctions agrgats des collections


d'enregistrements relies smantiquement.
Ex :Nombre d'abonn dans chaque ville :
SELECT Ville, count(*) FROM ABONNE
GROUP BY Ville

LMD - Les clauses


HAVING
Cette clause ne s'emploie qu'avec un "GROUP BY".
Exprime une condition sur le groupe d'enregistrement associ
chaque valeur du groupage.

Ex :Nombre de prts effectus avant le 22 mai par abonn


SELECT NumAbo, count(*) FROM PRET
GROUP BY NumAbo
HAVING DatePret <= '22/05/00'

LMD - Les clauses

ORDERBY

Permet l'ordonnancement du rsultat avant l'affichage.


Ex :Liste des salaires annuels classs par ordre dcroissant :
SELECT Salaire * 12 FROM PERSONNEL
ORDER BY Salaire

LMD - Les clauses

DISTINCT

Elimine les doublons avant d'utiliser une fonction agrgat.


Ex :Liste de toutes les villes o habite au moins un abonn :
SELECT DISTINCT Ville FROM ABONNE

LMD - Les fonctions agrgats


Ces fonctions ne peuvent tre utilises que dans une clause SELECT
ou dans une clause HAVING :

COUNT

Dnombre les lignes slectionnes.


Ex: Nombre de salaris :
Ex: SELECT COUNT( *)
FROM PERSONNEL

LMD - Les fonctions agrgats

SUM

Additionne les valeurs de type numrique.


Ex :Somme des salaires des employ dont le prnom est "Pierre" :
SELECT SUM( Salaire) FROM PERSONNEL
WHERE Prenom='Pierre'

LMD - Les fonctions agrgats

MIN

Retourne la valeur minimale d'une colonne de type caractre ou


numrique.
Ex :Abonn le plus ancien (plus petit numro d'abonn) :
SELECT MIN( NumAbo)
FROM ABONNE

LMD - Les fonctions agrgats

MAX

Retourne la valeur maximale d'une colonne de type caractre ou


numrique.

Ex :Plus gros salaire parmis les employs Grenoblois :


SELECT MAX( Salaire) FROM PERSONNEL
WHERE Adresse LIKE '%Grenoble%'

LMD - Les fonctions agrgats

AVG

Calcule la moyenne d'une colonne de type numrique.


Ex :Moyenne des salaires des bibliothcaires :
SELECT AVG(Salaire) FROM PERSONNEL
WHERE Fonction='Bibliothcaire'
On peut prfixer (expr) par les mots cls [DISTINCT | ALL] .

LMD

Insertion de donnes

La commande INSERT permet dajouter des enregistrements


une relation.
Syntaxe :
INSERT INTO <nom_de_relation > [(<liste_dattributs>)] VALUES
(<liste_de_valeurs >) ou
INSERT INTO <nom_de_relation> [(<liste_dattributs>)]
<expression_de_slection>

LMD

Mise jour dun attribut dune relation

UPDATE <nom_de_relation > SET attribut1=valeur1,


attributn=valeur2
[WHERE condition];
ex : UPDATE Client SET Nom=Duclou, Prenom=Charles
WHERE NumCli = 3;

LMD

Suppression de donnes

La commande DELETE permet de supprimer des enregistrements dune


relation.
Syntaxe :
DELETE FROM < nom_de_relation > [WHERE < expression_de_selection
>]

Ex :Suppression de labonn numro 1234 :


DELETE FROM ABONNE WHERE NumAbo = 1234

LMD

Problmes dintgrit

Suppression denregistrements => des problmes dintgrit


rfrentielle.
ex: si lon souhaite supprimer un disque actuellement emprunt
par un abonn, la contrainte " FOREIGN KEY NumDisque
REFERENCES DISQUE " sera viole.
La clause " ON DELETE " peut tre ajoute en mme temps que la
dfinition de la contrainte dintgrit rfrentielle.

LMD

Quatre options sont disponibles :

ON DELETE RESTRICT
Permet dinterdire la suppression dun enregistrement rfrenc par
un enregistrement dune autre relation.
ON DELETE SET NULL
Affecte la valeur NULL la cl trangre.
ON DELETE SET DEFAULT
Affecte la valeur par dfaut (selon le type de donnes) la cl
trangre.
ON DELETE CASCADE
Indique au SGBD quil est possible de dtruire la cl trangre en
dtruisant toutes les cls trangres avec la mme valeur.

LMD

Les procdures stockes

Plusieurs requtes peuvent tre encapsules en un seul bloc


appel procdure. Cette procdure est stocke dans la base,
au mme titre que les donnes. Elle est ainsi rutilisable
volont.

LMD
Ex : CREATE PROCEDURE NOUVEAU_PROD
(ID_PROD IN varchar2, DESC_PROD IN varchar2, PRIX IN
number)
AS
BEGIN
INSERT INTO PRODUITS_TBL
VALUES (ID_PROD, DESC_PROD, PRIX);
COMMIT;
END;

LMD
Cette procdure permet dinsrer une nouvelle ligne dans la table
Produit_Tbl.
Pour linvoquer, il suffit dcrire :
EXECUTE NOUVEAU_PROD (9999, Tomates, 11.45)

LMD

Dclencheurs (trigger)

Procdures stockes capables de se dclencher


automatiquement lors dune action de type INSERT DELETE
UPDATE lieu sur une table.

Lutilisation de trigger permet des contrles automatiques de


lintgrit des donnes.

LMD
Ex : CREATE TRIGGER EMP_PAIE_TRIG
AFTER UPDATE ON EMPLOYES_PAIE_TBL
FOR EACH ROW
BEGIN
INSERT INTO EMPLOYES_PAIE_HISTORIQUE
VALUES (:Nouv.ID_Emp, :Ancien.Coef_Paie,
:Nouv.Coef_Paie, Nouv.Dern_Augment);
END;
Ce dclencheur cre une ligne dans la table
EMPLOYES_PAIE_HISTORIQUE chaque mise jour dune
ligne de la table EMPLOYES_PAIE.

LMD - exercices

exercices

Le langage de dfinition des donnes LDD

Dfinitionsdestables(relations)

CREATE TABLE (Attribut1 TYPE, Attribut2 TYPE, ,


contrainte_integrit1,contrainte_integrit2, );
Typedesdonnes:
NUMBER(n) : Entier n chiffres
NUMBER(n, m) : Rel n chiffres au total (virgule
comprise), m aprs la virgule
CHAR(n) : Chane de n caractres
DATE : Date au format JJ-MM-AAAA

LDD - contraintes dintgrit

Clprimaire:
CONSTRAINT nom_contrainte PRIMARY KEY (attribut_cl [,
attribut_cl2, ])
Cltrangre:
CONSTRAINT nom_contrainte FOREIGN KEY (attribut_cl_t)
REFERENCES table(attribut)
Contraintededomaine:
CONSTRAINT nom_contrainte CHECK (condition)

LDD - contraintes dintgrit


Ex : CREATE TABLE Client ( NumCli NUMBER(3),
Nom CHAR(30),
DateNaiss DATE,
Salaire NUMBER(8,2),
NumEmp NUMBER(3),
CONSTRAINT cle_pri PRIMARY KEY (NumCli),
CONSTRAINT cle_etr FOREIGN KEY (NumEmp)
REFERENCES EMPLOYEUR(NumEmp),
CONSTRAINT date_ok CHECK (DateNaiss < SYSDATE));

LDD
Cration dindex (acclration des accs en consultation)
CREATE [UNIQUE] INDEX nom_index ON nom_table (attribut
[ASC|DESC], );
UNIQUE .pas de double
ASC/DESC .ordre croissant ou dcroissant
ex. CREATE UNIQUE INDEX Icli ON Client
(NumCli);
Destructions : DROP TABLE nom_table;
DROP INDEX nom_index;

LDD
Ajout dattributs
ALTER TABLE nom_table ADD (attribut TYPE, );
ex. ALTER TABLE Client ADD (tel NUMBER(8));
Modifications dattributs
ALTER TABLE nom_table MODIFY (attribut TYPE, );
ex. ALTER TABLE Client MODIFY (tel NUMBER(10));
Suppression de contraintes
ALTER TABLE nom_table DROP CONSTRAINT
nom_contrainte;

LDD
Les vues
table virtuelle calcule partir dautres tables grce une
requte
syntaxe :
CREATE VIEW nom_vue AS requte;

ex. CREATE VIEW Noms AS


SELECT Nom, Prenom FROM Client;

LDD

Intrtdesvues

Simplification de laccs aux donnes en masquant les


oprations de jointure.
Ex :CREATE VIEW Prod_com AS
SELECT P.NumProd, Dsi, PrixUni, Date, Quantite
FROM Produit P, Commande C
WHERE P.NumProd=C.NumProd;

On peut crire :
SELECT NumProd, Dsi FROM Prod_com
WHERE Quantite>10;

LDD

Sauvegarde indirecte de requtes complexes


Prsentation de mmes donnes sous diffrentes formes
adaptes aux diffrents usagers particuliers
Support de lindpendance logique

ex :Si la table Produit est remanie, la vue Prod_com doit tre


refaite, mais les requtes qui utilisent cette vue nont pas tre
remanies.

LDD

Renforcement de la scurit des donnes par masquage des


lignes et des colonnes sensibles aux usagers non habilits

La mise jour de donnes via une vue pose


des problmes et la plupart des systmes impose
dimportantes restrictions :

Le mot cl DISTINCT doit tre absent.


La clause FROM doit faire rfrence une seule table.
La clause SELECT doit faire rfrence directement aux attributs de
la table concerne (pas dattribut driv).
Les clauses GROUP BY et HAVING sont interdites.

Scurit et autorisation (LCD)

Transmissiondeprivilges

GRANT privilge ON table|vue


TO user|PUBLIC [WITH GRANT OPTION];
Privilges :
SELECT : lecture INSERT : insertion
UPDATE : mise jour DELETE : suppression
ALL : tous les privilges ALTER : destruction
INDEX : construction dindex

Scurit et autorisation

Suppression de privilges

REVOKE privilge ON table|vue FROM user|PUBLIC;

Catalogue du systme
QuelquestablesutilesgresparOracle
USER_CATALOG (TABLE_NAME, TABLE_TYPE)
USER_TAB_COLUMNS (TABLE_NAME, COLUMN_NAME, )
USER_IND_COLUMNS (INDEX_NAME, TABLE_NAME,
COLUMN_NAME, )
ALL_TABLES (TABLE_NAME, OWNER)
Contient sous forme relationnelle la dfinition de tous les objets
crs par le systme et les usagers.
Ces tables sont accessibles avec SQL (en mode consultation
uniquement).

Catalogue du systme
Exemples
Tables qui contiennent un attribut Intitule
SELECT TABLE_NAME FROM USER_TAB_COLUMNS
WHERE COLUMN_NAME=Intitule;
Attributs de la table Client
SELECT COLUMN_NAME FROM USER_TAB_COLUMNS
WHERE TABLE_NAME=Client;
Tables de lutilisateur dupont
SELECT TABLE_NAME FROM ALL_TABLES
WHERE OWNER=dupont;

Considrations sur les performances


avec les index

index = ensemble de pointeurs vers les donnes dune table.


A linstar dun livre, lindex est le moyen le plus rapide daccder
une information.
Son objectif est lamlioration des performances dans la
recherche de donnes.
Stock sparment, lindex enregistre lemplacement des
valeurs associes la colonne correspondante, il est mis jour
automatiquement.

Considrations sur les performances


avec les index

Ex : La requte SELECT * FROM Nom_Table WHERE Nom =


Dupont
Index
Donnes
Bertrand
Caillau
Caillau
Charpentier
Dupont
Dupont
Dupont
Dupont
Martin
Sable

Table
Emplacement
6
2
9
5
1
3
7
100 100
8
4

Emplacement
1
2
3
4
5
6
7
8
9

100 100

Donnes
Dupont
Caillau
Dupont
Sable
Charpentier
Bertrand
Dupont
Martin
Caillau

Dupont

Un index associ la colonne Nom permettra de retrouver les


donnes sans avoir balayer toute la table.

Considrations sur les performances


avec les index

Une cl primaire est implicitement associe un index.


Toutes les colonnes intervenant dans une jointure doivent tre
indexes.

Considrations sur les performances


avec les index

Si les index optimisent les performances en consultation, ils les


dgradent en modification. En effet, dans ce dernier cas, le
systme consacre beaucoup de temps recalculer les index.

Les colonnes contenant trop peu de valeurs diffrentes ne


doivent pas tre indexes.

Conclusion
Nous venons ainsi de parcourir un ensemble non exhaustif des
technologies mises en uvre dans les SGBD.

Les SGBDR, aujourdhui trs rpandus pour toutes les raisons que nous
venons dtudier prsentent tout de mme des limites en ce qui
concerne des donnes complexes (ex : limage, le son). Aussi, le
dveloppement de SGBD orients Objet est appel crotre.
Dailleurs, grand nombre dditeur de SGBDR remanient leurs
logiciels afin de leurs ajouter une couche objet).