Не е строго необходимо за заявката, вярно е. Той съществува поради няколко причини:
- Като ограничение на таблицата, за да ви спре да вмъквате нещо, което не сочи към нищо;
- Като улика за оптимизатора; и
- По исторически причини къде е било по-необходимо.
(1) вероятно е важното от трите. Това се нарича референтна цялост . Това означава, че ако има стойност във външен ключ, ще има съответен запис с тази стойност като първичен ключ в родителската таблица.
Като се има предвид това, не всички бази данни поддържат референтна цялост (напр. MySQL/MyISAM таблици) и тези, които не я налагат непременно (по съображения за производителност).