Sobes.tech
Junior

Kaip užsienio raktas veikia duomenų vientisumą duomenų bazėje?

sobes.tech AI

Atsakymas iš AI

Užsienio raktas (foreign key) užtikrina duomenų nuorodų vientisumą, garantuodamas, kad vieno lentelės stulpelio (vaiko lentelė) reikšmės atitinka kitos lentelės (tėvo lentelė) stulpelio reikšmes.

Įtakos duomenų vientisumui:

  1. Uždraudžia įterpti į vaiko lentelę įrašus su neegzistuojančia reikšme atitinkame tėvo lentelės stulpelyje. Bandymas įterpti eilutę, kuri nurodo neegzistuojantį tėvo įrašą, sukels klaidą.
  2. Apriboja tėvo lentelės įrašų ištrynimą, į kuriuos nurodo įrašai vaiko lentelėje. Veiksmas ištrynus priklauso nuo nustatytos (ON DELETE) veiklos:
    • RESTRICT (numatytasis): Ištrynimas draudžiamas.
    • CASCADE: Ištrina priklausomus įrašus vaiko lentelėje.
    • SET NULL: Nustato reikšmę NULL atitinkame stulpelyje vaiko lentelėje (jei stulpelis leidžia NULL).
    • NO ACTION: Panašus į RESTRICT standartiniame patikrinime, bet gali skirtis vykdymo metu.
  3. Apriboja tėvo lentelės įrašų atnaujinimą. Veiksmas atnaujinus taip pat priklauso nuo nustatytos (ON UPDATE) veiklos:
    • RESTRICT (numatytasis): Atnaujinimas draudžiamas.
    • CASCADE: Atnaujina atitinkamą reikšmę priklausomuose įrašuose vaiko lentelėje.
    • SET NULL: Nustato reikšmę NULL atitinkame stulpelyje vaiko lentelėje (jei stulpelis leidžia NULL).
    • NO ACTION: Panašus į RESTRICT standartiniame patikrinime, bet gali skirtis vykdymo metu.

Užsienio raktas padeda išvengti " našlaičių" įrašų atsiradimo ir užtikrina, kad tarp lentelių esantys ryšiai išliktų teisingi.