Oracle Foreign Key

Oracle Foreign Key
En utenlandsk nøkkel refererer til en kolonne eller et sett med kolonner i en databasetabell som refererer til en annen tabells primærnøkkel. Utenlandske nøkler er et utrolig verktøy som sikrer integritet i databasen din.

Utenlandske nøkler er så verdifulle og anerkjente at de er kategorisert som nivå 3 i databasens normaliseringstrinn. I 3NF er alle attributtene (kolonnene) i en tabell direkte avhengig av den primære nøkkelen til den tabellen, og det er ingen transitive avhengigheter.

Å introdusere de utenlandske nøklene kan bidra til å opprettholde kravene til 3NF ved å sikre at verdiene i en utenlandsk nøkkelkolonne bare eksisterer i den refererte primære nøkkelen.

Målet med denne opplæringen er å vise deg hvordan du oppretter og bruker en fremmed nøkkel i en Oracle -database. Denne opplæringen er orientert mot nybegynnere, og vi dekker ikke om hvordan vi skal implementere de utenlandske nøklene i database -normaliseringer.

Opprett en utenlandsk nøkkeluttalelse

Vi kan opprette en utenlandsk nøkkel under opprettelse av tabellen ved hjelp av Create Table -uttalelsen og den utenlandske nøkkelbestemmelsen.

Vi kan uttrykke syntaks som vist i følgende:

Lag tabell tabell_navn (
Kolonne1 Datatype,
Kolonne2 Datatype,
..
Utenlandsk nøkkel (kolonne1, kolonne2, ...)
Referanser Other_Table_Name (Other_Column1, Other_Column2, ...)
);

Tabellenavnet refererer til tabellen du ønsker å opprette i databasen. Vi definerer også tabellkolonnene, deres tilsvarende datatype og forskjellige begrensninger.

Til slutt kaller vi den utenlandske nøkkelbestemmelsen for å spesifisere kolonnen eller kolonnene som vi ønsker å utgjøre de utenlandske nøkkelreferansene.

For å illustrere bruken av utenlandske nøkler best, la oss ta to tabeller som vist i følgende CREATE -utsagn:

Lag tabelldatabaser
(
ID -nummer generert som standard på null som identitet,
Navn varchar2 (50) Ikke null,
Standard_portnummer,
Siste_versjon varchar2 (20) Ikke null,
skriv varchar2 (20) ikke null,
Språk varchar2 (20) Ikke null,
Utenlandsk nøkkel (ID)
Referanser Size_Stats (Database_id)
);

Tabell 2:

Lag tabellstørrelse_stats (
database_id nummer primærnøkkel,
størrelse_on_disknummer ikke null,
størrelse_komprimert nummer
);

I den første leddet oppretter vi en tabell for å lagre databaseinformasjonen som databasenavnet, standardport, siste databaseversjon, databasetypen og språket.

I tillegg inkluderer vi den utenlandske nøkkelbestemmelsen som definerer en ny utenlandsk nøkkel på ID -kolonnen i databasetabellen. Denne utenlandske nøkkelen refererer til databasen_id i størrelse_stats -tabellen. Derfor er det bra å sikre at størrelse_stats -tabellen eksisterer før du oppretter databasetabellen.

Når vi har fått eksemplet tabeller, la oss sette inn prøvedataene i tabellen for demonstrasjon.

Sett inn i størrelse_stats (database_id, størrelse_on_disk, størrelse_komprimert) verdier (1, 100.45, 94.55);
Sett inn i Size_Stats (Database_ID, Size_on_Disk, Size_Compription) verdier (2, 567.67, 344.43);
Sett inn i Size_Stats (Database_ID, Size_on_Disk, Size_Compription) verdier (3, 649.30, 500.1. 3);
Sett inn i Size_Stats (Database_ID, Size_on_Disk, Size_Compription) verdier (4, 45.62, 39.96);
Sett inn i Size_Stats (Database_ID, Size_on_Disk, Size_Compription) verdier (5, 1000.12, 986.43);

Deretter legger du til dataene i databasetabellen som vist i følgende:

Sett inn databaser (navn, standard_port, siste_versjon, type, språk)
Verdier ('Oracle', 1521, '19c', 'relational', 'sql');
Sett inn databaser (navn, standard_port, siste_versjon, type, språk)
Verdier ('mysql', 3306, '8.0 ',' relasjonell ',' sql ');
Sett inn databaser (navn, standard_port, siste_versjon, type, språk)
Verdier ('PostgreSql', 5432, '13', 'Relational', 'SQL');
Sett inn databaser (navn, standard_port, siste_versjon, type, språk)
Verdier ('Mongodb', 27017, '4.4 ',' ikke-relasjonell ',' JavaScript ');
Sett inn databaser (navn, standard_port, siste_versjon, type, språk)
Verdier ('Microsoft SQL Server', 1433, '2017', 'Relational', 'T-SQL');

De første innsatsuttalelsene skal gi oss en tabell som inneholder databasestørrelsesstatistikken som vist i det følgende:

Den andre tabellen inneholder databaseinformasjonen som vist i følgende:

Når den utenlandske nøkkelen er brukt, sikrer den at de oppgitte dataene er intakte og ingen ugyldige data legges til.

Hvis vi for eksempel prøver å legge til en ny database med en ID som ikke eksisterer i statistikktabellen, bør den returnere en feil som følger:

Sett inn databaser (navn, standard_port, siste_versjon, type, språk)
Verdier ('sqlite', null, '3.34 ',' relational ',' c ');

Resulterende feil:

[23000] [2291] ORA-02291: Integritetsbegrensning (HR.SYS_C007781) krenket - Foreldrens nøkkel ikke funnet

Slipp en utenlandsk begrensning

Du kan fjerne et eksisterende utenlandsk begrensningsnavn ved å bruke kommandoen Alter Table som vist i følgende:

Alter fortelling tabell_navn
Slipp begrenset utenlandsk_key_navn;

Aktiver/deaktiver en fremmed nøkkel

Vi kan også deaktivere eller aktivere en fremmed nøkkel uten å fjerne den fra tabellen som vist i følgende kommandoer:

ALTER TABLE TABLE_NAME
Deaktiver begrensning utenlandsk_key_navn;

For å aktivere en fremmed nøkkel, bruk følgende kommando:

ALTER TABLE TABLE_NAME
Aktiver begrensning utenlandsk_key_navn;

Konklusjon

I denne opplæringen lærte du hvordan du bruker de utenlandske nøklene i Oracle -tabeller for å forbedre og gi dataintegritet.