Vieraiden avainten voima relaatiotietokantoissa
Tietokannan suunnittelijat käyttävät avaimia laajasti kehittäessään relaatiotietokannat. Yleisimpiä näistä avaimista ovat ensisijaiset avaimet ja vierasavaimet. Tietokannan vierasavain on relaatiotaulukon kenttä, joka vastaa toisen taulukon perusavainsaraketta. Ymmärtääksemme, kuinka vieras avain toimii, katsotaanpa tarkemmin ajatusta relaatiotietokannasta.
Jotkut relaatiotietokantojen perusteet
Relaatiotietokannassa tiedot tallennetaan rivejä ja sarakkeita sisältäviin taulukoihin, mikä helpottaa hakua ja käsittelyä. Relaatiotietokannan käsitteen taustalla on vakavaa matematiikkaa (relaatioalgebra, E.F. Coddin IBM: ssä vuonna 1970 ehdottama), mutta se ei ole tämän artikkelin aihe.
Käytännön tarkoituksiin (ja ei-matemaatikoille) relaatiotietokanta tallentaa liittyvät tiedot riveissä ja sarakkeissa. Lisäksi - ja tässä se tulee mielenkiintoiseksi - useimmat tietokannat on suunniteltu siten, että yhden taulukon tiedot voivat käyttää toisen taulukon tietoja. Tämä kyky luoda suhteita taulukoiden välille on relaatiotietokannan todellinen voima.
Vieraiden avainten käyttö
Useimmissa taulukoissa, erityisesti suurissa ja monimutkaisissa tietokannoissa olevissa taulukoissa, on perusavaimet. Taulukoissa, jotka on suunniteltu käyttämään muita taulukoita, on myös oltava vierasavain.
Tässä on ote tuotetaulukosta käyttääksesi yleisesti lainattua Northwinds-tietokantaa:
Tuotetunnus | Tuotteen nimi | KategoriaID | Määrä PerU | Yksikköhinta |
---|---|---|---|---|
1 | Chai | 1 | 10 laatikkoa x 20 pussia | 18.00 |
2 | Chang | 1 | 24-12 unssin pullot | 19.00 |
3 | Anis-siirappi | 2 | 12-550 ml pullot | 10.00 |
4 | Chef Antonin Cajun-mauste | 2 | 48-6 unssin purkit | 22.00 |
5 | Keittiömestari Antonin Gumbo Mix | 2 | 36 laatikkoa | 21.35 |
6 | Isoäidin Boysenberry levite | 2 | 12-8 unssin purkit | 25.00 |
7 | Uncle Bobin luomukuivattuja päärynöitä | 7 | 12-1 lb pkgs. | 30.00 |
The Tuotetunnus sarake on tämän taulukon ensisijainen avain. Se määrittää jokaiselle tuotteelle yksilöllisen tunnuksen.
Tämä taulukko sisältää myös viiteavainsarakkeen, KategoriaID. Jokainen tuotetaulukon tuote linkittää Luokat-taulukon merkintään, joka määrittelee kyseisen tuotteen luokan.
Huomaa tämä ote tietokannan Kategoriat-taulukosta:
KategoriaID | Kategorian nimi | Kuvaus |
---|---|---|
1 | Juomat | Virvoitusjuomat, kahvit, teet, oluet ja oluet |
2 | Mausteet | Makeat ja suolaiset kastikkeet, herkut, levitteet ja mausteet |
3 | Makeiset | Jälkiruoat, karkit ja makeiset |
5 | Maitotuotteet | Juustot |
Kolumni KategoriaID on tämän sarakkeen ensisijainen avain. (Sillä ei ole viiteavainta, koska sillä ei ole tarvetta käyttää toista taulukkoa.) Jokainen tuotetaulukon vierasavain linkittää ensisijaiseen avaimeen Kategoriat-taulukossa. Esimerkiksi tuote Chai on määritetty luokkaan "Juomat", kun taas anissiirappi on kategoriassa Mausteet.
Tällainen linkittäminen luo lukemattomia tapoja käyttää ja käyttää uudelleen relaatiotietokannan tietoja.