• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 20/10/2020

Comprenez l'importance des clés

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Je ne vous ai pas tout dit à propos du modèle relationnel. J'ai oublié une chose très importante :

Réfléchissons...

Cette contrainte ne devrait normalement pas nous poser de problème, même si nous souhaitons représenter deux objets identiques. Si nous reprenons l'exemple de nos pommes, il est tout à fait possible que deux pommes distinctes aient exactement les mêmes caractéristiques :

identifiant

masse

diamètre

couleur

1

151 g

8.3 cm

rouge

2

169 g

9.1 cm

jaune

3

134 g

8.0 cm

jaune

4

134 g

8.0 cm

jaune

Ici, les pommes 3 et 4 ont les mêmes caractéristiques. Cependant, les lignes correspondantes ne sont pas identiques, car la valeur de leurs attributs identifiant est différente : 3 et 4.

Cela nous amène à l'identification des tuples d'une relation. C'est là qu'interviennent les clés !

Qu'est-ce qu'une clé ?

Dans la vie quotidienne, une clé sert à ouvrir une porte pour accéder à votre maison. Une caractéristique essentielle d'une clé est qu'elle doit être unique, car si votre clé est identique à celle de la maison de votre voisin, il se pose un problème évident !

Dans le modèle relationnel, une clé a donc pour vocation d'accéder à un tuple, et donc d'identifier ce dernier.

 Ainsi, pour une relation donnée, une clé est un groupe d'attribut minimum déterminant un tuple unique.

Dans notre exemple des pommes, l'attribut identifiant est une clé, car si je vous dis…

Donne-moi la pomme dont l'identifiant est 2 !

… vous savez exactement quelle ligne me donner, car l'identifiant de chaque pomme est unique !

Cependant, si je vous demande…

Donne-moi la pomme dont la masse est de 169 grammes !

… dans ce cas, vous pourriez me donner la pomme numéro 2. Mais si j'ajoute à ma relation une autre pomme qui a aussi une masse de 169 grammes, vous ne saurez plus laquelle des deux pommes choisir. L'attribut masse n'est donc pas une clé.

Un peu d’entraînement

Entraînons-nous à repérer des clés avec une relation que nous appellerons voiture, qui représente des voitures possédées par des personnes ayant la nationalité française (ce détail aura son importance pour la suite) :

immatriculation

pays_immatriculation

couleur

nombre_places

propriétaire

prop_num_secu

prop_num_voiture

2983-AA

France

bleue

5

Luc

1134212

1

1923-BD

France

verte

7

Lucia

2021726

1

PLT-28-190

Portugal

bleue

7

Gaël

1012612

1

2383-ZN

France

noire

9

Leïla

2125312

2

1209-NQ

France

noire

5

Leïla

2125312

1

2634-OS

France

bleue

5

Gaël

1162732

1

Le groupe d'attributs [ immatriculation ] est-il une clé pour notre relation ?

Non ! Même si en France, le numéro d'immatriculation d'une voiture est unique, notre relation est visiblement prévue pour contenir des voitures de pays différents. Or, il n'est pas exclu qu'un autre pays utilise (ou utilisera un jour) le même système d'immatriculation que la France. Dans ce cas, deux voitures dans le monde pourraient avoir le même numéro !

Le groupe d'attributs [ immatriculation, pays_immatriculation ] est-il une clé pour notre relation ?

Oui ! A condition de supposer qu'un numéro d'immatriculation ne peut pas être réattribué à un autre véhicule une fois qu'une voiture est détruite.

Et le groupe [ immatriculation, pays_immatriculation, couleur ] ?

Oui et Non... Comme nous venons de le voir, le groupe [ immatriculation , pays_immatriculation ] est déjà une clé. Ceci implique que deux lignes ne peuvent pas avoir la même valeur pour leurs attributs immatriculation et pays_immatriculation.

De manière évidente, deux lignes ne peuvent donc pas avoir les mêmes valeurs pour les 3 attributs ci-dessus.

Cependant, dans la définition de clé donnée plus haut, nous avons dit que le groupe d'attributs devait être minimal. Ici, notre groupe de 3 attributs n'est pas minimal. En effet, si on enlève l'attribut couleur, on se retrouve avec [ immatriculation, pays_immatriculation ] qui est une clé (on vient de le voir au cas précédent, j'espère que vous suivez ;) ). Couleur est donc inutile ici.

Et le groupe [ prop_num_secu ] ?

Non. Bon, certes, si nous avions une relation qui représentait des personnes de nationalité française, alors le numéro de sécurité sociale serait une clé. Mais ici, ce n'est pas le cas : notre relation représente des voitures, pas des personnes. Deux voitures peuvent avoir le même propriétaire, et donc avoir la même valeur pour l'attribut prop_num_secu.

Et le groupe [ prop_num_secu, prop_num_voiture ] ?

Oui, c'est une clé. En effet, si deux voitures ont le même propriétaire (identifié par prop_num_secu), elles ne peuvent pas avoir à la fois le même propriétaire ET le même prop_num_voiture.

En résumé

  • Une clé, c'est un groupe d'attributs (= un groupe de colonnes).

  • Pour qu'un groupe d'attribut soit une clé, il faut être sûr que deux tuples (= deux lignes) n'auront jamais des valeurs identiques pour ces attributs.

  • Ce groupe d'attributs doit être minimal, c'est-à-dire que si on retire l'un des attributs de ce groupe, la phrase précédente n'est plus vérifiée.

Exemple de certificat de réussite
Exemple de certificat de réussite