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:
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.
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:
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:
Adatbázis | |
---|---|
Fogalmak |
|
Objektumok |
|
Kulcsok | |
SQL |
|
Alkatrészek |