Den främmande nyckeln definierar en förälder-barn-relation mellan två tabeller. Den primära nyckeln i den överordnade tabellen är den främmande nyckeln i de upp till n underordnade tabellraderna.
Om nu den primära nyckeln i den överordnade tabellen får UPPDATERING, börjar UPPDATERINGSREGLEN. Antingen uppdateras även alla underordnade rader, inställda på NULL eller vad som helst. Bästa praxis är dock att ha en primärnyckel som ALDRIG ändras (ett fast ID eller något), så det är den mindre viktiga regeln.
Den viktigaste är DELETE-regeln - vad händer om den överordnade raden tas bort (t.ex. ordern tas bort)? Du kan antingen också ta bort alla underordnade rader (alla orderrader) med CASCADE DELETE, eller så kan du ställa in deras främmande nyckel till NULL (de har ingen förälder längre) - det är helt upp till ditt konkreta scenario.
I scenariot Order/orderrader kan det vara helt användbart att ta bort orderraderna när hela ordern raderas, men du vill förmodligen inte ta bort en produkt, bara för att en order som refererar till den har tagits bort - det finns ingen ett enda RÄTT svar - det beror på ditt scenario och din app.
Marc