Johdatus ulkomaiseen avaimeen SQL: ssä

Vieras avain on rajoitus SQL: ssä. Sitä käytetään kahden taulukon yhdistämiseen. Yhden taulukon vieras avain viittaa ensisijaiseen avaimeen toisessa taulukossa. Vieraalla avaimella voidaan varmistaa, että yhden taulukon rivillä on vastaavat rivit / rivit toisessa taulukossa. Viitattua taulukkoa kutsutaan ylätaulukkoksi, ja taulukko vieraalla avaimella tunnetaan alataulukkona. Tämä vanhempien ja lasten suhde noudattaa sääntöä, joka tunnetaan nimellä Referencial Integrity. Referenssieheys on datan ominaisuus, jonka mukaan kaikki sen viitteet ovat oikeita.

Joten, jos tietokannassa on suhteet yhdestä moniin tai monista moniin, vieraat avaimet ovat erittäin hyödyllisiä. Se toimii ristiviittauksena kahden taulukon (vanhempi_taulukko ja lapsi_taulukko) välillä, koska se viittaa toisen taulukon ensisijaiseen avaimeen. Joten se luo yhteyden vanhemman ja lasten taulukon välille.

Syntaksi

Uuden taulukon luominen vieraalla avaimella edellyttää CREATE TABLE -lupaa tietokantaan

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

  • Child_Table on taulukon nimi, jonka luomme
  • sarake_1, sarake_2 - taulukkoon lisättävät sarakkeet.
  • F_key - Tämä on vieraan avaimen rajoitus.
  • lapsi_sarake1, lapsi_sarake2… lapsi_sarake_n- Lapsipöydän sarakkeiden nimi viittaa päätaulukon ensisijaiseen avaimeen.
  • Parent_Table- Tämä on vanhemman_taulun nimi. Parent_table -sivun ensisijaiseen avaimeen viitataan child_table-taulukossa
  • ON DELETE - Tämä parametri suorittaa lapsitietoihin liittyviä toimia vanhemmatietojen poistamisen jälkeen. SET NULL, NO ACTION, CASCADE, SET DEFAULT ovat joitakin tämän parametrin arvoista.
  • ON UPDATE - Tämä on valinnainen parametri, joka ryhtyy toimiin lapsitietoihin vanhemmatietojen päivityksen jälkeen. SET NULL, NO ACTION, CASCADE, SET DEFAULT ovat joitakin tämän parametrin arvoista.
  • CASCADE- Voimme käyttää tätä yhdessä ON DELETE ja ON UPDATE kanssa. Vanhempien tietojen poistamisen tai päivittämisen jälkeen lapsitiedot joko poistetaan tai päivitetään.

Vieraan avaimen luominen olemassa olevaan taulukkoon vaatii ALTER-luvan taulukkoon.

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

säännöt

  1. Ulkomaisia ​​avaimia ei voida soveltaa väliaikaisiin taulukoihin.
  2. Ulkomaisen avaimen rajoitusta ei tarvitse liittää vain toisen taulukon ensisijaiseen avaimeen, se voidaan yhdistää myös toisen taulukon UNIQUE-rajoitukseen.
  3. ULKOAIKAISET rajoitukset voivat viitata saman taulukon toiseen sarakkeeseen. Tätä kutsutaan itseviittaukseksi.
  4. Ulkomaiset avainrajoitukset voivat viitata saman tietokannan taulukoihin.
  5. Voimme lisätä myös NULL-arvoja lapsitaulukkoon.
  6. Kun lisäämme vieraan avaimen rajoitukseen muun kuin NULL-arvon, arvon on oltava olemassa viitatussa sarakkeessa muuten tapahtunut rikkomusviesti.
  7. Vanhempien yksilöivien avainten arvoa ei voi muuttaa, jos päivityssääntö on RAJOITETTU ja jos käytössä on yksi tai useampi riippuvainen rivi. Jos päivityssääntö ei ole TOIMINTA, vanhempien yksilölliset avaimet voidaan päivittää niin kauan kuin jokaisella lapsella on vanhemman avain päivityksen lausunnon valmistuttua.

esimerkit

Oletetaan, että meillä on kaksi taulua Asiakkaat ja Tilaukset. Asiakkaustaulukossa on kaikki asiakaskohtaiset tiedot ja Tilaukset-taulukossa on asiakastilaustiedot.

Asiakkaat

Cust_idPääavain
CUST_NAME
Sijainti

tilaukset

TilausnumeroPääavain
Tilauspäivämäärä
Määrä
Cust_idUlkomainen avain
Kokonaismäärä

Yllä olevassa esimerkissä TILAUKSET-taulukon Cust_id-sarake on vieras avain, joka osoittaa Asiakkaat-taulukon Cust_id-sarakkeeseen.

Oletetaan, että näillä taulukoilla on seuraavat arvot

Asiakkaat

1001AlexMEILLE
1002CareyMEILLE
1003sidUK
1004tomAUS
1005KapilIND

tilaukset

7820-10-2018510021200
7910.12.201741001800
8020-11-201621005369
8109.10.201651002258
8219-08-20161110041900
8330-06-20164510012300
8416-02-201671001890
851.2.201621002260

Asiakkaalle cust_id 1001 on kolme tilausta, jotka esiintyvät tilaustaulukossa.

Kohteelle cust_id 1003 ei ole tilausta.

Joten jos meillä on tiettyjä tietoja (Sano id 1003) vanhempi taulukossa, niin ei ole välttämätöntä, että näitä tietoja on lapsitaulukossa, mutta päinvastoin, ei ole totta.

Meillä ei voi olla Lapsi-taulukossa (Tilaustaulukko) mitään tietoa, jota ei ole olemassa ylätaulussa (Asiakkaat.)

Esimerkiksi, emme voi lisätä uutta tietuetta tell_id 1006 tilauksiin -taulukoihin, koska cust_id 1006 ei ole Asiakkaat-taulukossa.

Joten alla on esimerkkejä, jotka loukkaavat tämän suhteen viiteherkkyyttä:

  1. Lisää rivi Tilaukset-taulukkoon, jossa Cust_ID ei näy Asiakkaat-taulukon Cust_ID-sarakkeessa.
  2. Rivin poistaminen ASIAKKAAT-taulukosta, josta poistettavan rivin Cust_ID on edelleen Tilaukset-taulukon Cust_ID-sarakkeessa.

Kun tietty tietue poistetaan päätaulusta, on olemassa kaksi tapaa säilyttää lasten taulukon tietojen eheys. Kun kaksi taulukkoa on kytketty vieraan avaimen kanssa ja tietyt päätaulukon tiedot poistetaan, joista tietue on olemassa myös alataulussa, meillä on jonkinlainen mekanismi, jolla voidaan tallentaa lasten taulukon tietojen eheys

  • Poista kaskadissa : Tämä poistaa tietueen alataulusta, jos vieraan avaimen arvo poistetaan päätaulusta.
  • Käytössä Poista NULL: Tämä asettaa kaikki kyseisen lapsitaulukon tietueiden arvot NULL: ksi, jolle vieraan avaimen arvo poistetaan päätaulusta.

Johtopäätös - vieras avain SQL: ssä

Joten on suositeltavaa käyttää vieraita avaimia tietokannassa, jolla on yksi tai yksi tai useampia suhteita. Ulkomaisten avainrajoitteiden käytön tärkein etu on, että se parantaa suorituskykyä. Kehittäjät voivat helposti tunnistaa tietokannan rakenteen. Voimme myös tutkia, kuinka kysely hakee tietoja.

Suositellut artikkelit

Tämä on opas vieraalle avaimelle SQL: ssä. Tässä keskustellaan SQL: n vieraan avaimen säännöistä ja esimerkkeistä syntaksin kanssa. Saatat myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. SQL-näkymät
  2. Tyypit liittymiset SQL Serverissä
  3. Mikä on PL / SQL?
  4. SQL-palvelimen rajoitukset
  5. MySQL: n kuusi suosittua liittymistyyppiä ja esimerkkejä