Voici à quoi devraient ressembler vos 2 tables après nettoyage.
Vous constatez donc bien que, à part les vides, tous les PaysOrigine des clients possèdent leur correspondance dans T_Pays, mais tous les Pays de T_Pays n'ont pas forcément de correspondance vers T_Client.
Les conditions pour que l'intégrité référentielle soit possible sont remplies !.
Fermez les tables, retournez dans les relations, recréez encore la liaison entre Pays de T_Pays et PaysOrigine de T_Client, cochez encore la case Appliquer l'intégrité référentielle et cliquez sur Créer.
O joie ! O bonheur ! Il accepte ! Il n'y a plus de message d'erreur ! Champagne !
Regardez attentivement la différence entre une relation sans intégrité référentielle et avec :
Il y a à un 1 du côté de la table avec la clé primaire, et un 8 couché (Qui représente l'infini en mathématique) du côté de l'autre table.Ca veut dire que 1 pays dans T_Pays peut être représenté autant de fois qu'on veut dans T_Client (Actuellement, on a deux clients Suisse, mais on pourrait en avoir zéro, 10 ou trois millions).
Limiter à liste VS intégrité référentielle
Maintenant, fini de rire ! Plus question d'écrire n'importe quoi n'importe comment !
Allez dans la table T_Client, et assurez-vous que dans le champ PaysOrigine, la propriété Limiter à liste soit bien définie sur Non. C'est pour qu'on puisse écrire autre chose que ce qui est proposé dans la liste. Comme vous allez constater que nous n'allons justement pas pouvoir entrer autre chose que ce qui est proposé dans la liste (à cause de l'intégrité rérérentielle), je ne voulais pas que vous imaginiez que c'est à cause de cette propriété.
Lancez la table en mode saisie de données, Et écrivez Allemagne comme PaysOrigine de Chaplin (Un
élément hors-liste, donc).
Tant que vous n'enregistrez pas, vous pouvez cliquer dans les différents champs de Chaplin, Access ne bronche pas (Alors que si vous aviez indiqué Limiter à liste : oui, il aurait déjà affiché une erreur).
Mais à l'instant de l'enregistrement, vous avez alors ce message d'erreur (facile à comprendre, pour une fois ) :
Il vous est donc impossible d'enregistrer. Ajoutez Allemagne, dans le formulaire F_Pays.
Fermez ensuite F_Pays.
Choisissez cette fois Allemagne dans Chaplin, enregistrez. Voilà ! Cette fois ça maaaaaaaaaarche !
Maintenant, fermez la table T_Client, et ouvrez T_Pays. Supprimez Italie.
Pas de souci ! Comme aucun client ne vient d'Italie, la suppression se fait sans problème.
Pas de souci ! Comme aucun client ne vient d'Italie, la suppression se fait sans problème.
Par contre, essayez maintenant de supprimer Suisse. Là, ce n'est plus possible, simplement parce qu'au moins un client est originaire de Suisse (2 clients dans notre cas) :
Nous verrons un peu plus bas dans cette leçon comment arriver à nos fins.Modification de deux tables simultanées avec "+"
Constatez une chose sympathique dans T_Pays : il y a maintenant un petit + à gauche.
Si vous cliquez dessus, vous voyez tous les clients associés. Cliquez sur le petit + de Suisse, et celui de France :
Over méga trop cool, non ?
Mieux encore : vous avez la possibilité d'ajouter ou de modifier des clients directement ici ! Essayez : Ecrivez Grande chanteuse comme remarque d'Edith Piaf, et ajoutez Roger Federer comme Suisse :
Fermez T_Pays, et ouvrez T_Client. Constatez que les changements ont été bien pris en compte :
Ils n'apparaissent pas lors de la création de la liste déroulante : la preuve, c'est que nous avons un champ VilleHabitation dans T_Client, qui est une liste déroulante basée sur T_Ville.
Eh bien, si vous allez dans T_Ville, vous ne verrez pas ces petits +.
Ben tiens ! Voilà un excellent exercice !!!
Allez dans T_Client en mode création, et commencez par glisser le champ VilleHabitation juste en dessous de Prenom, pour vous faciliter la vie.
Votre exercice consiste à créer une relation avec intégrité référentielle entre T_Ville et T_Client. Pour ce faire, vous allez évidemment rencontrer quelques problèmes, sinon ce ne serait pas drôle ! Pas d'inquiétude : ce ne sont que des problèmes du même genre que ceux que nous avons eu avec les pays.
Afin de créer la relation entre les pays et les clients, nous avons refait, un peu plus haut dans cette leçon, la liste déroulante, et au dernier moment, nous avons répondu Oui à la question "La table doit être enregistrée avant que les relations ne puissent être créées".
A la fin de l'exercice, vous devez avoir la relation avec intégrité référentielle, ainsi que les petits + dans T_Client :
Si vous n'y arrivez pas, vous pourrez de toute façon télécharger la base de données à la fin de la leçon, qui contient la relation correcte.
Votre exercice consiste à créer une relation avec intégrité référentielle entre T_Ville et T_Client. Pour ce faire, vous allez évidemment rencontrer quelques problèmes, sinon ce ne serait pas drôle ! Pas d'inquiétude : ce ne sont que des problèmes du même genre que ceux que nous avons eu avec les pays.
Afin de créer la relation entre les pays et les clients, nous avons refait, un peu plus haut dans cette leçon, la liste déroulante, et au dernier moment, nous avons répondu Oui à la question "La table doit être enregistrée avant que les relations ne puissent être créées".
Ne refaites pas ça : allez simplement dans les relations, et cliquez sur Afficher la table, et choisissez T_Ville :
Et voià ! A vous ! A vous de déterminer pourquoi l'intégrité référentielle ne fonctionne pas, ajouter une clé primaire et compléter T_Ville si besoin !A la fin de l'exercice, vous devez avoir la relation avec intégrité référentielle, ainsi que les petits + dans T_Client :
Aucun commentaire:
Enregistrer un commentaire