Introduction aux bases de données, modèle relationnel

publicité
Introduction aux bases de
données
Généralités sur les
bases de données
Université de Nice Sophia-Antipolis
Version 2.1 - 5/12/2000
Richard Grin
R. Grin
• Décrire les données qui seront stockées
• Manipuler ces données (ajouter, modifier,
supprimer des informations)
• Consulter les données et traiter les
informations obtenues (sélectionner, trier,
calculer, agréger,...)
• Définir des contraintes d'intégrité sur les
données (contraintes de domaines,
d'existence,... )
• Une base de données est un ensemble
structuré de données enregistrées dans un
ordinateur et accessibles de façon sélective
par plusieurs utilisateurs.
• Un logiciel qui permet d'interagir avec une
base de données s'appelle un système de
gestion de base de données (SGBD)
SGBD
3
• Définir des protections d'accès (mots de passe,
autorisations,...)
• Résoudre les problèmes d'accès multiples aux
données (blocages, interblocages)
• Prévoir des procédures de reprise en cas
d'incident (sauvegardes, journaux,...)
SGBD
R. Grin
SGBD
4
Indépendance par rapport aux
traitements
Fonctions d'un SGBD (2)
R. Grin
2
Fonctions d'un SGBD
Définitions
R. Grin
SGBD
5
• Pour faciliter la maintenance, un SGBD doit
favoriser l'indépendance des traitements
– par rapport à l'implantation physique des données
(codage, support d'enregistrement, ordre dans
lequel les données sont enregistrées,…)
– et même, si possible, par rapport à l'implantation
logique des données (existence d'index,
décomposition en "fichiers logiques",…)
R. Grin
SGBD
6
1
Sans base de données
Avec base de données
Applications
Fichiers
BP 2536
Base de données
Filtre (vues) Applications
Facturation
Facturation
BP 2536
BP 2536
BP 2536
R. Grin
Commercial
Commercial
Prospects
Prospects
Délais de mise à jour
Données contradictoires
SGBD
7
9
Avantages de l'utilisation des SGBD
• Pour les SGBD relationnels : langage non
proc édural simple ⇒ interrogation directe
possible par les utilisateurs et réponses rapides
à des questions non prévues par l'application
R. Grin
SGBD
8
• Centralisation des données ⇒ intégrité des
données
• Contrôle centralisé de l'accès aux données ⇒
sécurité accrue
• Instructions de traitement très puissantes ⇒
grande rapidité de développement
• Indépendance vis-à-vis de la structure physique
et logique des données ⇒ maintenance facilitée
• Une information n'est stockée qu'une seule
fois
• Une seule base pour toutes les applications
• …mais chaque application ne voit que ce
qu'elle doit voir (contrôle par les filtres ou
vues)
SGBD
SGBD
Avantages de l'utilisation des SGBD
Avec base de données
R. Grin
R. Grin
11
R. Grin
SGBD
10
Niveau de description d’une base
• Externe : modélisation des différentes
visions de la base par les utilisateurs
• Conceptuel : structure globale des données
de la base qui intègre les différentes visions
externes, sans se soucier des contraintes (de
performance ou autres) liées à l’implantation
• Interne : manière dont la base est implantée
sur les ordinateurs
R. Grin
SGBD
12
2
Avantages de la séparation des 3
niveaux
• On peut limiter les modifications liées aux
changements de matériel, de système
d’exploitation ou des logiciels utilisés
• La vision de chaque utilisateur est
indépendante des visions des autres
utilisateurs et n’est pas modifiée par les
modifications du schéma conceptuel qui ne
le concernent pas
R. Grin
SGBD
13
Types d'utilisateurs
• L'administrateur de la base est chargé
– du contrôle de la base de données, en
particulier, permettre l'accès aux données aux
applications ou individus qui y ont droit
– de conserver de bonnes performances d'accès à
ces données
– des sauvegardes et des procédures de reprise
après les pannes
R. Grin
• SGBD hiérarchique :
• Le programmeur
– les données sont représentées dans la base sous
la forme d'un arbre
– la structure d'arbre utilise des pointeurs et
détermine le chemin d'accès aux données
– écrit des applications qui utilisent la base de
données
– il crée les tables et les structures associées
(vues, index,...) utilisées par ses applications
• SGBD réseau :
• L'utilisateur final
– les données sont représentées dans la base sous
la forme d'un graphe quelconque
– la structure de graphe utilise des pointeurs et
détermine le chemin d'accès aux données
– n'a accès qu'aux données qui lui sont utiles
• par l'intermédiaire d'applications
• en interrogeant directement les tables ou vues sur
lesquelles l'administrateur lui a accordé des droits
SGBD
15
R. Grin
• Pour les SGBD hiérarchiques et réseaux, les
programmes
– ne sont pas indépendants de la structure logique
de la base
– doivent indiquer le chemin d'accès aux données
– utilisent un langage complexe pour travailler
avec les données
SGBD
SGBD
16
SGBD relationnel
Types de SGBD (2)
R. Grin
14
Types de SGBD
Types d'utilisateurs (2)
R. Grin
SGBD
17
• La théorie des SGBDR est fondée sur la théorie
mathématique des relations
• Représentation très simple des données sous forme
de tables constituées de lignes et de colonnes
• Plus de pointeurs qui figent la structure de la base
• Langage non procédural, puissant et simple
d'emploi
• Langage SQL est un standard parmi ces langages
• Dominent le marché des SGBD
R. Grin
SGBD
18
3
SGBD objet
SGBD objet
• Les SGBDOO enregistrent les données sous
forme d'objets ; les données sont enregistrées
avec les procédures et les fonctions qui
permettent de les manipuler
• Ils supportent la notion d'héritage entre
classes d'objets
• Très simple de rendre les objets persistants
• Meilleures performances pour la gestion
d'objets complexes (les pointeurs remplacent les
• A priori, beaucoup d'avantages sur le relationnel
• Mais,
jointures pour les structures hiérarchiques)
R. Grin
SGBD
19
– manque de normalisation et de standard
– inertie de l'existant (presque toutes les bases actuelles
sont de type relationnel)
• Vont détrôner les SGBD relationnels ?
• Ceux-ci tentent de résister avec les SGBD
relationnels-objet (introduction des types complexes
et des pointeurs mais au détriment de la "pureté"
relationnelle)
R. Grin
SGBD
20
Niveaux d'abstraction
• Il est nécessaire de décrire l'application selon
différents niveaux d'abstraction pour faciliter
– le développement des applications (ne pas être noyé dans
Modèles de données
par les détails et contraintes techniques au début de son étude)
– l'adaptation de l'application aux futures modifications
de l'environnement technique et logiciel
• Pour les données, on distingue généralement les 3
niveaux conceptuel, logique et physique
R. Grin
SGBD
21
R. Grin
SGBD
22
Niveau conceptuel
Niveau logique
• Il décrit les données sous une forme
indépendante du matériel et du SGBD
• Dans ce cours d'introduction, nous décrirons ce
niveau conceptuel par un diagramme de classes
UML (simplification qui peut suffire pour les
cas simples)
• 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 modèle conceptuel est
traduit sous forme de classes (direct depuis un
schéma UML)
R. Grin
SGBD
23
R. Grin
SGBD
24
4
Niveau logique pour les SGBD
relationnels
Niveau physique
• Les relations sont normalisées pour éviter les
problèmes liés à une mauvaise répartition entre
les relations
• Des besoins d'optimisation peuvent conduire à
dénormaliser certaines relations
R. Grin
SGBD
25
Département
numéro : int
nom : String
lieu : String
Une association
+contient
Agrégation
+subordonné
0..*
appartient
0..*
Employe
matricule : int
nom : String
0..1 poste : String
dateEmbauche : date
salaire : double
+supérieur
hierarchie
Rôle pour
l’association
R. Grin
SGBD
26
Une classe
ajouterEmployé(Employe) : void
1
• Il décrit l'implantation du niveau logique à
l'aide du matériel et du SGBD choisi
• On précise les emplacements des données
sur les différents supports
• On peut optimiser les accès aux données en
utilisant les possibilités particulières
offertes par le SGBD (clusters par exemple
avec Oracle)
Participation
fonctionP: String
0..*
0..*
Une classeassociation
Multiplicité
Modèle relationnel
Projet
codeP: String
nomP : String
+participe
ajouterEmploye(Employe)
getSuperieur ()
setSuperieur(Employe)
getMatricule()
Héritage
Commercial
commission : double
R. Grin
setCommission (double)
Directeur
Administratif
SGBD
27
R. Grin
SGBD
28
Relation
Relation mathématique
• La notion de relation traduit le fait que les
éléments appartenant à des ensembles
(distincts ou non) peuvent être en relation
Robert
×
× Sylvie
Alain ×
× Nathalie
Bernard ×
Julien ×
Hommes
R. Grin
• Une relation entre n ensembles Di est un
sous-ensemble du produit cartésien 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
Sous-ensemble de
Homme × Femme :
{ (Robert, Sylvie),
(Alain, Nathalie),
(Alain, Carole)
}
SGBD
× Carole
Femmes
29
R. Grin
SGBD
30
5
Relations de degré > 2
Représentation des données
• Si de nombreux ensembles sont en relation, il est
plus difficile de dessiner la relation
• Mais la représentation sous forme mathématique
ne pose pas de problème particulier
• Par exemple, une relation père-mère-enfants
pourrait être décrite par un ensemble de 3-uples :
• Dans la théorie des bases de données
relationnelles
toutes les données sont représentées sous
forme de relations
• Par exemple, le t-uple
R. Grin
SGBD
(125, Dupond, 15000, 10)
indique que l'employé de matricule 125
s'appelle Dupond, gagne 15.000 F par mois
et travaille dans le département numéro 10
{ (Robert, Sylvie, Toto),
(Alain, Nathalie, Bibi),
(Alain, Nathalie, Titi) }
31
R. Grin
SGBD
32
Domaines et attributs
• Les ensembles Di d'une relation sont appelés les
domaines de la relation
• Certains de ces domaines peuvent être identiques
mais, dans une relation, l'ordre est significatif et
chaque domaine possède un nom d'attribut Ai
qui est lié à son rôle dans la relation
• La relation est alors notée R(A1, A2,…, An), où
R est le nom de la relation
• Par exemple, Employe(matricule, nom,
Schéma relationnel
• Un schéma relationnel est
– un ensemble de définitions de relations liées à
un même schéma conceptuel
– les contraintes d'intégrité associées à ces
relations (clés, contraintes de domaine,
d'existence ou de référence,…)
salaire, numDept)
R. Grin
SGBD
33
R. Grin
SGBD
34
Exemples de clés
Clés d'une relation
• EMPLOYE(matricule, nom, salaire) a
• Clé candidate : sous-ensemble minimal
d'attributs qui permet d'identifier chacun des
t-uples de la relation
• Clé primaire : une des clés candidates,
choisie comme identifiant privilégié (par le
concepteur de la base)
1 clé candidate : matricule
• Si on est certain que 2 employés n'ont
jamais le même nom, nom est une 2ème clé
candidate
• EMPLOYES(matricule, nom, prénom,
salaire) a 2 clés candidates :
– matricule (que l'on choisira certainement
comme clé primaire) En supposant que 2 employés
n'ont jamais les mêmes
– (nom, prénom)
nom et prénom
R. Grin
SGBD
35
R. Grin
SGBD
36
6
Table
• Dans les SGBD relationnels les relations sont
représentées simplement sous forme de tables
• Les lignes correspondent aux t-uples et les
colonnes aux attributs
Matricule Nom
Salaire
NumDept
525
12
Dupond 150000 10
Durand 120000 10
132
Bernard 8500
R. Grin
20
SGBD
37
Étapes du passage d’un
diagramme de classes à un
schéma relationnel
SGBD
R. Grin
SGBD
38
Le problème de l’identificateur
• Tout objet est identifiable. Cette identification
est automatique dans les langages objet
• Dans les schémas relationnels ou dans SQL on
peut être amené à ajouter un identificateur
• On peut ainsi ajouter en attribut un nombre sans
signification particulière, incrémenté
automatiquement à chaque création d’objet
• Parfois un ou plusieurs attributs assurent cette
identification (n° SS, ISBN)
• Traduction des classes en relations
• Traduction des associations en relations
• Traduction de l’héritage
R. Grin
Passage d'un diagramme de
classes à un schéma relationnel
39
R. Grin
SGBD
40
Remarque sur les identificateurs
• Il est rarement bon d’utiliser des identificateurs
significatifs, par exemple, un nom
• En effet, ces identificateurs vont être utilisés
dans d’autres relations pour désigner 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 données
R. Grin
SGBD
41
Traduction d’une classe
• Une classe est traduite en une relation
• On peut être amené à ajouter un identificateur,
clé primaire de la relation
• Exemple : la classe Département est traduite
par la relation
DÉPARTEMENT(numéro, nom, lieu)
R. Grin
SGBD
42
7
Traduction d’une association binaire
Exemple de traduction
d’une classe
• Lorsque les nombres maximum des 2
multiplicités sont supérieurs à 1
(associations M:N), on doit créer une
relation pour traduire l’association
• La clé primaire de cette relation est formée
des 2 clés des relations qui traduisent les
classes qui interviennent dans l’association
• DÉPARTEMENT(numéro, nom, lieu)
• En SQL :
create table departement (
numero smallint primary key,
nom varchar(15),
lieu varchar(15))
R. Grin
SGBD
43
R. Grin
Exemple de traduction d’une
association binaire M:N
create table participation (
matr integer references emp,
codeP varchar(2) references projet,
primary key(matr, dept))
SGBD
45
Traduction d’une association binaire
M:N avec classe-association
create table participation (
matr integer references emp,
codeP varchar(2) references projet,
fonctionP varchar(15),
primary key(matr, dept))
SGBD
• Si l'association est représentée par une classe
association (cf. classe Participation de
l'association participe), on ajoute les
attributs de classe dans la nouvelle relation
R. Grin
SGBD
46
Interprétation des relations qui
traduisent une association
• Pour savoir qui participe au projet
"QUALITÉ"
• PARTICIPATION(matr, codeP, fonctionP)
• En SQL :
R. Grin
44
Classes association
• PARTICIPATION(matr, codeP)
• En SQL :
R. Grin
SGBD
47
1. on récupère le code de projet QUALITÉ dans
la relation PROJET
2. on note tous les matricules qui sont associés à
ce code dans la relation PARTICIPATION
3. on cherche les noms des employés qui ont ce
matricule dans la relation EMPLOYÉ
R. Grin
SGBD
48
8
Traduction d’une association
binaire dont une multiplicité
maximum est 1 (1:N ou 1:1)
Exemple de traduction d’une
association binaire 1:N
• On peut traduire par une nouvelle relation comme
pour une association M:N
• On peut aussi ajouter dans la relation qui traduit
la classe placée du côté opposé à la multiplicité 1,
la clé de l’autre classe
• EMP(matr,…, dept)
• En SQL :
create table emp (
matr integer primary key,
…
dept smallint references dept)
• La 1ère solution est plus souple mais plus coûteuse
(jointures)
R. Grin
SGBD
49
• Si l'association est représentée par une classe
association, on peut ajouter les attributs de
classe dans la relation qui reçoit la clé de
l'autre classe, ou créer une nouvelle relation
• Mais si les attributs de la classe association
sont nombreux, il est souvent préférable de
traduire l'association par une relation à part
SGBD
51
• Le sous-ensemble peut être stricte si une dépendance
fonctionnelle existe entre ces clés
R. Grin
SGBD
52
Traduction de l’héritage
• RESERVATION(nVol, nSiège, codePassager, …)
• En SQL :
create table reservation(
nvol varchar(10) references vol,
nsiege integer,
codePassager varchar(10) references passager ,
primary key(nVol, nSiege, codePassager),
…)
SGBD
50
• On doit créer une relation pour traduire
l’association
• La clé de cette relation est formée d'un sous ensemble des clés des relations qui traduisent
les classes qui interviennent dans l’association
Exemple de traduction d’une
association de degré > 2
R. Grin
SGBD
Traduction d’une association de
degré > 2
Classes association
R. Grin
R. Grin
53
• La classe fille et sa classe mère sont traduites
par 2 relations
• Un objet de la classe fille
– a ses attributs répartis dans les 2 relations
– son identité est préservée en donnant un même
identifiant au t-uple qui correspond à l’objet dans
les 2 relations
R. Grin
SGBD
54
9
Exemple de traduction de
l’héritage
Héritage multiple
• COMMERCIAL(matr, commission)
• En SQL :
• Pour traduire l’héritage multiple, on met
comme identifiant dans la classe fille
l’ensemble des identifiants des classes mères
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
Variantes pour la traduction de
l’héritage
• Pour réduire le nombre de relations et améliorer
les performances, on peut
– soit tout réunir dans la relation de la classe mère, en
ajoutant un attribut pour le sous-type (si les attributs
des classes filles sont peu nombreux) ; il y aura alors
des attributs non renseignés
– soit copier les attributs de la classe mère dans
chacune des relations qui traduisent les classes filles
(si les attributs de la classe mère sont peu nombreux)
R. Grin
SGBD
57
R. Grin
SGBD
56
Schéma 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 prédicats
• La logique du 1er ordre, ou calcul des prédicats,
est la théorie mathématique qui étudie les
formules logiques formelles (sans signification
particulière)
• On se limite à des formules logiques construites
avec un ensemble de prédicats, les opérateurs
"et", "ou", "négation", "⇒ ", les opérateurs ∃ et
∀ et des constantes et des variables
• Un prédicat a un nombre fixe d'arguments et
peut être vrai ou faux
Langages d'interrogation
relationnels
R. Grin
SGBD
59
R. Grin
SGBD
60
10
Sémantique
• On peut appliquer le calcul des prédicat à un
domaine de discours particulier en définissant
– des valeurs concrètes pour les constantes
– des prédicats
• A chaque formule logique correspond alors
l'ensemble des données du domaine qui
vérifient la formule (si on donne ces valeurs
aux variables, la formule est vraie)
R. Grin
SGBD
61
Calcul relationnel des t-uples
{E.nomE / ∃ P PARTICIPATION(P) ∧
(P.matr = E.matr) ∧
EMP(E)}
(les variables sont E et P)
SGBD
• Ces langages permettent de retrouver des
informations enregistrées dans la base sous
forme de relations
• Ils permettent d'exprimer des formules
logiques associées à ces données
• Selon les domaines dans lesquels les
constantes prennent leur valeur, on a
plusieurs langages d'interrogation
R. Grin
SGBD
62
Calcul relationnel des domaines
• Il est fondé sur le calcul des prédicats du 1er
ordre, avec les variables qui prennent leur
valeur dans l’ensemble des t-uples
Prédicat
(P t-uple de
• Exemple (noms des employés qui PARTICIPATION)
participent à un projet) :
R. Grin
Langages d'interrogation fondés sur
le calcul des prédicats du 1er ordre
• Il est fondé sur le calcul des prédicats du 1er
ordre, avec les variables qui prennent leur
valeur dans l’ensemble des domaines
• Exemple (noms des employés qui
participent à un projet) :
{ y / ∃ x EMP(matr:x, nomE:y) ∧
PARTICIPATION(matr:x) }
(les variables sont x et y)
Prédicat
63
R. Grin
SGBD
(valeurs de x
dans domaine
de matr
Algèbre relationnelle
Opérateurs relationnels
• Le principe est différent pour ce langage
d'interrogation qui a inspiré le langage SQL
• On se donne des opérateurs que l'on
applique aux relations de la base, pour
obtenir les données que l'on cherche
• On a 2 types d'opérateurs : relationnels et
ensemblistes
• Soit une relation R[A1,…, An]
• Projection sur les attributs Aj,…, Ak, notée
R. Grin
SGBD
65
64
R[Aj,…, Ak]
• Sélection des t-uples qui vérifient une
condition c, notée R / c
• Jointure (équi-jointure) de 2 relations R et S
sur 2 attributs C et D, notée R J{C=D} S
• Division de 2 relations, notée R ÷ B S
R. Grin
SGBD
66
11
Equi-jointure
Opérateurs relationnels de base
• C'est un opérateur fondamental de la théorie des
bases de données relationnelles
• Il permet de créer une relation qui comprend
des données 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 concaténation des t-uples
de R et de S qui ont la même valeur pour les
attributs B et C
• Exemple de projection :
Employé[matricule, nom, salaire]
• Exemple de sélection :
Employé / salaire > 12000
R. Grin
SGBD
67
R. Grin
68
Exemple de jointure naturelle
Exemple d'équi-jointure
Employé
SGBD
Employé
Département
Département
matricule nom
dept
dept nom
lieu
matricule nom
dept
dept nom
lieu
1050
Dupond
10
10
Finances
Paris
1050
Dupond
10
10
Finances
Paris
832
Durand
20
20
Ventes
Nice
832
Durand
20
20
Ventes
Nice
900
Duval
10
900
Duval
10
Employé J{dept=dept} Département
Notation simplifiée :
Employé J{dept} Département
matricul nom
dept dept nom
lieu
e1050
Dupond 10
10 Finances Paris
832
Durand 20
20
Ventes
900
Duval
10
Finances Paris
R. Grin
10
Nice
quand le nom
des 2 colonnes
est le même
SGBD
69
Employé J{dept=dept} Département
La colonne de
jointure n'est
pas répétée
matricul nom
dept nom
lieu
e1050
Dupond 10
Finances Paris
832
Durand 20
Ventes
900
Duval
Finances Paris
10
R. Grin
Nice
SGBD
70
Division
Jointure en général
• On peut remplacer = par un opérateur de
comparaison >, <, ≥, ≤, ≠
• La jointure est alors notée, par exemple,
R J{C < D} S
• Exemple :
Employé J{salaire < salaire} Employé
R. Grin
SGBD
S
R ÷B S
A
B
C
A
x
1
1
x
y
2
3
z
x
1
3
R
• R ÷ B S = les A qui sont associés à 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
12
Quand utilise-t-on la division ?
Opérateurs ensemblistes
• La division fournit la réponse au type de question
suivante : quels sont les "A" qui sont associés à
tous les C ?
• Exemple : quels sont les matricules des employés
qui participent à tous les projets :
R1 = Participation[matr, codeP] ÷ matr Projet[matr]
R. Grin
SGBD
73
• Pour 2 relations qui ont des attributs de
types compatibles :
– Réunion : R1 ∪ R2
– Intersection : R1 ∩ R2
– Différence : R1 - R2
• Pour 2 relations quelconques, produit
cartésien : R1 × R2
R. Grin
SGBD
74
Equivalence des langages
• On peut démontrer que l'algèbre
relationnelle, les calculs relationnels des tuples et des domaines sont équivalents : ils
permettent de définir les mêmes ensembles
de données
R. Grin
SGBD
75
But de la normalisation
SGBD
R. Grin
SGBD
76
Dépendance fonctionnelle (DF)
• Une mauvaise répartition des données entre
les relations peut occasionner de graves
problèmes lors de l'évolution de la base
• La normalisation des relations permet
d'éviter ces problèmes, essentiellement en
évitant les redondances
• Les problèmes viennent en fait des
dépendances fonctionnelles internes aux
relations
R. Grin
Normalisation d'un schéma
relationnel
77
• Soient X et Y, 2 attributs (ou groupe d'attributs)
d'une même relation
• Il y a DF entre X et Y (on dit aussi que Y
dépend de X)
• On note X → Y, si la valeur de X détermine la
valeur de Y
R. Grin
SGBD
78
13
Exemples de DF
Propriétés des DF
• Il y a DF d'une clé candidate vers tous les autres
attributs d'une relation
• Adresse(nom, ville, codePostal,
département); on a codePostal → ville
(mais pas ville → département)
• Etudiant(nom, prénom, moyenne, âge,
enseignant)
(nom, prénom) → moyenne
(nom, prénom) → âge
R. Grin
SGBD
79
Réflexivité : 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
• Décomposition : X → Y et Z ⊆ Y ⇒ X → Z
•
•
•
•
•
R. Grin
R. Grin
SGBD
81
• En pratique, normaliser un schéma relationnel
c'est remplacer chaque relation du schéma par
des relations qui sont dans la forme normale
voulue
• Le schéma est équivalent si la jointure naturelle
sur les attributs communs des relations
obtenues par éclatement redonne la relation de
départ
R. Grin
• Normaliser une relation consiste à extraire les
DF internes qui posent des problèmes, en les
transférant dans de nouvelles relations
SGBD
SGBD
82
Théorème important
Pratique de la normalisation
R. Grin
80
Pratique de la normalisation
Normaliser un schéma relationnel
• C'est remplacer un schéma relationnel par un
autre schéma "équivalent" (représentant les
mêmes données) dont toutes les relations sont
dans une certaine forme normale
SGBD
83
• Cas simple pour lequel on peut éclater une
relation en 2 relations, en étant certain de
retrouver la relation de départ par jointure
sur les attributs communs
• Théorème de décomposition sans perte de
données : 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
14
Exemple d'éclatement sans perte
de données
• Employé(matr, nomE, dept, nomD)
• Peut s'éclater en :
Employé(matr, nomE, dept)
Département(dept, nomD)
R. Grin
SGBD
La source de la
DF reste dans la
relation de
départ en clé
étrangère
85
Degrés de normalisation
• Il existe plusieurs degrés de normalisation :
de la 1ère forme normale à la 5ème
• Plus le degré est grand,
– moins on risquera de rencontrer des anomalies
lors des mises à jour des données
– plus les conditions à remplir sont strictes
R. Grin
1ère forme normale
SGBD
87
Problèmes de mise à jour d'une
relation pas en 2ème 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
86
2ème forme normale
• Toutes les relations sont en 1 FN : elles
n'ont pas d'attributs multivalués multivalué
• La pseudo-relation
Livre(codeISBN, titre, auteurs)
peut être décomposée en 2 vraies relations :
Livre(codeISBN, titre)
Auteurs (codeISBN, auteur)
R. Grin
SGBD
89
• Une relation est en 2 FN
– si elle est en 1 FN
– si chaque attribut qui ne fait partie d'aucune clé
candidate ne dépend pas d'une partie stricte
d'une clé candidate
• Employé(matr, codeP, nomE, fonctionP)
n'est pas en 2 FN
R. Grin
SGBD
88
Normalisation en 2ème forme
• On "extrait" la DF (voir théorème de non
perte de données) :
Employé(matr, nomE)
Participation(matr, codeP, fonctionP)
R. Grin
SGBD
90
15
3ème forme normale
Forme normale de Boyce-Codd
• Une relation est en 3 FN si tout attribut qui
ne fait pas partie d'une clé candidate ne peut
dépendre que d'une clé candidate
• Employé(matr, nomE, dept, nomD)
n'est pas en 3 FN
• On obtient un schéma en 3 FN par
extraction de la DF :
Employé(matr, nomE, dept)
Département(dept, nomD)
R. Grin
SGBD
91
• Une relation est en FNBC si les seules
sources de DF sont les clés 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
Exemple de relation pas en FNBC
• Introduisons une nouvelle règle de gestion :
2 personnes d'un même département ne
peuvent participer à un même projet
• Cette règle 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
Théorème de décomposition en 3 FN
• On peut toujours normaliser en 3 FN, sans
perte de données ni perte de dépendances
• On peut toujours normaliser en FNBC sans
perte de données, mais on peut avoir des
pertes de dépendances
R. Grin
SGBD
95
SGBD
92
Normalisation en FNBC
• Si on extrait la DF, on obtient :
Participation(matr, codeP , fonctionP)
Emp(matr, dept)
• On obtient bien un schéma en FNBC mais
on perd la DF (dept, codeP) → matr
• Il faut choisir entre
– avoir un schéma en 3 FN, avec toutes les DF
– avoir un schéma en FNBC, avec perte de DF
R. Grin
SGBD
94
Projection des DF d'une relation
• Si R est décomposée 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 départ et d'arrivée dans R1
• On dit que la décomposition de R en R1 et
R2 est sans perte de dépendance si on peut
retrouver (par transitivité) toutes les DF de
R à partir des projections sur R1 et R2
R. Grin
SGBD
96
16
Conséquence d'une perte de
dépendance
• On est obligé de faire des jointures pour vérifier
les règles de gestion liées aux DF perdues
• Exemple : si on décompose Participation2 en
Participation et Emp, à chaque nouvelle
participation à un projet, il faut vérifier par
programme qu'il n'y a pas déjà un employé du
même département dans le projet (dans
Utilisation d'un
SGBD relationnel
Participation2, la vérification est faite automatiquement
par unicité de la clé primaire)
R. Grin
SGBD
97
R. Grin
Sécurité Contrôle de l'accès à la base
– un nom de login
– un mot de passe
• Chaque utilisateur a des privilèges d'accès à
la base : droit ou non
– de créer des tables ou des vues
– de lire ou de modifier des tables ou des vues
–…
SGBD
98
Sécurité Propriétaire des données
• Le contrôle de l'accès à la base est effectué
en associant à chaque utilisateur
R. Grin
SGBD
99
• Les données d'une table appartiennent à
celui qui l'a créée
• Le propriétaire d'une table peut donner à
d'autres le droit de travailler avec sa table
• Les vues permettent aussi de restreindre
l'accès aux données
R. Grin
SGBD
100
Modules d'utilisation des SGBD
• Nombreux produits autour des SGBD :
– interface pour interrogation directe de la base
– générateur de formulaires pour la saisie et
l'interrogation de la base
– générateur de menus et d'états imprimés
– générateur d'applications à partir d'études de
conception
– langages dit de 4ème génération
– interfaces avec les langages de 3ème génération
– interfaces avec le Web et les logiciels de bureautique
R. Grin
SGBD
101
Implantation d'un
SGBD relationnel
R. Grin
SGBD
102
17
Fichiers de la base
Images "avant" et "après"
• Les données de la base sont enregistrées
dans de très gros fichiers du système
d'exploitation
• Le SGBD gère lui-même ses données ; il
enregistre les tables, vues, index,… dans ces
gros fichiers
• Le SGBD peut même se passer
complètement du système d'exploitation
hôte pour l'enregistrement des données
(fichiers "raw", hors système de fichiers)
R. Grin
SGBD
103
• Images "avant" : fichiers système, ou
emplacement spécial de la base, contenant les
informations nécessaires pour remettre la base
dans un état antérieur à une modification (chez
Oracle, segments de rollback écrits dans la base)
• Images "après" : fichiers système contenant les
informations nécessaires pour refaire une
modification à partir d'un état antérieur de la
base (fichiers "redo log" chez Oracle)
R. Grin
SGBD
104
Archivage des images "après"
• La place disque réservée aux images "avant" et
"après" est limitée ; elle est recyclée pour
enregistrer les dernières images
• Il peut être intéressant d'archiver sur des
bandes magnétiques (ou autre) les images
"après" pour les réutiliser en cas de panne
• On peut ainsi redérouler toutes les dernières
actions effectuées par les utilisateurs depuis la
dernière sauvegarde
R. Grin
SGBD
105
• Les différents SGBD peuvent avoir des
implantations très différentes sur certains
points, en particulier sur la façon de traiter
les accès concurrents
• C'est l'implantation d'Oracle (versions 7 et
8i) qui est décrite ici
R. Grin
Processus clients et serveurs
– les interfaces du SGBD avec l'utilisateur ou avec
les applications sont clientes de la partie serveur du
SGBD : elles lui envoient des requêtes et le serveur
renvoie les données résultats
– les parties clientes et serveur du SGBD peuvent
être sur des machines différentes ; elles utilisent un
protocole réseau (le plus souvent propriétaire) pour
communiquer
SGBD
106
Écriture dans la base
• Les SGBD s'appuient sur le mode clientserveur :
R. Grin
SGBD
107
• En attendant leur écriture dans la base, les
données restent dans les buffers en mémoire
centrale
• Écriture asynchrone des données dans la base :
– pour des raisons de performances ; même un commit
peut ne pas provoquer l'écriture dans la base
– si les buffers sont pleins, des données non validées
peuvent être enregistrées dans la base
R. Grin
SGBD
108
18
Oracle versions 7 et 8
Segments de rollback
• L'écriture est effectuée par un seul processus
(en version monoprocesseur)
• Quand une modification est effectuée par une
transaction, les données de la base sont
modifiées tout de suite (dans les buffers ou les
tables de la base), sans attendre un commit
R. Grin
SGBD
109
• Dans Oracle (versions 7 et 8), les images
"avant" sont enregistrées dans la base dans des
segments de rollback
• Ces segments sont utilisés
– pour annuler les transactions
– pour cacher aux autres transactions les données modifiées
par les transactions non validées
– pour que les transactions "read only" ne voient pas les
modifications effectuées par les autres transactions
R. Grin
SGBD
110
Fichiers redo log
Oracle version 6
• Avec Oracle 7 et 8, les images "après" sont
enregistrées dans des fichiers redo log,
• Avec Oracle version 6, les modifications
effectuées par les utilisateurs n'étaient
enregistrées dans les tables de la base
qu'après un commit
• En attendant le commit, les modifications
effectuées par un utilisateur étaient
enregistrées à part dans la base
– avant même que les données ne soient vraiment
modifiées 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é validée
• L'écriture est séquentielle, donc rapide
R. Grin
SGBD
111
R. Grin
SGBD
Client 1
Archivage des fichiers redo log
• L'écriture dans les fichiers redo log est
circulaire, en écrasant les premières données
par les dernières 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
SGBD
113
Fichiers
Redo Log
R. Grin
Client 3
Serveur 2
Buffers de la base
LGWR
Disque
R. Grin
Client 2
Serveur 1
Buffer
Redo Log
112
DBWR
Fichiers de la base
SGBD
114
19
Reprise après panne quand les
fichiers sont corrects
Types de pannes
• Automatiquement, quand il redémarre, le
SGBD
• logicielles
• matérielles
• dues aux réseaux
– termine les transactions validées qui n'ont pu
être enregistrées complètement dans la base
– annule les transactions qui n'ont pas été
validées (rollback ou panne avant le commit)
• Les fichiers de la base peuvent avoir été
endommagés ou pas
R. Grin
SGBD
• Pour cela, le SGBD utilise les images
"après" et "avant"
115
R. Grin
Reprise après panne quand les
fichiers sont endommagés
– si les images "après" de la base ont été archivées,
on redéroule les actions des images "après"
enregistrées depuis cette dernière sauvegarde
– sinon, il faut relancer à la main toutes les
transactions perdues (si on peut !)
SGBD
116
Optimiseur de requêtes
• L'administrateur doit commencer par recharger
la dernière sauvegarde complète de la base
• Ensuite 2 cas :
R. Grin
SGBD
117
• SQL est un langage non procédural : on ne
décrit pas comment obtenir le résultat
• L'optimiseur du SGBD va concevoir un
plan pour aller rechercher les données de la
manière la plus efficace
• Il doit comparer tous les plans possibles, ou
une partie des plans sélectionnée par
heuristique
R. Grin
SGBD
118
Optimisation
• L'optimiseur prend en compte
– des considérations logiques comme de
commencer par réduire la taille des tables (faire
d'abord des sélections ou projections) avant de
faire des jointures
– l'implantation physique des données comme
l'existence des index (et des clusters)
– des statistiques sur les données contenues dans
les tables (nombre de lignes, de valeurs
différentes, etc.)
R. Grin
SGBD
119
Bases de données
réparties
R. Grin
SGBD
120
20
COMMIT "distribués"
Bases de données réparties
• Les processus qui fonctionnent dans un SGBD,
sont souvent réparties sur plusieurs machines
• De plus en plus fréquemment les données sont
elles-mêmes réparties sur plusieurs sites
• Cette répartition doit être le plus transparente
possible pour l'utilisateur
R. Grin
SGBD
121
COMMIT à 2 phases
SGBD
R. Grin
SGBD
122
COMMIT à 2 phases ; étape 1
• Un des sites (le plus souvent celui qui a reçu
l'ordre COMMIT) est le coordinateur de la
manœuvre
• Le COMMIT va se dérouler en 2 étapes bien
distinctes
• En fonctionnement normal, ce COMMIT à 2
phases est transparent pour l'utilisateur
R. Grin
• L'implantation des COMMIT est complexe si la
transaction porte sur des données réparties sur
plusieurs sites distants
• Un problème de réseau 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
propriétés des transactions, même sur des bases
réparties (ou des bases multiprocesseurs)
123
1. Préparation du COMMIT : le coordinateur
ordonne à tous les autres sites de préparer sa
part du travail
Si un site indique qu'il est prêt, il assure qu'il
peut faire les modifications, même 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
"après"
R. Grin
SGBD
124
COMMIT à 2 phases ;
traitement des pannes
COMMIT à 2 phases ; étape 2
2. Exécution du COMMIT :
- si tous les sites répondent qu'ils sont prêt pour le
COMMIT, le coordinateur
a. enregistre le COMMIT dans ses images "après"
b. lance à tous les sites l'ordre d'effectuer le
COMMIT
- si un des sites ne répond pas ou indique qu'il ne
pourra effectuer le COMMIT, le coordinateur
ordonne un ROLLBACK à tous les sites
• Une panne peut intervenir sur un site qui a indiqué
qu'il était prêt, avant qu'il ne reçoive l'avis de
validation ou d'annulation du coordinateur
• Dans ce cas, lors de la reprise après la panne, le
SGBD du site en cause va
– s'apercevoir qu'il n'a pas reçu l'ordre final du
coordinateur
– s'informer auprès du coordinateur de sa décision
– effectuer un COMMIT ou un ROLLBACK (en utilisant
ses images "avant" ou "après")
R. Grin
SGBD
125
R. Grin
SGBD
126
21
Réplication des données
• Une difficulté des bases réparties est la perte de
performance due à la lenteur des réseaux
• Pour les sites confrontés à ce problème, il est
possible de ne gérer en temps réel que les
données locales, en utilisant des copies des
données distantes
• On peut automatiser la réplication de ces
données distantes à intervalles réguliers
R. Grin
SGBD
127
22
Téléchargement