Tietokannan suhteet

Tietokannan suhteet ovat kaikkien relaatiotietokantojen selkäranka

Suhde syntyy kahden tietokantataulun välillä, kun yhdessä taulukossa on vieras avain, joka viittaa toisen taulukon ensisijaiseen avaimeen. Tämä on termi käsite termi relaatiotietokanta.

Kuinka ulkonainen avain toimii suhteen luomisessa

Tarkastellaan perus- ja ulkomaisten avainten perusasiat. Ensisijainen avain yksilöi tunnistetusti jokaisen tietueen taulukossa. Se on eräänlainen hakusana, joka on tavallisesti taulukon ensimmäinen sarake, ja tietokanta voi automaattisesti luoda sen, että se on ainutlaatuinen.

Ulkopuolinen avain on toinen hakukoodi (ei ensisijainen avain), jota käytetään yhdistämään tietue toiseen taulukkoon.

Tarkastele esimerkiksi näitä kahta taulukkoa, jotka osoittavat, mikä opettaja opettaa, mikä kurssi.

Tässä Kurssit-taulukon ensisijainen avain on Course_ID. Sen ulkomainen avain on Teacher_ID:

Kurssit
Course_ID Kurssin nimi Teacher_ID
Course_001 Biologia Teacher_001
Course_002 Matematiikka Teacher_001
Course_003 Englanti Teacher_003

Näet, että kurssien ulkomainen avain vastaa ensisijaista avainta opettajissa:

opettajat
Teacher_ID Opettajan nimi
Teacher_001 carmen
Teacher_002 Veronica
Teacher_003 Jorge

Voimme sanoa, että Teacher_ID: n vieraan avaimen avulla on luotu suhde kurssit ja opettajien taulukoiden välillä.

Datayhteyksien lajit

Ulkomaisten avainten tai muiden ehdokasnäppäinten avulla voit toteuttaa kolmen tyyppisiä suhteita taulukoiden välillä:

One-to-one : Tämän tyyppinen suhde mahdollistaa vain yhden tietueen suhteen kummallekin puolelle.

Ensisijainen avain liittyy vain yhteen tietueeseen - tai ei - toiseen taulukkoon. Esimerkiksi avioliitossa kaikilla puolisoilla on vain yksi toinen puoliso. Tällainen suhde voidaan toteuttaa yhdessä taulukossa eikä siksi käytä vierasta avainta.

One-to-many : Yksi-to-many-suhde mahdollistaa yhden taulukon yhden tietueen liittyvän useisiin tietueisiin toisessa taulukossa.

Harkitse liiketoimintaa tietokannalla, jolla on asiakkaat ja tilaukset -taulukot.

Yksittäinen asiakas voi ostaa useita tilauksia, mutta yksittäistä tilausta ei voitu yhdistää useille asiakkaille. Siksi Tilaus-taulukossa olisi vieras avain, joka sopi asiakkaiden taulukon ensisijaisen avaimen kanssa, kun taas Asiakkaat-taulukossa ei olisi vierasta avainta, joka osoittaa Orders-taulukkoa.

Monet-to-many : Tämä on monimutkainen suhde, jossa useat taulukon tietueet voivat yhdistää useisiin tietueisiin toisessa taulukossa. Esimerkiksi liiketoimintamme tarvitsee todennäköisesti paitsi Asiakkaat ja tilaukset -taulukot, mutta todennäköisesti myös tarvitsee Products-taulukon.

Jälleen asiakkaiden ja tilausten välinen suhde on yksi-monta, mutta huomioi tilausten ja tuotteiden taulukon välinen suhde. Tilaus voi sisältää useita tuotteita ja tuote voidaan yhdistää useisiin tilauksiin: useat asiakkaat voivat lähettää tilauksen, joka sisältää joitain samoja tuotteita. Tällainen suhde edellyttää vähintään kolmea taulua.

Mitä tietokannan suhteet ovat tärkeitä?

Tietokantapöytien välisten johdonmukaisten suhteiden luominen auttaa varmistamaan tietojen eheyden, mikä edistää tietokannan normalisointia. Mitä esimerkiksi, jos emme linkittäneet mitään taulukoita ulkomaisen avaimen kautta, vaan vain yhdistimme tiedot kurssit ja opettajat -taulukkoihin, kuten:

Opettajat ja kurssit
Teacher_ID Opettajan nimi kurssi
Teacher_001 carmen Biologia, Matematiikka
Teacher_002 Veronica Matematiikka
Teacher_003 Jorge Englanti

Tämä malli on joustamaton ja rikkoo tietokannan normalisoinnin ensimmäistä periaatetta, First Normal Form (1NF), jossa todetaan, että jokaisen taulukon solun tulisi sisältää yksi, erillinen tieto.

Tai kenties päätimme lisätä Carmenille toisen kirjauksen, jotta voimme panna täytäntöön 1NF:

Opettajat ja kurssit
Teacher_ID Opettajan nimi kurssi
Teacher_001 carmen Biologia
Teacher_001 carmen Matematiikka
Teacher_002 Veronica Matematiikka
Teacher_003 Jorge Englanti

Tämä on edelleen heikko muotoilu, mikä aiheuttaa tarpeettomia päällekkäisyyksiä ja mitä kutsutaan tietojen lisäämisen poikkeavuuksiksi , mikä tarkoittaa vain sitä, että se voisi osaltaan vaikuttaa epäjohdonmukaisiin tietoihin.

Jos esimerkiksi opettajalla on useita tietueita, mitä jos tietyt tiedot on muokattava, mutta tietojen muokkaamista suorittava henkilö ei ymmärrä, että on olemassa useita tietueita? Taulukossa olisi sitten saman henkilön tietoja, ilman selkeää tapaa tunnistaa tai välttää sitä.

Tämän taulukon jakaminen kahteen tauluun, Opettajat ja kurssit (kuten edellä on esitetty) luo oikean suhteen tietojen välillä ja auttaa siten varmistamaan tietojen yhtenäisyyden ja tarkkuuden.