Por lo que pude descubrir, muchos DBMS (por ejemplo, mysql, postgres, mssql) usan combinaciones fk y pk solo para restringir los cambios en los datos, pero rara vez se usan de forma nativa para seleccionar automáticamente columnas para unir (como la combinación natural hace con nombres). ¿Porqué es eso? Si ya ha definido una relación entre 2 tablas con un pk / fk, ¿por qué la base de datos no puede darse cuenta de que si me uno a esas tablas quiero unirlas en las columnas pk / fk?
EDITAR: para aclarar esto un poco:
supongamos que tengo una tabla1 y una tabla2. la tabla 1 tiene una clave externa en la columna a, que hace referencia a la clave primaria en la tabla 2, la columna b. Ahora, si me uno a estas tablas, tendré que hacer algo como esto:
SELECT * FROM table1
JOIN table2 ON table1.a = table2.b
Sin embargo, ya definí usando mis claves que table1.a hace referencia a table2.b, por lo que me parece que no debería ser difícil hacer que un sistema DBMS use automáticamente table1.a y table2.b como columnas de unión, tal que uno simplemente puede usar:
SELECT * FROM table1
AUTO JOIN table2
Sin embargo, muchos DBMS no parecen implementar algo como esto.