Page 1 sur 1

à propos de la cle etrangere

Posté : 15 avr. 2010, 13:06
par tipex
Bonjour,

je débute en sql et souhaiterai savoir si la clé étrangère doit être:
UNIQUE ou NON NULLE ou INDEXEE

voila , je m'embrouille un peu les pinceaux...

cordialement,

Re: à propos de la cle etrangere

Posté : 15 avr. 2010, 14:06
par macgawel
Bonjour.

Ca dépend... :oops:
En fait, il faut étudier la cardinalité des relations entre les tables.

En français :

Prenons la BDD d'une bibliothèque.
LIVRES (id_livre, titre, id_auteur, id_emprunteur)
AUTEURS (id_auteur, nom, prenom, divers)
EMPRUNTEURS (id_emprunteur, nom, prenom, etc.)

Cas 1 :
Un livre a forcément été écrit par un auteur, qui existe donc dans la table AUTEURS.
=> la clé étrangère LIVRES.id_auteur est définie à NOT NULL.

Cas 2 :
Un livre n'est pas forcément emprunté. Mais s'il est emprunté, c'est par un emprunteur identifié.
=> Il y a une clé étrangère LIVRES.id_emprunteur, mais elle peut être NULL.

Par définition, une clé etrangère ne doit pas être unique. Sinon, ça voudrait dire qu'on pourrait ne faire qu'une seule table...

L'indexation n'a pas vraiment de rapport. Les contraintes de clé sont des contraintes logiques, l'indexation est un mécanisme technique destiné à améliorer les performances.
A priori, pour ce que j'en sais, sur la plupart des SGBDR, s'il y a une clé etrangère définie, elle est indexée. Mais je ne le garantis pas :?:

Re: à propos de la cle etrangere

Posté : 15 avr. 2010, 14:23
par tipex
merci beaucoup pour toute ces précisions (ton exemple est simple et va à l'essentiel) :wink:

je te souhaite une belle après-midi :pouce:

Re: à propos de la cle etrangere

Posté : 15 avr. 2010, 14:25
par tipex
comment fait-on pour mettre le topic en mode "résolu"?

Re: à propos de la cle etrangere

Posté : 15 avr. 2010, 14:29
par tipex
* un bel, sorry =P~

Re: à propos de la cle etrangere

Posté : 15 avr. 2010, 17:16
par macgawel
comment fait-on pour mettre le topic en mode "résolu"?
En haut de ton premier post, il y a un bouton avec un V vert...
* un bel, sorry =P~
... Et tu peux éditer tes messages en cliquant le bouton "Editer" :mrgreen:

Re: à propos de la cle etrangere

Posté : 23 avr. 2010, 23:16
par Calimero
comment fait-on pour mettre le topic en mode "résolu"?
En haut de ton premier post, il y a un bouton avec un V vert...
* un bel, sorry =P~
... Et tu peux éditer tes messages en cliquant le bouton "Editer" :mrgreen:
... et pour avoir accès à tout ça il faut s'inscrire ;) Sinon on demande à un modérateur de le faire pour toi.