Vous êtes sur la page 1sur 22

Introduction aux bases de donnes

Universit de Nice Sophia-Antipolis


Version 2.1 - 5/12/2000

Gnralits sur les bases de donnes

Richard Grin
R. Grin SGBD 2

Dfinitions
Une base de donnes est un ensemble structur de donnes enregistres dans un ordinateur et accessibles de faon slective par plusieurs utilisateurs. Un logiciel qui permet d'interagir avec une base de donnes s'appelle un systme de gestion de base de donnes (SGBD)

Fonctions d'un SGBD


Dcrire les donnes qui seront stockes Manipuler ces donnes (ajouter, modifier, supprimer des informations) Consulter les donnes et traiter les informations obtenues (slectionner, trier, calculer, agrger,...) Dfinir des contraintes d'intgrit sur les donnes (contraintes de domaines, d'existence,... )
3 R. Grin SGBD 4

R. Grin

SGBD

Fonctions d'un SGBD (2)


Dfinir des protections d'accs (mots de passe, autorisations,...) Rsoudre les problmes d'accs multiples aux donnes (blocages, interblocages) Prvoir des procdures de reprise en cas d'incident (sauvegardes, journaux,...)

Indpendance par rapport aux traitements


Pour faciliter la maintenance, un SGBD doit favoriser l'indpendance des traitements
par rapport l'implantation physique des donnes (codage, support d'enregistrement, ordre dans lequel les donnes sont enregistres,) et mme, si possible, par rapport l'implantation logique des donnes (existence d'index, dcomposition en "fichiers logiques",)
R. Grin SGBD 6

R. Grin

SGBD

Sans base de donnes


Fichiers
BP 2536

Avec base de donnes


Base de donnes
BP 2536

Applications Facturation

Filtre (vues) Applications Facturation

BP 2536

Commercial

Commercial

BP 2536

Prospects
Dlais de mise jour Donnes contradictoires SGBD
7 R. Grin SGBD

Prospects
8

R. Grin

Avec base de donnes


Une information n'est stocke qu'une seule fois Une seule base pour toutes les applications mais chaque application ne voit que ce qu'elle doit voir (contrle par les filtres ou vues)

Avantages de l'utilisation des SGBD


Centralisation des donnes intgrit des donnes Contrle centralis de l'accs aux donnes scurit accrue Instructions de traitement trs puissantes grande rapidit de dveloppement Indpendance vis--vis de la structure physique et logique des donnes maintenance facilite
9 R. Grin SGBD 10

R. Grin

SGBD

Avantages de l'utilisation des SGBD


Pour les SGBD relationnels : langage non proc dural simple interrogation directe possible par les utilisateurs et rponses rapides des questions non prvues par l'application

Niveau de description dune base


Externe : modlisation des diffrentes visions de la base par les utilisateurs Conceptuel : structure globale des donnes de la base qui intgre les diffrentes visions externes, sans se soucier des contraintes (de performance ou autres) lies limplantation Interne : manire dont la base est implante sur les ordinateurs
R. Grin SGBD 12

R. Grin

SGBD

11

Avantages de la sparation des 3 niveaux


On peut limiter les modifications lies aux changements de matriel, de systme dexploitation ou des logiciels utiliss La vision de chaque utilisateur est indpendante des visions des autres utilisateurs et nest pas modifie par les modifications du schma conceptuel qui ne le concernent pas
R. Grin SGBD 13

Types d'utilisateurs
L'administrateur de la base est charg
du contrle de la base de donnes, en particulier, permettre l'accs aux donnes aux applications ou individus qui y ont droit de conserver de bonnes performances d'accs ces donnes des sauvegardes et des procdures de reprise aprs les pannes

R. Grin

SGBD

14

Types d'utilisateurs (2)


Le programmeur
crit des applications qui utilisent la base de donnes il cre les tables et les structures associes (vues, index,...) utilises par ses applications

Types de SGBD
SGBD hirarchique :
les donnes sont reprsentes dans la base sous la forme d'un arbre la structure d'arbre utilise des pointeurs et dtermine le chemin d'accs aux donnes

L'utilisateur final
n'a accs qu'aux donnes qui lui sont utiles
par l'intermdiaire d'applications en interrogeant directement les tables ou vues sur lesquelles l'administrateur lui a accord des droits
R. Grin SGBD 15

SGBD rseau :
les donnes sont reprsentes dans la base sous la forme d'un graphe quelconque la structure de graphe utilise des pointeurs et dtermine le chemin d'accs aux donnes
R. Grin SGBD 16

Types de SGBD (2)


Pour les SGBD hirarchiques et rseaux, les programmes
ne sont pas indpendants de la structure logique de la base doivent indiquer le chemin d'accs aux donnes utilisent un langage complexe pour travailler avec les donnes

SGBD relationnel
La thorie des SGBDR est fonde sur la thorie mathmatique des relations Reprsentation trs simple des donnes sous forme de tables constitues de lignes et de colonnes Plus de pointeurs qui figent la structure de la base Langage non procdural, puissant et simple d'emploi Langage SQL est un standard parmi ces langages Dominent le march des SGBD
R. Grin SGBD 18

R. Grin

SGBD

17

SGBD objet
Les SGBDOO enregistrent les donnes sous forme d'objets ; les donnes sont enregistres avec les procdures et les fonctions qui permettent de les manipuler Ils supportent la notion d'hritage entre classes d'objets Trs simple de rendre les objets persistants Meilleures performances pour la gestion d'objets complexes (les pointeurs remplacent les
jointures pour les structures hirarchiques)
R. Grin SGBD 19

SGBD objet
A priori, beaucoup d'avantages sur le relationnel Mais,
manque de normalisation et de standard inertie de l'existant (presque toutes les bases actuelles sont de type relationnel)

Vont dtrner les SGBD relationnels ? Ceux-ci tentent de rsister avec les SGBD relationnels-objet (introduction des types complexes
et des pointeurs mais au dtriment de la "puret" relationnelle)
R. Grin SGBD 20

Niveaux d'abstraction
Il est ncessaire de dcrire l'application selon diffrents niveaux d'abstraction pour faciliter

Modles de donnes

le dveloppement des applications (ne pas tre noy dans


par les dtails et contraintes techniques au dbut de son tude)

l'adaptation de l'application aux futures modifications de l'environnement technique et logiciel

Pour les donnes, on distingue gnralement les 3 niveaux conceptuel, logique et physique
R. Grin SGBD 21 R. Grin SGBD 22

Niveau conceptuel
Il dcrit les donnes sous une forme indpendante du matriel et du SGBD Dans ce cours d'introduction, nous dcrirons ce niveau conceptuel par un diagramme de classes UML (simplification qui peut suffire pour les cas simples)

Niveau logique
Il adapte le niveau conceptuel au type de SGBD utilis Pour les SGBD relationnels, il traduit le niveau conceptuel sous formes de relations Pour les SGBD objets, le modle conceptuel est traduit sous forme de classes (direct depuis un schma UML)

R. Grin

SGBD

23

R. Grin

SGBD

24

Niveau logique pour les SGBD relationnels


Les relations sont normalises pour viter les problmes lis une mauvaise rpartition entre les relations
Des besoins d'optimisation peuvent conduire dnormaliser certaines relations

Niveau physique
Il dcrit l'implantation du niveau logique l'aide du matriel et du SGBD choisi On prcise les emplacements des donnes sur les diffrents supports On peut optimiser les accs aux donnes en utilisant les possibilits particulires offertes par le SGBD (clusters par exemple avec Oracle)
R. Grin SGBD 26

R. Grin

SGBD

25

Dpartement numro : int nom : String lieu : String

Une classe Une classeassociation Multiplicit


Projet codeP: String nomP : String ajouterEmploye (Employe)

Une association

ajouterEmploy (Employe) : void 1 +contient

Agrgation
+subordonn 0..* 0..* hierarchie appartient Employe matricule : int nom : String 0..1 poste : String dateEmbauche : date salaire : double +suprieur getSuperieur () setSuperieur (Employe ) getMatricule () Participation fonctionP: String

Modle relationnel

0..* +participe

0..*

Rle pour lassociation


Commercial commission : double

Hritage
Directeur Administratif

R. Grin

setCommission (double)

SGBD

27

R. Grin

SGBD

28

Relation
La notion de relation traduit le fait que les lments appartenant des ensembles (distincts ou non) peuvent tre en relation
Robert Sylvie Nathalie Sous-ensemble de Homme Femme : { (Robert, Sylvie), (Alain, Nathalie), (Alain, Carole) } SGBD Carole Alain Bernard Julien Hommes
R. Grin

Relation mathmatique
Une relation entre n ensembles Di est un sous-ensemble du produit cartsien des n ensembles D1 D2 ... Dn C'est donc un ensemble de n-uplets (a1, a2,, an) o ai Di n est appel le degr de la relation

Femmes
29 R. Grin SGBD 30

Relations de degr > 2


Si de nombreux ensembles sont en relation, il est plus difficile de dessiner la relation Mais la reprsentation sous forme mathmatique ne pose pas de problme particulier Par exemple, une relation pre-mre-enfants pourrait tre dcrite par un ensemble de 3-uples :
{ (Robert, Sylvie, Toto), (Alain, Nathalie, Bibi), (Alain, Nathalie, Titi) }
R. Grin SGBD 31

Reprsentation des donnes


Dans la thorie des bases de donnes relationnelles toutes les donnes sont reprsentes sous forme de relations Par exemple, le t-uple
(125, Dupond, 15000, 10)

indique que l'employ de matricule 125 s'appelle Dupond, gagne 15.000 F par mois et travaille dans le dpartement numro 10
R. Grin SGBD 32

Domaines et attributs
Les ensembles Di d'une relation sont appels les domaines de la relation Certains de ces domaines peuvent tre identiques mais, dans une relation, l'ordre est significatif et chaque domaine possde un nom d'attribut Ai qui est li son rle dans la relation La relation est alors note R(A1, A2,, An), o R est le nom de la relation Par exemple, Employe(matricule, nom,
salaire, numDept)
R. Grin SGBD 33 R. Grin SGBD 34

Schma relationnel
Un schma relationnel est
un ensemble de dfinitions de relations lies un mme schma conceptuel les contraintes d'intgrit associes ces relations (cls, contraintes de domaine, d'existence ou de rfrence,)

Cls d'une relation


Cl candidate : sous-ensemble minimal d'attributs qui permet d'identifier chacun des t-uples de la relation Cl primaire : une des cls candidates, choisie comme identifiant privilgi (par le concepteur de la base)

Exemples de cls
EMPLOYE(matricule, nom, salaire) a

1 cl candidate : matricule Si on est certain que 2 employs n'ont jamais le mme nom, nom est une 2me cl candidate
EMPLOYES(matricule, nom, prnom, salaire) a 2 cls candidates : matricule (que l'on choisira certainement comme cl primaire) En supposant que 2 employs n'ont jamais les mmes (nom, prnom)
nom et prnom
R. Grin SGBD 36

R. Grin

SGBD

35

Table
Dans les SGBD relationnels les relations sont reprsentes simplement sous forme de tables Les lignes correspondent aux t-uples et les colonnes aux attributs
Matricule Nom Salaire NumDept

Passage d'un diagramme de classes un schma relationnel

525 12 132
R. Grin

Dupond 150000 10 Durand 120000 10 Bernard 8500


SGBD

20
37 R. Grin SGBD 38

tapes du passage dun diagramme de classes un schma relationnel


Traduction des classes en relations Traduction des associations en relations Traduction de lhritage

Le problme de lidentificateur
Tout objet est identifiable. Cette identification est automatique dans les langages objet Dans les schmas relationnels ou dans SQL on peut tre amen ajouter un identificateur On peut ainsi ajouter en attribut un nombre sans signification particulire, incrment automatiquement chaque cration dobjet Parfois un ou plusieurs attributs assurent cette identification (n SS, ISBN)
39 R. Grin SGBD 40

R. Grin

SGBD

Remarque sur les identificateurs


Il est rarement bon dutiliser des identificateurs significatifs, par exemple, un nom En effet, ces identificateurs vont tre utiliss dans dautres relations pour dsigner les t-uples qu'ils identifient Un identificateur ne devrait donc jamais tre modifi Une faute de frappe dans un identificateur significatif comme un nom peut engendrer des traitements lourds sur une base de donnes
R. Grin SGBD 41

Traduction dune classe


Une classe est traduite en une relation On peut tre amen ajouter un identificateur, cl primaire de la relation Exemple : la classe Dpartement est traduite par la relation
DPARTEMENT(numro, nom, lieu)

R. Grin

SGBD

42

Exemple de traduction dune classe


DPARTEMENT(numro, nom, lieu)

Traduction dune association binaire


Lorsque les nombres maximum des 2 multiplicits sont suprieurs 1 (associations M:N), on doit crer une relation pour traduire lassociation La cl primaire de cette relation est forme des 2 cls des relations qui traduisent les classes qui interviennent dans lassociation

En SQL :
create table departement ( numero smallint primary key, nom varchar(15), lieu varchar(15))

R. Grin

SGBD

43

R. Grin

SGBD

44

Exemple de traduction dune association binaire M:N


PARTICIPATION(matr, codeP) En SQL :
create table participation ( matr integer references emp, codeP varchar(2) references projet, primary key(matr, dept))

Classes association
Si l'association est reprsente par une classe association (cf. classe Participation de l'association participe), on ajoute les attributs de classe dans la nouvelle relation

R. Grin

SGBD

45

R. Grin

SGBD

46

Traduction dune association binaire M:N avec classe-association


PARTICIPATION(matr, codeP, fonctionP) En SQL :
create table participation ( matr integer references emp, codeP varchar(2) references projet, fonctionP varchar(15), primary key(matr, dept))

Interprtation des relations qui traduisent une association


Pour savoir qui participe au projet "QUALIT"
1. on rcupre le code de projet QUALIT dans la relation PROJET 2. on note tous les matricules qui sont associs ce code dans la relation PARTICIPATION 3. on cherche les noms des employs qui ont ce matricule dans la relation EMPLOY
R. Grin SGBD 48

R. Grin

SGBD

47

Traduction dune association binaire dont une multiplicit maximum est 1 (1:N ou 1:1)
On peut traduire par une nouvelle relation comme pour une association M:N On peut aussi ajouter dans la relation qui traduit la classe place du ct oppos la multiplicit 1, la cl de lautre classe
La 1re solution est plus souple mais plus coteuse (jointures)
R. Grin SGBD 49

Exemple de traduction dune association binaire 1:N


EMP(matr,, dept) En SQL :
create table emp ( matr integer primary key, dept smallint references dept)

R. Grin

SGBD

50

Classes association
Si l'association est reprsente par une classe association, on peut ajouter les attributs de classe dans la relation qui reoit la cl de l'autre classe, ou crer une nouvelle relation Mais si les attributs de la classe association sont nombreux, il est souvent prfrable de traduire l'association par une relation part
R. Grin SGBD 51

Traduction dune association de degr > 2


On doit crer une relation pour traduire lassociation La cl de cette relation est forme d'un sous ensemble des cls des relations qui traduisent les classes qui interviennent dans lassociation
Le sous-ensemble peut tre stricte si une dpendance fonctionnelle existe entre ces cls
R. Grin SGBD 52

Exemple de traduction dune association de degr > 2


RESERVATION(nVol, nSige, codePassager, )

Traduction de lhritage
La classe fille et sa classe mre sont traduites par 2 relations Un objet de la classe fille
a ses attributs rpartis dans les 2 relations son identit est prserve en donnant un mme identifiant au t-uple qui correspond lobjet dans les 2 relations

En SQL :
create table reservation( nvol varchar(10) references vol, nsiege integer, codePassager varchar(10) references passager , primary key(nVol, nSiege, codePassager), )

R. Grin

SGBD

53

R. Grin

SGBD

54

Exemple de traduction de lhritage


COMMERCIAL(matr, commission) En SQL :
create table emp ( matr integer primary key, nom VARCHAR(30), . . .) create table commercial ( matr integer primary key references emp , commission numeric (8,2))
R. Grin SGBD 55 R. Grin

Hritage multiple
Pour traduire lhritage multiple, on met comme identifiant dans la classe fille lensemble des identifiants des classes mres

SGBD

56

Variantes pour la traduction de lhritage


Pour rduire le nombre de relations et amliorer les performances, on peut
soit tout runir dans la relation de la classe mre, en ajoutant un attribut pour le sous-type (si les attributs des classes filles sont peu nombreux) ; il y aura alors des attributs non renseigns soit copier les attributs de la classe mre dans chacune des relations qui traduisent les classes filles (si les attributs de la classe mre sont peu nombreux)
R. Grin SGBD 57

Schma relationnel utilis pour ce cours


Employ(matr, nomE, poste, dateEmb, sup, salaire, commission, dept) Dept(dept, nomD, lieu) Matricule du chef Projet(codeP, nomP) Participation(matr, codeP , fonctionP)

R. Grin

SGBD

58

Calcul des prdicats


La logique du 1er ordre, ou calcul des prdicats, est la thorie mathmatique qui tudie les formules logiques formelles (sans signification particulire) On se limite des formules logiques construites avec un ensemble de prdicats, les oprateurs "et", "ou", "ngation", " ", les oprateurs et et des constantes et des variables Un prdicat a un nombre fixe d'arguments et peut tre vrai ou faux
59 R. Grin SGBD 60

Langages d'interrogation relationnels

R. Grin

SGBD

10

Smantique
On peut appliquer le calcul des prdicat un domaine de discours particulier en dfinissant
des valeurs concrtes pour les constantes des prdicats

Langages d'interrogation fonds sur le calcul des prdicats du 1er ordre


Ces langages permettent de retrouver des informations enregistres dans la base sous forme de relations Ils permettent d'exprimer des formules logiques associes ces donnes Selon les domaines dans lesquels les constantes prennent leur valeur, on a plusieurs langages d'interrogation
R. Grin SGBD 62

A chaque formule logique correspond alors l'ensemble des donnes du domaine qui vrifient la formule (si on donne ces valeurs aux variables, la formule est vraie)
R. Grin SGBD 61

Calcul relationnel des t-uples


Il est fond sur le calcul des prdicats du 1er ordre, avec les variables qui prennent leur valeur dans lensemble des t-uples Prdicat (P t-uple de Exemple (noms des employs qui PARTICIPATION) participent un projet) :
{E.nomE / P PARTICIPATION(P) (P.matr = E.matr) EMP(E)} (les variables sont E et P)
SGBD

Calcul relationnel des domaines


Il est fond sur le calcul des prdicats du 1er ordre, avec les variables qui prennent leur valeur dans lensemble des domaines Exemple (noms des employs qui participent un projet) :
{ y / x EMP(matr:x, nomE:y) PARTICIPATION(matr:x) } (les variables sont x et y) Prdicat
SGBD

R. Grin

63

R. Grin

(valeurs de x dans domaine de matr

64

Algbre relationnelle
Le principe est diffrent pour ce langage d'interrogation qui a inspir le langage SQL On se donne des oprateurs que l'on applique aux relations de la base, pour obtenir les donnes que l'on cherche On a 2 types d'oprateurs : relationnels et ensemblistes

Oprateurs relationnels
Soit une relation R[A1,, An] Projection sur les attributs Aj,, Ak, note
R[Aj,, Ak]

Slection des t-uples qui vrifient une condition c, note R / c Jointure (qui-jointure) de 2 relations R et S sur 2 attributs C et D, note R J{C=D} S Division de 2 relations, note R B S
R. Grin SGBD 66

R. Grin

SGBD

65

11

Oprateurs relationnels de base


Exemple de projection :
Employ[matricule, nom, salaire]

Equi-jointure
C'est un oprateur fondamental de la thorie des bases de donnes relationnelles Il permet de crer une relation qui comprend des donnes venant de 2 relations Soient R[A, B] et S[C, D], avec C et D 2 ensembles d'attributs de types compatibles, la jointure R J{B=C} S est la relation dont les tuples sont obtenus par concatnation des t-uples de R et de S qui ont la mme valeur pour les attributs B et C
67 R. Grin SGBD 68

Exemple de slection :
Employ / salaire > 12000

R. Grin

SGBD

Exemple d'qui-jointure
Employ
matricule nom 1050 832 900 Dupond Durand Duval dept 10 20 10

Exemple de jointure naturelle


Employ Dpartement
dept 10 20 10 dept nom 10 20 Finances Ventes lieu Paris Nice Dupond Durand Duval matricule nom 1050 832 900

Dpartement
dept nom 10 20 Finances Ventes lieu Paris Nice

Employ J{dept=dept} Dpartement

Notation simplifie : Employ J{dept} Dpartement quand le nom des 2 colonnes est le mme
69

Employ J{dept=dept} Dpartement


matricul nom dept nom lieu e 1050 Dupond 10 Finances Paris 832 900
R. Grin

matricul nom dept dept nom lieu e 1050 Dupond 10 10 Finances Paris 832 900
R. Grin

La colonne de jointure n'est pas rpte

Durand 20 Duval 10

20 10

Ventes

Nice

Durand 20 Duval 10

Ventes

Nice
SGBD 70

Finances Paris
SGBD

Finances Paris

Division Jointure en gnral


On peut remplacer = par un oprateur de comparaison >, <, , , La jointure est alors note, par exemple, R J{C < D} S Exemple : Employ J{salaire < salaire} Employ
R
A x y z x B 1 2 1 3

S
C 1 3

R B S

A x

R B S = les A qui sont associs tous les C = {a R[A] / c S, (a, c) R} = {a R[A] / c S, (a, c) R} / / "Division", car c'est le plus grand sous-ensemble D de R[A] tel que D S est inclus dans R
71 R. Grin SGBD 72

R. Grin

SGBD

12

Quand utilise-t-on la division ?


La division fournit la rponse au type de question suivante : quels sont les "A" qui sont associs tous les C ? Exemple : quels sont les matricules des employs qui participent tous les projets : R1 = Participation[matr, codeP] matr Projet[matr]

Oprateurs ensemblistes
Pour 2 relations qui ont des attributs de types compatibles :
Runion : R1 R2 Intersection : R1 R2 Diffrence : R1 - R2

Pour 2 relations quelconques, produit cartsien : R1 R2


R. Grin SGBD 74

R. Grin

SGBD

73

Equivalence des langages


On peut dmontrer que l'algbre relationnelle, les calculs relationnels des tuples et des domaines sont quivalents : ils permettent de dfinir les mmes ensembles de donnes

Normalisation d'un schma relationnel

R. Grin

SGBD

75

R. Grin

SGBD

76

But de la normalisation
Une mauvaise rpartition des donnes entre les relations peut occasionner de graves problmes lors de l'volution de la base La normalisation des relations permet d'viter ces problmes, essentiellement en vitant les redondances Les problmes viennent en fait des dpendances fonctionnelles internes aux relations
R. Grin SGBD 77

Dpendance fonctionnelle (DF)


Soient X et Y, 2 attributs (ou groupe d'attributs) d'une mme relation Il y a DF entre X et Y (on dit aussi que Y dpend de X) On note X Y, si la valeur de X dtermine la valeur de Y

R. Grin

SGBD

78

13

Exemples de DF
Il y a DF d'une cl candidate vers tous les autres attributs d'une relation
Adresse(nom, ville, codePostal, dpartement); on a codePostal ville (mais pas ville dpartement) Etudiant(nom, prnom, moyenne, ge, enseignant) (nom, prnom) moyenne (nom, prnom) ge
R. Grin SGBD 79

Proprits des DF
Rflexivit : Y X X Y Augmentation : X Y XZ YZ Transitivit : X Y et Y Z X Z Union : X Y et X Z X YZ Pseudo-transitivit : X Y et WY Z WX Z Dcomposition : X Y et Z Y X Z
R. Grin SGBD 80

Normaliser un schma relationnel


C'est remplacer un schma relationnel par un autre schma "quivalent" (reprsentant les mmes donnes) dont toutes les relations sont dans une certaine forme normale

Pratique de la normalisation
En pratique, normaliser un schma relationnel c'est remplacer chaque relation du schma par des relations qui sont dans la forme normale voulue Le schma est quivalent si la jointure naturelle sur les attributs communs des relations obtenues par clatement redonne la relation de dpart
R. Grin SGBD 82

R. Grin

SGBD

81

Pratique de la normalisation
Normaliser une relation consiste extraire les DF internes qui posent des problmes, en les transfrant dans de nouvelles relations

Thorme important
Cas simple pour lequel on peut clater une relation en 2 relations, en tant certain de retrouver la relation de dpart par jointure sur les attributs communs Thorme de dcomposition sans perte de donnes : Soit une relation R(A, B, C) o A, B et C sont des ensembles d'attributs disjoints, avec B C, alors R(A, B, C) = R[A, B] J{B} R[B, C] (on peut dire que l'on a "extrait" la DF de R)
R. Grin SGBD 84

R. Grin

SGBD

83

14

Exemple d'clatement sans perte de donnes


Employ(matr, nomE, dept, nomD) Peut s'clater en : Employ(matr, nomE, dept) Dpartement(dept, nomD)

Degrs de normalisation
Il existe plusieurs degrs de normalisation : de la 1re forme normale la 5me Plus le degr est grand,
moins on risquera de rencontrer des anomalies lors des mises jour des donnes plus les conditions remplir sont strictes

La source de la DF reste dans la relation de dpart en cl trangre

R. Grin

SGBD

85

R. Grin

SGBD

86

1re forme normale


Toutes les relations sont en 1 FN : elles n'ont pas d'attributs multivalus multivalu La pseudo-relation Livre(codeISBN, titre, auteurs) peut tre dcompose en 2 vraies relations : Livre(codeISBN, titre) Auteurs (codeISBN, auteur)

2me forme normale


Une relation est en 2 FN
si elle est en 1 FN si chaque attribut qui ne fait partie d'aucune cl candidate ne dpend pas d'une partie stricte d'une cl candidate

Employ(matr, codeP, nomE, fonctionP) n'est pas en 2 FN


R. Grin SGBD 88

R. Grin

SGBD

87

Problmes de mise jour d'une relation pas en 2me forme normale


Pour modifier le nom d'un employ, on doit le modifier dans toutes les lignes des projets auxquels participe l'employ On ne peut ajouter un employ qui ne participe aucun projet On perd toute information sur un employ qui ne participe plus aucun projet
R. Grin SGBD 89

Normalisation en 2me forme


On "extrait" la DF (voir thorme de non perte de donnes) : Employ(matr, nomE) Participation(matr, codeP, fonctionP)

R. Grin

SGBD

90

15

3me forme normale


Une relation est en 3 FN si tout attribut qui ne fait pas partie d'une cl candidate ne peut dpendre que d'une cl candidate Employ(matr, nomE, dept, nomD) n'est pas en 3 FN On obtient un schma en 3 FN par extraction de la DF : Employ(matr, nomE, dept) Dpartement(dept, nomD)
R. Grin SGBD 91

Forme normale de Boyce-Codd


Une relation est en FNBC si les seules sources de DF sont les cls candidates Pourquoi ? Une FNBC est toujours en 3 FN mais l'inverse n'est pas vrai car pour la 3FN on n'impose rien pour les DF dont le but est un attribut cl

R. Grin

SGBD

92

Exemple de relation pas en FNBC


Introduisons une nouvelle rgle de gestion : 2 personnes d'un mme dpartement ne peuvent participer un mme projet Cette rgle induit la DF suivante : (dept, codeP) matr Soit la relation Participation2(dept, codeP, matr, fonctionP) Elle est en 3 FN mais pas en FNBC
R. Grin SGBD 93

Normalisation en FNBC
Si on extrait la DF, on obtient : Participation(matr, codeP , fonctionP) Emp(matr, dept) On obtient bien un schma en FNBC mais on perd la DF (dept, codeP) matr Il faut choisir entre
avoir un schma en 3 FN, avec toutes les DF avoir un schma en FNBC, avec perte de DF
R. Grin SGBD 94

Thorme de dcomposition en 3 FN
On peut toujours normaliser en 3 FN, sans perte de donnes ni perte de dpendances On peut toujours normaliser en FNBC sans perte de donnes, mais on peut avoir des pertes de dpendances

Projection des DF d'une relation


Si R est dcompose en 2 relations R1 et R2, la projection de l'ensemble des DF de R sur R1 est l'ensemble des DF de R qui ont leurs attributs de dpart et d'arrive dans R1 On dit que la dcomposition de R en R1 et R2 est sans perte de dpendance si on peut retrouver (par transitivit) toutes les DF de R partir des projections sur R1 et R2
R. Grin SGBD 96

R. Grin

SGBD

95

16

Consquence d'une perte de dpendance


On est oblig de faire des jointures pour vrifier les rgles de gestion lies aux DF perdues Exemple : si on dcompose Participation2 en Participation et Emp, chaque nouvelle participation un projet, il faut vrifier par programme qu'il n'y a pas dj un employ du mme dpartement dans le projet (dans
Participation2, la vrification est faite automatiquement par unicit de la cl primaire)
R. Grin SGBD 97 R. Grin SGBD 98

Utilisation d'un SGBD relationnel

Scurit Contrle de l'accs la base


Le contrle de l'accs la base est effectu en associant chaque utilisateur
un nom de login un mot de passe

Scurit Propritaire des donnes


Les donnes d'une table appartiennent celui qui l'a cre Le propritaire d'une table peut donner d'autres le droit de travailler avec sa table Les vues permettent aussi de restreindre l'accs aux donnes

Chaque utilisateur a des privilges d'accs la base : droit ou non


de crer des tables ou des vues de lire ou de modifier des tables ou des vues
R. Grin SGBD 99

R. Grin

SGBD

100

Modules d'utilisation des SGBD


Nombreux produits autour des SGBD :
interface pour interrogation directe de la base gnrateur de formulaires pour la saisie et l'interrogation de la base gnrateur de menus et d'tats imprims gnrateur d'applications partir d'tudes de conception langages dit de 4me gnration interfaces avec les langages de 3me gnration interfaces avec le Web et les logiciels de bureautique
R. Grin SGBD 101 R. Grin

Implantation d'un SGBD relationnel

SGBD

102

17

Fichiers de la base
Les donnes de la base sont enregistres dans de trs gros fichiers du systme d'exploitation Le SGBD gre lui-mme ses donnes ; il enregistre les tables, vues, index, dans ces gros fichiers Le SGBD peut mme se passer compltement du systme d'exploitation hte pour l'enregistrement des donnes (fichiers "raw", hors systme de fichiers)
R. Grin SGBD 103

Images "avant" et "aprs"


Images "avant" : fichiers systme, ou emplacement spcial de la base, contenant les informations ncessaires pour remettre la base dans un tat antrieur une modification (chez
Oracle, segments de rollback crits dans la base)

Images "aprs" : fichiers systme contenant les informations ncessaires pour refaire une modification partir d'un tat antrieur de la base (fichiers "redo log" chez Oracle)
R. Grin SGBD 104

Archivage des images "aprs"


La place disque rserve aux images "avant" et "aprs" est limite ; elle est recycle pour enregistrer les dernires images Il peut tre intressant d'archiver sur des bandes magntiques (ou autre) les images "aprs" pour les rutiliser en cas de panne On peut ainsi redrouler toutes les dernires actions effectues par les utilisateurs depuis la dernire sauvegarde
R. Grin SGBD 105

Les diffrents SGBD peuvent avoir des implantations trs diffrentes sur certains points, en particulier sur la faon de traiter les accs concurrents C'est l'implantation d'Oracle (versions 7 et 8i) qui est dcrite ici

R. Grin

SGBD

106

Processus clients et serveurs


Les SGBD s'appuient sur le mode clientserveur :
les interfaces du SGBD avec l'utilisateur ou avec les applications sont clientes de la partie serveur du SGBD : elles lui envoient des requtes et le serveur renvoie les donnes rsultats les parties clientes et serveur du SGBD peuvent tre sur des machines diffrentes ; elles utilisent un protocole rseau (le plus souvent propritaire) pour communiquer
R. Grin SGBD 107

criture dans la base


En attendant leur criture dans la base, les donnes restent dans les buffers en mmoire centrale criture asynchrone des donnes dans la base :
pour des raisons de performances ; mme un commit peut ne pas provoquer l'criture dans la base si les buffers sont pleins, des donnes non valides peuvent tre enregistres dans la base
R. Grin SGBD 108

18

Oracle versions 7 et 8
L'criture est effectue par un seul processus
(en version monoprocesseur)

Segments de rollback
Dans Oracle (versions 7 et 8), les images "avant" sont enregistres dans la base dans des segments de rollback
Ces segments sont utiliss
pour annuler les transactions pour cacher aux autres transactions les donnes modifies par les transactions non valides pour que les transactions "read only" ne voient pas les modifications effectues par les autres transactions
R. Grin SGBD 110

Quand une modification est effectue par une transaction, les donnes de la base sont modifies tout de suite (dans les buffers ou les tables de la base), sans attendre un commit

R. Grin

SGBD

109

Oracle version 6
Avec Oracle version 6, les modifications effectues par les utilisateurs n'taient enregistres dans les tables de la base qu'aprs un commit En attendant le commit, les modifications effectues par un utilisateur taient enregistres part dans la base

Fichiers redo log


Avec Oracle 7 et 8, les images "aprs" sont enregistres dans des fichiers redo log,
avant mme que les donnes ne soient vraiment modifies dans les tables de la base, et au moins chaque validation de transaction ( partir des buffers redo log) ; c'est cet enregistrement dans les fichiers redo log qui "fait foi" pour savoir si une transaction a t valide

L'criture est squentielle, donc rapide


R. Grin SGBD 111 R. Grin SGBD 112

Archivage des fichiers redo log


L'criture dans les fichiers redo log est circulaire, en crasant les premires donnes par les dernires quand les fichiers sont pleins On peut demander Oracle d'archiver automatiquement les fichiers redo log avant qu'ils ne soient pleins (pour les utiliser en cas de panne)
SGBD

Client 1

Client 2

Client 3

Serveur 1

Serveur 2

Buffer Redo Log

Buffers de la base

LGWR

DBWR

Disque
R. Grin SGBD 113

Fichiers Redo Log

Fichiers de la base
SGBD 114

R. Grin

19

Types de pannes
logicielles matrielles dues aux rseaux Les fichiers de la base peuvent avoir t endommags ou pas
R. Grin SGBD 115

Reprise aprs panne quand les fichiers sont corrects


Automatiquement, quand il redmarre, le SGBD
termine les transactions valides qui n'ont pu tre enregistres compltement dans la base annule les transactions qui n'ont pas t valides (rollback ou panne avant le commit)

Pour cela, le SGBD utilise les images "aprs" et "avant"


R. Grin SGBD 116

Reprise aprs panne quand les fichiers sont endommags


L'administrateur doit commencer par recharger la dernire sauvegarde complte de la base Ensuite 2 cas :
si les images "aprs" de la base ont t archives, on redroule les actions des images "aprs" enregistres depuis cette dernire sauvegarde sinon, il faut relancer la main toutes les transactions perdues (si on peut !)
R. Grin SGBD 117

Optimiseur de requtes
SQL est un langage non procdural : on ne dcrit pas comment obtenir le rsultat L'optimiseur du SGBD va concevoir un plan pour aller rechercher les donnes de la manire la plus efficace Il doit comparer tous les plans possibles, ou une partie des plans slectionne par heuristique
R. Grin SGBD 118

Optimisation
L'optimiseur prend en compte
des considrations logiques comme de commencer par rduire la taille des tables (faire d'abord des slections ou projections) avant de faire des jointures l'implantation physique des donnes comme l'existence des index (et des clusters) des statistiques sur les donnes contenues dans les tables (nombre de lignes, de valeurs diffrentes, etc.)
R. Grin SGBD 119 R. Grin

Bases de donnes rparties

SGBD

120

20

Bases de donnes rparties


Les processus qui fonctionnent dans un SGBD, sont souvent rparties sur plusieurs machines De plus en plus frquemment les donnes sont elles-mmes rparties sur plusieurs sites Cette rpartition doit tre le plus transparente possible pour l'utilisateur

COMMIT "distribus"
L'implantation des COMMIT est complexe si la transaction porte sur des donnes rparties sur plusieurs sites distants Un problme de rseau peut survenir quand un COMMIT est lanc, et une machine distante peut ne jamais recevoir l'avis de COMMIT Le COMMIT 2 phases permet de conserver les proprits des transactions, mme sur des bases rparties (ou des bases multiprocesseurs)
R. Grin SGBD 122

R. Grin

SGBD

121

COMMIT 2 phases
Un des sites (le plus souvent celui qui a reu l'ordre COMMIT) est le coordinateur de la manuvre Le COMMIT va se drouler en 2 tapes bien distinctes En fonctionnement normal, ce COMMIT 2 phases est transparent pour l'utilisateur

COMMIT 2 phases ; tape 1


1. Prparation du COMMIT : le coordinateur ordonne tous les autres sites de prparer sa part du travail Si un site indique qu'il est prt, il assure qu'il peut faire les modifications, mme s'il tombe en panne avant de recevoir l'ordre final du coordinateur
Pour avoir cette assurance, les sites enregistrent ce moment les modifications faire dans les images "aprs"
R. Grin SGBD 124

R. Grin

SGBD

123

COMMIT 2 phases ; tape 2


2. Excution du COMMIT :
- si tous les sites rpondent qu'ils sont prt pour le COMMIT, le coordinateur a. enregistre le COMMIT dans ses images "aprs" b. lance tous les sites l'ordre d'effectuer le COMMIT - si un des sites ne rpond pas ou indique qu'il ne pourra effectuer le COMMIT, le coordinateur ordonne un ROLLBACK tous les sites
R. Grin SGBD 125

COMMIT 2 phases ; traitement des pannes


Une panne peut intervenir sur un site qui a indiqu qu'il tait prt, avant qu'il ne reoive l'avis de validation ou d'annulation du coordinateur Dans ce cas, lors de la reprise aprs la panne, le SGBD du site en cause va
s'apercevoir qu'il n'a pas reu l'ordre final du coordinateur s'informer auprs du coordinateur de sa dcision effectuer un COMMIT ou un ROLLBACK (en utilisant
ses images "avant" ou "aprs")
R. Grin SGBD 126

21

Rplication des donnes


Une difficult des bases rparties est la perte de performance due la lenteur des rseaux Pour les sites confronts ce problme, il est possible de ne grer en temps rel que les donnes locales, en utilisant des copies des donnes distantes On peut automatiser la rplication de ces donnes distantes intervalles rguliers
R. Grin SGBD 127

22

Vous aimerez peut-être aussi