Per quanto ho potuto scoprire molti DBMS (ad esempio mysql, postgres, mssql) usano le combinazioni fk e pk solo per vincolare le modifiche ai dati, ma raramente vengono utilizzate in modo nativo per selezionare automaticamente le colonne da unire (come fa l'unione naturale con i nomi). Perché? Se hai già definito una relazione tra 2 tabelle con un pk / fk, perché il database non riesce a capire che se mi unisco a quelle tabelle voglio unirle nelle colonne pk / fk?
EDIT: per chiarire un po 'questo:
supponiamo che io abbia un table1 e un table2. la tabella 1 ha una chiave esterna sulla colonna a, che fa riferimento alla chiave primaria sulla tabella2, la colonna b. Ora, se mi unisco a questi tavoli, dovrò fare qualcosa del genere:
SELECT * FROM table1
JOIN table2 ON table1.a = table2.b
Tuttavia, ho già definito usando le mie chiavi che table1.a fa riferimento a table2.b, quindi mi sembra che non dovrebbe essere difficile far sì che un sistema DBMS usi automaticamente table1.a e table2.b come colonne di join, tale che si può semplicemente usare:
SELECT * FROM table1
AUTO JOIN table2
Tuttavia, molti DBMS non sembrano implementare qualcosa del genere.