Främmande nycklar
upprätthålla referensintegritet
. Dessa begränsningar garanterar att en rad i en tabell order_details
med ett fält order_id
hänvisar till en orders
Tabell kommer aldrig att ha ett order_id
värde som inte finns i orders
tabell.
Främmande nycklar krävs inte för att ha en fungerande relationsdatabas (i själva verket MySQL:s standardlagring motorn stöder inte FKs), men de är definitivt viktiga för att undvika brutna relationer och föräldralösa rader (dvs. referensintegritet). Förmågan att upprätthålla referensintegritet på databasnivå krävs för C i ACID att stå.
När det gäller dina farhågor angående prestanda, i allmänhet finns det en prestationskostnad, men kommer förmodligen att vara försumbar. Jag föreslår att du lägger in alla dina främmande nyckelbegränsningar och experimenterar bara utan dem om du har verkliga prestandaproblem som du inte kan lösa annars.