Tietokannan termi "relaatio" tai "suhde" kuvaa tapaa, jolla taulukoissa olevat tiedot ovat yhteydessä.
Tietokantojen maailmaan tulokkailla on usein vaikea nähdä eroa tietokannan ja laskentataulukon välillä. He näkevät tietoja taulukoista ja tunnustavat, että tietokantojen avulla voit organisoida ja kysellä tietoja uudella tavalla, mutta ette ymmärrä tietojen väliset suhteet jotka antavat relaatiotietokantaan sen nimen.
Suhteissa voit kuvata eri tietokantapöytien välisiä yhteyksiä tehokkaasti. Näitä suhteita voidaan tällöin hyödyntää tehokkaiden ristipöydäkyselyjen suorittamiseksi, joita kutsutaan liitoksiksi.
Datayhteyksien lajit
Tietokantoja on kolme erilaista, joista kukin on nimetty suhteessa taulukon rivien määrään. Kukin näistä kolmesta suhdetyypistä on kahden taulukon välissä.
- Yksi-to-one-suhteet kun kukin taulukon ensimmäisessä taulukossa on yksi ja toinen vastaava toisessa taulukossa. Yksittäisiä suhteita käytetään harvoin, koska usein on tehokkaampaa laittaa kaikki tiedot yhteen taulukkoon. Jotkut tietokantasuunnittelijat hyödyntävät tätä suhdetta luomalla taulukoita, jotka sisältävät toisen taulukon tietolähteen.
- Yksi-to-many-suhteet ovat yleisimpiä tietokantasuhteita. Ne tapahtuvat, kun taulukon A jokainen tietue vastaa yhtä tai useampaa tietuetta taulukossa B, mutta joka taulukon B jokainen tietue vastaa vain yhtä tietuetta taulukossa A. Esimerkiksi opettajien ja oppilaiden taulukon välinen suhde peruskoulussa tietokanta olisi todennäköisesti monen suhde, koska jokaisella opiskelijalla on vain yksi opettaja, mutta jokaisella opettajalla on useita opiskelijoita. Tämä monimuotoinen muotoilu poistaa kaksinkertaisen datan poistamisen.
- Monet-moneen suhteeseen ilmenee, kun jokainen taulukon taulukon A mukainen tieto vastaa yhtä tai useampaa tietuetta taulukossa B ja jokainen taulukon B tieto vastaa yhtä tai useampaa tietuetta taulukossa A. Esimerkiksi Opettajien ja kurssit-taulukon välinen suhde olisi todennäköisesti monta, koska jokainen opettaja voi opettaa useampaa kuin yhtä kurssia, ja jokaisella kurssilla voi olla enemmän kuin yksi ohjaaja.
Itseään viittaavat suhteet: erityinen tapaus
Itse-viittaavat suhteet tapahtuvat, kun kyseessä on vain yksi taulukko. Yksi yleinen esimerkki on Työntekijät-taulukko, joka sisältää tietoja kunkin työntekijän ohjaajasta. Jokainen ohjaaja on myös työntekijä, jolla on oma ohjaaja. Tällöin on olemassa yksi-monta itseään viittaavaa suhdetta, sillä jokaisella työntekijällä on yksi ohjaaja, mutta jokaisella ohjaajalla voi olla enemmän kuin yksi työntekijä.
Suhteiden luominen ulkomaisten avainten kanssa
Luodaan suhteita taulukoiden välille määrittelemällä vieras avain. Tämä avain kertoo relaatiotietokannasta, kuinka taulukot liittyvät. Monissa tapauksissa taulukon A sarakkeessa on ensisijaisia avaimia, joihin viitataan taulukosta B.
Tarkastele uudelleen esimerkkiä opettajien ja opiskelijoiden taulukoista. Opettajat-taulukossa on vain tunnus, nimi ja kurssi-sarake:
InstructorID | Opettajan nimi | kurssi |
---|---|---|
001 | John Doe | Englanti |
002 | Jane Schmoe | Matematiikka |
Opiskelija-taulukossa on tunnus, nimi ja vieras avainsarja:
Opiskelijanumero | Opiskelijan nimi | Teacher_FK |
---|---|---|
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Sarake Teacher_FK Opiskelija-taulukossa viittaa ohjaajan ensisijaiseen avainarvoon Opettajat-taulukossa.
Usein tietokannan suunnittelijat käyttävät sarakkeessa "PK" tai "FK" tunnistamaan helposti ensisijaisen avaimen tai ulkomaisen avainsarakkeen.
Huomaa, että nämä kaksi taulukkoa havainnollistavat yhden ja monia suhteita opettajien ja opiskelijoiden välillä.
Suhteet ja viiteherkkyys
Kun olet lisännyt vieraan avaimen taulukkoon, voit luoda tietokantarajoituksen, joka ohjaa näiden kahden taulukon välistä viite-eheyttä. Näin taulukoiden väliset suhteet säilyvät yhtenäisinä. Kun yhdellä taulukolla on vieras avain toiseen taulukkoon, viitekevyyden eheyden käsite ilmoittaa, että taulukon B ulkomaisen avainarvon on viitattava taulukossa A olevaan olemassa olevaan tietueeseen.
Suhteiden toteuttaminen
Tietokannasta riippuen toteutat eri taulukoiden välisiä suhteita. Microsoft Access tarjoaa ohjatun toiminnon, jonka avulla voit helposti yhdistää taulukoita ja myös viitataedellytyksen.
Jos kirjoitat suoraan SQL: ää, luo ensin taulukko Opettajat ja julista ID-sarake ensisijaiseksi avaimeksi:
LUOVAA TAULUKKO Opettajat (
InstructorID INT AUTO_INCREMENT PRIMARY KEY, Opettaja_Name VARCHAR (100), Kurssi VARCHAR (100));
Kun luot opiskelijan taulukon, ilmoitat, että Teacher_FK-sarake on vieraana avain, joka viittaa InstructorID-sarakkeeseen Opettajien taulukossa:
LUETTELO TAULUKKO Opiskelijat ( StudentID INT AUTO_INCREMENT PRIMARY KEY, Opiskelijan nimi VARCHAR (100), Teacher_FK INT, FOREIGN KEY (Teacher_FK) REFERENSSIT Opettajat (InstructorID)))
;
Yhteyksien käyttäminen liittymiseen
Kun olet luonut yhden tai useamman suhteesi tietokantaan, voit hyödyntää tehoa käyttämällä SQL JOIN-kyselyjä yhdistääkseen tietoja useista taulukoista. Yleisin liittymismalli on SQL INNER JOIN, tai yksinkertainen liittymä. Tämäntyyppinen liittymä palauttaa kaikki tietueet, jotka täyttävät liittymätilan useista taulukoista.Esimerkiksi tämä JOIN -ehto palauttaa opiskelijanimen, opettajan nimen ja kurssin, jossa oppilaan taulukon vierasavaava vastaa Teachers-taulukon ensisijaista avainta:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.CourseOpiskelijoiltaINNER JOIN OpettajatON Students.Teacher_FK = Teachers.InstructorID;
Tämä lausuma tuottaa tällaisen taulukon:
Palautettu taulukko SQL-lausekkeesta
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglantiBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglanti