OVH Cloud OVH Cloud

Intégrité référentielle

2 réponses
Avatar
Antille Jean-Jacques
Bonjour!
J'ai une table avec une double clé primaire et l'un de ces deux champs est
relié à une autre table. J'aimerais mettre l'intégrité référentielle à cette
relation, mais j'obtiens le message:
Index unique introuvable pour le champ référencé d'une table principale.
Je ne comprends pourquoi cette impossibilité.
Merci de vos réponses.

--
Cordiales salutations

Jean-Jacques

027 458 40 61
078 665 75 74

http://www.webmister.ch/school/accueil.asp

2 réponses

Avatar
Benoit Compoint [MS]
Bonsoir,

Tout d'abord je précise que votre table ne possède pas "une double clé
primaire", mais une seule clé primaire qui est dite "composite" parce
qu'elle est basée sur plusieurs champs (deux champs dans votre cas).

Comme votre clé primaire est basé sur ces deux champs, on peut en déduire
qu'aucun de ces deux champs ne contient une valeur "Null".
On peut aussi en déduire qu'il serait impossible de créer un "index unique"
sur l'un de ces deux champ, parce que si c'était possible, vous auriez
choisi uniquement ce champ pour créer votre clé primaire (et votre clé
primaire ne serait pas "composite").

Pour créer une relation d'intégrité référentielle portant sur l'un des deux
champs, vous pouvez a priori considérer qu'il correspond soit "au côté un"
soit au "côté plusieurs" de la relation. Mais en fait vous n'avez pas le
choix, parce que vous ne pouvez pas définir un index unique sur ce champ
(cf. paragraphe précédent).
Ce champ doit donc nécessairement correspondre au côté plusieurs de la
relation.

Pour que ce champ corresponde au côté plusieurs de la relation, vous devez
définir un index unique basé sur l'autre champ de la relation (celui qui est
défini dans l'autre table).

Si vous ne comprenez pas ces explications, merci de me donner les noms des
deux tables concernées et les noms de tous les champs concernés (dans les
deux tables). Cela m'évitera de faire des périphrases et l'explication sera
sans doute plus claire.

Benoit Compoint

"Antille Jean-Jacques" wrote in message
news:4002e069$
Bonjour!
J'ai une table avec une double clé primaire et l'un de ces deux champs est
relié à une autre table. J'aimerais mettre l'intégrité référentielle à
cette

relation, mais j'obtiens le message:
Index unique introuvable pour le champ référencé d'une table principale.
Je ne comprends pourquoi cette impossibilité.
Merci de vos réponses.

--
Cordiales salutations

Jean-Jacques

027 458 40 61
078 665 75 74

http://www.webmister.ch/school/accueil.asp




Avatar
Jean-Jacques Antille
Merci bcp Benoît pour ces explications. Quelle chance ce pouvoir compter sur
des personnes comme vous!
Très bonne journée.
Cordiales salutations.
Jean-Jacques

http://www.webmister.ch/school/accueil.asp
027 458 40 61
078 665 75 74
"Benoit Compoint [MS]" a écrit dans le
message de news: #
Bonsoir,

Tout d'abord je précise que votre table ne possède pas "une double clé
primaire", mais une seule clé primaire qui est dite "composite" parce
qu'elle est basée sur plusieurs champs (deux champs dans votre cas).

Comme votre clé primaire est basé sur ces deux champs, on peut en déduire
qu'aucun de ces deux champs ne contient une valeur "Null".
On peut aussi en déduire qu'il serait impossible de créer un "index
unique"

sur l'un de ces deux champ, parce que si c'était possible, vous auriez
choisi uniquement ce champ pour créer votre clé primaire (et votre clé
primaire ne serait pas "composite").

Pour créer une relation d'intégrité référentielle portant sur l'un des
deux

champs, vous pouvez a priori considérer qu'il correspond soit "au côté
un"

soit au "côté plusieurs" de la relation. Mais en fait vous n'avez pas le
choix, parce que vous ne pouvez pas définir un index unique sur ce champ
(cf. paragraphe précédent).
Ce champ doit donc nécessairement correspondre au côté plusieurs de la
relation.

Pour que ce champ corresponde au côté plusieurs de la relation, vous devez
définir un index unique basé sur l'autre champ de la relation (celui qui
est

défini dans l'autre table).

Si vous ne comprenez pas ces explications, merci de me donner les noms des
deux tables concernées et les noms de tous les champs concernés (dans les
deux tables). Cela m'évitera de faire des périphrases et l'explication
sera

sans doute plus claire.

Benoit Compoint

"Antille Jean-Jacques" wrote in message
news:4002e069$
Bonjour!
J'ai une table avec une double clé primaire et l'un de ces deux champs
est


relié à une autre table. J'aimerais mettre l'intégrité référentielle à
cette

relation, mais j'obtiens le message:
Index unique introuvable pour le champ référencé d'une table principale.
Je ne comprends pourquoi cette impossibilité.
Merci de vos réponses.

--
Cordiales salutations

Jean-Jacques

027 458 40 61
078 665 75 74

http://www.webmister.ch/school/accueil.asp