Det behövs inte strikt för frågan, det är sant. Det finns av flera anledningar:
- Som en begränsning på bordet för att hindra dig från att infoga något som inte pekar på någonting;
- Som en ledtråd för optimeraren; och
- Av historiska skäl var det mer behövligt.
(1) är förmodligen den viktiga av de tre. Detta kallas referensintegritet . Det betyder att om det finns ett värde i en främmande nyckel kommer det att finnas en motsvarande post med det värdet som en primärnyckel i den överordnade tabellen.
Med detta sagt stöder inte alla databaser referensintegritet (t.ex. MySQL/MyISAM-tabeller) och de som gör det upprätthåller inte nödvändigtvis det (av prestandaskäl).