Modélisation logique des données

publicité
Modélisation
de logiciels de gestion
160. Modélisation logique des données (MLD)
Aspects macroscopiques
Table des matières
1
2
3
4
5
6
7
Préambule........................................................................................................................... 2
Concepts de base ................................................................................................................ 3
2.1
Le modèle relationnel initial ...................................................................................... 3
2.2
Le modèle logique de données relationnel................................................................. 4
Table................................................................................................................................... 5
3.1
Schéma d’une table .................................................................................................... 6
3.2
Extension d’une table ................................................................................................. 6
3.3
Espace de nommage ................................................................................................... 6
Clés..................................................................................................................................... 7
4.1
Clé primaire................................................................................................................ 7
4.2
Clé secondaire ............................................................................................................ 8
4.3
Clé secondaire unique et non nulle ............................................................................ 9
4.4
Clé étrangère ............................................................................................................ 10
Relation entre tables ......................................................................................................... 11
Degré d’une relation......................................................................................................... 12
Contraintes d’intégrité...................................................................................................... 13
7.1
Contrainte d’unicité de valeur (UNIQUE) ............................................................... 13
7.2
Contrainte de valeur non nulle (NOT NULL).......................................................... 13
7.3
Contrainte de clé primaire (PRIMARY KEY) ......................................................... 14
7.4
Contrainte d’intégrité référentielle stricte (FOREIGN KEY, REFERENCE) ......... 15
1/15
1 Préambule
Nous avons déjà expliqué la démarche de réalisation de modèles conceptuels de données dans
le chapitre « Modélisation conceptuelle des données – Aspects macroscopiques », dans ce
chapitre nous présenterons les éléments techniques essentiels de construction des modèles
logiques de données et de leur représentation graphique.
Nous exposerons la modélisation logique des données selon le concept de modèle relationnel
dans une vision macroscopique ; c’est-à-dire que nous tenterons de mettre en évidence les
éléments essentiels que nous retrouvons pratiquement dans la plupart des différentes
implantations de modélisation logique des données.
La modélisation s’appuyant sur un langage et une représentation graphique, nous avons
choisi de nous appuyer sur UML et le modèle de classes pour réaliser ce chapitre, tout
comme nous l’avons fait pour le modèle conceptuel.
Deux raisons nous ont guidé dans ce choix :
• UML est relativement commun à la communauté informatique ;
• Le formalisme d’UML est très riche.
Toutefois le formalisme des méthodes mettant en évidence la modélisation des données peut
être plus approprié que UML; à titre d’exemple, nous pouvons citer la méthode CDM
d’Oracle et l’AGL Designer. Nous présenterons certains de ces formalismes plus loin dans le
cours.
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
2/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
2
Concepts de base
2.1 Le modèle relationnel initial
Le concept de modèle relationnel a été présenté par E. F. Codd en 1970 et fait l’objet, encore
actuellement, de nombreux travaux de recherche.
[MERISE-3] En première approximation une relation peut être définie comme un tableau de
données. Chacun de ces tableaux aura un nom et sera caractérisé par des attributs.
Le méta modèle s’inspire de la notion mathématique de relation, il est basé sur deux aspects
fondamentaux:
• Aspect statique - Une démarche de conception permettant de définir une collection de
relations nommée : Modèle logique de données relationnel.
• Aspect dynamique - Une algèbre permettant de manipuler des tables ou relations.
Dans la suite du chapitre nous ne traiterons que de l’aspect statique.
L’algèbre relationnelle, partie dynamique, est traitée dans la partie de modélisation des
traitements.
Remarque importante :
Historiquement, le terme « relationnel » s’appliquait à la notion de structure tabulaire ; il
mettait en évidence les relations existantes entre les colonnes ou attributs d’une table.
Afin d’éviter toute confusion d’interprétation, dans la suite de ce cours, le terme de table sera
utilisé en lieu et place de relation et le terme relation sera réservé aux « liens » entre tables.
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
3/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
2.2 Le modèle logique de données relationnel
Le méta modèle générique du modèle relationnel est constitué de 2 classes d’objets :
• les tables qui permettent de définir la structure de mémorisation des occurrences
d’entités du modèle conceptuel ;
• les dépendances fonctionnelles entre tables sous forme de couples formés de clés
primaires et clés étrangères qui permettent de mémoriser les occurrences
d’associations entre entités.
Les dépendances fonctionnelles entre tables sont représentées graphiquement sous forme de
« relations » entre tables.
Pour le cas de la crèche, la structure de la table Enfants correspond à l’entité Enfant. La
colonne Edu_Numero est une clé étrangère; associée à la clé primaire Numero de la table
Educatrices, cette dépendance fonctionnelle ou relation réalise l’association En Charge.
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
4/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
3 Table
Une table est l’équivalent d’un tableau de valeurs ; lors de la transformation
d’un modèle conceptuel en modèle logique, elle est issue d’une entité ou d’une
entité associative.
Le tableau ci-après fixe le vocabulaire utilisé dans le cadre du modèle relationnel.
Vocabulaire
tabulaire
Vocabulaire
relationnel
Remarques
Colonne
Attribut
Propriété dans le cadre de la modélisation
conceptuelle des données (MCD / E-A)
Un attribut prend ses valeurs dans un domaine
par exemple:
• domaine des entiers {... -2; -1; 0; 1; 2 ...}
• domaine des continents {Europe; Asie ...}
Ligne
Tuple ou n-uplet
Occurrence d’entité ou d’association dans le
cadre des MCD / E-A.
Equivalent d’un enregistrement dans le cadre
d’une gestion de fichiers structurés.
Nombres de colonnes
Degré
Nombre de lignes
Cardinalité
Dans la suite du cours, nous privilégierons les termes de colonne et d’enregistrement.
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
5/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
3.1 Schéma d’une table
Le schéma d’une table permet de définir la structure d’une table. Il est
constitué du nom de la table suivi de la liste de ses colonnes (attributs) avec
leurs domaines de valeurs.
Toute table du modèle logique de données doit impérativement être dotée d’une clé primaire.
Tout comme pour le modèle conceptuel, la ou les colonnes constitutives de la clé primaire
sont enrichies du stéréotype « PK ».
Remarques:
Nous conservons le stéréotype « UID » défini en modélisation conceptuelle pour montrer la
ou les colonnes constitutives d’un identifiant naturel.
3.2 Extension d’une table
L’extension ou instanciation d’une table est l’ensemble des enregistrements
(lignes ou tuples) définis par les valeurs prises par les différentes colonnes du
schéma de la table concernée.
Pour la suite du cours, nous nous intéresserons au seul schéma ; l’instanciation est l’affaire de
la modélisation des traitements.
3.3 Espace de nommage
Comme nous l’avons déjà expliqué dans le chapitre de modélisation conceptuelle, une table
est un espace de nommage et les colonnes ne doivent pas être préfixés ou postfixés de tout ou
partie du nom de la table.
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
6/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
4 Clés
Les clés sont des colonnes de tables qui permettent d’accéder aux enregistrements avec
rapidité et précision. Par rapport au concept initial de relation, les clés permettent de lier les
tables entre elles avec rigueur ; elles offrent un mécanisme performant de réalisation des
associations du modèle conceptuel de données.
4.1 Clé primaire
La clé primaire d’une table permet au SGBD1 d’accéder à un enregistrement
sans ambiguïté, elle est formée d’une une plusieurs colonnes.
Remarque:
Dans le cas de gestion de personnes, la valeur de clé primaire peut être utile
aussi aux utilisateurs pour accéder à un enregistrement précis.
Rappel du chapitre de modélisation conceptuelle des données :
Nous préconisons, pour faciliter la maintenance, de nommer uniformément la colonne
artificielle de clé primaire NUMERO.
Nous montrons le ou les attributs qui forment la clé primaire en les enrichissant du stéréotype
« PK ».
Pour remplir totalement son rôle, la clé primaire doit être:
• univaluée - à un enregistrement ne correspond qu’une seule valeur de clé primaire;
• discriminante - à une valeur de clé primaire donnée correspond un seul et unique
enregistrement;
• minimale - si la clé primaire est composée de plus d’une colonne, la perte d’une colonne
doit faire perdre le caractère discriminant de la clé primaire.
• stable - la valeur initiale de la clé primaire doit être conservée durant toute la vie de
l’enregistrement.
Pour un SII, la clé primaire est une valeur numérique entière; la valeur de clé primaire est
créée par un séquencement automatique. La valeur de la clé primaire n’a et ne doit avoir
aucune signification pour en garantir la stabilité.
1
SGBD : système de gestion de base de données – logiciel spécifiquement dédié à la gestion de données.
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
7/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
4.2 Clé secondaire
La ou les clés secondaires d’une table permettent aux utilisateurs d’accéder à
un ou éventuellement plusieurs enregistrements à partir de la connaissance des
valeurs d’une ou plusieurs colonnes.
Le concept de clé secondaire était essentiel avant l’arrivée des SGBD-R2, actuellement, ce
concept de clé secondaire tend à être occulté. Une clé secondaire est réalisée par un index.
Avant les SGBD-R, la création et la maintenance d’un index était une tâche fastidieuse qui
devait impérativement être planifiée ; la planification se basait sur le recensement des clés
secondaires à mettre en oeuvre. Avec les SGBD-R, la création et la maintenance d’un index se
fait par une simple déclaration ; les index et implicitement les clés secondaires sont souvent
créés pour améliorer les performances d’un SII en cours d’exploitation.
Une clé secondaire peut :
• être nulle ; c’est-à-dire qu’elle peut ne pas être renseignée pour un ou plusieurs
enregistrements ;
• être non discriminante ; c’est-à-dire qu’elle peut identique pour plusieurs
enregistrements.
Pour notre crèche, le nom des éducatrices peut être une clé secondaire pertinent, le prénom
aussi ; toutefois, nous pourrions avoir deux éducatrices de même nom ou prénom voire une
éducatrice dont le prénom n’est pas enregistré.
Remarque :
Nous ne mettons pas en évidence les clés secondaires qui sont optionnelles ou non
discriminantes.
2
SGBD-R : système de gestion de base de données réalisé sur les concepts du modèle relationnel de Codd.
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
8/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
4.3 Clé secondaire unique et non nulle
La ou les clés secondaires uniques et non nulles d’une table permettent aux
utilisateurs d’accéder à un enregistrement à partir de la connaissance des
valeurs d’une ou plusieurs colonnes.
Remarque:
Pour la gestion de personnes, il peut être impossible de créer une clé secondaire
unique et non nulle ; dans ce cas, la valeur de clé primaire est utilisée par les
utilisateurs pour accéder à un enregistrement précis.
Toute table doit être dotée d’au moins une clé secondaire unique et non nulle ; la
connaissance de la valeur de cette clé secondaire unique et non nulle permet aux utilisateur
d’accéder à un enregistrement précis sans ambiguïté.
La clé secondaire unique et non nulle correspond au concept d’identifiant naturel présenté en
modélisation conceptuelle des données ; nous enrichissons les clés secondaires uniques et non
nulles du stéréotype « UID » pour bien montrer la similarité entre les deux niveaux de
modélisation.
Rappel du chapitre de modélisation conceptuelle des données :
Pour remplir totalement son rôle sans ambiguïté, l’identifiant doit être:
• univalué - à une occurrence d’entité ne correspond qu’une seule valeur d’identifiant;
• discriminant - à un identifiant donné correspond une seule et unique occurrence d’entité;
• minimal - si l’identifiant est composé de plus d’une propriété, la perte d’un composant
doit faire perdre le caractère discriminant de l’identifiant.
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
9/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
4.4 Clé étrangère
Une clé étrangère correspond à la clé primaire d’une table servant de
référence. Le couple {clé primaire de la table source de la référence, clé
étrangère de la table cible de la référence} matérialise une dépendance
fonctionnelle entre deux tables.
Nous préconisons, pour faciliter la maintenance, de nommer les clés étrangères NUMERO et
de les préfixer du nom court de la table de référence ; plus précisément, le préfixe sera
constitué du rôle et du nom court de la table. Nous aborderons plus tard la notion de rôle.
Le nom court de la table est un nom abrégé de la table, quelques lettres. Ce nom court doit
être discriminant et facilement mémorisable. Le nom court est utilisé pour nommer les
contraintes de tables dont justement les contraintes de clés étrangères.
La clé étrangère de l’éducatrice en charge de l’enfant devient :
EDU_NUMERO
EDU est l’abréviation de la table Educatrices
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
10/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
5 Relation entre tables
Une relation entre tables représente une dépendance fonctionnelle entre deux tables.
Une relation est réalisée par un couple {clé primaire de la table de référence, clé
étrangère de la table cible de la référence}.
Remarque:
Une relation peut s’établir aussi au sein d’une seule table ; nous parlons, alors, de
relation réflexive.
Une relation est représentée dans le modèle logique de donnée par une association UML entre
les deux tables (classes stéréotypées « Table » dans la terminologie UML).
La table Educatrices est la source de la dépendance fonctionnelle ou de la relation, la table
Enfants est la cible de la dépendance fonctionnelle ou de la relation.
Nous utilisons aussi le vocabulaire « Parent / Enfant » pour décrire le rôle de chacune des
deux tables.
La table Educatrices est le parent de la relation, la table Enfants est l’enfant de la relation.
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
11/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
6 Degré d’une relation
Le degré d’une relation exprime la cardinalité maximale des enregistrements
participant à la relation.
Le degré s’exprime par deux nombres sous la forme a:b.
• a représente le nombre maximum d’enregistrements de la table source de la relation
ayant une valeur de clé primaire correspondant à une valeur de clé étrangère de la
table cible.
Ce nombre vaut toujours 1; en effet, une clé étrangère ne doit pouvoir être asssociée
qu’à un et un seul enregistrement parent.
• b représente le nombre maximum d’enregistrements de la table cible de la relation
ayant une valeur de clé étrangère correspondant à une valeur de clé primaire de la
table source; ce nombre s’exprime par 1 ou n.
1 signifie qu’un enregistrement parent ne peut avoir qu’un seul enfant.
n signifie qu’un enregistrement parent peut avoir plusieurs enfants.
Le degré d’une relation ne peut s’exprimer avec UML qu’au travers des cardinalités de
l’association entre les deux classes.
Dans l’exemple ci-dessus, la table Enfants est enfant de la relation et ne peut avoir qu’un
seul parent (nombre a) ; la valeur 1 se lit sur l’extrémité Educatrices.
La table Educatrices est parent de la relation et peut avoir plusieurs enfants ; la valeur n
(UML représente le n par le symbole *) se lit sur l’extrémité Enfant.
La relation En charge est de degré 1:n.
Remarque :
Les valeurs minimales des cardinalités ne sont pas prises en compte par le concept de degré
de relation.
[Plus de détails sur les cardinalités dans le chapitre de modélisation conceptuelle des données]
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
12/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
7 Contraintes d’intégrité
Une contrainte d’intégrité est une assertion qui doit être vérifiée par les
valeurs de colonnes de tables.
[MERISE-3] Le modèle conceptuel de données ne peut suffire à donner une image complète
de la réalité. En effet, c’est une vision synthétique qui se veut également la plus simple
possible d’un point de vue représentation. C’est pourquoi associé à ce modèle conceptuel on
définit un système d’intégrité constitué d’un ensemble de prédicats relatifs aux entités
conceptuelles de façon à fournir une image cohérente de la réalité.
Les contraintes ci-après sont présentées selon la syntaxe de la norme SQL3.
7.1 Contrainte d’unicité de valeur (UNIQUE)
Une contrainte d’unicité de valeur assure l’unicité de valeurs d’une ou de
plusieurs colonnes pour chacun des enregistrements d’une table.
La contrainte d’unicité est réalisée par un index ; chaque entrée de l’index est défini comme
unique.
La clé secondaire unique et non nulle (l’identifiant naturel de la modélisation conceptuelle)
est réalisée pour sa première partie par une contrainte d’unicité.
7.2 Contrainte de valeur non nulle (NOT NULL)
Une contrainte de valeur non nulle assure la présence obligatoire de valeurs
d’une ou de plusieurs colonnes pour chacun des enregistrements d’une table.
La clé secondaire unique et non nulle (l’identifiant naturel de la modélisation conceptuelle)
est réalisée pour sa deuxième partie par une contrainte de valeur non nulle.
3
SQL - Strutured Query Language / Langage d’interrogation structuré
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
13/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
7.3 Contrainte de clé primaire (PRIMARY KEY)
Une contrainte de clé primaire assure la présence obligatoire de valeurs
discriminantes et stables d’une ou de plusieurs colonnes pour chacun des
enregistrements d’une table.
Une contrainte de clé primaire est construite théoriquement à partir des contraintes de base
suivantes:
• Contrainte d’unicité de valeur (UNIQUE)
• Contrainte de valeur non nulle (NOT NULL)
• Contrainte d’interdiction de changement de valeur (ou un automatisme de mise à jour en
cascade en cas de changement mais, en violation des règles de Codd).
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
14/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
7.4 Contrainte d’intégrité référentielle stricte (FOREIGN KEY,
REFERENCE)
Une contrainte d’intégrité référentielle stricte assure la cohérence de la
dépendance fonctionnelle entre la clé primaire de la table source et la clé
étrangère de la table cible.
Source
Cible
•
•
Un enregistrement enfant ne doit pas pouvoir référer un enregistrement
parent inexistant.
La suppression d’un enregistrement parent ne doit pas laisser
d’enregistrements enfants orphelins.
Lors de la manipulation de données, une contrainte d’intégrité référentielle stricte implique
que le SGBD effectue les contrôles de cohérence suivants :
•
En cas d’ajout ou de modification d’enregistrement de la table cible ou enfant, la
valeur de la clé étrangère doit exister comme valeur de clé primaire de la table source
ou parent.
Dans l’exemple ci-dessus, nous ne devrions pas pouvoir créer un enregistrement de la
table Enfants en mettant comme valeur de clé étrangère 102 car il n’existe pas
d’éducatrice dotée de cette valeur de clé primaire.
•
En cas de suppression d’enregistrement de la table source ou parent, la valeur de la clé
primaire ne doit être référencée dans aucune clé étrangère de la table cible ou enfant.
Dans l’exemple ci-dessus, nous ne devrions pas pouvoir supprimer l’enregistrement
AO Orange Aurélie de la table Educatrices car elle est référencée par l’enfant
Nathan.
Cours de modélisation 2005/2006
http://lgl.isnetne.ch/modelisation-2005
160. Modélisation logique des données
15/15
4.10.2005/ P-A. Sunier
http://lgl.isnetne.ch
Téléchargement