Tietokantatermit relaatio ja suhde kuvaavat tapaa, jolla taulukoiden tiedot yhdistetään. Relaatiotietokanta koostuu kahdesta tai useammasta taulukosta, jotka on linkitetty tietyllä avaimella. Relaatiotietokanta eroaa strukturoimattomista tietokannoista, jotka ovat yleisiä big data -aloitteissa. Relaatiotietokannat vaativat yleensä tiukkoja sääntöjä siitä, miten taulukot määritellään ja mikä muodostaa kelvollisen suhteen taulukoiden välillä.
Tietokantasuhteiden tyypit
Suhteet antavat sinun kuvata tietokantataulukoiden välisiä yhteyksiä tehokkailla tavoilla. Näitä suhteita voidaan sitten hyödyntää tehokkaiden taulukkojen välisten kyselyjen suorittamiseen, jotka tunnetaan nimellä JOIN.
On olemassa kolmenlaisia tietokantasuhteita, joista jokainen on nimetty suhteeseen liittyvien taulukkorivien lukumäärän mukaan. Kukin näistä kolmesta suhdetyypistä on olemassa kahden taulukon välillä.
- Yksi-yhteen-suhteet esiintyy, kun jokaisella ensimmäisen taulukon merkinnällä on vain yksi vastine toisessa taulukossa. Yksi-yhteen-suhteita käytetään harvoin, koska usein on tehokkaampaa laittaa kaikki tiedot yhteen taulukkoon. Jotkut tietokantojen suunnittelijat hyödyntävät tätä suhdetta luomalla taulukoita, jotka sisältävät osan toisen taulukon tiedoista.
- Yksi moniin -suhteet ovat yleisin tietokantasuhdetyyppi. Niitä esiintyy, kun jokainen taulukon A tietue vastaa yhtä tai useampaa taulukon B tietuetta, mutta jokainen taulukon B tietue vastaa vain yhtä tietuetta taulukossa A. Esimerkiksi opettajataulukon ja opiskelijataulukon välinen suhde peruskoulussa Tietokanta olisi todennäköisesti yksi-moneen-suhde, koska jokaisella opiskelijalla on vain yksi opettaja, mutta jokaisella opettajalla on useita oppilaita. Tämä yksi moniin -malli auttaa poistamaan päällekkäiset tiedot.
- Monesta moneen -suhteita esiintyy, kun jokainen taulukon A tietue vastaa yhtä tai useampaa taulukon B tietuetta ja jokainen taulukon B tietue vastaa yhtä tai useampaa tietuetta taulukossa A. Esimerkiksi opettajat-taulukon ja Kurssit-taulukon välinen suhde olisi todennäköisesti monta-moneen, koska jokainen opettaja voi ohjata useampaa kuin yhtä kurssia ja jokaisella kurssilla voi olla useampi kuin yksi ohjaaja.
Bottom Line
Itseviittavia suhteita esiintyy, kun mukana on vain yksi taulukko. Yksi yleinen esimerkki on Työntekijät-taulukko, joka sisältää tiedot kunkin työntekijän esimiehestä. Jokainen esimies on myös työntekijä ja hänellä on esimies. Tässä tapauksessa on olemassa yksi-moneen itseviittaussuhde, koska jokaisella työntekijällä on yksi esimies, mutta jokaisella esimiehellä voi olla useampi kuin yksi työntekijä.
Suhteiden luominen vierailla avaimilla
Luot suhteita taulukoiden välille määrittämällä vierasavaimen. Tämä avain kertoo relaatiotietokannalle, kuinka taulukot liittyvät toisiinsa. Monissa tapauksissa taulukon A sarake sisältää ensisijaisia avaimia, joihin viitataan taulukosta B.
Mieti esimerkkiä Opettajat ja Opiskelijat -taulukoista. Opettajat-taulukko sisältää tunnuksen, nimen ja kurssin sarakkeen:
InstructorID | Opettajan_nimi | Kurssi |
001 | John Doe | Englanti |
002 | Jane Schmoe | Math |
Opiskelijataulukko sisältää tunnuksen, nimen ja vierasavaimen sarakkeen:
StudentID | Student_Name | Teacher_FK |
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Sarake Teacher_FK Opiskelijat-taulukossa viittaa opettajan ensisijaiseen avaimen arvoon Opettajat-taulukossa. Usein tietokannan suunnittelijat käyttävät PK:ta tai FK:ta sarakkeen nimessä ensisijaisen avaimen tai vierasavainsarakkeen tunnistamiseen.
Nämä kaksi taulukkoa havainnollistavat opettajien ja opiskelijoiden välistä yksi-moneen-suhdetta.
Suhteet ja viittausrehellisyys
Kun olet lisännyt vierasavaimen taulukkoon, luo tietokantarajoitus, joka pakottaa kahden taulukon välisen viittauksen eheyden. Tämä vaihe varmistaa, että taulukoiden väliset suhteet pysyvät johdonmukaisina. Kun yhdellä taulukolla on toisen taulukon vierasavain, viittauksen eheys edellyttää, että minkä tahansa taulukon B vieraan avaimen arvon on viitattava olemassa olevaan tietueeseen taulukossa A.
Suhteiden toteuttaminen
Riippuen tietokannastasi, voit toteuttaa taulukoiden välisiä suhteita eri tavoilla. Microsoft Access tarjoaa ohjatun toiminnon, jonka avulla voit linkittää taulukoita ja myös valvoa viitetietojen eheyttä.
Jos kirjoitat SQL:ää suoraan, luo ensin taulukko Teachers ja määritä ID-sarake ensisijaiseksi avaimeksi:
LUO TAULUKKO Opettajat (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR(100), Kurssi VARCHAR(100));
Kun luot Opiskelijat-taulukon, määrität Teacher_FK-sarakkeen vieraaksi avaimeksi, joka viittaa opettajien taulukon InstructorID-sarakkeeseen:
LUO TAULUKKO Opiskelijat (StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR(100), Teacher_FK INT, FOREIGN KEY (Teacher_IDFK) REFERENCESor_FK));
Suhteiden käyttäminen taulukoiden liittämiseen
Kun olet luonut yhden tai useamman suhteen tietokantaan, hyödynnä niiden tehoa yhdistämällä tietoja useista taulukoista SQL JOIN -kyselyillä. Yleisin liitostyyppi on SQL INNER JOIN, joka on yksinkertainen liitos. Tämäntyyppinen liitos palauttaa kaikki liitosehdon täyttävät tietueet yhdestä tai useammasta taulukosta.
Esimerkiksi tämä JOIN-ehto palauttaa Opiskelijan_Nimi, Opettajan_nimi ja Kurssi, jossa Opiskelijat-taulukon vierasavain vastaa Opettajat-taulukon ensisijaista avainta:
VALITSE Opiskelijat. Opiskelijan_nimi, Opettajat. Opettajan_nimi, Opettajat. Kurssi
FROM Opiskelijat
SISÄLIITY OpettajatON Opiskelijat. Teacher_FK=Opettajat. OpettajaID;
Tämä lause tuottaa taulukon, joka on suunnilleen tällainen:
Opiskelijan_nimi | Opettajan_nimi | Kurssi |
Lowell Smith | John Doe | Englanti |
Brian Short | John Doe | Englanti |
Corky Mendez | Jane Schmoe | Math |
Monica Jones | John Doe | Englanti |