A moins que vous ne soyez votre developpeur aguerri ou un fin connaisseur des bases de donnees, elles vous ont si»rement deja donne du fil a retordre.

A moins que vous ne soyez votre developpeur aguerri ou un fin connaisseur des bases de donnees, elles vous ont si»rement deja donne du fil a retordre.

Je ne vais jamais ici expliquer nos bases des relations, car ce n’est jamais le but, mais les differentes relations possible entre des tables. des informations basiques paraissent informations dans mon cours en ligne, a ma lecon 16 (payant).

Notre prerequis pour suivre ce didacticiel est de savoir au moins legerement jouer avec les relations avec le menu Outils/Relations

Mes exemples cites dans ce didacticiel

se reposent sur cette base de precisions.

Exemple 1 : Notre plus courant, la relation 1 a plusieurs

Ca, c’est vraiment J’ai relation Notre plus courante.

Imaginez la table Rel1_T_Client avec 2 champs : NomClient et PaysOrigine. NomClient reste en cle primaire. Bon, votre n’est gui?re une agreable idee de mettre NomClient en Cle primaire puisque dans notre vie courante, plusieurs clients peuvent avoir le meme nom, mais c’est Afin de simplifier.

Nous avons un 2eme champ PaysOrigine qui n’est pas en cle primaire, forcement, puisqu’il est en mesure de y avoir diverses fois le aussi (2 fois Belgique dans une cas).

L’autre table s’appelle Rel1_T_Pays, et ne inclut qu’un seul champ Pays, en cle primaire (oui, une telle fois, il ne est en mesure de gui?re y avoir 2 fois le meme pays). Constatez que Les champs Pays et PaysOrigine que nous allons lier ensemble ne portent pas le meme nom, et cela ne gene en que dalle le mecanisme relationnel..

On peut beaucoup evidemment creer une liste deroulante dans la table Rel1_T_Client, sur le champ PaysOrigine, qui se basera sur le champ Pays de Rel1_T_Pays. Je ne m’appesantis gui?re via ces listes Afin de rester vraiment au sein d’ votre histoire de relations pure et dure.

On va pouvoir donc avoir un client n’ayant pas de pays (Daniel), et des clients ayant le meme pays (Alice et Charles). MAIS, il est impossible de dire que Daniel vient du Chili pourquoi pas, car le Chili n’existe gui?re dans Rel1_T_Pays.

C’est dans Outils/Relations que nous allons faire glisser PaysOrigine de Rel1_T_Client sur Pays de Rel1_T_Pays. (Dans un sens ou dans l’autre, aucune importance)

Et nous obtenons :

Les champs en gras NomClient et Pays seront simplement nos cles primaires. Et le petit 1 et le 8 couche (signe qui veut dire “Infini”) seront la preuve que l’integrite referentielle a bien ete appliquee. Si nous avions eu des clients qui provenaient du Chili notamment, c’est a dire quand il y avait “Chili” indique Afin de un de la clienti?le, alors, Access n’aurait jamais accepte de faire l’integrite referentielle.

Il pourra y avoir d’autres soucis, comme le fait de ne point fermer une table avant d’aller dans les relations, qui provoque des erreurs, mais a nouveau, referez-vous a le cours pour des informations plus basiques.

Modi?le 2 : une meme table se rattache a quelques champs, de 1 a quelques

Ce 2eme exemple ressemble enormement au premier, mais depuis votre fois deux champs qui demandent a etre rattaches a une seule table externe :

Nous avons une telle fois votre champ PaysOrigine et un champ PaysHabitation.

Vous savez quoi ? ca ne pose pas trop de probleme ! Dans outils/Relations, il suffira d’ajouter 2 fois Rel2_T_Pays, comme ceci :

J’INSISTE : Rel2_T_Pays _1 n’est PAS une copie de la table Rel2_T_Pays ! sites de rencontres de motards en ligne C’est simplement la maniere d’Access de preciser que la meme table est utilisee 2 fois.

Modi?le 3 : la relation de 1 a 1

La relation 1 a 1 reste vraiment plus rare que la relation 1 a diverses. C’est aussi possible que vous n’en ayiez jamais besoin. Mais c’est beaucoup de connaitre a quoi i§a est en mesure de servir !

Saviez-vous qu’Access ne gere gui?re un nombre illimite de champs ? Eh non ! A partir d’une centaine de champs, vous devez s’attendre a votre qu’il vous dire que la table comporte de trop nombreux champs ! Ca vous interesse, les limites d’Access ? Cliquez ici !

Imaginez que vous avez une table absolument gigantesque gerant par exemple l’etat de patient d’un hopital. Il y aura naturellement son nom, le age, son poids, puis son taux de cholesterol, de glycemie, ainsi, ensuite son nombre de globules rouges, blancs, machins bidules, trucs. bref, je ne suis nullement medecin, mais je peux imaginer qu’on a besoin de 200 renseignements plusieurs pour un meme patient. Alors donc, comme vous n’arriverez pas a mettre 200 champs dans une aussi table, vous creerez deux tables, qui seront liees de 1 a 1.

Vous comprenez le principe ? Bon, Afin de ne pas nous attarcder dans le milieu medical, nous allons prendre un modi?le tout bete : Nous allons coder une table avec les precisions generales de la clienti?le, et une 2eme table avec les informations Telecom (Telephone, fax, e-mail, . )

Il est tres important que des deux champs lies (Ici NomClient et NomClient) soient en cle primaire, sinon, si l’un des deux ne l’est jamais, ca ne fera jamais une relation 1 a 1 mais 1 a diverses.

ATTENTION : Normalement, le sens dans lequel vous tirez 1 champ pour aller vers l’autre n’a aucune importance. En tout cas Afin de bien ce qui concerne nos champs de 1 a quelques. Mais dans le contexte des champs relies de 1 a 1, ca A VRAIMENT de l’importance. Il faudra beaucoup tirer d’la table principale (ici Rel3_T_Client) VERS la ou les autres tables liees de 1 a 1 (ici Rel3_T_ClientTelecom).

Notre raison en est que tel les 2 tables seront liees avec integrite referentielle, il va falloir donc qu’un client qui existe dans une table doit exister dans l’autre. Mais dans la situation tout d’un NOUVEAU client, comment pourrait-il etre lie puisque le temps de le creer au sein d’ une table, y n’existe jamais dans l’autre, vous comprenez ?

Si je cree Francois comme nouveau client dans Rel3_T_Client, moyen que je ferme la table, et que j’aie le rajouter dans Rel3_T_:Telecom, Access va hurler : “He ! Vous ne pouvez pas rajouter Francois dans la toute premiere table, puisqu’il n’existe nullement dans la 2eme !” Et reciproquement !

Et on fera comment alors .

Eh bien, en faisant bien gaffe de tirer les champs une table principale par l’autre et pas l’inverse, vous pourrez aussi creer votre nouveau client dans Rel3_T_Client sans Afin de autant que celui-ci y ait de relation avec l’autre table Rel3_T_Telecom. C’est d’ailleurs de que j’ai fera.

MAIS vous ne pouvez Manque creer de nouveau client dans Rel3_T_Telecom avant de l’avoir cree dans Rel3_T_Client.

A part ca, ne creez aucun tables multiples “pour faire joli” ou Afin de la jouer look genre “Je sais utiliser des relations 1 a 1”. Tant que vous pouvez tout stocker au sein d’ une meme table, ca facilite les choses. d’autant que vous pouvez coder des requetes qui affichent tels ou tels champs.

Exemple 4 : la relation sans integrite referentielle

On va pouvoir reconnai®tre d’une maniere generale que “normalement”, toutes les tables de la base de precisions sont reliees “1 a plusieurs”, les unes avec les autres. Mes relations 1 a 1 seront rares.

Mes relations sans integrite referentielle pourront se Realiser n’importe De quelle fai§on : vous pouvez tirez n’importe quel champ de n’importe quelle table, aussi si leur type de donnees est divers, de l’instant que vous ne cochez nullement “integrite referentielle”. Quand vous creez une liste deroulante basee sur une nouvelle table, a Notre fin de l’assistant, il vous devoile “Voulez-vous que des relations soient creees ?”. Si vous repondez Oui, vous aurez une relation sans integrite referentielle.

Si vous entrez dans une base de donnees dans laquelle vous constatez que la quasi totalite des tables sont liees les unes aux autres sans integrite, vous pouvez etre presque certain qu’elle fut creee avec un quidam qui ne connait nullement le fonctionnement des relations.

Il existe toutefois des cas ou 2 tables ont interet a etre reliees sans integrite referentielle.

Imaginons une table Rel4_T_Client, avec le nom de la clienti?le, et sa ville de naissance qui est une liste deroulante qui va puiser les informations dans Rel4_T_Ville :

Bon nombre de gens proviennent de la vilel Suisse, mais souvent, il y en a 1 qui vient d’une metropole francaise, voire italienne ou enfin de chaque metropole de l’univers.

Leave a Comment

Your email address will not be published. Required fields are marked *