• 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

Choisissez votre clé primaire parmi les candidates

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

Nous venons de voir que plusieurs ensembles d'attributs peuvent être des clés. Mais dans une base de données, nous souhaitons nous mettre d'accord une bonne fois pour toutes sur l'une d'entre elles.

Nous organisons donc un "grand concours" : l'élection de la clé primaire ! La clé primaire est tout simplement une clé que nous choisissons comme celle qui nous permettra d’identifier un tuple dans une relation.

A ce grand concours, toutes les clés possibles sont appelées clés candidates. Ce sont en fait toutes les clés qui remplissent les critères définis dans le chapitre précédent.

Comment choisir sa clé primaire ?

Dans le contexte des bases de données relationnelles, la notion de clé primaire est importante. En effet, certains SGBDR (systèmes de gestion de base de données relationnelles) ne sont vraiment pas contents :colere:lorsque vous créez une table sans lui spécifier de clé primaire, et ils ne manqueront pas de vous le faire savoir !

Le choix d'une clé primaire peut très bien être arbitraire. Cependant, on peut prendre en compte certains critères. En effet, une clé primaire est généralement choisie de façon à ce qu'elle soit simple, c'est-à-dire à ce qu'elle contienne le moins d'attributs possibles. De plus, on préfère généralement les attributs "basiques" (par exemple des entiers ou des chaînes de caractères courtes). Le contexte aide généralement à trouver une clé primaire qui semble la plus "logique" et intelligible pour un être humain.

Oui mais parfois, aucune des clés candidates ne contient un nombre d'attributs raisonnable et ne semble "simple" !

Exact. Dans ce cas, il est possible de créer une clé artificielle.

Qu'est-ce qu'une clé artificielle ?

Une clé artificielle est un attribut que l'on ajoute à la relation. Cet attribut n'a pas de réelle signification dans le domaine que l'on modélise, mais sa seule fonction est d'identifier de manière unique les tuples de la relation.

Vous vous souvenez de notre relation pommes ?

identifiant

masse

diamètre

couleur

nom_variété

1

151 g

8.3 cm

rouge

Ariane

2

169 g

9.1 cm

jaune

Gala

3

134 g

8.0 cm

jaune

Gala

4

134 g

8.0 cm

jaune

Ariane

Dans le domaine modélisé (celui des pommes), la masse, le diamètre et la couleur caractérisent bien une indication sur la pomme (ici, sur sa morphologie). Cependant, la colonne identifiant ne caractérise absolument pas notre pomme, en effet, on aurait très bien pu permuter les identifiants, et attribuer l'identifiant 3 (au lieu de 1) à la pomme rouge sans que cela ne modifie l'exactitude de notre représentation.

Vous l'aurez compris, l'attribut identifiant est donc une clé artificielle, car elle n'a été créée que pour différencier et identifier les pommes !

Clés primaires et valeurs nulles

Il arrive parfois que la valeur de certains attributs pour un tuple donné soit inconnue, ou bien qu'elle n'existe pas. Il est donc possible de laisser une "case blanche" dans la table.

Pour représenter une case vide, on note sa valeur comme étant NULL.

Cependant, en ce qui concerne les attributs d'une clé, il est nécessaire que ceux-ci ne soient jamais NULL. En effet, comme c'est la clé qui permet d'accéder à une ligne donnée, il faut absolument que tous ses attributs soient renseignés !

Représenter la clé primaire

 En terme de notation, il est courant d'indiquer les attributs de la clé primaire en indiquant leur nom suivi de [PK] (mis pour primary key, clé primaire en anglais) :

 

Une autre notation possible est de les indiquer en gras :

Aller plus loin : pourquoi aime-t-on les clés artificielles dans les BDD ?

En général, dans le contexte des bases de données, on aime bien utiliser des clés artificielles. Dans certaines applications, elles sont même utilisées de manière systématique. Pourquoi ?

  • Au chapitre précédent, nous nous demandions si les deux attributs [ prop_num_secu, prop_num_voiture ] constituaient une clé candidate. La réponse était oui, à condition de supposer que l'on ne prenait en compte, dans notre application, que des propriétaires de nationalité française. Cependant, si notre application évolue, et que nous souhaitons généraliser notre application à des personnes d'autres nationalités, alors notre clé n'est plus bonne. Une clé artificielle est donc une bonne solution à l'évolutivité de la base de données.

  • Pour des questions de performance (en termes de temps de calcul), les clés non artificielles ne sont souvent pas optimisées lorsqu'il est demandé au SGBDR de retrouver une ligne dans la table.

En résumé

  • Quand plusieurs clés sont possibles sur une table, on les appelle des clés candidates.

  • Parmi les clés candidates, on en choisit une qui servira de référence : c'est la clé primaire. En anglais : primary key (PK).

  • Si aucune clé candidate n'est simple et intelligible, on crée une clé artificielle, souvent appelée identifiant.

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