Bevezetés az SQL idegen kulcsába

Az idegen kulcs az SQL korlátozása. A két táblázat összekapcsolására szolgál. Az egyik táblázatban szereplő idegen kulcs az elsődleges kulcsra mutat egy másik táblázatban. Idegen kulcs felhasználható annak ellenőrzésére, hogy az egyik táblázat sorának megfelelő sor / sorok vannak-e egy másik táblázatban. A hivatkozott táblát szülőtáblának nevezzük, és az idegen kulcsgal ellátott táblázatot gyermektáblának nevezzük. Ez a szülő-gyermek kapcsolat érvényesíti a Referencia-integritás néven ismert szabályt. A referencia integritása az adatok olyan tulajdonsága, hogy minden hivatkozásuk érvényes.

Tehát, ha egy-egy-sok vagy sok-sok-féle kapcsolat van az adatbázisban, az idegen kulcsok nagyon hasznosak lesznek. Kereszthivatkozásként működik két tábla (szülőtábla és gyereklap) között, mert utal egy másik tábla elsődleges kulcsára. Tehát kapcsolatot létesít a szülőtábla és a gyerekasztal között.

Szintaxis

Új tábla létrehozásához idegen kulcs segítségével a CREATE TABLE engedélyre van szükség az adatbázisban

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 ) ) );

  • A Child_Table az a táblanév, amelyet létrehozunk
  • _1 oszlop, _2 oszlop - a táblázathoz hozzáadni kívánt oszlopok.
  • F_key- Ez egy idegen kulcskorlátozás.
  • gyermek_oszlop1, gyermek_oszlop2… gyermek_oszlop_n- A gyermek_Táblázat oszlopok neve hivatkozik az elsődleges kulcsra a szülőtáblában.
  • Parent_Table - Ez a szülőtábla neve. A parent_table elsődleges kulcsára a child_table hivatkozik
  • BE TÖRLÉS - Ez a paraméter a szülõ adatok törlését követõen fellép a gyermekekre vonatkozó adatokkal. SET NULL, NEM MŰKÖDIK, CASCADE, SET DEFAULT a paraméter néhány értéke.
  • ON UPDATE - Ez egy opcionális paraméter, amely a szülő adatok frissítése után végrehajtja a csereadatokat. SET NULL, NEM MŰKÖDIK, CASCADE, SET DEFAULT a paraméter néhány értéke.
  • CASCADE - Használhatjuk ezt az ON DELETE és ON UPDATE fájlokkal együtt. A szülõ adatok törlése vagy frissítése után a gyermekeket törlik vagy frissítik.

Idegen kulcs létrehozásához egy meglévő táblában ALTER engedélyre van szükség az asztalon.

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

szabályok

  1. Az idegen kulcsok nem alkalmazhatók ideiglenes táblákra.
  2. Az idegen kulcs-korlátozást nem kell csak egy másik tábla elsődleges kulcsához kapcsolni, hanem összekapcsolható egy másik tábla EGYEDI korlátozásával is.
  3. A KÜLÖNLEGES KULCS-korlátozások ugyanazon táblázat másik oszlopára hivatkozhatnak. Ezt önreferenciának nevezik.
  4. Az idegen kulcs korlátozások ugyanazon adatbázis tábláira vonatkozhatnak.
  5. A NULL értékeket beszúrhatjuk a gyermektáblába is.
  6. Amikor a NULL-től eltérő értéket illesztünk be az idegen kulcs-korlátozásba, akkor az értéknek léteznie kell a hivatkozott oszlopban, vagyis a megsértési üzenet történt.
  7. A szülő egyedi kulcsainak értéke nem módosítható, ha a frissítési szabály RESTRICT és egy vagy több függő sor van. Ha azonban a frissítési szabály NEM MŰKÖDIK, az egyedi szülői kulcsok frissíthetők mindaddig, amíg a frissítés befejezéséig minden gyermek rendelkezik szülőkulccsal.

Példák

Tegyük fel, hogy két asztalunk van: Ügyfelek és Megrendelések. Az Ügyfelek táblázata tartalmazza az összes ügyféllel kapcsolatos adatot, és a Megrendelések táblázat tartalmazza az ügyfelekkel kapcsolatos adatokat.

Az ügyfelek

CUST_IDElsődleges kulcs
CUST_NAME
Elhelyezkedés

rendelés

Rendelés azonosítóElsődleges kulcs
Rendelés dátuma
Mennyiség
CUST_IDIdegen kulcs
Teljes összeg

A fenti példában a RENDELÉSEK táblázatának Cust_id oszlopa egy idegen kulcs, amely a CUSTOMERS táblában a Cust_id oszlopra mutat.

Tegyük fel, hogy ezeknek a táblázatoknak a következő értékei vannak

Az ügyfelek

1001AlexMINKET
1002CareyMINKET
1003SidUK
1004TomiAUS
1005KapilIND

rendelés

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

A cust_id 1001 esetén három megrendelés létezik a megrendelési táblázatban.

A cust_id 1003 esetén nincs megrendelés.

Tehát ha van bizonyos adat (Say id 1003) a szülőtáblában, akkor nem szükséges, hogy ezeket az adatokat a gyermektáblában szerezzük, hanem fordítva nem igaz.

A Gyerektáblában (Megrendelési táblázat) nem lehet olyan adat, amely nem létezik a szülőtáblában (Ügyfelek.)

Például, nem helyezhetünk új beszámolót a cust_id 1006 értékre a Megrendelések táblába, mert a cust_id 1006 nem létezik az Ügyfelek táblában.

Az alábbiakban bemutatjuk azokat a példákat, amelyek megsértik a kapcsolat referencia-integritását:

  1. Sor beillesztése az ORDERS táblába, ahol a Cust_ID nem jelenik meg az ügyfelek táblázatának Cust_ID oszlopában.
  2. Egy sor törlése az ÜGYFÉL-táblából, ahol a törlendő sor Cust_ID továbbra is jelen van a RENDELÉSEK táblázat_HU_ID oszlopában.

Ha egy adott rekordot törölnek a főtáblából, kétféle módon lehet megőrizni a gyermektáblában szereplő adatok integritását. Ha két táblázat kapcsolódik az idegen kulcshoz, és a főtáblázatból bizonyos adatokat törölnek, amelyekre a rekord létezik a gyermektáblában is, akkor van valamilyen mechanizmusunk az alsó táblában lévő adatok integritásának megmentésére.

  • A Kaszkád törlésekor: Ez törli a rekordot az utódtáblából, ha az idegen kulcs értékét törlik a fő táblából.
  • On NULL törlése: Ezzel a Gyerektábla-rekord összes értékét NULL-ként állítja be, amelyre az idegen kulcs értékét törlik a fő táblából.

Következtetés - Idegen kulcs az SQL-ben

Ezért tanácsos az idegen kulcsot használni az adatbázisban, amelynek egy-egy vagy egy-sok kapcsolat van. Az idegen kulcskorlátozások alkalmazásának fő előnye, hogy javítja a teljesítményt. A fejlesztők könnyen azonosíthatják az adatbázis szerkezetét. Azt is megvizsgálhatjuk, hogy a lekérdezés hogyan fogja letölteni az adatokat.

Ajánlott cikkek

Ez egy útmutató az SQL idegen kulcsához. Itt az SQL idegen kulcsának szabályait és példáit tárgyaljuk a Szintaxissal. Lehet, hogy megnézi a következő cikkeket is, ha többet szeretne megtudni -

  1. SQL nézetek
  2. Csatlakozás típusai az SQL Server-ben
  3. Mi az a PL / SQL?
  4. SQL Server korlátozások
  5. A MySQL 6 legfontosabb csatlakozási típusa példákkal