Külső kulcs

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. december 11-én felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

Idegen kulcs ( eng.  Foreign Key ) – a relációs adatbázisok elméletének fogalma , amely az adatbázis integritásának korlátaira vonatkozik .

Informálisan szólva, az idegen kulcs valamely R 2 relációs változó attribútumainak részhalmaza , amelynek értékeinek meg kell egyeznie valamely R 1 relációs változó valamely potenciális kulcsának értékeivel .

Formális meghatározás. Legyen R 1 és R 2  két relációs változó, amelyek nem feltétlenül különböznek egymástól. Az R2 - ben lévő FK idegen kulcs az R2 változó attribútumainak olyan részhalmaza, amely teljesül a következő követelményeknek:

  1. Az R 1 relációs változónak van egy potenciális kulcsa CK , így az FK és a CK egybeesik az attribútum átnevezéséig (azaz az FK attribútumok valamely részhalmazának átnevezésével az FK' attribútumok olyan részhalmazát kaphatjuk meg, hogy az FK' és a CK névben mindkettő egybeesik és attribútumtípusokban).
  2. Bármikor az aktuális R 2 értékben minden FK érték azonos az aktuális R 1 érték valamelyik sorában lévő CK értékkel . Más szavakkal, bármikor az R2-ben szereplő összes FK-érték halmaza az R1 - ben lévő CK - értékek ( nem szigorú) részhalmaza .

Ezen túlmenően ennél a konkrét FK → CK idegen kulcsnál a potenciális kulcsot tartalmazó R 1 relációt fő , cél vagy szülő relációnak, az idegen kulcsot tartalmazó R 2 relációt pedig alárendelt vagy gyermek relációnak nevezzük .

Az idegen kulcsok fenntartását hivatkozási integritás fenntartásának is nevezik . A relációs DBMS támogatja a hivatkozási integritás automatikus vezérlését.

Példa

Tegyük fel, hogy két tábla van az adatbázisban: Város (városok) és Utca (utcák), amelyek meghatározása a következő:

TÁBLÁZAT LÉTREHOZÁSA Város ( azonosító INTEGER NEM NULL ELSŐDLEGES KULCS , név CHAR ( 40 ) ) TÁBLÁZAT LÉTREHOZÁSA Utca ( azonosító INTEGER NEM NULL ELSŐDLEGES KULCS , név CHAR ( 40 ), id_city INTEGER NOT NULL IDEGEN KULCS HIVATKOZÁSOK Város ( azonosító ) )

E táblázatok tartalma a következő:

VÁROS

ID NÉV
egy Moszkva
2 Szentpétervár
3 Vlagyivosztok

UTCA

ID NÉV ID_CITY
181 Malaya Bronnaya egy
182 Tverskoy körút egy
183 Nyevszkij sugárút 2
184 Puskinszkaja 2
185 Szvetlanszkaja 3
186 Puskinszkaja 3

Az STREET táblának van egy ID_CITY mezője, amely egy idegen kulcs, és a CITY táblára hivatkozik. Az ebben a mezőben lévő érték megfelel a CITY táblában szereplő elsődleges kulcsnak ahhoz a városhoz, ahol az utca található. Így a Nyevszkij Prospekt ID_CITY=2, ami St. Petersburgnak felel meg (ID=2 a CITY táblázatban).

Az STREET táblázat két azonos nevű, Pushkinskaya utcát tartalmaz, amelyek az ID_CITY mező értékében különböznek egymástól. Az egyik Szentpéterváron (ID_CITY=2), a másik Vlagyivosztokban (ID_CITY=3) található.

Ha megpróbálja hozzáadni a "Deribasovskaya" utcát ID_CITY=4-el az STREET táblához, hivatkozási integritássértési hibát okoz, mivel nincs ID=4 város a CITY táblában. Azonban, miután a CITY táblához hozzáadta a "Odessza" várost ID=4-el, a "Deribasovskaya" utcába ID_CITY=4-el sikeres lesz.

Vlagyivosztok városának a CITY táblából való törlésekor az eredmény az idegen kulcs tulajdonságaitól függ:

  • Ha az idegen kulcsnál engedélyezett a láncos törlés, akkor a Vlagyivosztok törlésével együtt a Svetlanskaya és Pushkinskaya utcák ID=3-as törlésével együtt.
  • Ha a lánctörlés le van tiltva az idegen kulcsnál, akkor a művelet hivatkozási integritássértési hibát generál, mivel az STREET tábla ID_CITY=3 kódú utcákat tartalmaz, amelyek nem szerepelnek a CITY táblában.

Amikor Szentpétervár városkódját 2-ről 48-ra módosítja a CITY táblában, az eredmény az idegen kulcs tulajdonságaitól függ:

  • Ha az idegen kulcsot megengedik a lánc mentén, akkor a Szentpétervár kódjának változásával együtt a megfelelő utcák ID_CITY értékei is megváltoznak.
  • Ha az idegen kulcs láncban nem módosítható, akkor a művelet hivatkozási integritássértési hibát okoz, mivel az STREET tábla ID_CITY=2 kódú utcákat tartalmaz, amelyek nem szerepelnek a CITY táblában.

Irodalom

  • Dátum CJ Introduction to Database Systems = Bevezetés az adatbázisrendszerekbe. - 8. kiadás - M . : "Williams" , 2006. - 1328 p. — ISBN 0-321-19784-4 .