Tietokantojen suhde

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ä relaatiotietokantojen tietokannan datan välisten suhteiden merkitystä.

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ä.

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 yhteydet taulukoiden välille määrittämällä vieras avain. Tämä avain kertoo relaatiotietokannasta, kuinka taulut 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:

opettajat
InstructorID Opettajan nimi kurssi
001 John Doe Englanti
002 Jane Schmoe Matematiikka

Opiskelija-taulukossa on tunnus, nimi ja vieras avainsarja:

opiskelijat
Opiskelijanumero Opiskelijan nimi Teacher_FK
0200 Lowell Smith 001
0201 Brian Short 001
0202 Corky Mendez 002
0203 Monica Jones 001

Opiskelija-taulukon sarake Teacher_FK 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.Course
Opiskelijoilta
INNER JOIN Opettajat
ON 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