logo

Atsauces integritātes ierobežojumi DBVS

Atsauces integritātes ierobežojums ir pazīstams arī kā ārējās atslēgas ierobežojums . Ārējā atslēga ir atslēga, kuras vērtības ir iegūtas no citas tabulas primārās atslēgas.

Tabula, no kuras tiek iegūtas vērtības, ir pazīstama kā Meistars vai atsauce Tabula un tabula, kurā attiecīgi tiek ievietotas vērtības, ir zināmas kā Bērns vai atsauce Tabula, Citiem vārdiem sakot, mēs varam teikt, ka tabula, kurā ir sveša atslēga tiek saukts par bērnu galds , un tabulu, kurā ir Primārā atslēga/kandidāta atslēga tiek saukts par atsauces vai vecāku tabula . Kad mēs runājam par datu bāzes relāciju modeli, kandidāta atslēgu var definēt kā atribūtu kopu, kurai var būt nulle vai vairāk atribūtu.

Galvenās tabulas vai atsauces tabulas sintakse ir:

lambda funkcija java
 CREATE TABLE Student (Roll int PRIMARY KEY, Name varchar(25) , Course varchar(10) ); 

Šeit kolonna Roll darbojas kā primārā atslēga, kas palīdzēs atvasināt ārējās atslēgas vērtību atvasinātajā tabulā.

Atsauces integritātes ierobežojums

Bērnu tabulas vai atsauces tabulas sintakse ir šāda:

 CREATE TABLE Subject (Roll int references Student, SubCode int, SubName varchar(10) ); 

Atsauces integritātes ierobežojums

Iepriekš minētajā tabulā kolonna Roll darbojas kā Sveša atslēga, kuru vērtības ir iegūtas, izmantojot primārās atslēgas Roll vērtību no galvenās tabulas.

Ārējās atslēgas ierobežojums VAI atsauces integritātes ierobežojums.

Ir divi atsauces integritātes ierobežojumi:

Ievietot ierobežojumu: Vērtību nevar ievietot CHILD tabulā, ja vērtība neatrodas MASTER tabulā

Dzēst ierobežojumu: Vērtību nevar izdzēst no MASTER tabulas, ja vērtība atrodas CHILD tabulā

Pieņemsim, ka vēlaties ievietot Roll = 05 ar citām kolonnu vērtībām tabulā SUBJECT, tad jūs uzreiz redzēsit kļūdu. Pārkāpts ārējās atslēgas ierobežojums ' t.i., palaižot ievietošanas komandu kā:

Ievietot SUBJECT vērtībās (5, 786, OS); SQL neizklaidēs ievietošanas ierobežojuma dēļ (Tā kā jūs nevarat ievietot vērtību pakārtotajā tabulā, ja vērtība neatrodas galvenajā tabulā, jo Roll = 5 nav galvenajā tabulā, tāpēc nebūs atļauts ievadīt Roll = 5 pakārtotajā tabulā)

Tāpat, ja vēlaties dzēst Roll = 4 no STUDENT tabulas, jūs uzreiz redzēsit kļūdu. Pārkāpts ārējās atslēgas ierobežojums ' t.i., palaižot dzēšanas komandu kā:

Dzēst no STUDENTA, kur Roll = 4; SQL neizklaidēs dzēšanas ierobežojuma dēļ. (Tā kā vērtību nevar izdzēst no galvenās tabulas, ja vērtība atrodas pakārtotajā tabulā, jo Roll = 5 ir bērntabulā, tāpēc nebūs atļauts dzēst Roll = 5 no galvenās tabulas, ļauj, ja kaut kā mums izdevās izdzēst Roll = 5, tad Roll = 5 būs pieejams pakārtotajā tabulā, kas galu galā pārkāps ievietošanas ierobežojumu )

mīlošs krikets

PAR DZĒŠANU KASKĀDI.

Saskaņā ar dzēšanas ierobežojumu: vērtību nevar izdzēst no MASTER tabulas, ja vērtība atrodas BĒRNU tabulā. Rodas nākamais jautājums, vai mēs varam izdzēst vērtību no galvenās tabulas, ja vērtība atrodas pakārtotajā tabulā, nepārkāpjot dzēšanas ierobežojumu? t.i., brīdī, kad mēs izdzēšam vērtību no galvenās tabulas, tai atbilstošā vērtība ir jāizdzēš arī no pakārtotās tabulas.

Atbilde uz iepriekš minēto jautājumu ir JĀ, mēs varam dzēst vērtību no galvenās tabulas, ja vērtība atrodas pakārtotajā tabulā, nepārkāpjot dzēšanas ierobežojumu, mums ir jāveic nelielas izmaiņas, veidojot pakārtoto tabulu, t.i., pievienojot par dzēšanas kaskādi .

TABULAS SINTAKSE

java atgriešanas komanda
 CREATE TABLE Subject (Roll int references Student on delete cascade, SubCode int, SubName varchar(10) ); 

Iepriekš minētajā sintaksē tieši pēc atsauces atslēgvārda (izmanto ārējās atslēgas izveidošanai) esam pievienojuši dzēšanas kaskādi, pievienojot to tagad, mēs varam izdzēst vērtību no galvenās tabulas, ja vērtība atrodas pakārtotajā tabulā, nepārkāpjot dzēšanu. ierobežojums. Tagad, ja vēlaties dzēst Roll = 5 no galvenās tabulas, lai gan Roll = 5 atrodas pakārtotajā tabulā, tas ir iespējams, jo brīdī, kad dodat komandu dzēst Roll = 5 no galvenās tabulas, rindai ar Roll = Tiks dzēsti arī 5 no bērnu tabulas.

Atsauces integritātes ierobežojums
Atsauces integritātes ierobežojums

Tiek parādītas divas iepriekš minētās tabulas STUDENT un SUBJECT ar četrām vērtībām, tagad pieņemsim, ka vēlaties dzēst Roll = 4 no tabulas STUDENT( Master ), ierakstot SQL komandu: dzēst no STUDENTA kur Roll = 4;

Brīdī, kad SQL izpildīs iepriekš minēto komandu, tiks dzēsta arī rinda ar Roll = 4 no tabulas SUBJECT( Child ) STUDENTS un PRIEKŠMETS tabula izskatīsies šādi:

Atsauces integritātes ierobežojums
Atsauces integritātes ierobežojums

No divām iepriekš minētajām tabulām STUDENT un SUBJECT var redzēt, ka abās tabulās Roll = 4 tiek dzēsta vienā reizē, nepārkāpjot dzēšanas ierobežojumu.

Dažreiz intervijās tiek uzdots ļoti svarīgs jautājums: Vai svešajai atslēgai var būt NULL vērtības?

Atbilde uz iepriekš minēto jautājumu ir JĀ, tai var būt NULL vērtības, savukārt primārā atslēga nevar būt NULL par katru cenu. Lai praktiski saprastu iepriekš minēto jautājumu, tālāk sapratīsim nulles dzēšanas jēdzienu.

ON DZĒST NULL.

Saskaņā ar dzēšanas ierobežojumu: vērtību nevar dzēst no MASTER tabulas, ja vērtība atrodas BĒRNU tabulā. Rodas nākamais jautājums, vai mēs varam izdzēst vērtību no galvenās tabulas, ja vērtība atrodas pakārtotajā tabulā, nepārkāpjot dzēšanas ierobežojumu? t.i., brīdī, kad mēs izdzēšam vērtību no galvenās tabulas, tai atbilstošā vērtība arī tiks dzēsta no pakārtotās tabulas vai to var aizstāt ar NULL vērtību.

Atbilde uz iepriekš minēto jautājumu ir JĀ, mēs varam izdzēst vērtību no galvenās tabulas, ja vērtība atrodas pakārtotajā tabulā, nepārkāpjot dzēšanas ierobežojumu, ārējā atslēgā ievietojot NULL, mums ir jāveic nelielas izmaiņas, veidojot bērntabulu, t.i. pievienojot par dzēšanu null .

TABULAS SINTAKSE:

 CREATE TABLE Subject (Roll int references Student on delete null, SubCode int, SubName varchar(10) ); 

Iepriekš minētajā sintaksē uzreiz pēc atsauces atslēgvārda (izmanto ārējās atslēgas izveidošanai) esam pievienojuši par delete null, pievienojot tādu tagad, mēs varam izdzēst vērtību no galvenās tabulas, ja vērtība atrodas pakārtotajā tabulā, nepārkāpjot dzēšanu. ierobežojums. Tagad, ja vēlaties dzēst Roll = 4 no galvenās tabulas, lai gan Roll = 4 atrodas pakārtotajā tabulā, tas ir iespējams, jo brīdī, kad dodat komandu dzēst Roll = 4 no galvenās tabulas, rindai ar Roll = 4 no pakārtota tabulas tiks aizstāta ar NULL vērtību.

android process acore turpina apstāties
Atsauces integritātes ierobežojums
Atsauces integritātes ierobežojums

Tiek parādītas divas iepriekš minētās tabulas STUDENT un SUBJECT ar četrām vērtībām, tagad pieņemsim, ka vēlaties dzēst Roll = 4 no tabulas STUDENT( Master ), ierakstot SQL komandu: dzēst no STUDENTA kur Roll = 4;

Brīdī, kad SQL izpildīs iepriekš minēto komandu, rinda ar Roll = 4 no tabulas SUBJECT( Child ) tiks aizstāta ar NULL vērtību. STUDENTS un PRIEKŠMETS tabula izskatīsies šādi:

Atsauces integritātes ierobežojums
Atsauces integritātes ierobežojums

No divām iepriekš minētajām tabulām STUDENT un SUBJECT var redzēt, ka tabulā STUDENT Roll = 4 tiek dzēsts, savukārt Roll = 4 vērtība tabulā SUBJECT tiek aizstāta ar NULL. Tas pierāda, ka svešajai atslēgai var būt nulles vērtības. Ja tabulas SUBJECT gadījumā kolonna Roll ir primārā atslēga kopā ar ārējo atslēgu, tādā gadījumā mēs nevarējām iestatīt, lai ārvalstu atslēgai būtu NULL vērtības.