![]()
Pour suivre cette leçon, vous devez avoir suivi les leçons précédentes. Ou plus précisément, vous devez être en possession de la base de données procd.mdb telle qu'elle était à la fin de la leçon précédente. Si vous n'êtes pas certain de l'avoir, vous pouvez la télécharger ici
| La fois passée, nous avons parlé des relations entre les tables. Nous avons pris comme exemple le champ PaysOrigine de T_Client que nous avons relié avec le champ Pays de la table Pays. Nous avons constaté que si nous n'appliquons pas l'intégrité référentielle, nous pouvons lier n'importe quel champ de n'importe quelle table, et que ça n'avait pas grand intérêt... L'intégrité référentielle sert à "policer" la base de données et à exiger que tous les clients fassent partie d'un pays qui existe dans la table des pays,ou qu'ils ne fassent partie d'aucun pays. |
| Dans cette leçon, nous allons voir les options supplémentaires qu'offrent les relations. Nous allons pouvoir changer ou supprimer les pays dans la table T_Pays, et les voir instantanément se mettre à jour dans la table T_Client. |
Nous allons essayer : Ouvrez T_Pays, et remplacez Suisse par Suice.
. Sauvegardez
(SHIFT ENTER si vous avez oublié). Et voilà. Ca marche !
Bien. Nous allons essayer de changer l'orthographe d'un pays dont un ou plusisuers clients est originaire. Par exemple : Josiane Balasco vient de France. Restez dans T_Pays, et remplacez France par Frense, et enregistrez.
. C'est bien ce que je
disais : Il y a un problème !D'accord... Eh bien, vous n'avez qu'à aller dans T_Client, chercher Josiane Balasco, et remplacer son France par Frense, et puis voilà !
Non, c'est vrai... Vous avez raison. Bon ceci dit, ça tombe bien qu'on ne puisse pas changer l'orthographe de France, puisque c'est la bonne orthographe. C'est quand même ce qu'on voulait, non ?
Bon, d'accord ! Bon. C'est quoi qui vous ennuie ? Ce sont les relations ? Eh bien vous n'avez qu'à les supprimer, chercher tous les clients qui viennent de France, les remplacer par "République Française" à la main, et à la fin, remplacer France par République Française dans la table T_Pays, comme ça, de nouveau les 2 tables correspondantes, et vous pourrez remettre la relation avec intégrité référentielle ! Vous suivez ?
Allez, vous avez gagné : Je vous donne l'astuce. Nous allons utiliser notre Suice. Un peu plus hat dans la leçon, vous avez changé Suisse en Suice. Vous n'avez pas eu de problèmes puisqu'aucun client ne provenait de Suisse - Ni de Suice d'ailleurs.
Allez dans T_Client, et définissez 3 clients comme provenant de Suice : 
Et maintenant, essayez de rectifier l'orthographe de Suice en Suisse pour, par exemple Juliette Griko
Oui. Maintenant, quittez T_Pays, allez dans T_Client, et changez Suice en Suisse. Vous pouvez ?
L'astuce consiste à quitter la table T_Client, et aller dans
Outils/Relations. Cliquez 2 fois sur la relation T_Client.PaysOrigine <-->
T_Pays.Pays. Cochez "Mettre à jour en cascade les champs correspondants" :
. Cliquez sur OK, et quittez
les relations.
Exactement. Lorsque vous irez dans T_Pays, et que vous changerez Suice en Suisse, Access, discrètement, changera tous les "Suice" de T_Client en "Suisse" (En l'occurrence : Juliette Griko, Jean-Paul Belmondos et Jules Martin).
Nous allons essayer : Allez donc dans T_Pays, et Changez Suice en Suisse.
Quittez T_Pays, et retournez dans T_Client : Regardez les 3 clients sont devenus
"Suisse" : 
Effectivement, ça ne marche pas dans ce sens là. C'est seulement dans la
table du côté 1 que ça marche : 
Non. Du tout ! En fait ce ne serait pas possible. Il y aurait à nouveau l'intégrité référentielle qui nous empêcherait de le faire. Essayez. Effacez Suisse de T_Pays. Vous obtenez le message d'erreur suivant :

Absolument ! D'ailleurs, si vraiment vous voulez supprimer la Suisse, vous n'avez qu'à supprimer tous les clients qui viennent de Suisse, et alors, Access vous laissera supprimer Suisse de T_Pays puisqu'il n'y a alors plus de clients correspondants.
Oui, on peut. Par exemple, imaginons que vous commercialisez des médicaments, et que soudain, une nouvelle loi suisse interdit complètement la vente par correspondance de médicaments... Du coup, vous pouvez rayer de votre table clients tous vos clients suisses. On peut :
Oh suprise ! Il y a 3 clients en moins : Les 3 suisses (Sans jeu de mots...)
: 
Et bien entendu, les IDClient qui sont des numéros automatiques ne se suivent plus, mais ça vous vous en doutiez. (revoyez la leçon sur les NuméroAuto si vous avez besoin de vous rafraîchir la mémoire)
Absolument, oui. Il faut avoir la tête bien sur les épaules, et déterminer les implications de vos choix !
| Il faut regarder chaque relation avec soin, et définir chaque option de relation en toute connaissance de cause. Il faut imaginer la base de données une fois terminée, et se poser la question à chaque fois : Est-il bien d'établir une relation, faut-il y appliquer l'intégrité référentielle, et est-il nécessaire, recommandé, ou interdit de "Mettre à jour en cascade les champs correspondants" et/ou "Effacer en cascade les enregistrements correspondants". Notez qu'il n'est pas possible de demander des options pour une relation qui n'a pas d'intégrité référentielle. |
Pour voir les solutions, il vous suffit de sélectionner le questionnaire ci-dessus : 3 petites étoiles *** apparaîtront en face des bonnes réponses. |
|
Nous allons faire un exercice amusant qui va bien illustrer ce concept de modification et de suppression des données en cascade. Nous allons lier 3 tables l'une à l'autre. Vous allez constater 2 fautes d'orthographe : Belgike et Europpe. Les voici (Créez une base de données Intercontinental.MDB dans laquelle vous créez ces 3 tables): T_Client
T_Pays
T_Continent
Une fois ces 3 tables créées, il s'agit de les relier entre elles...A vous de voir quels champs de quelles tables se lient avec quels champs de quelles autres tables... Une fois qu'elles sont liées (Avec intégrité référentielle évidemment...), il s'agit de donnes les options nécessaires pour corriger Belgike et Europpe (Bien évidemment, il doit suffire d'écrire UNE SEULE fois Belgique pour que la correction se fasse automatiquement partout. Même commentaire pour Europpe !) Par contre, il NE DOIT PAS être possible d'effacer
un pays dont au moins un client est d'origine (Ici, il s'agit de Belgique,
France, Chine et Japon). Une fois tout ce travail terminé, quels sont les
continents que vous pouvez effacer ? Téléchargez la solution de l'exercice ici (Pour tester la solution, il suffit de changer Belgike en Belgique dans la table T_Pays, et Europpe en Europe dans la table T_Continent, pour constater que c'est possible et que les modifications sont répercutées dans les tables correspondantes. Et vous ne pouvez pas effacer Belgique ni France ni Chine ni Japon dans T_:Pays, car des clients correspondent) |
Si vous n'êtes pas tout à fait certain d'avoir suivi correctement toutes les étapes de cette leçon, vous avez la possibilité de télécharger ici la version de procd.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.
| Lors de la prochaine leçon, nous verrons qu'Access est ouvert sur le monde extérieur : Il va pouvoir récupérer des données en provenances d'autres programmes de gestion de bases de données (comme DBase ou Paradox), mais maintient de forts liens avec Excel, si bien qu'on n'a pas souvent à se demander quel programme on doit utiliser pour faire telle ou telle chose, du fait même que de toute façon, les données sont assez facilement transportables. Nous verrons qu'il est même possible de transformer les tables en de simpes fichiers textes lisibles par n'iporte quel ordinateur. Bien entendu, nous verrons également comment passer de stables d'une base de données à une autre, cequi est sans doute l'opération la plus facile |