De refererende sleutel definieert een parent-child relatie tussen twee tabellen. De primaire sleutel in de bovenliggende tabel is de externe sleutel in de maximaal n onderliggende tabelrijen.
Als nu die primaire sleutel in de bovenliggende tabel UPDATE krijgt, treedt de UPDATE-REGEL in werking. Ofwel alle onderliggende rijen worden ook bijgewerkt, ingesteld op NULL of wat dan ook. Het beste is echter om een primaire sleutel te hebben die NOOIT verandert (een vaste ID of zoiets), dus dat is de minder belangrijke regel.
De belangrijkste is de DELETE-regel - wat als de bovenliggende rij wordt verwijderd (bijv. de Order wordt verwijderd)? U kunt ook alle onderliggende rijen (alle orderregelitems) verwijderen met CASCADE DELETE, of u kunt hun externe sleutel instellen op NULL (ze hebben geen bovenliggende meer) - dat is helemaal aan uw concrete scenario.
In het scenario Order/orderregels kan het heel handig zijn om de orderregels te verwijderen wanneer de volledige bestelling wordt verwijderd, maar u wilt waarschijnlijk een product niet verwijderen, alleen omdat een bestelling die ernaar verwijst, is verwijderd - er is geen één enkel JUIST antwoord - het hangt af van uw scenario en uw app.
Marc