• 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

Ne perdez pas de vue vos clés ...

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

Ce chapitre est un chapitre de bonnes pratiques. Il n'y a rien de technique ici, mais juste quelqu'un qui vous fait la morale :ange: et vous met en garde contre quelques pièges dans lesquels ne pas tomber !

Plus précisément, je vais vous expliquer l'importance de bien connaître les clés candidates de vos tables.

Pourquoi les clés sont-elles si importantes ?

Connaître au moins une clé candidate par table, c'est très important.

Pourquoi ? Parce qu’elles déterminent la nature des objets que vous représentez dans une table.

Imaginez-vous que quelqu'un vous envoie un fichier CSV contenant ce tableau :

id_pomme

propriétaire

couleur

masse

 1

 Luc

verte

130 g

 2

 Luc

verte

160 g

 3

Leila

rouge

 134 g

 [...]

 [...]

 [...]

 [...]

Vous vous dites "Cette table représente des pommes : 1 ligne = 1 pomme. La clé primaire est donc [id_pomme]".

Vous décidez donc de calculer la masse totale de toutes ces pommes. Vous trouvez 9.734 kg.

Sauf que... en explorant un peu plus ce tableau vers le bas, vous découvrez ceci :

id_pomme

propriétaire

couleur

masse

[...]

[...]

[...]

[...]

39

Yari

rouge

134 g

39

Doriane

rouge

134 g

40

Thanh

jaune

120 g

[...]

[...]

[...]

[...]

Vous découvrez que la pomme 39 a deux propriétaires : Yari et Doriane.

Vous n'auriez pas supposé une minute qu'une pomme puisse appartenir à 2 personnes en même temps ! Et ça change beaucoup de choses :

  • La clé primaire n'est plus [id_pomme], mais [id_pomme, propriétaire] car id_pomme contient des doublons (ici,39 est en double dans id_pomme).

  • La table en votre possession ne représente plus des pommes, mais plutôt des associations pomme-propriétaire (voir le chapitre sur les tables d'associations). Votre supposition1 ligne = 1 pomme n'est plus vraie !

Ainsi, cette table contient de la redondance, car l'information "la pomme 39 pèse 134 g" est présente sur 2 lignes. Mais vous ne pouvez pas vraiment blâmer l'expéditeur du fichier, car il n'a pas lu le chapitre sur la redondance !

Pire encore, le calcul de la masse totale est totalement faussé, car vous avez comptabilisé la masse de la pomme 39 en double (et peut-être pas que la pomme 39 !). A cause de votre erreur de calcul, vous perdez la confiance de la personne qui vous a demandé de calculer la masse totale... Bref, c'est le désastre ! :'(

Les clés dans les jointures

Bien connaître ses clés, c'est également très important lors des jointures.

En général, on effectue une jointure :

  • d'une clé étrangère d'une table A...

  • .... vers la clé primaire (ou vers une clé candidate) d'une table B.

Dans ce cas, le nombre de lignes de la table que vous obtiendrez aura :

  • autant, ou moins de lignes que A si vous faites une jointure interne,

  • autant de lignes que A si vous faites une jointure externe à gauche (avec A à gauche).

A la fin de votre jointure, pensez bien à compter le nombre de lignes.

En règle générale, dans votre condition de jointure

A.cle_étrangere = B.cle_candidate

assurez-vous qu’au moins l’un des 2 termes de part et d’autre du = soit une clé candidate ou primaire.

Si ce n’est pas le cas, ce n'est pas interdit, mais vérifiez bien que vous ne faites pas une erreur de raisonnement. Soyez-sûr que c'est ce dont vous avez vraiment besoin. Surtout, vérifiez bien la table finale en terme de cohérence et surtout en terme de nombre de lignes.

Aller plus loin : tester si un groupe d'attributs est une clé candidate

Comment vérifier si un groupe d'attributs G est une clé candidate ?

Pour le savoir, faites une projection sur G (en gros, supprimez les colonnes qui ne sont pas G), puis regardez s'il y a des doublons.

S'il y a des doublons, alors votre G n'est pas une clé.

S'il n'y a pas de doublons, alors il y a deux possibilités :

  1. Si vous êtes sûrs qu'aucune nouvelle ligne ne sera ajoutée, alors vous pouvez considérer que G est une clé.

  2. Si d'autres lignes seront peut-être ajoutées par la suite, il faut prendre contact avec celui (celle) qui a conçu la table, ou regarder dans la documentation qu'il (elle) a écrit, pour savoir si G est une clé, ou pour savoir ce que représente une ligne.

Oui, mais comment vérifier si une table contient des doublons ?

Vérifier si une table contient des doublons

Si votre table contient beaucoup de lignes, il est difficile de détecter à l’œil nu les doublons ! Voici donc une recette à implémenter dans votre langage de programmation préféré :

  1. Comptez le nombre de lignes de votre table.

  2. Supprimez les doublons.

  3. Re-comptez le nombre de lignes de votre table.

Si le nombre de lignes de l'étape 1 est différent de l'étape 3, alors votre table contenait des doublons !

En résumé

  • A chaque nouvelle table (que vous générez vous-même, ou que vous découvrez), connaissez au moins une clé candidate ! Vous saurez ainsi ce que représente une ligne.

  • Il y a une méthode pour vérifier si un groupe d'attributs est une clé ou non.

  • A la suite d'une jointure, vérifiez bien le nombre de lignes obtenues.

  • Lorsque vous faites une jointure sur autre chose qu'une clé étrangère, faites très attention à ce que vous faites !

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