Mikä on tietokantasuhde?

Sisällysluettelo:

Mikä on tietokantasuhde?
Mikä on tietokantasuhde?
Anonim

Suhde muodostetaan kahden tietokantataulukon välille, kun yksi taulukko käyttää vierasavainta, joka viittaa toisen taulukon ensisijaiseen avaimeen. Tämä on peruskäsite termin relaatiotietokanta takana.

Kuinka vieras avain toimii suhteen luomiseksi

Ensisijainen avain tunnistaa yksilöllisesti jokaisen taulukon tietueen. Se on ehdokasavaimen tyyppi, joka on yleensä taulukon ensimmäinen sarake ja jonka tietokanta voi luoda automaattisesti sen ainutlaatuisuuden varmistamiseksi. Vieras avain on toinen ehdokasavain (ei ensisijainen avain), jota käytetään tietueen linkittämiseen toisen taulukon tietoihin.

Ajattele esimerkiksi näitä kahta taulukkoa, jotka osoittavat, kuka opettaja opettaa mitäkin kurssia. Tässä Kurssit-taulukon ensisijainen avain on Course_ID. Sen vierasavain on Teacher_ID:

Kurssin_tunnus Kurssin_nimi Teacher_ID
Kurssi_001 Biologia Opettaja_001
Kurssi_002 Math Opettaja_002
Kurssi_003 Englanti Opettaja_003

Voit nähdä, että Kurssien vieraavain vastaa ensisijaista avainta kohdassa Teachers:

Teacher_ID Opettajan_nimi
Opettaja_001 Carmen
Opettaja_002 Veronica
Opettaja_003 Jorge

Voimme sanoa, että Teacher_ID-vierasavain auttoi luomaan yhteyden kurssien ja opettajien taulukoiden välille.

Image
Image

Tietokantasuhteiden tyypit

Käyttämällä vieraita avaimia tai muita ehdokasavaimia voit toteuttaa kolmenlaisia yhteyksiä taulukoiden välillä:

Yksi yhteen

Tämäntyyppinen suhde sallii vain yhden tietueen suhteen kummallakin puolella. Ensisijainen avain liittyy vain yhteen tietueeseen (tai ei yhteenkään) toisessa taulukossa. Esimerkiksi avioliitossa kummallakin puolisolla on vain yksi toinen puoliso. Tällainen suhde voidaan toteuttaa yhdessä taulukossa, joten se ei käytä vierasavainta.

Yksi moniin

Yksi moneen -suhde mahdollistaa yhden taulukon yhden tietueen liittämisen useisiin toisen taulukon tietueisiin. Harkitse yritystä, jolla on asiakas- ja tilaustaulukot sisältävä tietokanta.

Yksi asiakas voi ostaa useita tilauksia, mutta yhtä tilausta ei voitu linkittää useisiin asiakkaisiin. Siksi Tilaukset-taulukko sisältäisi vieraan avaimen, joka vastaa Asiakkaat-taulukon ensisijaista avainta, kun taas Asiakkaat-taulukossa ei olisi vieraa-avainta, joka osoittaisi Tilaukset-taulukkoon.

Monet moneen

Tämä on monimutkainen suhde, jossa monet taulukon tietueet voivat linkittää moniin toisen taulukon tietueisiin. Yrityksemme tarvitsee esimerkiksi todennäköisesti Asiakkaat- ja Tilaukset-taulukoita ja todennäköisesti myös Tuotteet-taulukon.

Asiakkaat ja tilaukset -taulukon välinen suhde on yksi useaan, mutta ota huomioon Tilaukset ja tuotteet -taulukon välinen suhde. Tilaus voi sisältää useita tuotteita, ja tuote voi olla linkitetty useisiin tilauksiin, koska useat asiakkaat voivat lähettää tilauksen, joka sisältää joitain samoja tuotteita. Tällainen suhde vaatii vähintään kolme taulukkoa.

Miksi tietokantasuhteet ovat tärkeitä?

Johdonmukaisten suhteiden luominen tietokantataulukoiden välille auttaa varmistamaan tietojen eheyden, mikä edistää tietokannan normalisointia. Entä jos emme esimerkiksi linkittäisi yhtään taulukkoa vieraalla avaimella ja yhdistäisimme sen sijaan Kurssit- ja Opettajat-taulukoiden tiedot, kuten:

Teacher_ID Opettajan_nimi Kurssi
Opettaja_001 Carmen Biologia, matematiikka
Opettaja_002 Veronica Math
Opettaja_003 Jorge Englanti

Tämä rakenne on joustamaton ja rikkoo tietokannan normalisoinnin ensimmäistä periaatetta, First Normal Form -muotoa, jonka mukaan jokaisen taulukon solun tulee sisältää yksittäinen, erillinen tieto.

Tai ehkä päätimme lisätä Carmenille toisen ennätyksen pakottaaksemme 1NF:

Teacher_ID Opettajan_nimi Kurssi
Opettaja_001 Carmen Biologia
Opettaja_001 Carmen Math
Opettaja_002 Veronica Math
Opettaja_003 Jorge Englanti

Tämä on edelleen heikko rakenne, joka aiheuttaa tarpeetonta päällekkäisyyttä ja niin kutsuttuja tietojen lisäysvirheitä, mikä tarkoittaa, että se voi myötävaikuttaa epäjohdonmukaisiin tietoihin. Jos esimerkiksi opettajalla on useita tietueita, entä jos joitain tietoja on muokattava, mutta tietojen muokkaaja ei ymmärrä, että tietueita on useita? Taulukko sisältäisi sitten eri tiedot samasta henkilöstä ilman selkeää tapaa tunnistaa se tai välttää sitä.

Tämän taulukon jakaminen kahteen taulukkoon, opettajat ja kurssit, luo oikean suhteen tietojen välille ja auttaa siten varmistamaan tietojen johdonmukaisuuden ja tarkkuuden.

Suositeltava: