Avainero viiteavaimen ja ensisijaisen avaimen välillä on se, että viiteavain on sarake tai sarakejoukko, joka viittaa toisen taulukon ensisijaiseen avaimeen tai ehdokasavaimeen, kun taas ensisijainen avain on sarake tai sarakkeiden joukko jota voidaan käyttää yksilöimään taulukon rivi.
Saraketta tai sarakejoukkoa, jota voidaan käyttää tietokannan rivin tai rivijoukon tunnistamiseen tai käyttämiseen, kutsutaan avaimeksi. Relaatiotietokannan ensisijainen avain on taulukon sarakkeiden yhdistelmä, joka yksilöi taulukon rivin. Relaatiotietokannan vierasavain on taulukon kenttä, joka vastaa toisen taulukon ensisijaista avainta. Vierasavainta käytetään taulukoiden ristiinviittaukseen.
Mikä on vierasavain?
Vieras avain on kahden taulukon välinen viiterajoitus. Se identifioi sarakkeen tai sarakejoukon yhdessä taulukossa, jota kutsutaan viittaustaulukoksi ja joka viittaa sarakkeiden joukkoon toisessa taulukossa, jota kutsutaan viitatuksi taulukoksi. Viitaustaulukon viiteavaimen tai sarakkeiden on oltava viitetaulukon ensisijainen avain tai ehdokasavain (avain, jota voidaan käyttää ensisijaisena avaimena). Lisäksi vieraiden avainten avulla voidaan linkittää tietoja useiden taulukoiden välillä. Siksi viiteavain ei voi sisältää arvoja, jotka eivät näy siinä taulukossa, johon se viittaa. Tällöin vieraan avaimen antama viite auttaa linkittämään tietoa useissa taulukoissa ja tämä olisi välttämätöntä normalisoitujen tietokantojen kanssa. Useat viittaustaulukon rivit voivat viitata yhteen riviin viitatussa taulukossa.
Kuva 01: Vieraiden avainten kartoitus
ANSI SQL -standardissa FOREIGN KEY -rajoite määrittää vierasavaimet. Lisäksi on mahdollista määritellä vierasavaimet itse taulukkoa luotaessa. Taulukossa voi olla useita vieraita avaimia, ja ne voivat viitata eri taulukoihin.
Mikä on ensisijainen avain?
Ensisijainen avain on sarake tai sarakkeiden yhdistelmä, joka määrittää yksilöllisesti rivin relaatiotietokannan taulukossa. Taulukossa voi olla enintään yksi ensisijainen avain. Ensisijainen avain pakottaa implisiittisen NOT NULL -rajoitteen. Siksi perusavaimella varustetussa sarakkeessa ei voi olla NULL-arvoja. Ensisijainen avain voi olla taulukon normaali attribuutti, joka on taatusti yksilöllinen, kuten sosiaaliturvatunnus, tai se voi olla tietokannan hallintajärjestelmän luoma yksilöllinen arvo, kuten Microsoft SQL Serverin Globally Unique Identifier (GUID).
Kuva 02: Ensisijainen avain
Lisäksi ANSI SQL -standardin PRIMARY KEY -rajoite määrittää ensisijaiset avaimet. On myös mahdollista määrittää ensisijainen avain taulukkoa luotaessa. Tämän lisäksi SQL sallii ensisijaisen avaimen muodostumisen yhdestä tai useammasta sarakkeesta, ja jokainen sarake, joka sisältyy ensisijaiseen avaimeen, määritellään implisiittisesti EI NULLiksi. Mutta jotkin tietokannan hallintajärjestelmät vaativat ensisijaisen avaimen sarakkeiden tekemisen nimenomaisesti EI NULL.
Mitä eroa vieraalla avaimella ja ensisijaisella avaimella on?
Vieras avain vs ensisijainen avain |
|
Vieras avain on sarake tai sarakkeiden ryhmä relaatiotietokantataulukossa, joka yhdistää kahden taulukon tiedot. | Ensisijainen avain on erityinen relaatiotietokantataulukon sarake tai useiden sarakkeiden yhdistelmä, jonka avulla voidaan yksilöidä kaikki taulukon tietueet. |
NULL | |
Vielä avain hyväksyy NULL-arvon. | Ensisijaisen avaimen arvo ei voi olla NULL. |
Näppäinten määrä | |
Taulukossa voi olla useita vieraita avaimia. | Taulukossa voi olla vain yksi ensisijainen avain. |
Kopiointi | |
Tupleksilla voi olla kaksoisarvo vieraan avaimen attribuutille. | Kahdella relaatiossa olevalla monitolla ei voi olla päällekkäisiä arvoja ensisijaisen avaimen attribuutille. |
Yhteenveto – Vieras avain vs ensisijainen avain
Vierasavaimen ja ensisijaisen avaimen välinen ero on se, että viiteavain on sarake tai sarakejoukko, joka viittaa toisen taulukon perusavaimeen tai ehdokasavaimeen, kun taas ensisijainen avain on sarake tai sarakkeiden joukko, joka voidaan käyttää yksilöimään taulukon rivi.