Bonjour,
Faire des jointures sur un varchar n'est pas du tout un problème si :
- Soit tu as un SGBD qui te permet de définir les FK et que tu respectes FK subset PK
- Soit tu as manuellement fixé un index sur le champ cible (et, dépendant du SGBD, sur le champ source, comme en Mysql par ex).
Dans ces deux situations, tu auras les mêmes performances que s'il s'agissait d'un int.
Pour répondre à ta question de comparaison de chaines, voici un extrait de la doc mysql 5 :
"Les valeurs contenues dans les colonnes de type VARCHAR sont de tailles variables. Vous pouvez déclarer une colonne VARCHAR pour que sa taille soit comprise entre 1 et 255, exactement comme pour les colonnes CHAR. Par contre, contrairement à CHAR, les valeurs de VARCHAR sont stockées en utilisant autant de caractères que nécessaire, plus un octet pour mémoriser la longueur. Les valeurs ne sont pas complétées. Au contraire, les espaces finaux sont supprimés avant stockage"