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