Наскільки я міг дізнатися, що багато СУБД (наприклад, mysql, postgres, mssql) використовують комбінації fk і pk лише для обмеження змін у даних, але вони рідко використовуються в натурному режимі для автоматичного вибору стовпців для приєднання (як, наприклад, природне об'єднання з іменами). Чому так? Якщо ви вже визначили зв’язок між двома таблицями з pk / fk, чому база даних не може з'ясувати, що якщо я приєднаюся до цих таблиць, я хочу приєднати їх до стовпців pk / fk?
EDIT: щоб трохи уточнити це:
припустимо, у мене є таблиця1 і таблиця2. one1 має зовнішній ключ стовпця a, який посилається на первинний ключ у table2, стовпчик b. Тепер, якщо я приєднаюся до цих таблиць, мені доведеться зробити щось подібне:
SELECT * FROM table1
JOIN table2 ON table1.a = table2.b
Однак я вже визначив, використовуючи свої ключі, що table1.a посилається на table2.b, тому мені здається, що не повинно бути складно зробити так, щоб система СУБД автоматично використовувала table1.a та table2.b як стовпці об'єднання, такий, що можна просто використовувати:
SELECT * FROM table1
AUTO JOIN table2
Однак багато СУБД, схоже, не реалізують щось подібне.