Mahusiano ya Mmoja-kwa-Nyingi katika Hifadhidata

Orodha ya maudhui:

Mahusiano ya Mmoja-kwa-Nyingi katika Hifadhidata
Mahusiano ya Mmoja-kwa-Nyingi katika Hifadhidata
Anonim

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.

Image
Image

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.

Ilipendekeza: