Lorsqu’on cherchera un enregistrement de la table albums à partir du titre de l’album, Access parcourra l’index et affichera l’enregistrement correspondant à l’index qu’il aura trouvé.
Un index peut être composé d’un ou de plusieurs champs, on aurait pu indexer la table albums sur un index « titre + année » par exemple (si ça peut servir à quelque chose), de même, on peut utiliser plusieurs index pour une table, par exemple, on aurait pu indexer la table album sur les champs Titre, Genre et Support.
Pourquoi alors ne pas tout indexer ? L’idée peut sembler bonne, cela accélérerait les recherches et les tris mais ralentirait toutes les mises à jour de la table, en effet, à chaque fois qu’un champ index est modifié dans la table, il faut le modifier également dans l’index, ce qui peut coûter très cher en temps. On utilisera donc les index avec parcimonie et uniquement s’ils s’avèrent utiles.
3. Application
Maintenant que vous avez tout compris au film, nous allons nous pencher sur un autre cas de figure. Supposons qu’on veuille gérer un magasin avec Access. Créez donc les tables et les relations pour notre magasin, au cas où certains ignoreraient le fonctionnement d’un magasin, voici comment ça marche :
-
Un client commande des produits
-
Un fournisseur livre des produits
-
Le stock contient des produits
Et voilà une solution qui semble honnête :
(Les clefs primaires sont en gras, les indexes sont soulignés)
Le choix des index est totalement subjectif, il sera surtout fait en fonction des besoins ultérieurs. Ce n’est pas grave si on n’a pas choisi les bons index, il est toujours possible de les modifier ultérieurement.
Une table « clients »
Une table « produits »
Une table « Commandes » qui va indiquer ce qu’a commandé le client
On est d’accord, une commande peut avoir plusieurs lignes (plus d’un produit commandé par commande, ça vaut mieux), pour cela, on va avoir une table « lignes de commande » qui va « relier » la commande aux produits.
Pourquoi n’avoir pas mis ça directement dans la table commande ? on retombe sur notre problème de tout à l’heure : parce qu’on ne sait pas par avance le nombre de lignes qu’on peut avoir dans une commande.