Fremmednøglen definerer et forældre-barn-forhold mellem to tabeller. Den primære nøgle i den overordnede tabel er den fremmede nøgle i de op til n underordnede tabelrækker.
Hvis nu den primære nøgle i den overordnede tabel får OPDATERING, starter OPDATERINGSREGLEN. Enten bliver alle underordnede rækker også opdateret, sat til NULL eller hvad som helst. Bedste praksis er dog at have en primær nøgle, der ALDRIG ændres (et fast id eller noget), så det er den mindre vigtige regel.
Den vigtigere er SLET-reglen - hvad hvis den overordnede række slettes (f.eks. er ordren slettet)? Du kan enten også slette alle underordnede rækker (alle ordrelinjeposterne) med CASCADE DELETE, eller du kan indstille deres fremmednøgle til NULL (de har ikke en forælder længere) - det er helt op til dit konkrete scenario.
I scenariet Ordre/ordrelinjer kan det være helt nyttigt at slette ordrelinjerne, når hele ordren bliver slettet, men du vil sandsynligvis ikke slette et produkt, bare fordi en ordre, der henviser til det, er blevet slettet - der er ingen ét enkelt KORREKT svar - det afhænger af dit scenarie og din app.
Marc