Fremmednøgle ( eng. fremmednøgle ) - begrebet teori om relationelle databaser , der vedrører begrænsninger på databasens integritet .
Uformelt set er en fremmednøgle en delmængde af attributter af en eller anden relationsvariabel R 2 , hvis værdier skal matche værdierne af en potentiel nøgle af en eller anden relationsvariabel R 1 .
Formel definition. Lad R 1 og R 2 være to relationsvariable, der ikke nødvendigvis er adskilte. En fremmednøgle FK i R 2 er en delmængde af attributterne for variablen R 2 , således at følgende krav er opfyldt:
Desuden, for denne særlige fremmednøgle FK → CK , kaldes relationen R1 , der indeholder den potentielle nøgle, hoved- , mål- eller overordnet relation, og relationen R2 , der indeholder fremmednøglen , kaldes den underordnede eller underordnede relation.
Vedligeholdelse af fremmednøgler omtales også som opretholdelse af referentiel integritet . Relationel DBMS understøtter automatisk kontrol af referentiel integritet.
Antag, at der er to tabeller i databasen: By (byer) og Gade (gader), som er defineret som følger:
OPRET TABEL By ( id INTEGER IKKE NULL PRIMÆR NØGLE , navn CHAR ( 40 ) ) OPRET TABEL Gade ( id INTEGER IKKE NULL PRIMÆR NØGLE , navn CHAR ( 40 ) , id_city HELTAL IKKE NULL UDENLANDSKE NØGLEREFERENCER By ( id ) )Indholdet af disse tabeller er som følger:
BY
ID | NAVN |
---|---|
en | Moskva |
2 | Sankt Petersborg |
3 | Vladivostok |
GADE
ID | NAVN | ID_CITY |
---|---|---|
181 | Malaya Bronnaya | en |
182 | Tverskoy boulevard | en |
183 | Nevsky Avenue | 2 |
184 | Pushkinskaya | 2 |
185 | Svetlanskaya | 3 |
186 | Pushkinskaya | 3 |
STREET-tabellen har et ID_CITY-felt, som er en fremmednøgle og refererer til CITY-tabellen. Værdien i dette felt svarer til den primære nøgle i CITY-tabellen for den by, hvor gaden ligger. Nevsky Prospekt har således ID_CITY=2, hvilket svarer til St. Petersburg (ID=2 i CITY-tabellen).
STREET-tabellen indeholder to gader med samme navn Pushkinskaya, som er forskellige i værdien af ID_CITY-feltet. En af dem ligger i St. Petersborg (ID_CITY=2), den anden er i Vladivostok (ID_CITY=3).
Et forsøg på at tilføje gaden "Deribasovskaya" med ID_CITY=4 til STREET-tabellen vil forårsage en henvisnings-integritetskrænkelsesfejl, da der ikke er nogen by med ID=4 i CITY-tabellen. Men efter at have tilføjet byen "Odessa" med ID=4 til CITY-tabellen, vil det lykkes at gå ind på gaden "Deribasovskaya" igen med ID_CITY=4.
Når du sletter byen Vladivostok fra CITY-tabellen, afhænger resultatet af egenskaberne for den fremmede nøgle:
Når du ændrer bykoden for St. Petersborg fra 2 til 48 i CITY-tabellen, afhænger resultatet af egenskaberne for den fremmede nøgle:
Database | |
---|---|
Begreber |
|
Objekter | |
Nøgler | |
SQL | |
Komponenter |