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