Le Modèle Relationnel
Le Modèle Relationnel
Le Modèle Relationnel
Introduction
Le modèle relationnel de données a été proposé par « Codd » en 1970. A cette époque, la plupart
des systèmes de bases de données étaient fondées sur l'un des deux modèles de données plus
anciennes (le modèle hiérarchique et le modèle réseau); le modèle relationnel a révolutionné le
domaine de base de données et a largement supplanté les modèles précédents. Le prototype des
systèmes de gestion de bases de données ont été développées dans les projets de recherche d'IBM
et l’Université de Berkeley au milieu des années 70. Aujourd'hui, le modèle relationnel est de
loin le modèle de données dominant et constitue la base pour les produits SGBD, comprenant la
famille IBM DB2, Informix, Oracle, Sybase, Microsoft Access et SQL Server, FoxBase, et
Paradox. Les systèmes de bases de données relationnelles sont omniprésents sur le marché et
représentent une industrie de plusieurs milliards de dollars.
Le modèle relationnel est très simple et élégante, une base de données est une collection d'un ou
plusieurs relations, où chaque relation est une table avec des lignes et des colonnes. Cette
représentation tabulaire simple permet même aux utilisateurs novices de comprendre le contenu
d'une base de données, et il permet l'utilisation de simples langages de haut niveau pour
interroger les données. Les principaux avantages du modèle de données relationnel par rapport
aux modèles anciens résident dans sa capacité de représenter d’une manière très simple les
données et la facilité avec laquelle les requêtes complexes peuvent être exprimées.
1
titre année Genre
Alien 1979 Science-Fiction
Vertigo 1958 Suspense
Volte-face 1997 Thriller
Pulp Fiction 1995 Policier
Domaines
Un domaine de valeurs est un ensemble d’instances d’un type élémentaire. Exemple : les entiers,
les réels, les chaînes de caractères, etc. La notion de ’type élémentaire’ s’oppose à celle de type
structuré : il est interdit en relationnel de manipuler des valeurs instances de graphes, de listes,
d’enregistrements, etc.
En d’autres termes le système de types est figé et fourni par le système.
Attributs
Les attributs nomment les colonnes d’une relation. Ils servent à la fois à indiquer le contenu de
cette colonne, et à la référencer quand on effectue des opérations. Un attribut est toujours associé
à un domaine.
Le nom d’un attribut peut apparaître dans plusieurs schémas de relations.
Schéma de relation
Un schéma de relation est simplement un nom suivi de la liste des attributs, chaque attribut étant
associé à son domaine. La syntaxe est donc :
Un des fondements du modèle relationnel est la théorie des ensembles et la notion de relation
dans le modèle correspond strictement au concept mathématique dans cette théorie.
Une relation se représente sous forme de table, et on emploie le plus souvent ces deux termes
comme des synonymes.
La définition d’une relation comme un ensemble (au sens mathématique) a quelques
conséquences importantes :
1. l’ordre des lignes n’a pas d’importance car il n’y a pas d’ordre dans un ensemble ;
2. on ne peut pas trouver deux fois la même ligne car il n’y a pas de doublons dans un
ensemble ;
3. il n’y a pas de « case vide » dans la table, donc toutes les valeurs de tous les attributs
sont toujours connues ;
2
Clé d’une relation
La clé d’une relation est le plus petit sous-ensemble des attributs qui permet d’identifier chaque
ligne de manière unique. Comme on a vu que deux lignes sont toujours différentes, l’ensemble
de tous les attributs est lui-même une clé mais on peut pratiquement toujours trouver un sous-
ensemble qui satisfait la condition. Pour distinguer la clé, nous mettrons le (ou les) attribut(s) en
gras.
Film (titre, année, genre)
Le choix de la clé est très important pour la qualité du schéma.
Tuples
Un tuple est une liste de n valeurs (v1 , … , vn) où chaque valeur vi est la valeur d’un attribut Ai de
domaine Di : vi Di. Exemple :
(’Cyrano’, 1992, ’Rappeneau’)
Un tuple est donc simplement une ligne dans la représentation d’une relation sous forme de
table. En théorie, on connaît les valeurs de tous les attributs du tuple.
Base de données
Une (instance de) base de données est un ensemble fini (d’instances) de relations. Le schéma de
la base est l’ensemble des schémas des relations de cette base.
La création d’un schéma de base de données est simple une fois que l’on a déterminé toutes les
relations qui constituent la base. En revanche le choix de ces relations est un problème difficile
car il détermine en grande partie les caractéristiques, qualités de la base : performances,
exactitude, exhaustivité, disponibilité des informations, etc. Un des aspects importants de la
théorie des bases de données relationnelles consiste précisément à définir ce qu’est un « bon »
schéma et propose des outils formels pour y parvenir.
En pratique, on procède d’une manière moins rigoureuse mais plus accessible, en concevant le
schéma à l’aide d’un modèle de données « conceptuel », puis en transcrivant le schéma
conceptuel obtenu en schéma relationnel. La technique la plus répandue consiste à partir d’un
schéma Entité/Association. La section suivante donne les règles du processus de transformation.
On passe donc d’un modèle disposant de deux structures (entités et associations) à un modèle
disposant d’une seule structure (relations). Logiquement, entités et associations seront donc
toutes deux transformées en relations. La subtilité réside en fait dans la nécessité de préserver les
liens existant explicitement dans un schéma E/A et qui semblent manquer dans le modèle
relationnel. Dans ce dernier cas on utilise en fait un mécanisme de référence par valeur basé sur
les clés des relations.
3
Règles générales
Nous allons considérer dans un premier temps que la clé est définie, pour chaque type d’entité E,
par un identifiant abstrait, idE.
➢ Règles de passage : entités
Pour chaque entité du schéma E/A :
1. On crée une relation de même nom que l’entité.
2. Chaque propriété de l’entité, y compris l’identifiant, devient un attribut de la relation.
3. Les attributs de l’identifiant constituent la clé de la relation.
Exemple 1 A partir du schéma E/A Officiel des spectacles suscité, on obtient les relations
suivantes :
– Film (idFilm, titre, année, genre, résumé)
– Artiste (idArtiste, nom, prénom, annéeNaissance)
– Internaute (email, nom, prénom, région)
– Pays (code, nom, langue)
On peut remarquer que l’on a perdu pour l’instant tout lien entre les relations.
➢ Règles de passage : associations de un à plusieurs
Soit une association de un à plusieurs entre A et B. Le passage au modèle logique suit les règles
suivantes :
1. On crée les relations RA et RB correspondant respectivement aux entités A et B.
2. L’identifiant de B devient un attribut de RA.
L’idée est qu’une occurrence de A « référence » l’occurrence de B qui lui est associée à l’aide
d’une clé étrangère. Cette référence se fait de manière unique et suffisante à l’aide de
l’identifiant.
Exemple 2 :
Voici le schéma obtenu pour représenter l’association entre les types d’entité Film, Artiste et
Pays. Les clés étrangères sont en italiques.
4
– Film (idFilm, titre, année, genre, résumé, idArtiste, codePays)
– Artiste (idArtiste, nom, prénom, annéeNaissance)
– Pays (code, nom, langue)
Le rôle précis tenu par l’artiste dans l’association disparaît. L’artiste dans Film a un rôle de
metteur en scène, mais il pourrait tout aussi bien s’agir du décorateur ou de l’accessoiriste. Rien
n’empêche cependant de donner un nom plus explicite à l’attribut. Il n’est pas du tout obligatoire
en fait que les attributs constituant une clé étrangère aient le même nom que ceux de la clé
primaire auxquels ils se réfèrent. Voici le schéma de la table Film, dans lequel la clé étrangère
pour le metteur en scène est nommée idMES.
Film (idFilm, titre, année, genre, résumé, idMES)
Les tables ci-dessous montrent un exemple de la représentation des associations entre Film et
Artiste d’une part, Film et Pays d’autre part. Noter que rien n’empêche un artiste dont idArtiste
= 2 par exemple de figurer plusieurs fois dans la colonne idMES de la table Film. On a donc bien
l’équivalent de l’association un à plusieurs élaborée dans le schéma E/A.
➢ Règles de passage : associations binaires de plusieurs à plusieurs
Soit une association binaire n-m entre A et B.
1. On crée les relations RA et RB correspondant respectivement aux entités A et B.
2. On crée une relation RA-B pour l’association.
3. La clé de RA et la clé de RB deviennent des attributs de RA-B.
4. La clé de cette relation est la concaténation des clés des relations RA et RB
5. Les propriétés de l’association deviennent des attributs de RA-B.
Exemple 4 Toujours à partir du schéma Officiel des spectacles, on obtient la table Rôle
représentant l’association entre les films et les acteurs.
– Film (idFilm, titre, année, genre, résumé, idMES, codePays)
– Artiste (idArtiste, nom, prénom, annéeNaissance)
– Role (idFilm, idActeur, nomRôle)
De même, on obtient une table Notation pour représenter l’association entre un internaute et les
films qu’il a notés.
– Film (idFilm, titre, année, genre, résumé, idMES, codePays)
– Internaute (email, nom, prénom, région)
– Notation (email, idFilm, note)
Les tables suivantes montrent un exemple de représentation de Rôle. On peut constater le
mécanisme de référence unique obtenu grâce aux clés des relations. Chaque rôle correspond à un
unique acteur et à un unique film. De plus on ne peut pas trouver deux fois la même paire
(idFilm, idActeur) dans cette table, ce qui n’aurait pas de sens. En revanche un même
acteur peut figurer plusieurs fois (mais pas associé au même film), ainsi qu’un même film (mais
pas associé au même acteur).
5
On peut remarquer finalement que chaque partie de la clé de la table Rôle est elle-même une clé
étrangère qui fait référence à une ligne dans une autre table :
1. l’attribut idFilm fait référence à une ligne de la table Film (un film) ;
2. l’attribut idActeur fait référence à une ligne de la table Artiste (un acteur) ;
➢ Associations ternaires
Dans le cas d’associations impliquant plus de deux entités (voir figure), on atteint une des limites
du modèle Entité/Association en matière de spécification de contraintes.
En première approche, on peut appliquer la règle énoncée précédemment pour les associations
binaires et la généraliser. On obtiendrait alors, pour l’association Séance :
6
− Cinéma (nomCinéma, numéro, rue, ville)
− Salle (nomCinéma, no, capacité)
− Film (idFilm, titre, année, genre, résumé, idMES, codePays)
− Horaire (idHoraire, heureDébut, heureFin)
− Séance (idFilm, nomCinéma, noSalle, idHoraire, tarif)
La représentation d’une association ternaire, dans ce cas « Séance » est comme suit :
Donc, la relation Séance a pour clé la concaténation des identifiants de chacune des entités
composantes, ce qui donne une clé d’une taille assez importante. On autorise alors une base
comme celle de la figure précédente. On ne peut pas trouver deux fois le même triplet constituant
la clé.
Maintenant on s’aperçoit que la même salle présente deux films différents au même horaire. Si
on souhaite éviter cette situation, la clé devient (nomCinéma, noSalle, idHoraire), et on ne
respecte plus la règle de passage du schéma E/A vers le schéma relationnel.
En d’autres termes, en cas d’association entre plus de 2 entités, la clé de la table représentant
l’association est un sous-ensemble de la concaténation des clés. Il faut se poser soigneusement la
question de la (ou des) clé(s) au moment de la création de la table car elle(s) ne peu(ven)t plus
être déduite(s) du schéma E/A. On parle parfois de clé candidate.
7
4. Choix des identifiants
Il est préférable en général de choisir un identifiant « neutre » qui ne soit pas une propriété de
l’entité. En effet :
1. Chaque valeur de l’identifiant doit caractériser de manière unique une occurrence.
Exemple : titre pour la relation Film ou nom pour la relation Acteur ne sont clairement
pas des bons choix.
2. Si on utilise un ensemble de propriétés comme identifiant, la référence à une occurrence
est très lourde. Exemple : la clé de Cinéma pourrait être (nom, rue, ville).
3. L’identifiant sert de référence externe et ne doit donc jamais être modifiable (il faudrait
répercuter les mises à jour).
L’inconvénient de l’identifiant « neutre » est qu’il ne donne pas d’indication sur l’occurrence
qu’il réfère. Par exemple, quand on consulte la table Séance, on ne sait pas dire de quel film il
s’agit sans aller rechercher la ligne de la table Film correspondant à l’identifiant du film.
En admettant – pour un instant – que le titre identifie de manière unique un film, le schéma de la
table Film devient :
Film (titre, année, genre, résumé, idMES, codePays)
La relation Séance a alors pour schéma :
Séance (titreFilm, nomCinéma, noSalle, idHoraire, tarif)
Ce qui permet d’obtenir le titre du film directement, comme le montre l’instance ci-dessous.
Un problème du schéma ci-dessus est que la référence à une ligne de la table Séance devient
compliquée, et donc peu performante. Il faut veiller à limiter le nombre de champs constituant
une clé car l’expression des requêtes est plus lourde, et leur exécution peut être ralentie par la
taille des index.
8
5. Théorie de la normalisation
Un attribut (ou un groupe d'attributs) Y dépend fonctionnellement d'un attribut (ou groupe
d'attributs) X si : étant donné une valeur de X, il lui correspond une valeur unique de Y (∀
l'instant considéré)
X→Y : Y dépend fonctionnellement de X ou X détermine Y
On part de deux ensembles : une relation universelle (relation unique qui contient tous les
attributs de l’application), et l’ensemble F des DF sous forme minimale.
On décompose la relation universelle en utilisant F pour obtenir un ensemble de relations pour
une certaine forme normale (FN) choisie à l'avance : 1ère, 2ème, 3ème, forme normale de Boyce
Codd, 4ème et 5ème.
Les trois premières FN ont été définies par Codd (1972).
• 1FN : la plus simple, évite les domaines composés de plusieurs valeurs.
• 2FN : beaucoup de redondances → coût élevé de MAJ.
• 3FN : peu de redondances → coût faible de MAJ, mais beaucoup de jointures.
9
1ère forme normale (1FN)
Justifiée par la simplicité et l'esthétique, la 1FN consiste à éviter les domaines constitués de
plusieurs valeurs.
On dit qu'une relation est en 1FN si tous ses attributs sont de type élémentaire : char, string, int,
float.
Les attributs de type structure, ensemble et liste sont interdits. Si on a besoin d'une structure, soit
on la met à plat, soit on crée une nouvelle relation.
2ère forme normale (2FN)
La 2FN permet d'éliminer certaines redondances en assurant qu'aucun attribut n'est déterminé par
une partie seulement de la clé.
Une relation est en 2FN si et seulement si :
✓ elle est en 1FN
✓ les attributs qui ne sont pas clé sont pleinement dépendants de chaque clé (dépendent de
la clé entière).
Exemple :
La clé est le couple X, Y. Donc X, Y →Z, W. Or Y détermine à lui seul W : Y →W. Donc W
dépend d'une partie de la clé. Il faut donc décomposer R en : R1 <X, Y, Z> et R2 <Y, W>.
10
Forme normale de « Boyce Codd » (FNBC)
La 2FN élimine les anomalies créées par des DF entre parties de clé et attribut non clé.
La 3FN élimine les anomalies créées par des DF entre les attributs non clés.
Et les DF de parties de clés entre elles ou d'attributs non clé vers une partie de clé ?
3FN insuffisante FNBC.
Une relation est en FNBC si et seulement si les seules DF élémentaires sont celles dans
lesquelles une clé entière détermine un attribut.
En clair, pas de DF autres que K → A, K étant la clé et A un attribut non clé.
Exemple :
Cette relation n'a pas de DF. L'identifiant est (N°Article + Taille + Couleur).
On est en Boyce Codd puisqu'il n'y a pas de DF (la proposition "toute source de DF est un
identifiant entier" est vraie). Par contre, il y a un autre type de dépendance : chaque article existe
pour chaque taille dans toutes les couleurs, et réciproquement chaque article existe pour chaque
couleur dans toutes les tailles. De telles dépendances sont appelées dépendances multi-
ensembles (ou dépendances multivaluées).
Définition : Soit une relation R(X, Y, Z), il y a dépendance multi-ensemble (DM) X→→Y si à toute
valeur de X correspond un ensemble de valeurs de Y qui est totalement indépendant de Z.
Formellement, si t1 et t2 sont deux tuples de R, tels que t1[X] = t2[X], alors il existe deux tuples v1 et v2
de R tels que :
11
v1[X] = v2[X] = t1[X]
v1[Y] = t1[Y] , v1[Z] = t2[Z]
v2[Y] = t2[Y] , v2[Z] = t1[Z]
On remarque que les DF sont des cas particuliers de DM.
Si dans une relation R (X, Y, Z), on a la dépendance multi-ensemble X→→Y, alors on a aussi la
dépendance multi-ensemble X→→Z.
12
R (A1, A2, …An)
X1, X2, …, Xm sous-ensembles de {A1, A2, …, An}
Il existe une dépendance de jointure *{X1, X2, …, Xm} si R = ∏X1 (R) ∏X2 (R) … ∏Xm (R)
Un schéma de relation R est dit sous cinquième forme normale (5NF) si pour tout DJ ⋈
{𝑅1 , … , 𝑅𝑛 } sur R, l'un des énoncés suivants est vrai :
− Ri = R pour certains i, ou
− La DJ est incluse dans l'ensemble des DFs sur R dont le côté gauche est une clé
pour R (toutes les DJ sont impliquées par les clés)
Elle consiste à l’utilisation des dépendances de jointure (DJ), pour supprimer certaines
redondances.
Exemple : Base « Jus »
N’est pas en 4FN parce qu'il n'existe pas de DM (par exemple Consommateur →→ Jus est faux
parce qu’il n’existe pas le tuple (Ali, Cocktail, Rouiba)).
Il reste encore des redondances : on apprend deux fois que « Ali » boit du jus d’orange et que
« Hammoud » produit de jus d’orange.
Mais il est impossible de décomposer de deux relations.
Les DM permettent de décomposer une relation en deux, les DJ permettent de décomposer une
relation en N relations.
On obtient alors le schéma (en 5NF) :
13