Datu- base batean harreman bakarreko bat gertatzen da taula A erregistro bakoitzean B taula asko lotutako erregistroak izan ditzake, baina B taulan erregistro bakoitzak dagokion erregistro bat bakarrik izan dezake 1. taulan. Harreman bakarreko bat datu-basea datu-basearen diseinu erlazional arruntena da eta diseinu onaren bihotzean dago.
Ikasleen arteko harremana eta irakasteko ikastaroak kontuan hartu. Irakasle batek hainbat ikastaro irakats dezake, baina ikastaroak ez luke harremana izango irakaslearekin.
Hori dela eta, irakasleen taulan erregistro bakoitza erregistro asko egon daiteke ikastaroen taulan. Hau bat-to-askoren harremana da: irakasle bat hainbat ikastaro.
Zergatik harreman bakar bat ezartzea garrantzitsua da
Bat-bateko harremana irudikatzeko, gutxienez bi taula behar dituzu. Ikus dezagun zergatik.
Beharbada irakasleen taula sortu genuen, izen eta ikastaroak irakatsi nahi genituen. Honela diseinatu dezakegu:
Teacher_ID | Teacher_Name | Ikastaroa |
---|---|---|
Teacher_001 | Carmen | Biologia |
Teacher_002 | Veronica | Matematika |
Teacher_003 | Jorge | English |
Zein da Carmenek bi edo gehiago ikastaroak irakasten baditu? Diseinu honekin bi aukera ditugu. Carmenen egungo erregistroan besterik ezin dugu gehitu, honela:
Teacher_ID | Irakaslearen _ izena | Ikastaroa |
---|---|---|
Teacher_001 | Carmen | Biologia, Matematika |
Teacher_002 | Veronica | Matematika |
Teacher_003 | Jorge | English |
Goiko diseinua, ordea, inflexiblea da eta arazoak sor ditzake datuak sartu, editatu edo ezabatu nahian.
Datuen bilaketa zaila egiten du. Diseinu honek datu-basearen normalizazioaren lehenengo printzipioa urratzen du, First Normal Form (1NF) , eta horrek adierazten du taula zelulek datu bakar eta diskretu bat eduki behar dutela.
Beste diseinu alternatibo bat Carmenen bigarren diskoa besterik ez da gehitu:
Irakaslea _ID | Irakaslearen _ izena | Ikastaroa |
---|---|---|
Teacher_001 | Carmen | Biologia |
Teacher_001 | Carmen | Matematika |
Teacher_002 | Veronica | Matematika |
Teacher_003 | Jorge | English |
Honek 1NFra atxikitzen du, baina oraindik ere datu-basearen diseinu txarra da, erredundantzia sartzen delako eta datu-basea oso handia alda dezakeelako. Garrantzitsuagoa dena, datuak ez datoz bat. Adibidez, zer gertatuko al zen Carmen izena? Datuekin lan egiteak bere izena egun bakar batean eguneratu dezake eta bigarren erregistroan eguneratu ezean. Diseinu honek Bigarren Inprimaki Normal (2NF) urratzen du, eta 1NFra atxikitzen da eta erregistro anitzetako erredundantzia saihestu behar du datuen azpimailak mahai anitzetan bananduz eta haien arteko harremana sortuz.
Nola datu-base bat diseinatu One-to-Many harremanak
Irakasleen eta Ikastaroen taula bateko bat-bateko harremana ezartzeko, taulak bi jarriko ditugu eta kanpoko gako bat erabiliz lotuko ditugu.
Hemen, Irakasleak taulan zutabea kendu dugu.
Irakaslea _ID | Irakaslearen _ izena |
---|---|
Teacher_001 | Carmen |
Teacher_002 | Veronica |
Teacher_003 | Jorge |
Eta hemen Ikastaroen taula da. Kontutan izan atzerriko giltza, Teacher_ID, ikastaro bat irakasle bati irakasleen taula batean lotzen duela:
Course_ID | Course_Name | Teacher_ID |
---|---|---|
Course_001 | Biologia | Teacher_001 |
Course_002 | Matematika | Teacher_001 |
Course_003 | English | Teacher_003 |
Irakasleen eta Ikastaroen taularen arteko harremana garatu dugu kanpoko gako baten bidez.
Honek kontatzen digu Biologia eta Matematika Carmenek irakasten dutela eta Jorgek ingelesa irakasten duela.
Ikusten dugunez, diseinu honek ahalik eta erredundanteak saihesten ditu, irakasle indibidualak hainbat ikastaro irakasteko aukera ematen du, eta bat-bateko erlazioa inplementatzen du.
Datu-baseek bat-to-one harremana eta harreman askotatik asko bateratzen dituzte.