Uhusiano wa Hifadhidata ni Nini?

Orodha ya maudhui:

Uhusiano wa Hifadhidata ni Nini?
Uhusiano wa Hifadhidata ni Nini?
Anonim

Uhusiano huanzishwa kati ya majedwali mawili ya hifadhidata wakati jedwali moja linatumia ufunguo wa kigeni unaorejelea ufunguo msingi wa jedwali lingine. Hii ndiyo dhana ya msingi nyuma ya neno hifadhidata ya uhusiano.

Jinsi Ufunguo wa Kigeni Hufanya Kazi Kuanzisha Uhusiano

Ufunguo msingi hutambulisha kila rekodi katika jedwali kwa njia ya kipekee. Ni aina ya ufunguo wa mgombea ambao kwa kawaida ni safu wima ya kwanza katika jedwali na inaweza kuzalishwa kiotomatiki na hifadhidata ili kuhakikisha kuwa ni ya kipekee. Ufunguo wa kigeni ni ufunguo mwingine wa mgombea (sio ufunguo msingi) unaotumiwa kuunganisha rekodi na data katika jedwali lingine.

Kwa mfano, zingatia majedwali haya mawili yanayobainisha ni mwalimu gani anafundisha kozi gani. Hapa, ufunguo msingi wa jedwali la Kozi ni Course_ID. Ufunguo wake wa kigeni ni Teacher_ID:

Kitambulisho_cha_Kozi Jina_la_Kozi Kitambulisho_cha_Mwalimu
Kozi_001 Biolojia Mwalimu_001
Kozi_002 Hesabu Mwalimu_002
Kozi_003 Kiingereza Mwalimu_003

Unaweza kuona kwamba ufunguo wa kigeni katika Kozi unalingana na ufunguo msingi katika Walimu:

Kitambulisho_cha_Mwalimu Jina_la_Mwalimu
Mwalimu_001 Carmen
Mwalimu_002 Veronica
Mwalimu_003 Jorge

Tunaweza kusema kwamba ufunguo wa kigeni wa Kitambulisho cha Mwalimu ulisaidia kuanzisha uhusiano kati ya Kozi na jedwali la Walimu.

Image
Image

Aina za Mahusiano ya Hifadhidata

Kwa kutumia funguo za kigeni, au funguo nyingine za wagombea, unaweza kutekeleza aina tatu za uhusiano kati ya majedwali:

Moja-kwa-Mmoja

Aina hii ya uhusiano inaruhusu rekodi moja tu kwa kila upande wa uhusiano. Ufunguo msingi unahusiana na rekodi moja tu (au hakuna) katika jedwali lingine. Kwa mfano, katika ndoa, kila mwanandoa ana mke mwingine mmoja tu. Uhusiano wa aina hii unaweza kutekelezwa katika jedwali moja na kwa hivyo hautumii ufunguo wa kigeni.

Moja kwa-Nyingi

Uhusiano wa mtu mmoja hadi wengi huruhusu rekodi moja katika jedwali moja kuhusishwa na rekodi nyingi katika jedwali lingine. Fikiria biashara iliyo na hifadhidata iliyo na jedwali la Wateja na Maagizo.

Mteja mmoja anaweza kununua maagizo mengi, lakini agizo moja halikuweza kuunganishwa kwa wateja wengi. Kwa hivyo jedwali la Maagizo lingekuwa na ufunguo wa kigeni unaolingana na ufunguo msingi wa jedwali la Wateja, wakati jedwali la Wateja halingekuwa na ufunguo wa kigeni unaoelekeza kwenye jedwali la Maagizo.

Nyingi-kwa-Nyingi

Huu ni uhusiano changamano ambapo rekodi nyingi kwenye jedwali zinaweza kuunganishwa na rekodi nyingi katika jedwali lingine. Kwa mfano, biashara yetu huenda ikahitaji jedwali la Wateja na Maagizo, na ina uwezekano pia inahitaji jedwali la Bidhaa.

Tena, uhusiano kati ya jedwali la Wateja na Maagizo ni wa moja hadi nyingi, lakini zingatia uhusiano kati ya jedwali la Maagizo na Bidhaa. Agizo linaweza kuwa na bidhaa nyingi, na bidhaa inaweza kuunganishwa kwa maagizo mengi kwa kuwa wateja kadhaa wanaweza kuwasilisha agizo ambalo lina baadhi ya bidhaa sawa. Uhusiano wa aina hii unahitaji majedwali matatu kwa uchache zaidi.

Kwa nini Mahusiano ya Hifadhidata ni Muhimu?

Kuanzisha uhusiano thabiti kati ya majedwali ya hifadhidata husaidia kuhakikisha uadilifu wa data, hivyo kuchangia urekebishaji wa hifadhidata. Kwa mfano, vipi ikiwa hatukuunganisha majedwali yoyote kupitia ufunguo wa kigeni na badala yake tukaunganisha data katika jedwali la Kozi na Walimu, kama vile:

Kitambulisho_cha_Mwalimu Jina_la_Mwalimu Kozi
Mwalimu_001 Carmen Biolojia, Hisabati
Mwalimu_002 Veronica Hesabu
Mwalimu_003 Jorge Kiingereza

Muundo huu hauwezi kunyumbulika na unakiuka kanuni ya kwanza ya urekebishaji wa hifadhidata, Fomu ya Kwanza ya Kawaida, ambayo inasema kwamba kila seli ya jedwali inapaswa kuwa na kipande kimoja, cha data tofauti.

Au labda tuliamua kuongeza rekodi ya pili ya Carmen, ili kutekeleza 1NF:

Kitambulisho_cha_Mwalimu Jina_la_Mwalimu Kozi
Mwalimu_001 Carmen Biolojia
Mwalimu_001 Carmen Hesabu
Mwalimu_002 Veronica Hesabu
Mwalimu_003 Jorge Kiingereza

Huu bado ni muundo dhaifu, unaoleta urudufishaji usio wa lazima na kile kinachoitwa hitilafu za uwekaji data, ambayo ina maana kwamba inaweza kuchangia data kutofautiana. Kwa mfano, ikiwa mwalimu ana rekodi nyingi, vipi ikiwa baadhi ya data inahitaji kuhaririwa, lakini mtu anayefanya uhariri wa data hatambui kuwa rekodi nyingi zipo? Jedwali basi litakuwa na data tofauti ya mtu yule yule, bila njia yoyote wazi ya kuitambua au kuiepuka.

Kuvunja jedwali hili katika majedwali mawili, Walimu na Kozi, huweka uhusiano unaofaa kati ya data na kwa hivyo husaidia kuhakikisha uwiano na usahihi wa data.

Ilipendekeza: