Schéma relationnel
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Objectifs
Savoir décrire une relation grâce à un schéma relationnel ;
Savoir représenter les différents types de clé.
Mise en situation
Le modèle relationnel décrit, comme son nom l'indique, des relations : elles font intervenir plusieurs concepts, comme les attributs, les domaines, les clés primaires, les clés étrangères...
Afin de formaliser les relations, il faut bien écrire quelque part leur “fiche”, qui décrit les différents attributs ainsi que leur nature.
On pourrait décrire les relations en langage naturel, mais il y aurait alors des risques d’ambiguïté.
Une solution, c'est d'utiliser un schéma relationnel, qui permette de décrire une relation sans ambiguïté et dans son intégralité : vous allez voir comment dans ce module.
Définition : Schéma d'une relation
Le schéma d'une relation définit cette relation en intension. Il est composé :
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.
Définition : Schéma relationnel d'une base de donnée
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
Relation (attribut1:domaine1, attribut2:domaine2, ... , attributN:domaineN)
La relation "Relation" contient N attributs chacun défini sur son domaine.
Syntaxe : Clé primaire
Relation (#attribut1:domaine1, ... , #attributM:domaineM, ... , attributN:domaineN)
La clé de la relation « Relation »
est composée des attributs « Attribut1 »
à « AttributM »
(attributs précédés du caractère #)
En général on note la clé primaire en premier dans la relation.
Syntaxe : Clé étrangère
Relation1 (..., attributM=>Relation2, ... , attributN=>Relation2)
La relation «
comporte une clé étrangère (composée des attributs Relation1
»«
à attributM
»«
) référençant la clé primaire de attributN
»«
.Relation2
»
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).
Complément :
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 en notant
.« Attribut=>Relation.Attribut »
Syntaxe : Clé candidates
Relation1 (..., attributM:DomaineM, ...) avec attributM clé
Les clés candidates doivent être notées sur le schéma relationnel :
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.
Exemple : Avion et Compagnie Aérienne

On peut exprimer en relationnel ces tables de cette façon :
Avion(#immatriculation:chaîne, modele:chaîne, heures_de_vol:entier, oaci=>CompagnieAerienne)
CompagnieAerienne(#oaci:chaîne, denomination:chaîne, siege_social:chaîne) avec denomination clé
Attention : Clés candidates et clé primaire
La notation R(#a,#b)
signifie toujours que R
a comme clé primaire (a,b)
, et non que R
aurait deux clés a
et b
(dont on ne saurait pas laquelle est primaire).
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.
Complément : Traduction des contraintes
Si le modèle conceptuel contient des contraintes spécifiques aux classes, alors on les liste après la relation associée.
Par exemple, le modèle conceptuel suivant :
Se traduit comme :
Inscription(#annee:entier, note:réel, ects:entier) avec note dans [0, 20]
Cela vaut aussi pour certaines contraintes dues aux cardinalités des associations. Par exemple, le modèle conceptuel suivant :
Se traduit comme :
Medicament(#nom:varchar, description:varchar, description_longue:varchar, conditionnement:entier) avec au moins un Composant référant
Composant(#code:varchar, intitule:varchar, medicament=>Medicament) avec medicament non null
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.