Nó không hoàn toàn cần thiết cho truy vấn, đó là sự thật. Nó tồn tại vì một số lý do:
- Như một ràng buộc trên bảng để ngăn bạn chèn thứ gì đó không trỏ đến bất kỳ thứ gì;
- Là một đầu mối cho trình tối ưu hóa; và
- Vì lý do lịch sử, nơi nào là cần thiết hơn.
(1) có lẽ là một trong ba điều quan trọng. Điều này được gọi là tính toàn vẹn tham chiếu . Có nghĩa là nếu có một giá trị trong khóa ngoại thì sẽ có một bản ghi tương ứng với giá trị đó làm khóa chính trong bảng mẹ.
Điều đó đang được nói, không phải tất cả các cơ sở dữ liệu đều hỗ trợ tính toàn vẹn tham chiếu (ví dụ:bảng MySQL / MyISAM) và những cơ sở dữ liệu không nhất thiết phải thực thi nó (vì lý do hiệu suất).