Vous êtes sur la page 1sur 5

Modèle relationnel

Notion de relation
Une relation est représentée par une table. Une relation est caractérisée par un nom.
Chaque colonne est un attribut, encore appelé champ. Un attribut est caractérise par un
nom. Chaque ligne est appelée n-uplet ou enregistrement.
Une relation regroupe une collection d´éléments (lignes) définis par les mêmes attributs
(colonnes).

Exemple
L'exemple ci-dessous illustre les concepts de base d'une relation

Théorie de normalisation
La normalisation d'une relation consiste a respecter les 3 formes normales ( C. J Codd)
Objectif : éliminer les redondances et éviter les incohérences liées aux mises à jour.
Remarque
Afin d'introduire les 3 formes normales, nous devons d'abord présenter le concept de
dépendance fonctionnelle

Définition : Dépendance fonctionnelle


Soit R(a1, a2, ......., an ) (n ≥ 2) un schéma de relation, soit X, Y, Z trois sousensembles
d'attributs de A ={a1, a2, .......,an} tels que : X ∩Y ∩ Z = Ø et
l'X U Y U Z = A , (Z peut être vide)
On dira que X détermine Y, ou Y dépend fonctionnellement de X et on notera X → Y
si pour tous les tuples (x, y, z) et (x', y', z') de R, si x = x' alors y = y'
Complément
Autrement dit : une valeur de x détermine une et une seule valeur de y, ou bien
connaissant la valeur de x, nous pouvons déterminer la valeur de y sans ambiguïté
Exemple :
Cod_mod → Libelle_mod (un code de module correspond à un et un seul libelle de
module)
Cod_mod , matricule → note (si on fixe un code de module et le matricule d'un étudiant
on ne peut avoir une seule note)
Par contre la DF Cod_mod→note est fausse car la note pour un module donne n'est pas
unique, elle dépend de l'étudiant.

Notion de clé d'une relation :


De façon informelle, la clé d'une relation R est un ensemble d'attributs (un ou plusieurs)
de R, qui détermine tous les attributs de R.
Définition
Soit A l'ensemble des attributs d'une relation R et soit X un sous-ensemble de A. X
est une clé de R si pour tout a appartenant a A , X → a.
19
Clés candidates / Clé primaire
Une relation peut avoir plusieurs clés possibles, on parle alors de clés candidates, on en
choisit une qu'on appelle clé primaire. Par exemple la relation étudiant peut avoir deux
les candidates : Matricule et NSS. Si on choisit la première elle devient clé primaire.

1. Formes normales

Définition : 1ere forme normale 1FN


Une relation R est en 1FN, si chacun de ses attributs a un domaine atomique
mono_value.
Autrement dit : pour chaque tuple de la relation, tout attribut possède une seule valeur.
Exemple
Soit la relation : Resultats (Matricule , Cod_mod, Nom_et , Prenom_et , Notes ) Pour
l'étudiant ≪ ABDI Mohamed ≫ , nous aurons par exemple 4 notes a sauvegarder, pour le
module Algo l'enregistrement suivant :
52000001, ABDI, Mohamed, Algo, {8 9.5 6.5 11}

Cette relation n'est pas en 1FN car l'attribut Notes est multi_value. Pour transformer
cette relation en première forme normale (1FN) , il faut justement décomposer cet
attribut en quatre autres attributs : note1, note2, synt, ratt qui soient atomiques .
Résultats (Matricule, Cod_mod, Nom_et , Prenom_et, Note1 , Note2 , Synt , Ratt )

Définition : Deuxieme forme normale : ( 2FN )


Une relation R est dite en 2FN si et seulement si :
1. Elle est en 1FN .
2. Tout attribut n'appartenant pas à la clé ne dépend pas d'une partie de la clé. (i.e il est
en dépendance fonctionnelle élémentaire de la clé).
Exemple
La relation Résultats (Matricule , Cod_mod, Nom_et , Prenom_et, Note1 , Note2 , Synt
, Ratt ) n'est pas en 2FN car :
Matricule → Nom_et
Matricule → Prenom_et
Elle doit être décomposée en deux relations en 2FN :
Resultats (Matricule , Cod_mod, Note1 , Note2 , Synt , Ratt )
Etudiant(Matricule, Nom_et , Prenom_et)
Définition : Troisième forme normale : ( 3FN )
Une relation est en 3FN si :
1. Elle est en 2FN.
2. Tout attribut n'appartenant pas à la clé ne dépend pas d'un attribut non clé.

Exemple
Enseignant ( Num_ens, Nom_ens, Prenom_ens, Dat_nais_ens, Adresse_ens, Grade,
Nbr_heures )
On suppose que le nombre d'heure d'enseignement dépend du grade. Par exemple tous
les chargés de cours ont 7h d'enseignement par semaine, alors que les maitres assistants
ont 9h.
Donc Grade → Nbr_heures.
Cette relation n'est pas en 3FN, car il y a une dépendance fonctionnelle entre deux
attributs non clé elle doit être decomposee en 2 relations en 3FN

Enseignant ( Num_ens, Nom_ens, Prenom_ens, Dat_nais_ens, Adresse_ens, Grade)


Charge (Grade, Nbr_heures)

Passage du diagramme de classe au modèle relationnel

Règle 1 : les classes


On crée une relation de même nom que la classe. Chaque propriété de la classe, y
compris l'identifiant, devient un attribut de la relation. Les attributs de l'identifiant
constituent la clé de la relation.

Règle 2: associations de un à plusieurs


Soit une association de un à plusieurs entre A et B. Le passage au modelé relationnel suit
les règles suivantes:
 On crée les relations RA et RB correspondant respectivement aux classes A et B.
 L'identifiant de A devient un attribut de RB.

Règle 3: associations plusieurs a plusieurs


Soit une association de plusieurs a plusieurs entre A et B. Le passage au modelé
relationnel suit les règles suivantes:
 On crée les relations RA et RB correspondant respectivement aux classes A et B.
 On crée une relation RAB, dont la clé est composée des clés de RA, et de RB.

Règle 4: associations n-aires


Soit une association n-aire entre A, B et C. Le passage au modelé relationnel suit les
règles suivantes:
 On crée les relations RA, RB, RC correspondants respectivement aux classes A, B
et C.
 On crée une relation RABC, dont la clé est composée des clés de RA, RB et RC.

Règle 5: généralisation et héritage simple


Il existe 3 possibilités :
1. Pas de table de super classe, les attributs sont dupliques dans chaque table de sous
classe.
2. Pas de tables de sous classes, on ramené tous les attributs des sous classes dans la
super classe, et on ajoute un attribut pour déterminer la sous classe d'origine de chaque
instance.
3. Une table de super classe, et autant de tables que de sous classes, en maintenant le
lien à travers une migration de clé de la table super classe vers les tables sous classes.
Exemple
Le diagramme de classe ci-dessous peut être transforme en schéma relationnel

Solution 1 :
Acteur(idAct,idArt,Nom, Prenom)
Realisateur(idreal, idArt,Nom, Prenom)
Film(idFilm, Titre, Annee, Resume, CodeP*, idReal*)
Internaute(Email, Nom, Prenom,DN)
Pays(CodeP, Nom, Langue)
Salle(idSalle, Nom, Capacite)
Horaire(idH, Debut, Fin)
Apprecie(idFilm*, email*, Note)
Projection(idFilm*, idSalle*, idH*)
Joue(idAct, idFilm)

Solution 2
Artiste(idArt,Nom, Prenom, TypeArtiste, idAct, idReal )
Film(idFilm, Titre, Annee, Resume, CodeP*, idReal*)
Internaute(Email, Nom, Prenom,DN)
Pays(CodeP, Nom, Langue)
Salle(idSalle, Nom, Capacite)
Horaire(idH, Debut, Fin)
Apprecie(idFilm*, email*, Note)
Projection(idFilm*, idSalle*, idH*)
Joue(idAct, idFilm)
Solution 3:
Artiste(idArt,Nom, Prenom)
Acteur(idAct, idArt*)
Realisateur(idreal, idArt*)
Film(idFilm, Titre, Annee, Resume, CodeP*, idReal*)
Internaute(Email, Nom, Prenom,DN)
Pays(CodeP, Nom, Langue
Salle(idSalle, Nom, Capacite)
Horaire(idH, Debut, Fin)
Apprecie(idFilm*, email*, Note)
Projection(idFilm*, idSalle*, idH*)
Joue(idAct, idFilm)
23

Vous aimerez peut-être aussi