Uvod u strani ključ u SQL-u

Strani ključ je ograničenje u SQL-u. Koristi se za povezivanje dviju tablica. Strani ključ u jednoj tablici upućuje na primarni ključ u drugoj tablici. Strani ključ može se koristiti za osiguravanje da red u jednoj tablici ima odgovarajuće retke / retke u drugoj tablici. Referentna tablica naziva se nadređena tablica, a tablica sa stranim ključem poznata je kao podređena tablica. Ovaj odnos roditelj-dijete provodi pravilo koje je poznato i kao Referencijalni integritet. Referentni integritet svojstvo je podataka koji navode da su sve njegove reference valjane.

Dakle, ako u bazi imate odnose od 1 do puno ili puno do mnogih, strani ključevi bit će vrlo korisni. Djeluje kao unakrsna referenca između dvije tablice (nadređeni_predajni i matični_područnik) jer se odnosi na primarni ključ druge tablice. Tako se uspostavlja veza između matičnog_dredišta i tablice_ djece.

Sintaksa

Stvaranje nove tablice sa stranim ključem zahtijeva CREATE TABLE dozvolu u bazi podataka

CREATE TABLE child_Table
(
column_1 datatype ( NULL |NOT NULL ),
column_2 datatype ( NULL |NOT NULL ),

CONSTRAINT F_key
FOREIGN KEY (child_column1, child_column2, … child_column_n)
REFERENCES parent_Table (parent_column1, parent_column2, … parent_column_n)
( ON DELETE ( NO ACTION |CASCADE |SET NULL |SET DEFAULT ) ) ( ON UPDATE ( NO ACTION |CASCADE |SET NULL |SET DEFAULT ) ) );

  • Child_Table je naziv tablice koji ćemo kreirati
  • stupac_1, stupac_2 - stupci koji se dodaju u tablicu.
  • F_key - Ovo je ograničenje stranog ključa.
  • child_column1, child_column2… child_column_n- To je naziv stupca child_Table za upućivanje na primarni ključ u nadređenoj tablici.
  • Parent_Table - ovo je naziv parent_table. Na primarni ključ parent_table upućuje se u child_table
  • ON DELETE - Ovaj parametar djeluje na podređene podatke nakon brisanja nadređenih podataka. SET NULL, NO ACTION, CASCADE, SET DEFAULT su neke od vrijednosti ovog parametra.
  • ON UPDATE - Ovo je izborni parametar koji nakon ažuriranja nadređenih podataka poduzima radnju nadređenih podataka. SET NULL, NO ACTION, CASCADE, SET DEFAULT su neke od vrijednosti ovog parametra.
  • CASCADE - To možemo upotrijebiti zajedno sa ON DELETE i ON UPDATE. Nakon brisanja ili ažuriranja roditeljskih podataka Podređeni podaci bit će izbrisani ili ažurirani.

Stvaranje stranog ključa u postojećoj tablici zahtijeva dopuštenje ALTER na tablici.

ALTER table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name(columns)
REFERENCES parent_table(columns)

pravila

  1. Strani ključevi se ne primjenjuju na privremene tablice.
  2. Ograničenje stranog ključa ne mora biti povezano samo s primarnim ključem druge tablice, može se povezati i s UNIQUE ograničenjem druge tablice.
  3. Ograničenja stranog ključa mogu upućivati ​​na drugi stupac u istoj tablici. To se naziva samopuzivanjem.
  4. Ograničenja stranih ključeva mogu se odnositi na tablice unutar iste baze podataka.
  5. U podređenu tablicu možemo umetnuti i NULL vrijednosti.
  6. Kad u ograničenje stranog ključa umetnemo drugu vrijednost osim NULL, vrijednost mora postojati u navedenom stupcu ako se dogodila poruka o kršenju.
  7. Vrijednost jedinstvenih ključeva roditelja ne može se promijeniti ako je pravilo ažuriranja RESTRICT i postoje jedan ili više ovisnih redaka. Međutim, ako pravilo ažuriranja NIJE AKCIJA, jedinstveni nadređeni ključevi mogu se ažurirati sve dok svako dijete ima roditeljski ključ do trenutka dovršetka izjave ažuriranja.

Primjeri

Recimo da imamo dvije tablice Kupci i Narudžbe. Tablica kupaca ima sve podatke koji se odnose na kupca i tablicu Narudžbe s podacima o kupcima.

Kupci

Cust_idOsnovni ključ
CUST_NAME
Mjesto

Narudžbe

ORDER_IDOsnovni ključ
Datum narudžbe
Kol
Cust_idStrani kljuc
Ukupni iznos

U gornjem primjeru, stupac Cust_id u tablici ORDERS je strani ključ koji upućuje na stupac Cust_id u tablici KUPCI.

Pretpostavimo da ove tablice imaju sljedeće vrijednosti

Kupci

1001AlexNAS
1002CareyNAS
1003SidVelika Britanija
1004mužjak nekih malih životinjaAUS
1005KapilIND

Narudžbe

7820-10-2018510021200
792017/12/1041001800
8020-11-201621005369
812016/09/1051002258
8219-08-20161110041900
8330-06-20164510012300
8416-02-201671001890
852016/02/0121002260

Za cust_id 1001 u tablici naloga postoje tri naloga.

Za cust_id 1003 nema narudžbe.

Dakle, ako u nadređenoj tablici imamo određene podatke (recimo id 1003), tada nije potrebno imati te podatke u podređenoj tablici, već obrnuto nisu istiniti.

Ne možemo imati nikakve podatke u podređenoj tablici (tablica naloga) koja ne postoji u nadređenoj tablici (kupci.)

Na primjer, ne možemo umetnuti novu rečenicu zapisa za cust_id 1006 u tablicu Narudžbe, jer cust_id 1006 ne postoji u tablici Kupci.

Ispod su primjeri koji krše referentni integritet ovog odnosa:

  1. Umetanje retka u tablicu NARUDŽBE gdje se Cust_ID ne pojavljuje u stupcu Cust_ID u tablici KUPCI.
  2. Brisanje retka iz tablice CUSTOMERS gdje je Cust_ID retka koji se briše i dalje u stupcu Cust_ID u tablici ORDERS.

Kada se određeni zapis izbriše iz glavne tablice, postoje dva načina za održavanje integriteta podataka u podređenoj tablici. Kad su dvije tablice povezane s Foreign Key-om i određeni podaci iz glavne tablice su izbrisani, za koji zapis postoji i u podređenoj tablici, tada imamo neki mehanizam za spremanje integriteta podataka u podređenoj tablici

  • Izbriši kaskadu : Ovo će ukloniti zapis iz podređene tablice ako se ta vrijednost stranog ključa izbriše iz glavne tablice.
  • On Delete NULL: Ovo će postaviti sve vrijednosti u tom zapisu Child tablice kao NULL, za koje se vrijednost stranog ključa briše iz glavne tablice.

Zaključak - Strani ključ u SQL-u

Stoga je preporučljivo koristiti Strani ključ u bazi podataka koji ima jedan prema jednom ili jedan prema mnogim vezama. Glavna prednost upotrebe ograničenja stranih ključeva je u tome što poboljšava performanse. Programeri mogu lako prepoznati strukturu baze podataka. Također možemo ispitati kako će upit dohvatiti podatke.

Preporučeni članci

Ovo je vodič za strani ključ u SQL-u. Ovdje smo razgovarali o pravilima i primjerima stranog ključa u SQL-u sa Sintaksom. Možete također pogledati sljedeće članke da biste saznali više -

  1. SQL prikazi
  2. Vrste pridruživanja u SQL Serveru
  3. Što je PL / SQL?
  4. Ograničenja SQL servera
  5. Top 6 vrsta pridruživanja u MySQL-u s primjerima

Kategorija: