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