Nie jest to bezwzględnie potrzebne do zapytania, to prawda. Istnieje z kilku powodów:
- Jako ograniczenie na stole, aby zatrzymać wstawianie czegoś, co nie wskazuje na nic;
- Jako wskazówka dla optymalizatora; i
- Ze względów historycznych było to bardziej potrzebne.
(1) jest prawdopodobnie najważniejszym z trzech. Nazywa się to integralności referencyjnej . Oznacza to, że jeśli w kluczu obcym istnieje wartość, w tabeli nadrzędnej będzie odpowiedni rekord z tą wartością jako kluczem podstawowym.
Biorąc to pod uwagę, nie wszystkie bazy danych obsługują integralność referencyjną (np. tabele MySQL/MyISAM), a te, które niekoniecznie ją wymuszają (ze względu na wydajność).