Université Saad DAHLAB BLIDA
Faculté des Sciences
Département d’informatique
Cours 3: Modèle logique de données
(MLD)
Enseignante responsable:
Dr. Nesrine LAHIANI
Public cible : 2ème année Ingénieur
Contact : [Link]@[Link]
Approche bases de données : Conception
Réel
• Indépendant du
Modèle modèle de données
• Indépendant du
conceptuel SGBD Etudiant Emprunter Livre
• Dépendant du
Modèle modèle de données
Codasyl Relationnel Objet XML
• Indépendant du
logique SGBD
• Dépendant du • Organisation physique des données
Modèle modèle de données
• Structures de stockage des données
• Dépendant du
Physique SGBD • Structures accélératrices (index)
2
Introduction
Dans ce cours, on présente un exemple de MLD : le modèle relationnel.
Modèle relationnel :
Introduit par Edgar Frank Codd en 1970
Définition : c’est une représentation des données sous forme de
relations.
Base théorique solide : théorie des ensembles et logique mathématique.
Utilisé par beaucoup de SGBDs commerciaux :
Oracle.
MySQL
DB2
SQL server, etc.
Domaine (1)
Définition :
Est un ensemble infini ou fini de valeurs. Il peut être défini en extension
ou en intension :
Intension : citer les caractéristiques des valeurs.
• Exemple : Domaine de la propriété prix = {n | 0 n 1500}
Extension : citer explicitement toutes les valeurs.
• Exemple : Domaine de la propriété booléen = {0, 1}
Domaine (2)
Ensemble de valeurs ATOMIQUES (primitives)
Exemples:
ENTIER
REEL
CHAINESDE CARACTERES
EUROS
SALAIRE= {4 000..100 000}
COULEUR= {BLEU, BLANC, ROUGE}
POINT = {(X:REEL,Y:REEL)}
TRIANGLE= {(P1:POINT,P2:POINT,P3:POINT)}
5
Produit cartésien
Définition :
Le produit cartésien des domaines D1,…,Di,…,Dn est égale à l’ensemble de
tous les n-uplets (ou tuples) de la forme <V1,…,Vi,…,Vn> tel que V1
D1,…, Vi Di,…,Vn Dn.
Notation : le produit cartésien de D1 ,D2 et D3 est noté : D1 D2 D3
• Exemple : soient D1 = Nom = {Ali, Salah} et D2 = Age = {45, 23}
alors : D1 D2 = {<Ali, 45>, <Ali, 23>, <Salah, 45>, <Salah, 23>}
Exemple:
• D1 = {Bleu,Blanc,Rouge}
• D2 = {Vrai, Faux}
Relation (1)
Définition 1 :
Une relation est un sous ensemble du produit cartésien d’un ensemble de
n domaines D1,…,Di,…,Dn. Une relation est caractérisée par un nom.
Voici un exemple d’une relation Etudiant qu’on peut construire à
partir des 3 domaines : Nom = {Mounir, Maha}, Prénom = {Ben
Salah, Ben Mabrouk} et Matricule = {‘992393’, ‘992394’} :
Exemple d’une relation étudiant :
Matricule Nom Prénom
992393 Mounir Ben Salah
992394 Maha Ben Mabrouk
Relation (2)
Définition 2 :
Une relation est une table à deux dimensions tels que :
Une ligne de cette table est un n-uplet ou tuple.
Une colonne de cette table est un attribut.
Nom d’attribut (Film)
N-uplet
Valeurs
d’attribut
Attribut
Définition :
Un Attribut d’une relation R :
Est une colonne de la table qui représente R.
Est caractérisé par un nom.
Prend ses valeurs d’un sous ensemble d’un domaine.
Relation étudiant :
Matricule Nom Prénom Attributs
992393 Mounir Ben Salah
992394 Maha Ben Mabrouk Tuple
Clé d’une relation (1)
Définition 1 :
Est un groupe formé par le minimum d’attributs tel que la connaissance
d’une valeur de ce groupe implique la connaissance d’un seul tuple de la
relation.
Définition 2 :
La clé d’une relation R(A1,A2,…,An) est un sous ensemble X d’attributs tel
que :
XR
X A1,A2,…,An
Il n’existe pas Y X tel que Y A1,A2,…,An
Clé d’une relation (2)
Contraintes:
Toute relation doit inclure une clé. Ce qui implique qu’une relation ne
peut pas inclure deux tuples identiques.
La valeur de chaque attribut de la clé doit être connue à tout instant (des
valeurs Non NULL).
Si une relation possède plusieurs clés alors on choisit une qui sera la clé
primaire et les autres seront des clés candidates.
Critères de choix d’une clé : Minimum d’attributs, attributs non NULL,
attributs simple (typiquement : entier, chaîne de caractères courte).
S’il est impossible de trouver une clé ou impossible de satisfaire les
critère de choix d’une clé alors on peut ajouter une clé artificiel.
Clé d’une relation (3)
Activité 1 :
Est-ce que le numéro de sécurité sociale (NSS) est une clé de Personne ?
Réponse : non car le NSS peut être NULL pour certaines personnes.
Choisir une clé primaire pour la relation étudiant parmi les clés
candidates suivantes : Numéro de carte d’identité nationale (NCIN),
Numéro passeport (NPASS) et Matricule étudiant (METUD).
Réponse :
• NCIN est NULL (étudiants étrangers) donc n’est pas une clé.
• NPASS est NULL pour certains étudiants donc n’est pas une clé.
• METDU est une clé car elle satisfait les critères de choix d’une clé.
Clé étrangère d’une relation (4)
Définition :
Une clé étrangère est un groupe d’attributs d’une relation R1 qui apparaît
comme clé primaire dans une autre relation R.
Relation Inscrit :
Clé étrangère
Matricule Matière
992393 SEII
992393 BDII
992394 AlgoII
Relation étudiant :
Clé primaire
Matricule Nom Prénom
992393 Mounir Ben Salah
992394 Maha Ben Mabrouk
Clé étrangère d’une relation
Contrainte d’intégrité référentielle :
Une contrainte d'intégrité référentielle entre une relation R1 (contient
une clé étrangère) qui référence une relation R2 (contient une clé
primaire) :
But : maintenir la cohérence de données de R1 et R2.
Comment : un tuple de R1 doit référencer un tuple existant de R2.
Conséquences :
• Insertion d’un tuple dans R1 : la valeur de la clé étrangère doit
correspondre à une valeur de la clé primaire de R2.
• Suppression d’un tuple de R2 : les tuples de R2 qui référence le
tuple supprimé doivent être aussi supprimés.
Schéma d’une relation
Définition :
Le schéma d’une relation spécifie :
Le nom de la relation.
La liste des attributs de la relation ainsi que leurs domaines.
La clé primaire (souligné) et étrangère (suivie par #) de la relation.
Exemple de schéma de la relation Inscrit :
Inscrit (Matricule #: entier, AnnInscrit : entier, Matière# : chaîne de caractères)
Simplification
Inscrit (Matricule #, AnnInscrit , Matière#)
Schéma d’une base de données
Définition :
Ensemble des schémas des relations.
Exemple de schéma d’une base de données :
ETUDIANT (MatEtud, NomEtud, DateNaiss, Email, Tel)
UNITE_ENSEIGNEMENT (NumUE, LibUE)
ENSEIGNANT (NumEns, NomEns)
ELEMENT_CONSTITUTIF (NumEC, LibEC, NumUE#,
NumEnsResp#)
EMPLOI_TEMPS (NumSce, NumEC#, NumEns#, SalleSce, Jour,
TypeSce, CrnHor)
INSCRIT (MatEtud#, NumEC#)
Partie 2 :
Transformation MCD-MLD
Introduction
Le modèle conceptuel de données (MCD) ou modèle E-A validé est
transformé en plusieurs modèles logiques selon le type du SGBD à
utiliser :
SGBD hiérarchique : modèle logique hiérarchique.
SGBD réseau : modèle logique réseau.
SGBD relationnel : modèle logique relationnel.
SGBD objet : modèle logique objet.
Dans ce cours, on s’intéresse au modèle logique relationnel.
La transformation ou génération MCD-MLD est systémique à travers un
ensemble de règles de transformation.
Ces règles génèrent un modèle relationnel.
Règle 1: cas d’une entité non vide (1)
Définition :
Une entité est dite non vide si elle comporte au moins une propriété
autre que son identifiant.
Règle 1 :
Une entité non vide se transforme en une relation :
L’identifiant de l’entité devient la clé de la relation.
Les propriétés de l’entité deviennent les attributs de la relation.
Exemple :
Client
NumClt Règle 1 Client (NumClt, NomClt)
NomClt
Règle 1: cas d’une entité non vide (2)
Activité 2 :
Elaborer le modèle relationnel du diagramme E-A suivant :
Employé
NumEmp
NomEmp
PrénomEmp
Réponse :
Employé (NumEmp, NomEmp, PrénomEmp)
Règle 2 : cas d’une entité vide
Définition :
Une entité est dite vide si elle comporte seulement son identifiant.
Règle 2 :
Une entité vide n’a pas de correspondant dans le modèle relationnel,
sauf exception.
Exemple :
Date
Règle 2 Date (Dat)
Dat
Exception de la Règle 2
La règle 2 n’est pas applicable si l’entité vide satisfait les conditions :
il est nécessaire de constituer un répertoire des données de l’entité,
et
la projection des autres relations sur l’attribut concerné ne donne pas
ce répertoire.
Exemple :
TypeLivre CodType Est_De_Type
Livre TypeLivre
CodLivre 1, 1 Est_De_Type 0, n
CodType
Titre
TypeLivre (CodType)
Association binaire (1)
Cardinalité 1,1- 1,n (Règle 3)
Cette association correspond à une paire de cardinalité 1,1 et 0,n ou 1,n
Dans ce cas, la table issue de l'entité coté cardinalité 1,1 reçoit comme clé
étrangère la clé primaire de l'entité liée.
AUTEUR (Num_Auteur, Nom_Auteur, Date_Naissance)
LIVRE (Num_Livre, Titre_Livre, Num_Auteur#)
Association binaire (2)
Cardinalité 0,1 -1,1
Cette association correspond à une paire de cardinalité 1,1 et 0,1
La meilleure solution est que la table CD_ROM reçoivent comme clé
étrangère Num_Micro. Car un CD_Rom est affecté à un et un seul
micro. Ce qui donne :
MICRO (Num_Micro, Marque_Micro)
CD_ROM (Num_Cd, Marque_Cd, Num_Micro#)
Association binaire (3)
Cardinalité 0,1 -0,1
Cet exemple illustre le fait que certains CD_Rom n'équipent pas de micro
En reprenant le modèle relationnel, et partant qu'une clé étrangère ne peut être nulle, la
seule solution est de créer une table intermédiaire qui illustre le fait que l'on mémorise les
cas d'association entre un lecteur de CD-Rom et un Micro.
Ce cas d'association nécessite la création d'une autre table (ici EQUIPER) prenant comme
clé primaire la composition des clés primaires des autres tables devenant clé étrangère
dans la table COMPOSER:
MICRO (Num_Micro, Marque_Micro)
CD_ROM (Num_Cd, Marque_Cd)
EQUIPER (Num_Micro#, Num_Cd#)
Exemple
Animateur
0, 1 Activité
0, 1 Animer
NumAn NumAct
Nom Description
Animateur (NumAn, Nom)
Activité (NumAct, Description)
Animer (NumAn#, NumAct#)
Association binaire (4)
Cardinalité 0,1 -0,n ou 1,n
Il existe plusieurs solutions, l'une meilleure que l'autre.
La première solution assimile la cardinalité 0,1 à une cardinalité 1,1 et
donc il y a migration de la clé primaire de la table coté 1,n vers la table
coté 0,1 ce qui laisse la possibilité d'une valeur nulle pour la clé
étrangère.
RESPONSABLE (Num_Responsable, Nom_Responsable)
EQUIPE (Nom_Equipe, Num_Responsable#)
Association binaire (5)
La deuxième solution consiste à créer une table intermédiaire avec une clé
primaire composée.
• EQUIPE (Nom_Equipe)
• RESPONSABLE (Num_Responsable, Nom_Responsable)
• DIRIGER (Nom_Equipe#, Num_Responsable#)
Si la deuxième solution est la meilleure, la premiére est souvent mise en
oeuvre dans la mesure ou le cas 0 est rare et correspond plus à un cas d'école
ou une phase transitoire. C'est pour cela que la solution à 2 tables reste
majoritairement utilisée pour des raisons d'allégement du modèle relationnel.
Association binaire (6)
Cardinalité x,n -x,n
Ce cas regroupe toutes les associations où la cardinalité maximale de part et
d'autre est à n, la cardinalité minimale pouvant être 0 ou 1.
Dans ce cas, la règle consiste à la création d'une table issue de l'association,
recevant comme clé étrangère les clés primaires des 2 autres tables.
• MICRO (Num_Micro, Marque_Micro)
• PERIPHERIQUE (Type_Periph, Marque_Periph)
• EQUIPER (Num_Micro#, Type_Periph#)
Association binaire (8)
Exemple :
Les entités Dépôt et Produit se transforment selon la règle 1.
L’association stocker se transforme selon la règle 3.
Produit
Dépôt
1, n Stocker 1, n
NumDep CodP
QtéStock
AdrDep LibP
PrixP
Dépôt (NumDep, AdrDep)
Produit (CodP, LibP, PrixP)
Stocker (NumDep#, CodP#, QtéStock)
Associations n-aires (1)
• Le traitement de ce type d'association est en fait une généralisation du cas
précédent.
• L'association génère une table, cette table reçoit en clé étrangère les
attributs clés primaires des autres tables, la composition de chaque clés
étrangères devenant la clé primaire.
• Si l'association est porteuse de données, les données portées deviennent
des attributs de la table composée.
Classe
Enseignant
1, n Enseigner 1, n CodClas
CodEns
NbHeure NomClas
NomEns
1, n Effectif
PrénomEns
Matière
CodMat
DesgMat
Associations n-aires (2)
Réponse :
Les entités Enseignant, Matière et Classe se transforment
conformément à la règle 1.
Enseignant (CodEns, NomEns, PrénomEns)
Classe (CodClas, NomClas, Effectif)
Matière (CodMat, DesgMat)
Enseigner (CodEns#, CodClas#, CodMat#, NbHeure)
Associations réflexives
• Il faudra cependant différencier les noms des clefs
étrangères de la table associative correspondantes
tout en référençant la même clef primaire :
directeur
Employé
0,n
NumEmp Est_directeur
NomEmp
0,1
PrénomEmp
employé
Employé (NumEmp, NomEmp, PrénomEmp, directeur#)
Directeur : clé étrangère qui référence la clé primaire NumEmp
Règles de passage
Lors de la transformation d'un modèle E/A en modèle
relationnel, certaines règles clés sont suivies :
1) Les entités sont représentées par des relations, permettant de
structurer les données de manière organisée.
2) Les attributs des entités deviennent les attributs des relations
correspondantes.
3) Les associations entre les classes sont traduites en clés
étrangères, assurant l'intégrité référentielle.
4) Les associations de type plusieurs-à-plusieurs nécessitent
l'ajout d'une table de jonction pour maintenir les relations.
Activité :
Traduire le MCD suivant en un MLD relationnel :
Client Voiture
CIN 1,n louer 0,n
NbJour Immatriculation
Nom
Type
Prénom
couleur
Adresse
0,n DateLocation
Date
Dat
Réponse :
Les entités Client et voiture se transforment selon la règle 1.
L’entité vide Date se transforme conformément à la règle 2.
Client (CIN, Nom, Prénom, Adresse)
Voiture (Immatriculation, Type, Couleur)
Louer (CIN#, Immatriculation#, DateLocation, NbJour)
Exemple
Commande
Client
1, 1 Passer 1, n
NumCom
NumClt
DateCom
NomClt
Total
Commande (NumCom, DateCom, Total, NumClt#)
Client (NumClt, NomClt)
Exemple 2
L’entité Etudiant se transforme en relation selon la règle 1.
L’entité vide Cycle n’a pas de correspondant selon la règle 2.
Etudiant
Cycle
1, 1 A_Pour_Niveau 1, n
NumE
CodC
NomE
PrénomE
Etudiant (NumE, NomE, PrénomE, CodC)
Exercice 1
• Pour chacun des schémas E/A suivants,
construire le schéma relationnel correspondant.
Indiquer, précisément, pour chaque relation sa
clé primaire et ses clés étrangères.
Shéma1
CONSULTATION (No, Date, #Matricule, #NSS)
MEDICAMENT (Code, NomMédicament)
MEDECIN (Matricule, Nom, Prénom, Tel)
PATIENT (NSS, Nom, Prénom, Tel)
PRESCRIPTION (#No, #Code, Nb_Prise)
Shéma 2
Réponse:
JOURNALISTE (IDJ, Nom, Date_Nais)
PERSONALITE (IDP, Nom, Prénom, Nation)
ARTICLE (IDA, Contenu, #IDJ, #IDS)
JOURNAL (IDL, Titre, Adresse)
SUJET (IDS, Libellé)
NUMERO (IDN, Date)
INTERVIEW (#IDJ, #IDP)
TRAVAIL (#IDJ, #IDL)
APPARITION (#IDA, #IDN)
Exercice 2
Soit la base de données relationnelle relative à la gestion des
notes:
• ETUDIANT (NumInsc, Nom, Prénom, #Inscrit)
• MATIERE (CodeMat, NomMat)
• NIVEAU ( CodeNiv, NomNiv)
• RESULTAT (#NumIns, # CodeMat, Note)
Avec les contraintes d'intégrité référentielle suivantes:
• La clé étrangère ETUDIANT. Inscrit référence la clé
primaire NIVEAU. CodeNiv La clé étrangère RESULTAT.
NumInsc référence la clé primaire ETUDIANT. NumInsc
La clé étrangère RESULTAT. CodeMat référence la clé
primaire MATIERE. CodeMat
Construire le modèle entité-association
Montrer les anomalies de l'extension suivante: