Autant que je sache, de nombreux SGBD (par exemple, mysql, postgres, mssql) utilisent des combinaisons fk et pk uniquement pour limiter les modifications de données, mais ils sont rarement utilisés de manière native pour sélectionner automatiquement les colonnes à joindre (comme le fait la jointure naturelle avec des noms). Pourquoi donc? Si vous avez déjà défini une relation entre 2 tables avec un pk / fk, pourquoi la base de données ne peut-elle pas comprendre que si je joins ces tables, je veux les joindre sur les colonnes pk / fk?
EDIT: pour clarifier un peu:
supposons que j'ai une table1 et une table2. table1 on a une clé étrangère sur la colonne a, qui fait référence à la clé primaire sur table2, la colonne b. Maintenant, si je rejoins ces tables, je devrai faire quelque chose comme ceci:
SELECT * FROM table1
JOIN table2 ON table1.a = table2.b
Cependant, j'ai déjà défini avec mes clés que table1.a fait référence à table2.b, il me semble donc qu'il ne devrait pas être trop difficile de faire en sorte qu'un système de SGBD utilise automatiquement table1.a et table2.b comme colonnes de jointure, de telle sorte que l'on peut simplement utiliser:
SELECT * FROM table1
AUTO JOIN table2
Cependant, beaucoup de SGBD ne semblent pas implémenter quelque chose comme ça.