Bonsoir,
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
S_ami
j'ai un souci de différencier entre les différentes clés existant dans le modèle relationnel.
après un recherche sur google :
clé primaire:
est un ou plusieurs attributs permettant d'identifier de manière unique un enregistrement dans la table ==> contrainte d'unicité (pas mal comme définition)
Il n’y a là que des approximations.
1) Dans le cadre du Modèle Relationnel de Données, le concept de clé primaire est obsolète. En revanche il perdure dans le modèle SQL (disons la norme SQL).
2) Dans le cadre du Modèle Relationnel de Données, la notion d’enregistrement n’existe pas. En effet, il s’agit d’une notion de niveau fichier. Dans le cadre de ce modèle, on parle de n-uplet (
tuple en anglais).
3) Pour la même raison, dans le cadre du Modèle SQL, la notion d’enregistrement n’existe pas, on parle alors habituellement de ligne (
row).
4) Le concept de table fait partie du Modèle SQL. Dans le cadre du Modèle Relationnel de Données, on parle de variable relationnelle, en abrégé
relvar. Une relvar étant une variable, elle prend des valeurs qui sont des ensembles particuliers appelés relations. Comme dans le cas d’un programme écrit en C++ ou en Cobol, une variable se situe dans le temps et dans l’espace. Au contraire, une relation ne se situe ni dans le temps ni dans l’espace, tout comme les nombres 1,2, 3, etc. Voyez Platon ou Gödel à ce sujet.
Par ailleurs, une relvar est constituée :
D’un en-tête qui est un ensemble, celui de ses attributs.
D’un corps qui est l’ensemble de ses tuples.
5) La définition donnée de la clé primaire est incomplète, l’unicité n'e suffit pas, il y a aussi l’irréductibilité (voir ci-dessous).
Passons aux définitions des types de clés.
Clé candidate
Une clé candidate est un sous-ensemble d’attributs K de l’en-tête d’une relvar R, respectant les deux contraintes suivantes :
Unicité. Deux n-uplets distincts de R ne peuvent avoir même valeur de K.
Irréductibilité (ou minimalité). Il n’existe pas de sous-ensemble strict de K garantissant la règle d’unicité.
Une relvar peut être dotée de plus d’une clé candidate. Par exemple, une hypothétique relvar Membre des membres de developpez.com peut être dotée des clés candidates : {MbrId} (identifiant de la relvar), {Pseudonyme} (pseudonyme de chaque membre), {AdrCourriel} (adresse de courriel), etc. Notez l’emploi des accolades, car il s’agit d’ensembles (singletons dans cet exemple, mais ensembles quand même).
Surclé
Le concept de surclé intervient souvent dans la théorie de la normalisation, il est donc important d’en faire mention. La surclé est un surtype de la clé candidate :
Une surclé est un sous-ensemble d’attributs K de l’en-tête d’une relvar R, respectant la contrainte d’unicité, mais pas nécessairement celle d’irréductibilité. Une clé candidate est donc une surclé, mais astreinte à respecter la contrainte d’irréductibilité.
N.B. On parle plutôt de surclé que de superclé, tout comme on parle plutôt de surhomme que de superhomme.
Clé primaireDans le cadre du Modèle SQL, une clé primaire est une clé candidate choisie comme telle parmi l’ensemble des clés candidates d’une table. Elle est choisie sur la base essentiellement de deux critères qui ne sont pas imposés, mais plus que vivement recommandés :
Stabilité : une clé primaire ne doit pas pouvoir changer de valeur.
Absence de signification : ne pas répéter les erreurs du passé à ce sujet.
Dans l’exemple ci-dessus, par hypothèse {MbrId} garantit ces deux critères et sera élue Miss clé primaire. Ses dauphines, à savoir {Pseudonyme} et {AdrCourriel} seront ravalées au rang de clés
alternatives.
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
S_ami
soit R(A,B,C,D) une relation, ils disent (pas moi) que AB est une supercle de R si AB+={R}ce la veut dire que :
AB->C
AB->D
oui je sais mais est ce que si AB est une clé primaire de R on a pas :
AB->C ??
AB->D ??
Si {AB} est une surclé, en corollaire de la propriété d’unicité, on a :
{AB} -> {A}
{AB} -> {B}
{AB} -> {C}
{AB} -> {D}
Si {AB} est une clé primaire, toujours en corollaire de la propriété d’unicité, on a encore et toujours : {AB} -> {A}
{AB} -> {B}
{AB} -> {C}
{AB} -> {D}
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
S_ami
c'est quoi la différence entre un identifiant et une clé primaire ?
Le concept d’identifiant ne fait pas partie du Modèle Relationnel de Données et dans le cadre du Modèle SQL, il a un sens différent (voir la norme SQL, identifier). Il relève du Modèle conceptuel de données (MCD). Voir la FAQ Merise. Au niveau conceptuel on décrit l’univers à modéliser (sous forme d’un diagramme), en termes d’entités-types et associations-types (ou relations-types). Chaque entité-type est dotée d’un identifiant (une ou plusieurs de ses propriétés-types), lequel est traduit sous forme de clé primaire quand on procède à la dérivation du MCD en MLD (modèle logique de données qui est aussi un diagramme), lequel est ensuite traduit sous forme de tables. Pour produire les MCD, les dériver en MLD puis en arriver aux instructions de création des tables, on recourt de préférence à un outil tel que Win’Design ou Power AMC.
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
S_ami
alors puisque k est une clé candidat ==> k-> R alors K est une supercle???
Comme on l’a vu plus haut, une clé candidate est une surclé particulière, astreinte à garantir non seulement la règle d’unicité, mais aussi celle d’irréductibilité.
Voilà. J'espère vous avoir un peu éclairé. Et soyez vigilant quant à la pertinence du vocabulaire.
Partager