GettyImages 580501819 5a42885398020700379981c8 32f7898ca3ed408389d3d2c6deb4bc41

Yksi-moneen-suhde tietokannassa tapahtuu, kun jokaiseen taulukon A tietueeseen voi liittyä useita tietueita taulukossa B, mutta jokaisella taulukon B tietueella on vain yksi vastaava tietue taulukossa A. suhde tietokannassa on yleisin relaatiosuhde. tietokantasuunnittelua ja on hyvän suunnittelun ytimessä. Tietokannat voivat myös toteuttaa yksi-yhteen-suhteen ja useat moneen -suhteen.

Esimerkki yksi-moneen-suhteesta

Ajattele opettajan ja heidän opettamiensa kurssien välistä suhdetta. Opettaja voi opettaa useita luokkia, mutta kurssilla ei ole samaa suhdetta opettajaan. Siksi jokaiselle opettajataulukon tietueelle voi olla useita tietueita Kurssit-taulukossa. Tämä esimerkki havainnollistaa yksi-moneen-suhdetta: yksi opettaja useille kursseille.

Miksi yksi-moneen suhteen luominen on tärkeää

Jotta voit edustaa yksi-moneen-suhdetta, tarvitset vähintään kaksi taulukkoa. Katsotaanpa miksi.

Yhdenmukaisuus ensimmäisen normaalin muotoisen mallin kanssa

Olemme ehkä luoneet taulukon, johon haluamme tallentaa nimen ja annetut kurssit. Voimme suunnitella pöydän opettajille ja kursseille seuraavasti:

Opettajan_ID Nimeä opettaja Luokka
opettaja_001 carmen Biologia
opettaja_002 Veronica Matematiikka
opettaja_003 Jorge Englanti

Entä jos Carmen opettaa kahta tai useampaa kurssia? Meillä on kaksi vaihtoehtoa tälle mallille. Voimme lisätä sen Carmenin olemassa olevaan levyyn seuraavasti:

Opettajan_ID Lehtori_Nimi Luokka
opettaja_001 carmen Biologia, matematiikka
opettaja_002 Veronica Matematiikka
opettaja_003 Jorge Englanti

Yllä oleva rakenne ei kuitenkaan ole joustava ja voi aiheuttaa ongelmia myöhemmin, kun lisäät, muokkaat tai poistat tietoja. Se vaikeuttaa tietojen etsimistä. Tämä rakenne rikkoo myös tietokannan normalisoinnin ensimmäistä periaatetta, First Normal Form (1NF), jonka mukaan jokaisen taulukon solun on sisällettävä yksi tieto.

Toinen normaalimuotosääntö

Toinen suunnitteluvaihtoehto voisi olla toisen ennätyksen lisääminen Carmenille:

Lehtori_HENKILÖKORTTI Lehtori_Nimi Luokka
opettaja_001 carmen Biologia
opettaja_001 carmen Matematiikka
opettaja_002 Veronica Matematiikka
opettaja_003 Jorge Englanti

Tämä lähestymistapa noudattaa 1NF:ää, mutta on silti huono tietokantasuunnittelu, koska se aiheuttaa redundanssia ja voi saada suuren tietokannan turvotuksi tarpeettomasti. Vielä tärkeämpää on, että tiedoista voi tulla epäjohdonmukaisia. Entä jos esimerkiksi Carmenin nimi vaihtuu? Joku, joka työskentelee tietojen kanssa, voi päivittää nimensä yhdessä tietueessa, mutta ei päivittää sitä toisessa tietueessa. Tämä rakenne rikkoo 2NF (Second Normal Form) -standardia, joka on 1NF:n mukainen, ja sen on myös vältettävä useiden tietueiden redundanssia. 2NF-sääntö suorittaa tämän erottamalla datan osajoukot useiksi taulukoiksi ja luomalla niiden välille suhteen.

Tietokannan suunnittelu, jossa on yksi-moneen-suhteita

Ota yksi moneen -suhde käyttöön Opettajat ja kurssit -taulukossa jakamalla taulukot kahtia ja linkittämällä ne vieraalla avaimella. Tässä olemme poistaneet Kurssi-sarakkeen Opettajat-taulukosta:

Lehtori_HENKILÖKORTTI Lehtori_Nimi
opettaja_001 carmen
opettaja_002 Veronica
opettaja_003 Jorge

Ja tässä on Kurssit-taulukko. Huomaa, että vierasavain, Teacher_ID, yhdistää kurssin opettajaan Opettajat-taulukossa:

Kurssin tunnus Kurssin nimi Opettajan_ID
Kurssi_001 Biologia opettaja_001
Kurssi_002 Matematiikka opettaja_001
Kurssi_003 Englanti opettaja_003

Olemme kehittäneet opettajien ja Kurssit-kurssin välisen suhteen vieraalla avaimella. Tämä järjestely kertoo meille, että Carmen opettaa sekä biologiaa että matematiikkaa ja Jorge englantia. Voimme nähdä, kuinka tämä malli välttää mahdolliset irtisanomiset, antaa yksittäisille opettajille mahdollisuuden järjestää useita kursseja ja toteuttaa yksi-moneen-suhteen.

Tilaa uutiskirje

Tilaa uutiskirje

Tilaa uutiskirje

Tilaa uutiskirje

Tilaa uutiskirje

Por Markus