据我所知,许多DBMS(例如mysql,postgres,mssql)仅使用fk和pk组合来约束对数据的更改,但是它们很少用于本地自动选择要连接的列(就像自然连接使用名称一样)。这是为什么?如果您已经用pk / fk定义了2个表之间的关系,为什么数据库无法弄清楚如果我将那些表联接起来,我想在pk / fk列上联接它们?
编辑:澄清一下:
假设我有一个table1和一个table2。table1在a列上有一个外键,该外键引用了table2的b列上的主键。现在,如果我加入这些表,则必须执行以下操作:
SELECT * FROM table1
JOIN table2 ON table1.a = table2.b
但是,我已经使用键定义了table1.a引用table2.b,因此在我看来,让DBMS系统自动使用table1.a和table2.b作为联接列并不难,这样一个人可以简单地使用:
SELECT * FROM table1
AUTO JOIN table2
但是,许多DBMS似乎并未实现这样的功能。