Uhusiano wa mtu mmoja kwa wengi katika hifadhidata hutokea wakati kila rekodi katika Jedwali A inaweza kuwa na rekodi nyingi zilizounganishwa katika Jedwali B, lakini kila rekodi katika Jedwali B inaweza kuwa na rekodi moja tu inayolingana katika Jedwali A.
Uhusiano wa mtu mmoja kwa wengi katika hifadhidata ndio muundo wa hifadhidata unaojulikana zaidi na ndio kiini cha muundo mzuri.
Kanudata pia zinaweza kutekeleza uhusiano wa mtu mmoja hadi mmoja na uhusiano wa wengi hadi wengi.
Mfano wa Uhusiano wa Mmoja kwa Wengi
Zingatia uhusiano kati ya mwalimu na kozi anazofundisha. Mwalimu anaweza kufundisha madarasa mengi, lakini kozi hiyo haitakuwa na uhusiano sawa na mwalimu.
Kwa hivyo, kwa kila rekodi katika jedwali la Walimu, kunaweza kuwa na rekodi nyingi katika jedwali la Kozi. Mfano huu unaonyesha uhusiano kati ya wengi: mwalimu mmoja kwa kozi nyingi.
Kwa nini Kuanzisha Uhusiano wa Mmoja-kwa-Wengi Ni Muhimu
Ili kuwakilisha uhusiano wa mtu mmoja hadi wengi, unahitaji angalau majedwali mawili. Hebu tuone ni kwa nini.
Kufuata Muundo wa Kidato cha Kwanza cha Kawaida
Labda tumeunda jedwali ambalo tunataka kurekodi jina na kozi zinazofundishwa. Tunaweza kubuni jedwali la Walimu na Kozi kama hii:
Kitambulisho_cha_Mwalimu | Jina_la_Mwalimu | Kozi |
---|---|---|
Mwalimu_001 | Carmen | Biolojia |
Mwalimu_002 | Veronica | Hesabu |
Mwalimu_003 | Jorge | Kiingereza |
Je ikiwa Carmen atafundisha kozi mbili au zaidi? Tuna chaguzi mbili na muundo huu. Tunaweza kuiongeza kwenye rekodi iliyopo ya Carmen, kama hii:
Kitambulisho_cha_Mwalimu | Mwalimu_Jina | Kozi |
---|---|---|
Mwalimu_001 | Carmen | Biolojia, Hisabati |
Mwalimu_002 | Veronica | Hesabu |
Mwalimu_003 | Jorge | Kiingereza |
Hata hivyo, muundo ulio hapo juu hauwezi kubadilika na unaweza kusababisha matatizo baadaye unapoingiza, kuhariri au kufuta data. Inafanya kuwa vigumu kutafuta data.
Muundo huu pia unakiuka kanuni ya kwanza ya urekebishaji wa hifadhidata, Fomu ya Kwanza ya Kawaida (1NF), ambayo inasema kwamba kila kisanduku cha jedwali kinapaswa kuwa na kipande kimoja, cha data tofauti.
Kanuni ya Kidato cha Pili cha Kawaida
Mbadala mwingine wa muundo unaweza kuwa kuongeza rekodi ya pili ya Carmen:
Mwalimu_ID | Mwalimu_Jina | Kozi |
---|---|---|
Mwalimu_001 | Carmen | Biolojia |
Mwalimu_001 | Carmen | Hesabu |
Mwalimu_002 | Veronica | Hesabu |
Mwalimu_003 | Jorge | Kiingereza |
Mbinu hii inafuata 1NF lakini bado ni muundo duni wa hifadhidata kwa sababu inaleta upungufu na inaweza kuficha hifadhidata kubwa bila sababu. Muhimu zaidi, data inaweza kutofautiana.
Kwa mfano, vipi ikiwa jina la Carmen lilibadilika? Mtu anayefanya kazi na data anaweza kusasisha jina lake katika rekodi moja na kushindwa kuisasisha katika rekodi ya pili.
Muundo huu unakiuka kiwango cha Fomu ya Pili ya Kawaida (2NF), ambayo inatii 1NF na lazima pia iepuke kupunguzwa kwa rekodi nyingi. Sheria ya 2NF inafanikisha hili kwa kutenganisha seti ndogo za data katika majedwali mengi na kuunda uhusiano kati yao.
Jinsi ya Kubuni Hifadhidata Yenye Mahusiano ya Mmoja-kwa-Nyingi
Ili kutekeleza uhusiano kati ya wengi katika jedwali la Walimu na Kozi, gawanya majedwali hayo kuwa mawili na uyaunganishe kwa kutumia ufunguo wa kigeni.
Hapa, tuliondoa safu wima ya Kozi katika jedwali la Walimu:
Mwalimu_ID | Mwalimu_Jina |
---|---|
Mwalimu_001 | Carmen |
Mwalimu_002 | Veronica |
Mwalimu_003 | Jorge |
Na hapa kuna jedwali la Kozi. Kumbuka kwamba ufunguo wake wa kigeni, Teacher_ID, unaunganisha kozi na mwalimu katika jedwali la Walimu:
Kitambulisho_cha_Kozi | Jina_la_Kozi | Kitambulisho_cha_Mwalimu |
---|---|---|
Kozi_001 | Biolojia | Mwalimu_001 |
Kozi_002 | Hesabu | Mwalimu_001 |
Kozi_003 | Kiingereza | Mwalimu_003 |
Tumekuza uhusiano kati ya Walimu na jedwali la Kozi kwa kutumia ufunguo wa kigeni. Mpangilio huu unatuambia Carmen anafundisha Biolojia na Hisabati na kwamba Jorge anafundisha Kiingereza.
Tunaweza kuona jinsi muundo huu unavyoepuka kupunguzwa kazi zozote zinazowezekana, kuruhusu mwalimu mmoja mmoja kufundisha kozi nyingi, na kutekeleza uhusiano wa moja hadi nyingi.