type

Transcription

type
Conception
De bases de données relationnelles
OBJECTIFS
„
Normalisation
Parvenir à un découpage d’une base de
données en un nombre de tables n optimum, de
façon à:
- Garantir une redondance minimum
- Assurer une intégrité maximum
2
Introduction
Exemple avant normalisation: Une seule relation: VOITURE
VOITURE
NV
1
2
3
4
5
6
7
8
Marque
Type Puissance Couleur Modèle
Pays
Renault Laguna
7
Rouge 1.8 RT
France
Opel
Vectra
9
Verte 2.0 CD Allemagne
Peugeot
306
6
Bleue
XTDT
France
Renault
Clio
4
Rouge
1.2
France
Ferrari
F50
35
Rouge
Italie
Renault Laguna
7
Blanche 1.8 RT
France
Renault Laguna
6
Rouge 2.2 Dt
France
Peugeot
206
6
Bleue
Hdi
France
3
Introduction
…
Liste des voitures vertes :
SELECT
FROM
WHERE
…
marque, type
VOITURE
Couleur = ‘Verte’
Liste des voitures de la même marque que la Laguna ?
SELECT
FROM
WHERE
AND
AND
V2.type, V2.marque
VOITURE V1, VOITURE V2
V1.type = ‘Laguna’
V1.marque = V2.marque
V1.type <> V2.type
4
DEPENDANCES
FONCTIONNELLES
…
Dépendance Fonctionnelle (DF)
Soit une relation R (x, y, z, …) de schéma x, y, z, …
xÆy
on dira que x détermine y ou y dépend fonctionnellement de x si
la connaissance d’une valeur de x détermine au plus une valeur
de y.
Exemple :
matricule Æ nom
nom Æ service
matricule Æ nomserv
matricule Æ service
service Æ nomserv
nom Æ matricule
5
⊆
DEPENDANCES
FONCTIONNELLES
…
Dépendance Fonctionnelle (DF)
…
Une DF doit être invariante dans le temps.
…
On ne peut pas prouver l’existence d’une DF
Î
Une DF est en général un postulat.
…
Propriétés des DF :
1. Réflexivité :
y inclus dans x
Î
xÆy
2. Augmentation :
xÆy
Î
x, z Æ y, z
3. Transitivité :
x Æ y et y Æ z
Î
xÆz
Î
x, z Æ t
4. Pseudo-transitivité : x Æ y et y, z Æ t
…
5. Union :
x Æ y et x Æ z
Î
x Æ y, z
6. Décomposition :
x Æ y, z
Î
x Æ y et x Æ z
Remarque :
a,b Æ c
Î
a Æ c et b Æ c
6
DEPENDANCES
FONCTIONNELLES
…
Dépendance Fonctionnelle Elémentaire (DFE)
C’est une DF dont on ne peut simplifier la partie gauche.
Exemple :
service Æ nomserv
est une DFE.
service, matricule Æ nomserv est une DFE si ni :
service Æ nomserv
matricule Æ nomserv n’existent.
donc service, matricule Æ nomserv n’est pas une DFE.
7
DEPENDANCES
FONCTIONNELLES
…
Clé
Soit R(X,Y)
X est une clé de R si X Æ Y.
Î Une clé détermine fonctionnellement tous les autres attributs
de la relation.
…
Exemple 1:
Soit une relation R (a, b, c, d, e, f)
comportant les dépendances fonctionnelles suivantes :
aÆb
aÆc
cÆe
cÆd
bÆd
eÆf
8
DEPENDANCES
FONCTIONNELLES
… Graphe
des dépendances fonctionnelles
b
d
a
c
e
f
a Æ b, c, d, e, f
a est donc la clé de la relation R.
9
DEPENDANCES
FONCTIONNELLES
…
Exemple
Soit une relation R (a, b, c, d, e)
comportant les dépendances fonctionnelles suivantes :
aÆb
aÆc
b
c, d Æ e
a
c
d
e
10
DEPENDANCES
FONCTIONNELLES
…
Exemple (suite)
R
a
1
1
1
2
2
b
2
2
2
3
3
c
3
3
3
3
3
d
5
6
12
7
15
e
8
7
28
9
12
les seules valeurs qui évoluent sont les valeurs du couple d et e.
R1 (a, b, c)
a
1
2
b
2
3
c
3
3
R2 (c, d, e)
c
3
3
3
3
3
d
5
6
12
7
15
e
8
7
28
9
12
11
DEPENDANCES
FONCTIONNELLES
…
Algorithme de décomposition d’une relation
en relations normalisées, sans perte de Dépendances Fonctionnelles
VOITURE
NV
1
2
3
4
5
6
7
8
Marque
Type Puissance Couleur Modèle
Pays
Renault Laguna
7
Rouge 1.8 RT
France
Opel
Vectra
9
Verte 2.0 CD Allemagne
Peugeot
306
6
Bleue
XTDT
France
Renault
Clio
4
Rouge
1.2
France
Ferrari
F50
35
Rouge
Italie
Renault Laguna
7
Blanche 1.8 RT
France
Renault Laguna
6
Rouge 2.2 Dt
France
Peugeot
206
6
Bleue
Hdi
France
1) Postulats de départ :
type Æ marque
type Æ pays
marque Æ pays
NV Æ type, marque, puissance, modèle, couleur.
type, modèle Æ puissance
12
DEPENDANCES
FONCTIONNELLES
…
Algorithme de décomposition d’une relation
en relations normalisées, sans perte de Dépendances Fonctionnelles
2) Recherche des DFE
Par application des propriétés des DF.
- type Æ marque
- type Æ pays
- marque Æ pays
- NV Æ type
- NVÆ marque
décomposition de :
- NV Æ puissance NV Æ type, marque, puissance, modèle, couleur
- NV Æ modèle
- NV Æ couleur
- type, modèle Æ puissance
13
DEPENDANCES
FONCTIONNELLES
…
Algorithme de décomposition d’une relation
en relations normalisées, sans perte de Dépendances Fonctionnelles
pays
type
marque
NV
modèle
puissance
couleur
Graphe des DFs
14
DEPENDANCES
FONCTIONNELLES
…
Algorithme de décomposition d’une relation
en relations normalisées, sans perte de Dépendances Fonctionnelles
3) Recherche de la couverture minimale de la relation
Î recherche des DFE ne pouvant être retrouvées par transitivité (ou autre
propriété des DF)
DFE supprimées:
- type Æ pays
et
car
type Æ marque
marque Æ pays
- NVÆ marque
car
et
NVÆ type
type Æ marque
- NV Æ puissance
car
NV Æ type,
NV Æ modèle
type, modèle Æ puissance
et
15
DEPENDANCES
FONCTIONNELLES
…
Algorithme de décomposition d’une relation
en relations normalisées, sans perte de Dépendances Fonctionnelles
3) Recherche de la couverture minimale de la relation
Î DFE conservées
- type Æ marque
- marque Æ pays
- NV Æ type
- NV Æ modèle
- NV Æ couleur
- type, modèle Æ puissance
pays
type
marque
NV
modèle
puissance
couleur
16
DEPENDANCES
FONCTIONNELLES
…
Algorithme de décomposition d’une relation
en relations normalisées, sans perte de Dépendances Fonctionnelles
4) Regroupement des DFE de la couverture minimum
par sous ensemble ayant même partie gauche de la DFE
- NV Æ type
- NV Æ modèle
- NV Æ couleur
1
- type Æ marque
2
- marque Æ pays
3
- type, modèle Æ puissance
4
17
DEPENDANCES
FONCTIONNELLES
…
Algorithme de décomposition d’une relation
en relations normalisées, sans perte de Dépendances Fonctionnelles
5) Création d’une relation par groupe
On obtient alors les 4 relations suivantes.
- VEHICULE (NV, type, modèle, couleur)
- TYPE (type, marque)
- MARQUE (marque, pays)
- MODELE (type, modèle, puissance)
18
DEPENDANCES
FONCTIONNELLES
…
Algorithme de décomposition d’une relation
en relations normalisées, sans perte de Dépendances Fonctionnelles
VEHICULE
MODELE
NV
1
2
3
4
5
6
7
8
Type
Laguna
Vectra
306
Clio
F50
Laguna
Laguna
206
Type
Laguna
Vectra
306
Clio
F50
Laguna
206
Modèle
1.8 RT
2.0 CD
XTDT
1.2
1.8 RT
2.2 Dt
Hdi
Modèle
1.8 RT
2.0 CD
XTDT
1.2
2.2 Dt
Hdi
Couleur
Rouge
Verte
Bleue
Rouge
Rouge
Blanche
Rouge
Bleue
Puissance
7
9
6
4
35
6
6
TYPE
Type
Laguna
Vectra
306
Clio
F50
206
Marque
Renault
Opel
Peugeot
Renault
Ferrari
Peugeot
MARQUE
Marque
Renault
Opel
Peugeot
Ferrari
Pays
France
Allemagne
France
Italie
19
DEPENDANCES
FONCTIONNELLES
…
Algorithme de décomposition d’une relation
en relations normalisées, sans perte de Dépendances Fonctionnelles
6) Détermination des clés primaires et étrangères
Chaque clé devient une clé primaire
Chaque attribut répété correspondant à une clé devient une clé étrangère
VEHICULE
(type, modèle)
FK -> MODELE
type
FK -> TYPE
TYPE
marque
FK -> MARQUE
MODELE
type
FK -> TYPE
20
DEPENDANCES
FONCTIONNELLES
…
Formes Normales (Normal Forms NF).
Î
3 formes essentielles (plus une forme bis)
„
1ère Forme Normale (1ère NF)
Une relation R est en 1ère NF si tous ses attributs sont
atomiques.
Un attribut atomique est un attribut qui contient une
information élémentaire qui ne peut être éclatée en plusieurs
autres attributs.
…
Exemple :
nom :
ville :
adresse :
attribut atomique
attribut atomique
attribut non atomique
dans une adresse, on
peut distinguer les attributs
résidence
voie
lieudit
code postal
localité
21
DEPENDANCES
FONCTIONNELLES
…
Formes Normales (Normal Forms NF).
2ème Forme Normale (2ème NF)
Une relation R est en 2ème NF si :
- elle est en 1ère NF
- tout attribut non clé dépend de la clé entière et non d’une partie seulement.
Exemple 2:
La relation suivante R (a, b, c, d) contient les dépendances fonctionnelles
suivantes :
aÆb
a, c Æ d
1) R est en 1ère NF.
22
DEPENDANCES
FONCTIONNELLES
…
Formes Normales (Normal Forms NF).
b
a
c
d
La clé de R est : a, c
R (a, b, c, d)
L’attribut b dépend de la clé a, c mais il dépend aussi de a tout seul donc la
relation R n’est pas en 2nde NF.
23
DEPENDANCES
FONCTIONNELLES
…
Formes Normales (Normal Forms NF).
3ème Forme Normale (3ème NF)
Une relation R est en 3ème NF si :
- elle est en 2ème NF
- tout attribut non clé dépend uniquement de la clé et non d’un autre attribut
non clé.
Exemple 1:
La relation suivante R (a, b, c, d) contient les dépendances fonctionnelles suivantes :
aÆb
aÆd
bÆc
1) clé de R : a
2) R est en 2nde NF car a Æ b, c ,d
3) R (a, b, c, d) n’est pas en 3ème NF car b Æ c
24
DEPENDANCES
FONCTIONNELLES
…
Formes Normales (Normal Forms NF).
Exemple 2: Recherche des NF dans la relation VOITURE.
La relation VOITURE contient les dépendances fonctionnelles suivantes :
NV Æ type, modèle, marque, pays, puissance, couleur
type Æ marque
type Æ pays
marque Æ pays
type, modèle Æ puissance
1) VOITURE est en 1ère NF car tous ses attributs sont atomiques.
2) clé de VOITURE: NV
donc VOITURE est en 2nde NF.
3) VOITURE n’est pas en 3ème NF car il existe des attributs de la relation qui
dépendent d’attributs non clé.
VOITURE (NV, type, modèle, marque, pays, puissance, couleur)
25
Modèle Conceptuel de données
…
Un Modèle Conceptuel de Données décrit les objets et leurs associations
Un MCD est, dans la culture francophone, exprimé en entité-association (aussi
appelé entité-relation / entity relationship) Merise qui comporte les concepts
basiques suivants :
…
…
…
Entité : modélisation d’un objet d’intérêt (en terme de gestion) pour l’utilisateur,
Association ou Relation : modélisation d’une lien entre deux ou plusieurs entités
Cardinalité : modélisation des participations mini et maxi d’une entité à une
relation (multiplicité UML)
… Propriétés : modélisation des informations descriptives rattachées à une entité
ou une relation
… Identifiant : modélisation des propriétés contribuant à la détermination unique
d’une occurrence d’un entité.
26
Modèle Conceptuel de données
Quelques règles :
… Toute
entité doit avoir un identifiant et doit
correspondre à un objet (physique ou virtuel) présent
dans le domaine qu’on cherche à modéliser, et avec
une existence autonome (c’est-à-dire non
dépendante d’une association avec une autre entité)
… Toute entité dont on ne peut se représenter qu’une
seule occurrence (« instance ») n’en est sans doute
pas une….
… Une propriété ne doit être présente qu’une seule fois
dans un schéma Entité-Association.
27
Modèle Conceptuel de données
28
Modèle Conceptuel de données
29
Modèle Conceptuel de données
30
UML – Diagramme de classes
31
OUTILS
…
Outils MCD / UML
„
„
„
„
…
Power AMC de Sybase
WinDesign
Oracle Designer
Rational Architect (Rational Rose) d’IBM
Autres
„
Database Designer
32
REGLES DE PASSAGE MCD Æ MPD
„
1 : Une entité se transforme en une relation (table)
Toute entité du MCD devient une table de la Base de Données.
Chaque propriété de l'entité devient une colonne de la table correspondante.
L'identifiant de l'entité devient la Clé Primaire de la table correspondante.
EMPLOYE (id_employe, Nom_Employe)
SOCIETE (Id_Societe, Nom_Societe)
33
REGLES DE PASSAGE MCD Æ MPD
„
2 : Association binaire aux cardinalités (X,1) - (X,n), X=0 ou X=1
La Clé Primaire de la table à la cardinalité (X,n) devient une Clé Etrangère
dans la table à la cardinalité (X,1)
Modèle Conceptuel de Donnée (MCD) :
Modèle Physique de Donnée (MPD), ou schéma de base :
34
REGLES DE PASSAGE MCD Æ MPD
„
3 : Relation binaire aux cardinalités (X,n) - (X,n), X=0 ou X=1
Il y a création d'une table supplémentaire ayant comme Clé
Primaire une clé composée des identifiants des 2 entités. On dit
que la Clé Primaire de la nouvelle table est la concaténation des
Clés Primaires des deux autres tables.
Si la relation est porteuse de donnée, celles ci deviennent des
attributs pour la nouvelle table.
MCD :
MPD :
35
REGLES DE PASSAGE MCD Æ MPD
„
4 : Relation n-aire (quelles que soient les cardinalités).
Il y a création d'une table supplémentaire ayant comme Clé
Primaire la concaténation des identifiants des entités participant
à la relation.
Si la relation est porteuse de donnée, celles ci deviennent des
attributs pour la nouvelle table.
MCD :
MPD :
36
REGLES DE PASSAGE MCD Æ MPD
„
5 : Association Réflexive.
Premier cas : cardinalité (X,1) - (X,n), avec X=0 ou X=1.
La Clé Primaire de l'entité se dédouble et devient une Clé Etrangère dans
la relation ou nouvelle table.
MCD :
MPD :
37
REGLES DE PASSAGE MCD Æ MPD
„
5 : Association Réflexive.
Deuxième cas : cardinalité (X,n) - (X,n), avec X=0 ou X=1.
Règle similaire aux associations binaires (X,n) - (X,n) (Cf règle 3). Il
y a donc création d'une nouvelle table.
MCD :
MPD :
38
REGLES DE PASSAGE MCD Æ MPD
„
6 : Relation binaire aux cardinalités (0,1) - (1,1).
La Clé Primaire de la table à la cardinalité (0,1) devient une Clé Etrangère
dans la table à la cardinalité (1,1) :
MCD :
MPD :
39
REGLES DE PASSAGE MCD Æ MPD
„
Exemple 1
MCD
MPD
40
REGLES DE PASSAGE MCD Æ MPD
„
Exemple 2
MCD
41
REGLES DE PASSAGE MCD Æ MPD
„
Exemple 2
MPD
42
REGLES DE PASSAGE MCD Æ MPD
„
Exemple 2 – Génération du script de création de la base
/*==============================================================*/
/* Table : AVION
*/
/*==============================================================*/
create table AVION
(
AVID
int
not null,
TYPID
int
not null,
CONID
date
not null,
AVCODE
int,
AVNOM
varchar(32),
AVPREMVOL
date,
AVVITMAXI
int,
AVVITCROIS
float,
AVLG
float,
AVENVERG
float,
AVPLAF
int,
AVNBEQUI
int,
AVNBPASS
int,
primary key (AVID)
);
Etc.
43
PK / FK
„
„
„
„
„
„
„
„
„
„
„
„
create table CONSTRUCTEUR (
CONID
int
not null,
PAYID
int
not null,
CONNOM
varchar(32)
null,
CONDATECRE
datetime
null,
CONADR
varchar(32)
null,
constraint PK_CONSTRUCTEUR primary key (CONID))
go
alter table AVION
add constraint FK_AVION_ASSOCIATI_CONSTRUC foreign key
(CONID)
references CONSTRUCTEUR (CONID)
go
44
Dénormalisation
„
Le terme de dénormalisation s’applique à un non-respect des règles
énoncées précédemment, avec deux objectifs principaux :
1. Simplifier le schéma relationnel en réduisant le nombre d’éléments qui le
composent.
2. Faciliter l’accès aux données en introduisant un certain degré de redondance.
Ces techniques reviennent à introduire des anomalies dans le
schéma. Il faut donc systématiquement comparer le gain attendu
avec les risques courus !
45
Dénormalisation
Certaines observations aident à identifier les systèmes et les tables qui se
prêtent le mieux à la dénormalisation :
„
Lorsque les requêtes les plus importantes portent sur des données
réparties sur plusieurs tables
„
Lorsque des calculs doivent être effectués sur une ou plusieurs colonnes
avant que la requête ne renvoie une réponse
„
Si les tables doivent être consultées de différentes façon par différents
utilisateurs lors d'une même période
„
Si certaines tables sont très fréquemment utilisées
46
Dénormalisation
On distingue quatre approches de dénormalisation
„
Partitionnement horizontal : utilisé pour diviser une table en plusieurs tables
contenant les mêmes colonnes, mais moins de lignes
„
Partitionnement vertical : utilisé pour diviser une table en plusieurs tables
contenant le même nombre de lignes, mais moins de colonnes
„
Fusion de tables : permet de fusionner des tables afin d'éliminer la jointure
entre elles
„
Dénormalisation de colonne : permet de répéter une colonne dans plusieurs
tables afin d'éviter d'avoir à créer des jointures entre les tables
47
Dénormalisation
Partitionnement horizontal : segmentation d’une table en plusieurs contenant chacune un
sous-ensemble des lignes de la table partitionnée.
Exemple
‰
Table Ventes annuelles :
‰
Création de partitions correspondant
aux ventes par année.
Avantages
„
Temps de traitement des requêtes
„
Accélérer la sauvegarde et la reprise incrémentale
„
Réduire le temps de chargement des tables indexées
Inconvénients
„
Jointures et unions pour extraire des données réparties sur plusieurs tables
„
Requêtes plus sophistiquées pour déterminer la table contenant les données recherchées
48
Dénormalisation
„
Partitionnement vertical : Segmentation d’une table en plusieurs contenant chacune un
sous-ensemble des colonnes de la table partitionnée. Les tables de partition ont la même PK.
Exemple
„
La table Client contient les colonnes suivantes :
„
Division en deux tables :
Avantages
„
Temps de traitement des requêtes (volume de données diminué)
„
Niveaux de protection différents
Inconvénients
„
Jointures et unions pour extraire des données réparties sur plusieurs tables
„
Requêtes plus sophistiquées pour déterminer la table contenant les données recherchées
49
Dénormalisation
„
„
La fusion de tables consiste à combiner plusieurs tables en une seule afin d'éliminer des
jointures et d'améliorer les performances des requêtes.
La table ainsi générée combine les colonnes des différentes tables fusionnées.
Lorsque certaines tables fusionnées sont liées entre elles par une référence :
„
La colonne parent de la jointure n'est plus nécessaire, elle est donc supprimée
Les colonnes de la table parent sont dupliquées
Les FK de l'enfant sont supprimées, mais leurs colonnes sont préservées
„
Exemple (pour le principe)
„
„
deviendrait
Avantages
„
Temps de traitement des requêtes (moins de jointures)
Inconvénients
„
Volume occupé par la redondance d’informations
„
Risque d’incohérence au fil des mises à jour
50
Dénormalisation
„
La dénormalisation de colonne consiste à dupliquer une ou plusieurs colonnes dans
une ou plusieurs autres tables pour éliminer des jointures.
„
Exemple
Pays
Collaborateur
Pays
pay_id INTEGER <pk>
col_id INTEGER <pk>
ser_id INTEGER <fk>
pay_id INTEGER <pk>
F_DEPEND_DE
F_DEPEND_DE5
Division
Service
Collaborateur
F_REFERENCE_6
Æ
F_DEPEND_DE
col_id INTEGER <pk>
ser_id INTEGER <fk1>
pay_id INTEGER <fk2>
F_DEPEND_DE5
Division
Service
div_id INTEGER <pk>
pay_id INTEGER <fk>
ser_id INTEGER <pk>
eta_id INTEGER <fk>
div_id INTEGER <pk>
pay_id INTEGER <fk>
ser_id INTEGER <pk>
eta_id INTEGER <fk>
F_DEPEND_DE2
F_DEPEND_DE4
F_DEPEND_DE2
F_DEPEND_DE4
Etablissement
Département
Département
dep_id INTEGER <pk>
div_id INTEGER <fk>
F_DEPEND_DE3
eta_id INTEGER <pk>
dep_id INTEGER <fk>
Etablissement
F_DEPEND_DE3
dep_id INTEGER <pk>
div_id INTEGER <fk>
eta_id INTEGER <pk>
dep_id INTEGER <fk>
Avantages
„
Temps de traitement des requêtes (moins de jointures)
„
Respect du modèle des données normalisé (pas de suppression de tables)
Inconvénients
„
Volume occupé par la redondance d’informations
„
Risque d’incohérence au fil des mises à jour
51