Kuinka käyttää MySQL: n vieraan avaimen rajoituksia

How Use Mysql Foreign Key Constraints

Ulkoisen avaimen rajoitusta käytetään muodostamaan suhde kahden MySQL -tietokannan taulukon välille. On erittäin tärkeä ominaisuus MySQL: ssä asettaa erityyppisiä rajoituksia liittyviin taulukoihin. Jos haluat määrittää minkä tahansa taulukon vieraan avaimen rajoituksen, sinun on käytettävä toisen taulukon ensisijaista avainta. Ensisijainen avain on taulukon yksilöllinen avain, jolla voidaan tunnistaa taulukon tietty rivi, ja kun tätä ensisijaista avainta käytetään toisessa taulukossa, jotta voidaan luoda yksi-yhteen tai yksi-moniin tai moniin-moniin -suhde kutsutaan vieraaksi avaimeksi. Tässä artikkelissa esitetään vieraiden avainten ominaisuudet ja miten niitä voidaan käyttää MySQL -taulukoissa.



Ulkomaisten avainrajoitusten ominaisuudet:

Seuraavassa selitetään joitakin tärkeitä vieraan avaimen rajoituksen piirteitä.



  • Alitaulukossa käytettävän vieraan avaimen tietotyypin on oltava sama kuin sen ensisijaisen avaimen tietotyyppi, jota käytetään ylätason taulukossa viittaamaan vieraaseen avaimeen.
  • Mihin tahansa indeksisarakkeeseen tai useisiin sarakkeisiin voidaan viitata vain InnoDB -taulukon vieraana avaimena.
  • Ulkoisen avaimen luomiseen tarvitaan viittausoikeudet tai ainakin yksi SELECT-, INSERT-, UPDATE- ja DELETE -lauseiden käyttöoikeuksista.
  • Ulkoinen avain voidaan luoda kahdella tavalla. Yksi käyttämällä CREATE -käskyä ja toinen käyttämällä ALTER -käskyä.

Edellytys:

Ennen vieraan avaimen rajoituksen luomista sinun on luotava tietokanta ja päätaulukko ensisijaisella avaimella. Oletetaan, että tietokannan nimi on ' kirjasto 'Ja se sisältää kaksi isotaulukkoa nimeltä' kirjoja 'Ja' lainaaja ’. Muodosta yhteys MySQL -palvelimeen käyttämällä mysql ja suorita seuraavat SQL -käskyt tietokannan ja taulukoiden luomiseksi.



LUODA TIETOKANTA kirjasto;
KÄYTTÄÄ kirjasto;

LUODA PÖYTÄ kirjoja(
id INT EI TYHJÄ AUTO_INCREMENT ,
otsikko varchar (viisikymmentä) EI TYHJÄ ,
kirjoittaja varchar (viisikymmentä) EI TYHJÄ ,
kustantaja varchar (viisikymmentä) EI TYHJÄ ,
PÄÄAVAIN (id)
) MOOTTORI = INNODB ;

LUODA PÖYTÄ lainanottajia(
id VARCHAR (viisikymmentä) EI TYHJÄ ,
nimi varchar (viisikymmentä) EI TYHJÄ ,
osoite varchar (viisikymmentä) EI TYHJÄ ,
sähköposti varchar (viisikymmentä) EI TYHJÄ ,
PÄÄAVAIN (id)
) MOOTTORI = INNODB ;

Määritä vieraan avaimen rajoitus käyttämällä CREATE -lauseketta

Luo taulukko nimeltä ' book_borrow_info 'Vieraan avaimen rajoituksilla suorittamalla seuraava lause. Tässä, book_id kenttä on a vieras avain tämän taulukon ja jokaisen tämän kentän arvon on oltava id kenttä kirjoja pöytä. kirjoja on päätaulukko ja book_borrow_info on lasten pöytä. Tässä asetetaan myös kaksi rajoitusta vieraalla avaimella. Nämä ovat POISTA KASKADI ja PÄIVITÄ KASKADI . Tämä tarkoittaa, että jos jokin ensisijainen avain poistetaan tai päivitetään ylätasosta, vastaavat vieraaseen avaimeen liittyvät alitaulukkoon liittyvät tietueet poistetaan tai vieras avain päivitetään.



LUODA PÖYTÄ book_borrow_info(
lainatunnus VARCHAR (viisikymmentä),
book_id INT ,
lainata_päivämäärä PÄIVÄMÄÄRÄ EI TYHJÄ ,
palautuspäivä PÄIVÄMÄÄRÄ EI TYHJÄ ,
Tila VARCHAR (viisitoista) EI TYHJÄ ,
INDEKSI par_ind(book_id),
PÄÄAVAIN (lainatunnus,lainata_päivämäärä),
ULKOMAINEN AVAIN (book_id) VIITTEET kirjoja(id)
PÄÄLLÄ POISTAA RYÖPYTÄ
PÄÄLLÄ PÄIVITTÄÄ RYÖPYTÄ
) MOOTTORI = INNODB ;

Suorita nyt seuraavat SQL -käskyt lisätäksesi tietueita molempiin taulukoihin. Ensimmäinen INSERT -käsky lisää neljä tietuetta kirjoja pöytä. Neljä arvoa id kenttä kirjoja taulukko on 1, 2, 3 ja 4 automaattisen lisäyksen määritteelle. Toinen INSERT -käsky lisää neljä tietuetta book_borrow_info perustuu id jonkin arvo kirjoja pöytä.

INSERT INTO kirjoja ARVOT
( TYHJÄ , 'Tappaa pilkkuva lintu', 'Harper Lee', 'Grand Central Publishing'),
( TYHJÄ , 'Sata vuotta yksinäisyyttä', 'Garcia Marquez', 'Lutfi Ozkok'),
( TYHJÄ , 'Matka Intiaan', 'Forster, E.M.', BBC Hultonin kuvakirjasto),
( TYHJÄ , 'Näkymätön mies', Ralph Ellison, 'Encyclopædia Britannica, Inc.');

INSERT INTO book_borrow_info ARVOT
('123490', 1, '2020-02-15', '' 2020-02-25 '', 'Palautettu'),
('157643', 2, '2020-03-31', '2020-03-10', 'Odottaa'),
('174562', 4, '2020-04-04', '2020-04-24', 'Lainattu'),
('146788', 3, '2020-04-10', '2020-01-20', 'Lainattu');

Jos yrität lisätä arvon alitaulukon vieraan avaimen kenttään, jota ei ole päätaulukon ensisijaisen avaimen kentässä, MySQL tuottaa virheen. Seuraava SQL -lause tuottaa virheen, koska päätaulukko, kirjoja ei sisällä mitään id -arvoa 10 .

INSERT INTO book_borrow_info ARVOT
('195684', 10, '2020-04-15', '2020-04-30', 'Palautettu');

Kun olet suorittanut seuraavan DELETE -käskyn, kun neljäs tietue poistetaan kirjoja taulukko ja siihen liittyvät tietueet book_borrow_info taulukko poistetaan automaattisesti vieraan avaimen rajoituksen vuoksi.

POISTAA ALK kirjoja MISSÄ id= 4;
VALITSE * alkaen kirjoja;
VALITSE * alkaen book_borrow_info;

Määritä vieraan avaimen rajoitus ALTER -lausekkeen avulla

Lisää aluksi joitakin tietueita lainanottajia taulukko ja tämä taulukko määritellään seuraavassa taulukossa IKÄ lausunto.

INSERT INTO lainanottajia ARVOT
('123490', 'Patrick Wood', '34 West Street LANCASTER LA14 9ZH ', '[email protected]'),
('157643', 'Ezra Martin', '10 The Grove BIRMINGHAM B98 1EU ', '[email protected]'),
('174562', John Innes Archie, '55 Päätie LIVERPOOL L2 3OD ', '[email protected]'),
('146788', Frederick Hanson, '85 Highfield Road SHREWSBURY SY46 3ME ', '[email protected]');

Suorita seuraava IKÄ asettaa toisen vieraan avaimen rajoituksen book_borrow_info taulukon suhteen luomiseksi lainanottajia pöytä. Tässä, lainatunnus määritellään vieraaksi avaimeksi book_borrow_info pöytä.

VAIHDA TAULUKKO book_borrow_info LISÄÄ RAKENNE fk_borrower
ULKOMAINEN AVAIN(lainatunnus)VIITTEET lainanottajat(id)POISTA KASKADI PÄIVITYSRAJOITUKSESSA;

Lisää nyt tietue book_borrow_info voimassa lainatunnus arvo, joka on olemassa id kenttä lainanottajia pöytä. 157643 lainaajataulukossa on arvo ja seuraava INSERT -lauseke suoritetaan onnistuneesti.

INSERT INTO book_borrow_info ARVOT
('157643', 1, '2020-03-10', '2020-03-20', 'Palautettu');

Seuraava INSERT -käsky tuottaa virheilmoituksen, koska id -arvo 195680 ei ole lainaajataulukossa.

INSERT INTO book_borrow_info ARVOT
('195680', 1, '2020-04-15', '2020-04-30', 'Palautettu');

Johtopäätös:

Ulkoisen avaimen rajoitusten määrittäminen oikein on erittäin tärkeä tehtävä relaatiotietokannan luomisessa ja taulukoiden tietojen asianmukaisessa hallinnassa. Tietokannan suunnittelijoille on erittäin tärkeää tuntea vieraiden avainten rajoitusten käyttö. Toivon, että tämä artikkeli auttaa uusia tietokannan suunnittelijoita ymmärtämään vieraan avaimen rajoitusten käsitteen ja soveltamaan niitä asianmukaisesti tehtäviinsä.