rel1
rel1
rel1
relationnelle
stph.scenari-community.org/bdd
rel1.pdf
Stéphane Crozat
4. Synthèse ........................................................................................................................................................ 15
4.1. Synthèse : Schéma relationnel ..................................................................................................................................................... 15
4.2. Bibliographie commentée sur le modèle relationnel .................................................................................................................... 15
II - Exercices 17
III - Devoir 18
Contenus annexes 19
Questions de synthèse 21
Glossaire 24
Abréviations 25
Bibliographie 26
Webographie 27
Cours
Cours
I
Le modèle relationnel est aux fondements des SGBDR*. Il a été, et continue d'être, le modèle théorique
dominant pour la représentation logique des base de données, même si le mouvement NoSQL propose des
alternatives.
Le modèle relationnel permet de reformuler le modèle conceptuel dans un formalisme - le tableau - beaucoup
plus proche de l'implémentation informatique, bien qu'encore indépendant d'une solution technologique
particulière.
Pour assumer cette fonction, le modèle relationnel* s'est imposé en réaction aux insuffisances des modèles
antérieurs, les modèles hiérarchique et réseau, et de part la puissance de ses fondements mathématiques.
Encore aujourd'hui dominant le modèle relationnel est un fondement indispensable à la conception de bases de
données.
Rappel
Méthodologie générale de conception d'une base de données (cf. p.19)
*
4
Les concepts fondamentaux du modèle relationnel : attributs, enregistrement, domaine
Introduction
Le modèle relationnel a été introduit par Codd*, en 1970 au laboratoire de recherche d'IBM de San José. Il
s'agit d'un modèle simple et puissant à la base de la majorité des bases de données, encore aujourd'hui.
Les objectifs du modèle relationnel, formulés par Codd, sont les suivants :
Le modèle relationnel inclut des concepts pour la description de données, ainsi que des concepts pour la
manipulation de données.
5
Exercice
2.1. Domaine
Définition : Domaine
Ensemble, caractérisé par un nom, dans lequel des données peuvent prendre leurs valeurs.
Remarque
Un domaine peut-être défini en intension* (c'est à dire en définissant les propriétés caractéristiques des valeurs
du domaine, on parle aussi de compréhension) ou en extension* (c'est à dire en énumérant toutes les valeurs du
domaine)
Indiquez quelle définition et quel exemple correspondent respectivement aux mots intension et extension.
Explicitation d'un domaine par la description de ses caractéristiques (en vue de sa compréhension abstraite,
générale).
Intension Extension
6
Exemple : La relation "Vol"
Définition : Attribut
On appelle attribut d'une relation, une colonne de cette relation. Un attribut est caractérisé par un nom et un
domaine dans lequel il prend ses valeurs.
Définition : Enregistrement
On appelle enregistrement d'une relation, une ligne de cette relation. Un enregistrement prend une valeur pour
chaque attribut de la relation.
Exemple
Relation R
La relation R comporte les deux attributs A et B et les trois enregistrements <1,1>, <1,2> et <2,2>
Les colonnes de la relation ne sont pas ordonnées et elles ne sont donc repérées que par le nom de l'attribut.
Exemple
Relation Vol
7
Clé
3.1. Clé
Définition : Clé
Une clé est un groupe d'attributs minimum qui permet d'identifier de façon univoque un tuple dans une relation.
Fondamental
Toute relation doit comporter au moins une clé, ce qui implique qu'une relation ne peut pas contenir deux
tuples identiques.
Dire qu'un groupe d'attribut est une clé équivaut à dire qu'il est unique et non null.
Définir un groupe d'attributs comme étant une clé nécessite une réflexion sémantique sur les données
composant ces attributs, afin de s'assurer de leur unicité.
Fondamental
La définition des clés est un acte de modélisation, elle ne renvoie pas donc pas à une vérité intangible, mais à la
réalité telle qu'elle est représentée dans le modèle que l'on élabore.
Exemple
L'attribut numéro de sécurité sociale d'une relation personne peut paraître une bonne clé a priori car son unicité
est assurée. Mais tout le monde n'en dispose pas forcément (les enfants, des étrangers), donc ce n'est une clé
que si l'on considère des personnes affiliées à la sécurité sociale.
8
Clé artificielle
La clé primaire est généralement choisie de façon à ce qu'elle soit la plus simple, c'est à dire portant sur le
moins d'attributs et sur les attributs de domaine les plus basiques (entiers ou chaînes courtes typiquement).
Conseil
1. Si au moins une clé naturelle composée d'un seul attribut existe en choisir une parmi celles-ci comme
clé primaire
2. Sinon, choisir une clé naturelle composée de plusieurs attributs si elle ne pose pas de problème identifié
3. Toujours justifier l'emploi d'une clé artificielle (au niveau logique uniquement pour des raisons de
complexité du modèle, les questions de performance sont étudiées au niveau physique)
- Du point de vue de l'évolutivité de la BD, il existe toujours un risque qu'une clé non-artificielle perde sa
propriété d'unicité ou de non-nullité.
9
Clé étrangère
- Du point de vue de la maintenance de la BD, il existe toujours un risque qu'une clé non-artificielle voit sa
valeur modifiée et dans ce cas, la répercution de ce changement pour mettre à jour toutes les références
peut poser problème.
- Du point de vue de la performance de la BD, les clés non-artificielles ne sont pas en général optimisées en
terme de type et de taille, et donc peuvent limiter les performances dans le cadre des jointures.
Précisons néanmoins qu'inversement les clés artificielles ont pour conséquence de systématiser des
jointures qui auraient pu être évitées avec des clés primaires signifiantes.
Inversement, soit une clé artificielle la clé primaire d'une table T1, par ailleurs référencée par une autre table
T2. Soit le numéro de sécurité sociale un attribut clé de T1. Si l'on veut par requête disposer des informations
de T2 ainsi que du numéro de sécurité sociale de T1, alors il faudra faire une jointure, tandis que si ce numéro
signifiant avait été choisi comme clé primaire, cela n'aurait pas été nécessaire.
Une clé étrangère d'un tuple référence une clé primaire d'un autre tuple.
Attention
Seule une clé primaire peut être référencée par une clé étrangère, c'est même le seule fonction de la clé
primaire : être la clé qui peut être référencée par les clés étrangères.
10
Référence entre relations
Une clé étrangère qui ne respecte pas la contrainte d'intégrité référentielle exprime un lien vers un tuple qui
n'existe pas et donc n'est pas cohérente.
Afin de représenter des références entre relations dans un modèle relationnel, la seule solution est de stocker
l'information dans une relation, et donc que certains attributs d'une relation servent à pointer sur d'autres
relations.
Attention
Il n'y a pas vraiment de référence ou de lien en relationnel, puisque nous ne disposons que de tables, de clés, de
clés étrangère et de valeurs.
On va donc devoir se servir de ces outils pour matérialiser une notion de référence.
Méthode : Référence
La référence entre deux tuples T1 et T2 de deux relations différentes est exprimable par une valeur identique
entre une clé étrangère du tuple T1 et la clé primaire de l'autre tuple T2.
Synonyme : Lien
Exemple
L'attribut a2 de la relation R1 référence l'attribut b1 de la relation R2 car a2 est une clé étrangère de R1 vers R2
(b1 est la clé primaire de R2).
Ici on a donc par exemple les tuples identifiés par B et C de R1 qui référencent le tuple identifié par 1 dans R2.
11
Schéma relationnel
- du nom de la relation,
- de la liste de ses attributs avec les domaines respectifs dans lesquels ils prennent leurs valeurs,
- de la clé primaire,
- des clés étrangères,
- des clés candidates.
Le schéma relationnel d'une BD* est la définition en intension de cette BD (par opposition à l'instance de la BD
qui est une extension de la BD). Il est composé de l'ensemble des schémas de chaque relation de la BD.
Syntaxe : Relation
La relation "Relation1" comporte une clé étrangère (composée des attributs "AttributM" à "AttributN")
référençant la clé primaire de "Relation2". Bien sûr il peut exister plusieurs clés étrangères vers plusieurs
relations distinctes. Une clé étrangère et sa clé primaire référencée sont toujours composées du même nombre
d'attributs. Il n'est pas nécessaire de préciser les domaines des attributs appartenant à la clé étrangère car ce sont
forcément les mêmes que ceux de la clé primaire référencée. Il n'est pas non plus en général nécessaire de
préciser dans le schéma relationnel quels attributs de la clé étrangère référencent quels attributs de la clé
primaire (cela est généralement évident) mais il est possible de la faire on notant "Attribut=>Relation.Attribut".
En général on note les clés étrangères en dernier dans la relation, sauf pour les clés étrangères qui font partie de
la clé primaire (clés identifiantes).
- S'il n'y a qu'une ou deux clés candidates, les noter directement après la définition de la relation
- S'il y a beaucoup de clés, pour ne pas trop alourdir la notation, renvoyer à un tableau à part
12
Exemple de schéma relationnel pour la géographie
La notation R(#a,b) avec b clé signifie bien que a et b sont deux clés de R, et que a est primaire.
Il ne faut pas confondre une clé composée de deux attributs avec deux clés.
Exemple
- Des personnes
Elles sont identifiées par un numéro qui est en fait une clé artificielle. En effet, même une clé composée
de tous les attributs (Nom, Prénom, LieuNaissance) laisse une possibilité de doublons (homonymes nés
dans la même ville).
La clé étrangère LieuNaissance fait référence à la relation Ville, et plus précisément à sa clé primaire
CodePostal, ce qui est est laissé implicite car évident.
13
Synthèse
- Des pays
Ils sont identifiés par leur nom, puisque deux pays ne peuvent avoir le même nom.
Les pays sont dirigés par des personnes, et ce lien est matérialisé par la clé étrangère Dirigeant.
- Des régions
Elles font partie d'un pays et ont un nom. Deux régions de pays différents pouvant avoir le même nom,
il faut utiliser une clé primaire composée à la fois du nom de la région et du nom du pays, qui est une
clé étrangère (le nom est appelé clé locale car il n'est pas suffisant pour identifier un tuple de la relation
Région, et la clé étrangère vers la relation Pays est appelée clé identifiante).
- Des villes
Elles sont identifié par un code postal qui est unique dans le monde (en utilisant le préfixe de pays de
type "F-60200"). Ce code postal a pour domaine CP qui est une chaîne composée d'une ou deux lettres,
d'un tiret, puis d'une série de chiffres.
Le lien d'appartenance entre une ville et une région est matérialisé par la clé étrangère composée des
deux attributs Pays et Région. Cette clé référence la clé primaire de la relation Région, également
composée de deux attributs. Pour clairement expliciter les références (bien que sémantiquement la
dénomination des attributs ne laisse pas de place au doute) on utilise la syntaxe Région.Pays et Région.
Nom.
14
Synthèse : Schéma relationnel
4. Synthèse
4.1. Synthèse : Schéma relationnel
Schéma relationnel
- Relation ou table
Sous-ensemble d'un produit cartésien
- Attribut ou colonne
Prend ses valeurs dans un domaine
- Enregistrement ou ligne
Pose une valeur (y compris la valeur "null") pour chaque attribut
- Clé
Groupe d'attributs ayant un rôle d'identification au sein d'un enregistrement
- Clé candidate
Identifie de façon unique un enregistrement
- Clé primaire
Clé candidate choisie pour représenter un enregistrement pour sa facilité d'usage
- Clé étrangère
Référence la clé primaire d'un tuple d'une autre relation pour exprimer un lien
Complément : Synthèses
SQL2 SQL3, applications à
Oracle *
Une définition synthétique et efficace du domaine relationnel : relation, domaine, attribut, clé, intégrité,
opérateurs (Premier chapitre).
Exemple
1 D1 = {A, B, C}
2 D2 = {1, 2, 3}
3 D1 X D2 = {<A,1>, <A,2>, <A,3>, <B,1>, <B,2>, <B,3>, <C,1>, <C,2>, <C,3>,}
15
Relation
5.2. Relation
Définition : Relation
Une relation sur les domaines D1, D2, ... , Dn est un sous-ensemble du produit cartésien "D1 X D2 X ... X Dn".
Une relation est caractérisée par un nom.
Syntaxe
On peut représenter la relation R sur les domaine D1, ... , Dn par une table comportant une colonne pour
chaque domaine et une ligne pour chaque tuple de la relation.
Relation R
Remarque
Une relation est définie en extension, par l'énumération des tuples la composant.
16
Exercices
Exercices
II
1. Exercice : Lab I-
Description du problème
[20 min]
- Un médicament est décrit par un nom, qui permet de l'identifier. En effet il n'existe pas deux
médicaments avec le même nom. Un médicament comporte une description courte en français, ainsi
qu'une description longue en latin. On gère aussi le conditionnement du médicament, c'est à dire le
nombre de pilules par boîte (qui est un nombre entier).
- À chaque médicament on associe une liste de contre-indications, généralement plusieurs, parfois aucune.
Une contre-indication comporte un code unique qui l’identifie, ainsi qu'une description. Une contre-
indication est toujours associée à un et un seul médicament.
Exemple de données
Afin de matérialiser notre base de données, nous obtenons les descriptions suivantes :
- Le Chourix a pour description courte « Médicament contre la chute des choux » et pour description longue
« Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio.
Maecenas convallis ullamcorper ultricies. Curabitur ornare. ». Il est conditionné en boîte de 13.
Ses contre-indications sont :
- Le Tropas a pour description courte « Médicament contre les dysfonctionnements intellectuels » et pour
description longue « Suspendisse lectus leo, consectetur in tempor sit amet, placerat quis neque. Etiam
luctus porttitor lorem, sed suscipit est rutrum non. ». Il est conditionné en boîte de 42.
Ses contre-indications sont :
Dessiner des relations instanciées (en extension donc) remplies avec les données fournies en exemple.
Écrivez le schéma relationnel (définition en intension donc) permettant de représenter une base de données
relationnelle pour le laboratoire.
17
Devoir
Devoir
III
1. Exercice : Salle de sports
Une salle de sports souhaite réaliser une base de données pour gérer ses adhérents.
Question 1
Proposer une relation Adhérent définie en extension* permettant de représenter trois adhérents, avec pour
chacun son nom, son prénom, son âge, son adresse, sa taille, son poids, ainsi que deux booléens permettant de
savoir si le cotisation et si le certificat médical sont à jour.
Question 2
Proposer un schéma relationnel définissant en intension* la relation Adhérent, en spécifiant les domaines de
chaque attribut.
Question 3
Chaque adhérent possède un numéro unique fourni lors de l'inscription. Ajouter une colonne à la relation
Adhérent et à au schéma correspondant.
Indice :
Le numéro d'adhérent est une clé.
Question 4
Ajouter une seconde relation permettant de gérer les sports pratiqués dans la salle. Chaque nom de sport est
unique ; on gère pour chaque sport le nombre d'heures de pratique hebdomadaire et l'âge minimum.
Question 5
Proposer une solution pour indiquer le sport que pratique chaque adhérent, sachant qu'il ne peut en pratiquer
qu'un seul, mais qu'un même sport peut être pratiqué par plusieurs adhérents.
Question 6
Proposer un diagramme de classe UML qui aurait permis de représenter ce problème d'emblée.
18
Contenus annexes
Contenus annexes
- L'analyse
Elle consiste à étudier le problème et à consigner dans un document, la note de clarification, les
besoins, les choix, les contraintes.
- La modélisation conceptuelle
Elle permet de décrire le problème posé, de façon non-formelle (en générale graphique), en
prenant des hypothèses de simplification. Ce n'est pas une description du réel, mais une
représentation simplifiée d'une réalité.
- La modélisation logique
Ele permet de décrire une solution, en prenant une orientation informatique générale (type de
SGBD typiquement), formelle, mais indépendamment de choix d'implémentation spécifiques.
- L'implémentation
19
Stéphane Crozat (Contributions : Benjamin Lussier, Antoine Vincent, Dritan Nace)
Contenus annexes
Elle correspond aux choix techniques, en terme de SGBD choisi et à leur mise en œuvre
(programmation, optimisation...).
Fondamental
- Bien analyser le problème posé en amont
- Bien modéliser le problème au niveau conceptuel avant de passer au niveau logique et à
l'implémentation
Si la première étape est fondamentale dans le processus de conception, elle est aussi la plus délicate. En
effet, tandis que des formalismes puissants existent pour la modélisation conceptuelle puis pour la
modélisation logique, la perception de l'existant et des besoins reste une étape qui repose essentiellement
sur l'expertise d'analyse de l'ingénieur.
La traduction d'un cahier des charges spécifiant l'existant et les besoins en modèle conceptuel reste
néanmoins une étape délicate, qui va conditionner ensuite l'ensemble de l'implémentation informatique.
En effet les étape suivantes sont plus mécaniques, dans la mesure où un modèle logique est déduit de
façon systématique du modèle conceptuel et que l'implémentation logicielle est également réalisée par
traduction directe du modèle logique.
Des logiciels spécialisés (par exemple Objecteering*) sont capables à partir d'un modèle conceptuel
d'appliquer des algorithmes de traduction qui permettent d'obtenir directement le modèle logique, puis
les instructions pour la création de la base de données dans un langage orienté données tel que SQL.
L'existence de tels algorithmes de traduction montre que les étapes de traduction logique et
d'implémentation sont moins complexes que les précédentes, car plus systématiques.
Néanmoins ces étapes exigent tout de même des compétences techniques pour optimiser les modèles
logiques (normalisation), puis les implémentations en fonction d'un contexte de mise en œuvre matériel,
logiciel et humain.
20
Stéphane Crozat (Contributions : Benjamin Lussier, Antoine Vincent, Dritan Nace)
Questions de synthèse
Questions de synthèse
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
.................................................................................................................................................................................................
21
Stéphane Crozat (Contributions : Benjamin Lussier, Antoine Vincent, Dritan Nace)
Questions de synthèse
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
..................................................................................................................................................................................................................
22
Stéphane Crozat (Contributions : Benjamin Lussier, Antoine Vincent, Dritan Nace)
Solutions des exercices
Indiquez quelle définition et quel exemple correspondent respectivement aux mots intension et extension.
Intension Extension
23
Stéphane Crozat (Contributions : Benjamin Lussier, Antoine Vincent, Dritan Nace)
Glossaire
Glossaire
Extension
L'extension est l'explicitation d'un domaine par l'énonciation exhaustive de l'ensemble des objets du domaine.
Elle s'oppose à l'instension qui est une description abstraite des caractéristiques du domaine.
Intension
L'intension est l'explicitation d'un domaine par la description de ses caractéristiques (en vue de sa
compréhension abstraite, générale).
Elle s'oppose à l'extension qui est l'énonciation exhaustive de l'ensemble des objets du domaine.
24
Stéphane Crozat (Contributions : Benjamin Lussier, Antoine Vincent, Dritan Nace)
Signification des abréviations
Abréviations
BD : Base de Données
E-A : Entité-Association
25
Stéphane Crozat (Contributions : Benjamin Lussier, Antoine Vincent, Dritan Nace)
Bibliographie
Bibliographie
Codd EF, A relational model for large shared data banks, Communications de l'ACM, juin 1970.
26
Stéphane Crozat (Contributions : Benjamin Lussier, Antoine Vincent, Dritan Nace)
Webographie
Webographie
27
Stéphane Crozat (Contributions : Benjamin Lussier, Antoine Vincent, Dritan Nace)