Mahusiano ya Database

Mahusiano ya msingi ni uti wa mgongo wa data zote za kihusiano

Uhusiano unaanzishwa kati ya meza mbili za database wakati meza moja ina ufunguo wa kigeni unaoelezea ufunguo wa msingi wa meza nyingine. Hii ni dhana ya msingi nyuma ya dhana ya uhusiano wa uhusiano.

Jinsi Ufunguo wa Nje wa Nje Unaanzisha Utaratibu wa Uhusiano

Hebu tuangalie misingi ya funguo za msingi na za kigeni. Kitufe cha msingi kinalotambua kila rekodi katika meza. Ni aina ya ufunguo wa mgombea ambayo kawaida ni safu ya kwanza katika meza na inaweza kuzalishwa moja kwa moja na database ili kuhakikisha kuwa ni ya kipekee.

Fungu la kigeni ni muhimu zaidi ya mgombea (sio ufunguo wa msingi) kutumika kuunganisha rekodi kwa data katika jedwali jingine.

Kwa mfano, fikiria meza hizi mbili ambazo hufahamu ambayo mwalimu anafundisha nini.

Hapa, ufunguo wa msingi wa meza ya Kozi ni Course_ID. Muhimu wake wa kigeni ni Teacher_ID:

Mafunzo
Course_ID Jina la kozi Mwalimu_ID
Kozi_001 Biolojia Mwalimu_001
Kozi_002 Math Mwalimu_001
Kozi_003 Kiingereza Mwalimu_003

Unaweza kuona kwamba ufunguo wa kigeni katika Mafunzo unafanana na ufunguo wa msingi katika Walimu:

Walimu
Mwalimu_ID Mwalimu_Name
Mwalimu_001 Carmen
Mwalimu_002 Veronica
Mwalimu_003 Jorge

Tunaweza kusema kwamba ufunguo wa kigeni wa Teacher_ID umesaidia kuanzisha uhusiano kati ya Mafunzo na meza ya Walimu.

Aina ya Mahusiano ya Database

Kutumia funguo za kigeni, au funguo nyingine za mgombea, unaweza kutekeleza aina tatu za mahusiano kati ya meza:

Moja kwa moja : Aina hii ya uhusiano inaruhusu rekodi moja tu upande wa kila uhusiano.

Kitufe cha msingi kinahusiana na rekodi moja tu - au hakuna - katika meza nyingine. Kwa mfano, katika ndoa, kila mke ana mke mmoja tu. Aina hii ya uhusiano inaweza kutekelezwa katika meza moja na kwa hiyo haitumii ufunguo wa kigeni.

Mmoja hadi wengi : Uhusiano mmoja hadi wengi inaruhusu rekodi moja katika meza moja kuwa kuhusiana na rekodi nyingi katika meza nyingine.

Fikiria biashara iliyo na database ambayo ina Wateja na Taagi za meza.

Mteja mmoja anaweza kununua amri nyingi, lakini amri moja haikuweza kuunganishwa na wateja wengi. Kwa hiyo meza ya Amri ingekuwa na ufunguo wa kigeni unaofanana na ufunguo wa msingi wa meza ya Wateja, wakati meza ya Wateja haitakuwa na ufunguo wa kigeni unaoelezea kwenye meza ya Amri.

Wengi kwa wengi : Hii ni uhusiano mgumu ambao rekodi nyingi katika meza zinaweza kuunganisha rekodi nyingi kwenye meza nyingine. Kwa mfano, biashara yetu haipaswi tu Wateja na meza za Amri, lakini huenda pia inahitaji meza ya Bidhaa.

Tena, uhusiano kati ya Wateja na Hifadhi ya meza ni moja kwa wengi, lakini fikiria uhusiano kati ya Amri na Bidhaa meza. Mpangilio unaweza kuwa na bidhaa nyingi, na bidhaa inaweza kuunganishwa na amri nyingi: wateja kadhaa wanaweza kuwasilisha amri ambayo ina baadhi ya bidhaa sawa. Aina hii ya uhusiano inahitaji chini ya meza tatu.

Je, Mahusiano ya Database ni Muhimu gani?

Kuanzisha mahusiano thabiti kati ya meza za database husaidia kuhakikisha utimilifu wa data, na kuchangia kwenye usimamiaji wa database. Kwa mfano, je! Ikiwa hatukuunganisha meza yoyote kwa njia ya ufunguo wa kigeni na badala tu tuunganisha data katika meza za Mafunzo na Walimu, kama vile:

Walimu na Mafunzo
Mwalimu_ID Mwalimu_Name Kozi
Mwalimu_001 Carmen Biolojia, Math
Mwalimu_002 Veronica Math
Mwalimu_003 Jorge Kiingereza

Mpangilio huu hauwezi kubadilika na unakiuka kanuni ya kwanza ya uhalalishaji wa database, fomu ya kwanza ya kawaida (1NF), ambayo inasema kuwa kila kiini cha meza lazima iwe na kipande kimoja cha data.

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

Walimu na Mafunzo
Mwalimu_ID Mwalimu_Name Kozi
Mwalimu_001 Carmen Biolojia
Mwalimu_001 Carmen Math
Mwalimu_002 Veronica Math
Mwalimu_003 Jorge Kiingereza

Huu bado ni kubuni dhaifu, kuingiza upungufu usiohitajika na kile kinachojulikana kama uharibifu wa data , ambayo inamaanisha tu kwamba inaweza kuchangia data zisizo sawa.

Kwa mfano, ikiwa mwalimu ana rekodi nyingi, vipi ikiwa data fulani inahitaji kubadilishwa, lakini mtu anayefanya uhariri wa data hajui kwamba rekodi nyingi zipo? Jedwali litakuwa na data tofauti kwa mtu mmoja, bila njia yoyote ya wazi ya kuitambua au kuiepuka.

Kuvunja meza hii katika meza mbili, Walimu na Mafunzo (kama ilivyoonyeshwa hapo juu), huunda uhusiano sahihi kati ya data na kwa hiyo husaidia kuhakikisha uwiano wa data na usahihi.