Het is niet strikt nodig voor de query, het is waar. Het bestaat om verschillende redenen:
- Als beperking op de tabel om te voorkomen dat u iets invoegt dat nergens naar verwijst;
- Als aanwijzing voor de optimizer; en
- Om historische redenen waar dat meer nodig was.
(1) is waarschijnlijk de belangrijkste van de drie. Dit heet referentiële integriteit . Het betekent dat als er een waarde in een refererende sleutel is, er een corresponderend record zal zijn met die waarde als primaire sleutel in de bovenliggende tabel.
Dat gezegd hebbende, ondersteunen niet alle databases referentiële integriteit (bijv. MySQL/MyISAM-tabellen) en die welke dat wel doen, dwingen dit niet noodzakelijk af (om prestatieredenen).