Theo như tôi có thể tìm ra nhiều DBMS (ví dụ: mysql, postgres, mssql) chỉ sử dụng kết hợp fk và pk để hạn chế thay đổi dữ liệu, nhưng chúng hiếm khi được sử dụng để tự động chọn các cột để tham gia (như nối tự nhiên với tên). Tại sao vậy? Nếu bạn đã xác định mối quan hệ giữa 2 bảng với pk / fk, tại sao cơ sở dữ liệu không thể hiểu rằng nếu tôi tham gia các bảng đó, tôi muốn tham gia chúng trên các cột pk / fk?
EDIT: để làm rõ điều này một chút:
giả sử tôi có một bảng1 và một bảng2. bảng1 một có một khóa ngoại trên cột a, tham chiếu đến khóa chính trên bảng2, cột b. Bây giờ nếu tôi tham gia các bảng này, tôi sẽ phải làm một cái gì đó như thế này:
SELECT * FROM table1
JOIN table2 ON table1.a = table2.b
Tuy nhiên, tôi đã xác định bằng cách sử dụng các khóa của mình mà bảng1.a tham chiếu đến bảng2.b, do đó, có vẻ như tôi không khó để tạo một hệ thống DBMS tự động sử dụng bảng1.a và bảng2.b làm cột tham gia, sao cho người ta có thể đơn giản sử dụng:
SELECT * FROM table1
AUTO JOIN table2
Tuy nhiên, nhiều DBMS dường như không thực hiện một cái gì đó như thế này.