Bonjour.
Ca dépend...
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
