Dhana kuu. Aina za funguo na madhumuni yao. Ufunguo wa msingi katika hifadhidata ni nini?

Kielelezo kinaonyesha jedwali (uwiano wa digrii 5) iliyo na habari fulani kuhusu wafanyikazi wa biashara dhahania. Safu za jedwali zinalingana na nakala. Kila safu ni maelezo ya kitu kimoja cha ulimwengu halisi (katika kesi hii, mfanyakazi), sifa ambazo ziko kwenye safu. Mahusiano ya uhusiano yanalingana na seti za huluki, na nakala zinalingana na huluki. Safu katika jedwali zinazowakilisha uhusiano wa kimahusiano huitwa sifa.

Kila sifa imefafanuliwa kwenye kikoa, kwa hivyo kikoa kinaweza kuzingatiwa kama seti ya maadili halali ya sifa fulani. Sifa nyingi za uhusiano sawa, na hata sifa za uhusiano tofauti, zinaweza kufafanuliwa kwenye kikoa kimoja.

Sifa ambayo thamani yake hutambulisha nakala huitwa ufunguo (au kwa urahisi ufunguo) Ufunguo ni sifa ya Nambari ya Wafanyikazi, kwani thamani yake ni ya kipekee kwa kila mfanyakazi wa biashara. Ikiwa nakala zinatambuliwa tu kwa kujumuisha maadili ya sifa kadhaa, basi uhusiano huo unasemekana kuwa na ufunguo wa mchanganyiko.

Ufunguo wa msingi- katika muundo wa data wa uhusiano, mojawapo ya funguo zinazowezekana za uhusiano, zilizochaguliwa kama ufunguo msingi (au ufunguo chaguo-msingi).

Uhusiano unaweza kuwa na funguo nyingi. Moja ya funguo hutangazwa kila wakati msingi, maadili yake hayawezi kusasishwa. Vifunguo vingine vyote vya uhusiano vinaitwa funguo zinazowezekana.

Kutoka kwa mtazamo wa kinadharia, funguo zote za uhusiano zinazowezekana (inawezekana) ni sawa, yaani, zina upekee sawa na mali ndogo. Walakini, ufunguo wa msingi kawaida huchaguliwa kutoka kwa funguo zinazowezekana ambazo zinafaa zaidi kwa madhumuni fulani ya vitendo, kwa mfano, kuunda. ya nje funguo katika mambo mengine au kuunda faharasa iliyounganishwa. Kwa hivyo, kama sheria, ile iliyo na saizi ndogo zaidi (hifadhi ya mwili) na/au inajumuisha nambari ndogo zaidi ya sifa huchaguliwa kama ufunguo wa msingi.

Kama ufunguo wa msingi lina sifa moja, inaitwa na ufunguo rahisi.

Kama ufunguo wa msingi lina sifa mbili au zaidi, inaitwa ufunguo wa kiwanja. Kwa hiyo, jina la kwanza, jina la mwisho, patronymic, nambari ya pasipoti, mfululizo wa pasipoti hauwezi kuwa funguo za msingi kwa kibinafsi, kwa kuwa zinaweza kuwa sawa kwa watu wawili au zaidi. Lakini hakuna nyaraka mbili za kibinafsi za aina moja na mfululizo sawa na nambari. Kwa hiyo, katika uhusiano ulio na data kuhusu watu, ufunguo wa msingi unaweza kuwa sehemu ndogo ya sifa zinazojumuisha aina ya hati ya kibinafsi, mfululizo wake na nambari.



Tofauti na mifano ya kidaraja na data ya mtandao, ile ya uhusiano haina dhana ya uhusiano wa kikundi. Ili kutafakari uhusiano kati ya nakala za mahusiano tofauti, kurudia kwa funguo zao hutumiwa.

Sifa ambazo ni nakala za funguo za mahusiano mengine huitwa funguo za kigeni.

Kwa mfano, uhusiano kati ya IDARA na uhusiano wa MFANYAKAZI unaundwa kwa kunakili ufunguo msingi "Nambari_ya_idara" kutoka kwa uhusiano wa kwanza hadi wa pili. Kwa hivyo, ili kupata orodha ya wafanyikazi wa idara fulani, ni muhimu: 1) Kutoka kwa jedwali la IDARA, weka thamani ya sifa. "Nambari_ya_idara" , sambamba na hili "Jina_la_Idara". 2) chagua rekodi zote kutoka kwa jedwali la MWAJIRI, thamani ya sifa "Nambari_ya_idara" ambayo ni sawa na ile iliyopatikana katika hatua iliyotangulia. Ili kujua ni idara gani mfanyakazi anafanya kazi, unahitaji kufanya operesheni ya nyuma: 1) Kuamua "Nambari_ya_idara" kutoka kwenye jedwali la MFANYAKAZI. 2) Kwa kutumia thamani iliyopatikana, tunapata kuingia kwenye meza ya IDARA.


18. Kusawazisha katika hifadhidata za uhusiano, dhana ya fomu ya kawaida katika muundo wa hifadhidata.

Fomu ya kawaida - mali ya uhusiano katika modeli ya data ya uhusiano, inayoionyesha kutoka kwa mtazamo wa kutokuwepo tena, ambayo inaweza kusababisha matokeo ya kimantiki yenye makosa ya sampuli au kubadilisha data. Fomu ya kawaida hufafanuliwa kama seti ya mahitaji ambayo uhusiano lazima ukidhi.

Mchakato wa kubadilisha database kwa fomu ya kawaida inaitwa kuhalalisha . Kusawazisha kunakusudiwa kuleta muundo wa hifadhidata kwa fomu ambayo hutoa upungufu mdogo, yaani, kuhalalisha hakukusudiwi kupunguza au kuongeza tija ya kazi au kupunguza au kuongeza kiasi cha hifadhidata. Lengo kuu la kuhalalisha ni kupunguza uwezekano wa kutofautiana kwa taarifa iliyohifadhiwa kwenye hifadhidata.



Uondoaji wa upungufu unafanywa, kama sheria, kwa kuvunja mahusiano kwa njia ambayo ukweli wa msingi tu huhifadhiwa katika kila uhusiano (yaani, ukweli ambao haujaingizwa kutoka kwa ukweli mwingine uliohifadhiwa).

Vitegemezi vya kiutendaji.

Hifadhidata ya uhusiano ina habari ya kimuundo na kisemantiki. Muundo wa hifadhidata huamuliwa na nambari na aina ya uhusiano iliyomo, na uhusiano wa moja hadi nyingi uliopo kati ya nakala za uhusiano huu. Sehemu ya kisemantiki inaeleza seti ya tegemezi za kiutendaji zilizopo kati ya sifa za mahusiano haya. Hebu tufafanue utegemezi wa kazi.

19. 1NF: Ufafanuzi wa kimsingi na sheria za mabadiliko.

Ili kujadili fomu ya kwanza ya kawaida, ufafanuzi mbili ni muhimu:

Sifa rahisi - sifa ambayo maadili yake ni ya atomiki (haionekani).

Sifa tata - hupatikana kwa kuunganisha sifa kadhaa za atomiki ambazo zinaweza kufafanuliwa kwenye vikoa sawa au tofauti (pia huitwa vekta au mkusanyiko wa data).

Ufafanuzi wa fomu ya kwanza ya kawaida:

uhusiano uko katika 1NF ikiwa thamani za sifa zake zote ni za atomiki. . Vinginevyo, sio meza kabisa na sifa kama hizo lazima ziharibiwe.

Hebu tuangalie mfano:

Katika hifadhidata ya idara ya HR ya biashara, ni muhimu kuhifadhi habari kuhusu wafanyikazi ambayo inaweza kujaribiwa kuwasilishwa kuhusiana na

MFANYAKAZI(MFANYAKAZI_NUMBER, JINA, TAREHE YA KUZALIWA, HISTORIA_YA_KAZI, WATOTO).

Kutokana na kuzingatia kwa makini uhusiano huu inafuata kwamba sifa "historia_ya_kazi" Na "watoto" ni changamano, zaidi ya hayo, sifa "historia_ya_kazi" inajumuisha sifa nyingine changamano "historia_ya_mshahara".
Vitengo hivi vinaonekana kama hii:

 JOB_HISTORY (RECEPTION_DATE, NAME, SALARY_HISTORY),

 HISTORIA_YA_MSHAHARA (UTAREHE_UTAREHEMU, MSHAHARA),

 WATOTO (MTOTO_NAME, MWAKA_WA_KUZALIWA).

Uunganisho wao unaonyeshwa kwenye Mtini. 3.3.

Mchoro.3.3. Mtazamo wa awali.

Ili kuleta uhusiano wa asili wa MTUMISHI kwa fomu ya kwanza ya kawaida, ni muhimu kuitenganisha katika mahusiano manne, kama hii inavyoonyeshwa katika takwimu ifuatayo:

Mchoro.3.4. Seti ya mahusiano ya kawaida.

Hapa, ufunguo wa msingi wa kila uhusiano umeangaziwa na sura ya bluu, majina ya funguo za kigeni ziko kwenye fonti ya bluu. Kumbuka kwamba funguo za kigeni hutumiwa kuwakilisha utegemezi wa utendaji uliopo katika uhusiano wa chanzo. Vitegemezi hivi vya utendakazi vinaonyeshwa kwa mistari iliyo na mishale.

Algorithm ya kuhalalisha imeelezewa na E.F. Codd kama ifuatavyo:

  • Kuanzia na uhusiano ulio juu ya mti (Mchoro 3.3.), ufunguo wake wa msingi unachukuliwa, na kila uhusiano wa chini mara moja unapanuliwa kwa kuingiza kikoa au mchanganyiko wa vikoa vya ufunguo huo wa msingi.
  • Ufunguo Msingi wa kila uhusiano uliopanuliwa kwa njia hii unajumuisha Ufunguo Msingi ambao uhusiano ulikuwa nao kabla ya kuongezwa na Ufunguo Msingi ulioongezwa wa uhusiano wa mzazi.
  • Baada ya hayo, vikoa vyote visivyo rahisi vinafutwa kutoka kwa uhusiano wa mzazi, node ya juu ya mti imeondolewa, na utaratibu huo unarudiwa kwa kila subtrees iliyobaki.

20. 2NF: Ufafanuzi wa kimsingi na kanuni za mabadiliko.

Mara nyingi ufunguo wa msingi wa uhusiano ni pamoja na sifa kadhaa (katika hali ambayo inaitwa mchanganyiko) - tazama, kwa mfano, uhusiano WATOTO umeonyeshwa kwenye Mtini. 3.4 swali la 19. Wakati huo huo, dhana imeanzishwa utegemezi kamili wa kazi.

Ufafanuzi:

sifa isiyo ya ufunguo inategemea kiutendaji kikamilifu kwenye ufunguo wa mchanganyiko ikiwa inategemea kiutendaji kwa ufunguo mzima kwa ujumla, lakini haitegemei kiutendaji sifa zake zozote kuu.

Mfano:

Acha kuwe na uhusiano SUPPLY (N_SUPPLIER, PRODUCT, PRICE).
Mtoa huduma anaweza kutoa bidhaa tofauti, na bidhaa hiyo hiyo inaweza kutolewa na wasambazaji tofauti. Kisha ufunguo wa uhusiano ni "N_supplier + bidhaa". Waruhusu wasambazaji wote watoe bidhaa kwa bei sawa. Kisha tuna tegemezi zifuatazo za utendaji:

  • N_muuzaji, bidhaa -> bei
  • bidhaa -> bei

Utegemezi usio kamili wa utendaji wa sifa ya bei kwenye ufunguo husababisha kutofautiana: wakati bei ya bidhaa inabadilika, mtazamo kamili wa uhusiano unahitajika ili kubadilisha rekodi zote kuhusu wasambazaji wake. Hitilafu hii ni matokeo ya ukweli kwamba mambo mawili ya kisemantiki yameunganishwa katika muundo mmoja wa data. Upanuzi ufuatao unatoa uhusiano katika 2NF:

  • UTOAJI (N_SUPPLIER, PRODUCT)
  • PRODUCT_PRICE (PRODUCT, PRICE)

Kwa hivyo unaweza kutoa

Ufafanuzi wa fomu ya pili ya kawaida: Uhusiano uko katika 2NF ikiwa iko katika 1NF na kila sifa isiyo ya ufunguo inategemea kikamilifu ufunguo.

21. 3NF: Ufafanuzi wa kimsingi na kanuni za mabadiliko.

Kabla ya kujadili fomu ya tatu ya kawaida, ni muhimu kuanzisha dhana: utegemezi wa utendaji wa mpito.

Ufafanuzi:

Acha X, Y, Z ziwe sifa tatu za uhusiano fulani. Katika kesi hii, X -> Y na Y --> Z, lakini hakuna mawasiliano ya nyuma, i.e. Z -/-> Y na Y -/-> X. Kisha Z inategemea X.
Acha kuwe na HIFADHI ya uhusiano ( FIRM, WAREHOUSE, VOLUME), ambayo ina taarifa kuhusu makampuni yanayopokea bidhaa kutoka kwa maghala na wingi wa maghala haya. Sifa kuu - "imara". Ikiwa kila kampuni inaweza kupokea bidhaa kutoka kwa ghala moja tu, basi katika suala hili kuna tegemezi zifuatazo za kazi:

  • imara -> hisa
  • hisa -> kiasi

Katika kesi hii, anomalies hutokea:

  • ikiwa kwa sasa hakuna kampuni inayopokea bidhaa kutoka kwa ghala, basi data juu ya kiasi chake haiwezi kuingizwa kwenye hifadhidata (kwani sifa kuu haijafafanuliwa)
  • ikiwa kiasi cha ghala kinabadilika, ni muhimu kutazama uhusiano mzima na kubadilisha kadi kwa makampuni yote yanayohusiana na ghala hili.

Ili kuondoa hitilafu hizi, inahitajika kutenganisha uhusiano wa asili kuwa mbili:

  • HIFADHI ( FIRM, HISA)
  • STORAGE_VOLUME ( HISA, JUZUU)

Ufafanuzi wa fomu ya tatu ya kawaida:

Uhusiano uko katika 3NF ikiwa iko katika 2NF na kila sifa isiyo ya ufunguo haitegemei ufunguo msingi.

Hizi ni hazina za kielektroniki za habari zinazopatikana kwa kutumia kompyuta moja au zaidi. Kawaida, hifadhidata huundwa ili kuhifadhi na kupata data iliyo na habari kuhusu eneo fulani la somo, ambayo ni, eneo fulani la shughuli za wanadamu au sehemu ya ulimwengu wa kweli.

DBMS ni zana za programu za kuunda, kujaza, kusasisha na kufuta hifadhidata.

Sehemu ya habari iliyohifadhiwa kwenye hifadhidata ni jedwali. Kila jedwali ni mkusanyiko wa safu na safu, ambapo safu zinalingana na mfano wa kitu, tukio maalum au jambo, na safu zinalingana na sifa (sifa, sifa, vigezo) vya kitu, tukio au jambo. Kila mstari una habari kuhusu tukio maalum.

Kwa maneno ya hifadhidata, safu wima za jedwali huitwa uwanja, na safu zake huitwa rekodi.

Uhusiano unaweza kuwepo kati ya meza za hifadhidata za mtu binafsi, yaani, habari katika jedwali lililotangulia inaweza kuongezwa kwa nyingine. Hifadhidata ambazo zina uhusiano kati ya jedwali za kibinafsi huitwa uhusiano. Jedwali moja linaweza kuwa jedwali kuu kuhusiana na jedwali moja la hifadhidata na jedwali la watoto kuhusiana na lingine.

Majedwali yaliyounganishwa na mahusiano yanaingiliana kulingana na kanuni ya bwana-mtumwa. Jedwali sawa linaweza kuwa jedwali kuu la jedwali moja la hifadhidata na mtoto wa mwingine.

Kitu - ni kitu kilichopo na kinachoweza kutofautishwa, kilicho na seti ya mali. Tofauti kati ya kitu kimoja na kitu kingine imedhamiriwa na maadili maalum ya mali.

Asili - tafakari ya kitu kwenye kumbukumbu ya mtu au kompyuta.

Sifa - thamani maalum ya mali yoyote ya shirika.

Shamba ni kipengele kimoja cha rekodi ambacho huhifadhi thamani ya sifa maalum.

Uwanja wa mawasiliano Huu ndio uwanja ambao meza mbili zinahusiana.

Vifunguo vya msingi na sekondari

Kila jedwali la hifadhidata linaweza kuwa na ufunguo msingi - hii ni sehemu au mkusanyiko wa sehemu ambazo hutambulisha rekodi kwa njia ya kipekee.

Thamani ya msingi katika jedwali la hifadhidata lazima iwe ya kipekee, yaani, kusiwe na rekodi mbili au zaidi kwenye jedwali zenye thamani sawa ya ufunguo msingi.

Vifunguo vya msingi hurahisisha kuanzisha uhusiano kati ya jedwali. Kwa sababu ufunguo msingi lazima uwe wa kipekee, sio sehemu zote kwenye jedwali zinaweza kutumika kwa ajili yake.

Ikiwa meza haina uwanja ambao maadili yake ni ya kipekee, kuunda ufunguo wa msingi, sehemu ya ziada ya nambari kawaida huletwa ndani yake, maadili ambayo DBMS inaweza kutupa kwa hiari yake.

Vifunguo vya pili vinawekwa na sehemu ambazo hutumiwa mara nyingi wakati wa kutafuta au kupanga data: faharisi zilizojengwa kwenye funguo za pili zitasaidia mfumo kupata thamani zinazohitajika zilizohifadhiwa kwenye sehemu zinazolingana kwa kasi zaidi.

Tofauti na funguo msingi, sehemu za funguo za pili zinaweza kuwa na maelezo yasiyo ya kipekee.

Mahusiano ya uhusiano kati ya meza

Moja kwa moja. Uhusiano wa moja kwa moja hutokea wakati rekodi moja katika jedwali la wazazi inalingana na rekodi moja katika jedwali la mtoto.

Uhusiano huu ni wa kawaida sana kuliko uhusiano wa mtu-kwa-wengi; hutumika ikiwa hutaki jedwali la hifadhidata kuvimba na jedwali la pili. Uhusiano wa mtu mmoja hadi mmoja unamaanisha kuwa usomaji wa taarifa zinazohusiana katika jedwali nyingi huhitaji shughuli nyingi za usomaji, ambayo inapunguza kasi ya urejeshaji wa taarifa zinazohitajika. Kwa kuongeza, hifadhidata zilizo na jedwali zilizo na uhusiano wa moja hadi moja haziwezi kuzingatiwa kuwa za kawaida kabisa.

Kama uhusiano wa watu wengi, uhusiano wa mtu mmoja hadi mmoja unaweza kuwa mgumu au laini.

Majedwali

Katika hifadhidata ya uhusiano, habari imepangwa katika jedwali za uhusiano, zimegawanywa katika safu na safu, kwenye makutano ambayo maadili ya data yamo.

Jedwali - huu ni muundo wa kawaida unaojumuisha seti fupi ya rekodi za aina moja.

Jedwali linaonyesha aina ya kitu cha ulimwengu halisi (huluki). Safu mlalo hulingana na mfano wa kitu, tukio maalum au jambo. Safu zinahusiana na sifa (sifa, sifa, vigezo) vya kitu, tukio, jambo. Kila jedwali lina jina la kipekee ndani ya hifadhidata inayoelezea yaliyomo.

Kila safu katika jedwali ina jina, ambalo kawaida hutumika kama kichwa cha safu. Safu wima zote katika jedwali moja lazima ziwe na majina ya kipekee, lakini unaruhusiwa kutoa majina sawa kwa safu wima katika majedwali tofauti. Katika mfano wa data ya uhusiano, sifa za mahusiano hazijaagizwa, yaani, mashamba daima hupatikana kwa jina na si kwa eneo. Hata hivyo, SQL inaruhusu indexing ya safu ya meza, na nguzo ni kuchukuliwa ili kutoka kushoto kwenda kulia (utaratibu wao ni kuamua wakati meza ni kuundwa).

Jedwali lolote huwa na angalau safu wima 1. Kiwango cha ANSI/ISO hakibainishi idadi ya juu zaidi ya safu wima kwa kila jedwali, lakini karibu DBMS zote za kibiashara zina kikomo. Katika Firebird, kikomo hiki ni safu wima 32,767.

Katika muundo wa data ya uhusiano wa RMD, dhana ya tuple hutumiwa kuashiria safu mlalo ya uhusiano. Uwakilishi wa safu halisi ya nakala ni safu katika jedwali la hifadhidata. Safu za jedwali hazina majina na hakuna mpangilio maalum. Jedwali linaweza kuwa na idadi yoyote ya safu. Inakubalika kabisa kuwa na meza yenye safu za sifuri. Jedwali kama hilo linaitwa tupu. Jedwali tupu huhifadhi muundo uliofafanuliwa na safu wima zake; haina data tu. Kama sheria, hakuna vizuizi kwa idadi ya safu kwenye jedwali, na katika DBMS nyingi saizi ya meza ni mdogo tu na nafasi ya bure ya diski ya kompyuta. DBMS zingine zina kikomo cha juu, lakini ni cha juu kabisa - takriban safu bilioni mbili, na wakati mwingine zaidi.

Hebu tuonyeshe kwa uwazi zaidi muundo wa moja ya jedwali katika hifadhidata ya mafunzo (tazama Kiambatisho A). Katika Mtini. 1.1 inaonyesha muundo wa jedwali la Abonent, ambalo lina taarifa kuhusu wanachama wa makampuni ya huduma za makazi na jumuiya.

Mchele. 1.1. Muundo wa meza ya uhusiano Abonent

Kila safu mlalo ya jedwali hili inawakilisha huluki tofauti - mteja mmoja. Safu kumi na mbili za jedwali kwa pamoja zinawakilisha wasajili wote. Data yote iliyo katika safu mlalo maalum ya jedwali inawakilisha seti ya maadili ya sifa kwa mteja mahususi, ambayo inaelezwa na safu mlalo hii.


Kila safu wima ya jedwali inawakilisha mkusanyiko wa maadili kwa sifa fulani ya kitu. Kwa mfano, safu ya AkauntiCD ina nambari za kipekee za akaunti ya mteja. Safu ya Simu ina nambari za simu za mteja.

Makutano ya kila safu mlalo na kila safu wima ya jedwali ina thamani moja ya data. Kwa mfano, katika safu inayowakilisha mteja V.S. Konyukhov, safu wima ya Fio ina thamani "V.S. Konyukhov." Safu ya AccountCD ya safu sawa ina thamani "015527", ambayo ni nambari ya akaunti ya kibinafsi ya mteja aliye na jina kamili V. S. Konyukhov.

Thamani zote zilizomo kwenye safu wima sawa ni aina sawa za data. Kwa mfano, safu wima ya Fio ina maneno pekee, ilhali safu ya StreetCD ina nambari kamili zinazowakilisha vitambulisho vya mitaani. Katika mfano wa data ya uhusiano, seti ya jumla ya maadili ambayo maadili halisi ya sifa maalum (safu) huchukuliwa inaitwa. kikoa. Kikoa cha safu wima ya Fio, kwa mfano, ni seti ya majina ya mwisho, majina ya kwanza na patronymics (jina kamili) ya waliojiandikisha. Kila safu hufafanuliwa kila wakati kwenye kikoa kimoja.

Katika hifadhidata za uhusiano, kikoa kinafafanuliwa kwa kubainisha angalau aina fulani ya data ya msingi ambayo vipengele vya kikoa vinahusika, na mara nyingi pia usemi wa Kiboole wa kiholela unaotumika kwa vipengele vya aina hiyo ya data (vikwazo vya kikoa).

Vikoa vifuatavyo vimefafanuliwa katika hifadhidata ya mafunzo:

§ Boolean: SMALLINT. Nyuga zilizobainishwa katika kikoa hiki zinaweza tu kukubali nambari kamili sawa na 0 au 1. Hili linafanikiwa kwa kuweka hali ya kuangalia (ANGALIA) katika kikoa kwa thamani zinazokubaliwa na kikoa hiki.

§ Pesa: NUMERIC(15,2). Kikoa kimekusudiwa kubainisha sehemu katika jedwali zinazohifadhi kiasi cha fedha.

§ PKField: INTEGER. Kikoa kinatumika kufafanua funguo za msingi na za kigeni za jedwali. Hakuna mahitaji ya lazima ya data (SI BATILI) kwa kikoa hiki. Inawekwa wakati wa kutangaza ufunguo wa msingi wa jedwali. Hii inafanywa ili ufunguo wa kigeni uweze kufafanuliwa kwenye kikoa hiki bila hali ya NOT NULL.

§ TMonth (Mwezi): SMALLINT. Kikoa kimekusudiwa kufafanua sehemu katika majedwali yenye nambari za mwezi. Nambari kamili katika sehemu kama hiyo zinaweza kuwa katika safu 1...12.

§ TYear (Mwaka): SMALLINT. Kikoa kimekusudiwa kufafanua sehemu zilizo na nambari ya mwaka. Nambari kamili zinaweza kuwa katika anuwai ya 1990...2100.

Kwa sababu safu katika jedwali la uhusiano hazijaagizwa, huwezi kuchagua safu kwa nambari yake kwenye jedwali. Hakuna safu ya "kwanza", "mwisho" au "kumi na tatu" kwenye jedwali. Basi unawezaje kuonyesha safu maalum kwenye jedwali, kwa mfano, safu ya msajili aliye na jina kamili la Aksenov S.A.?

Kipengele muhimu cha data ni kipengele ambacho maadili ya vipengele vingine vya data yanaweza kuamuliwa.

Katika hifadhidata ya uhusiano, kila jedwali lina safu wima 1 au zaidi ambazo maadili yake ni tofauti katika kila safu. Safu wima hii inaitwa ufunguo msingi wa jedwali.

Ufunguo Msingi - ni sifa au kikundi cha sifa ambacho hutambulisha kwa njia ya kipekee kila safu katika jedwali.

Hebu turudi kutazama jedwali la Abonent la hifadhidata ya mafunzo (Mchoro 1.1). Kwa mtazamo wa kwanza, safu wima ya AccountCD na safu wima ya Fio zinaweza kutumika kama ufunguo msingi wa jedwali la Abonent. Hata hivyo, ikiwa watu 2 waliojisajili walio na jina kamili sawa wamesajiliwa, safu wima ya Fio haitaweza kutumika tena kama ufunguo msingi. Kiutendaji, vitambulishi kama vile nambari ya kipekee ya akaunti ya kibinafsi ya mteja (CD ya Akaunti katika jedwali la Abonent), kitambulisho cha mtaa (StreetCD katika jedwali la Mtaa), n.k. kwa kawaida inapaswa kuchaguliwa kama funguo msingi za jedwali.

Ikiwa meza haina uwanja ambao maadili yake ni ya kipekee, kuunda ufunguo wa msingi, uwanja wa ziada kawaida huletwa ndani yake, maadili ambayo DBMS inaweza kutupa kwa hiari yake.

Ikiwa ufunguo wa msingi ni mchanganyiko wa nguzo, basi ufunguo huo wa msingi unaitwa mchanganyiko.

Funguo za Sekondari zimewekwa na sehemu ambazo hutumiwa mara nyingi wakati wa kutafuta au kupanga data. Tofauti na funguo msingi, sehemu za funguo za pili zinaweza kuwa na thamani zisizo za kipekee.

Uwepo wa uhusiano, marejeleo ya msalaba kati ya jedwali ni moja wapo ya sifa za kimsingi ambazo hutofautisha hifadhidata ya uhusiano kutoka kwa seti rahisi ya majedwali. Ili kutekeleza uhusiano kama huo, karibu DBMS zote hukuruhusu kufafanua funguo za msingi na za kigeni kwenye jedwali na kuwa na njia za kudumisha uadilifu wa marejeleo.

Ufunguo wa msingi

Tayari tumegusa kwa ufupi dhana ya ufunguo wa msingi katika kifungu cha kuhalalisha hifadhidata. Ufunguo msingi ni safu wima au kikundi cha safu wima ambacho hutambulisha rekodi kwa njia ya kipekee. Ufunguo msingi ni kwa ufafanuzi wa kipekee: jedwali haliwezi kuwa na safu mlalo mbili tofauti zenye thamani sawa za msingi. Safu wima zinazounda ufunguo msingi haziwezi kuwa NULL. Kila jedwali linaweza kuwa na ufunguo mmoja tu msingi.

Ufunguo wa kipekee

Ufunguo wa kipekee ni safu au kikundi cha safu wima ambazo thamani zake (mchanganyiko wa thamani za kikundi cha safu wima) haziwezi kurudiwa. Tofauti kati ya ufunguo wa kipekee na ufunguo wa msingi ni kwamba:

  • Kunaweza kuwa na funguo kadhaa za kipekee kwa jedwali moja (swali la haraka kwa wale wanaosoma kifungu kuhusu kuhalalisha: ni sheria gani za kawaida zitakiukwa? ;)
  • funguo za kipekee zinaweza kuwa na maadili NULL, na ikiwa kuna safu kadhaa zilizo na nambari muhimu za kipekee za NULL, safu kama hizo huchukuliwa kuwa tofauti (pekee) kulingana na kiwango cha SQL 92.

Kitufe cha nje

Funguo za kigeni ndio njia kuu ya kupanga uhusiano kati ya jedwali na kudumisha uadilifu na uthabiti wa habari kwenye hifadhidata.

Ufunguo wa kigeni ni safu au kikundi cha safu wima ambacho kinarejelea safu au kikundi cha safu wima kwenye jedwali lingine (au sawa). Jedwali linalorejelewa na ufunguo wa kigeni huitwa jedwali kuu, na safu wima zilizorejelewa na ufunguo wa kigeni huitwa ufunguo wa mzazi. Ufunguo mzazi lazima uwe ufunguo msingi au wa kipekee, lakini thamani za funguo za kigeni zinaweza kurudiwa mara kadhaa. Hiyo ni, uhusiano wa moja hadi nyingi unasaidiwa kwa kutumia funguo za kigeni. Aina za data (na katika baadhi ya DBMS, vipimo) za safu wima za kigeni na funguo kuu zinazolingana lazima zilingane.

Na jambo muhimu zaidi. Thamani zote muhimu za kigeni lazima zilingane na mojawapo ya thamani kuu za mzazi. (Kumbuka kwenye mabano kuhusu mechi/kutolingana: nuances hutokea wakati NULL inapopatikana katika thamani za safu wima za ufunguo wa pili. Tusiingie katika nuances hizi kwa sasa). Thamani muhimu za kigeni ambazo hazina funguo kuu za mzazi haziruhusiwi. Hapa ndipo tunapoendelea kwa urahisi kwenye dhana ya uadilifu wa marejeleo.

Uadilifu wa marejeleo

Sheria ya kwanza ya uadilifu wa urejeleaji imesemwa tayari katika aya iliyotangulia: safu haziruhusiwi kuonekana kwenye jedwali (bila kujali wakati wa kuongeza au kurekebisha) ufunguo wa kigeni ambao haulingani na maadili yoyote yaliyopo. ufunguo wa mzazi.

Matukio ya kuvutia zaidi hutokea tunapofuta au kubadilisha safu mlalo za jedwali kuu. Jinsi ya kuzuia kuonekana kwa safu za "ning'inia hewani" za meza ya mtoto? Kwa kusudi hili, kuna sheria za uadilifu za marejeleo KWENYE USASISHAJI na KUFUTA, ambazo, kulingana na kiwango cha SQL 92, zinaweza kuwa na taarifa zifuatazo:

  • CASCADE - inahakikisha kwamba mabadiliko sawa ambayo yalifanywa katika ufunguo wa mzazi yanafanywa kiotomatiki kwenye jedwali la mtoto. Ikiwa ufunguo wa mzazi umebadilishwa - KWENYE USASISHAJI CASCADE itahakikisha mabadiliko sawa ya ufunguo wa kigeni katika jedwali la mtoto. Ikiwa safu mlalo katika jedwali kuu ilifutwa, KWENYE DELETE CASCADE itahakikisha kuwa safu mlalo zote zinazolingana katika jedwali la mtoto zimefutwa.
  • WEKA NULL - Wakati wa kufuta safu mlalo katika jedwali kuu, ILIPOFUTA SET NULL itaweka safu wima zote za ufunguo wa pili katika safu mlalo zinazolingana katika jedwali la mtoto hadi NULL. Wakati wa kubadilisha ufunguo wa mzazi, KWENYE UPDATE SET NULL itaweka safu wima zinazolingana za safu sambamba (oh jinsi:) ya jedwali la mtoto kuwa NULL.
  • SET DEFAULT - inafanya kazi sawa na SET NULL, inaandika tu maadili chaguo-msingi kwa seli zinazolingana badala ya NULL.
  • HAKUNA ACTION (iliyowekwa kwa chaguo-msingi) - wakati ufunguo wa mzazi unabadilika, hakuna hatua inachukuliwa kwenye ufunguo wa kigeni katika meza ya mtoto. Lakini ikiwa kubadilisha maadili ya ufunguo wa mzazi husababisha ukiukaji wa uadilifu wa urejeleaji (ambayo ni, kwa kuonekana kwa safu za meza ya mtoto "kunyongwa hewani"), basi DBMS haitaruhusu mabadiliko kama hayo kufanywa. kwa meza ya wazazi.

Kweli, sasa - kutoka kwa jumla hadi maalum.

Funguo na uadilifu wa marejeleo katika MySQL na Oracle

Oracle inasaidia funguo za msingi, za kipekee, za kigeni kwa ukamilifu. Oracle inasaidia sheria zifuatazo za uadilifu wa marejeleo:

  • HAKUNA ACTION (iliyowekwa kwa chaguomsingi) katika toleo lenye vizuizi zaidi kuliko kiwango cha SQL 92: kubadilisha na kufuta safu mlalo za jedwali kuu ambazo zina safu mlalo zinazohusiana katika majedwali ya watoto hairuhusiwi.
  • JUU YA KUFUTA CASCADE.

Sheria ngumu zaidi za uadilifu wa marejeleo katika Oracle zinaweza kutekelezwa kupitia utaratibu wa kichochezi.

Toleo la MySQL 4.1 (toleo la hivi punde lililo thabiti wakati wa kuandika) hukuruhusu kutaja misemo ya MAREJELEO / FUNGUO ZA NJE katika amri za CREATE / ALTER TABLE, lakini haizingatii kwa njia yoyote na haiunda funguo za kigeni. Ipasavyo, sheria za uadilifu wa marejeleo zinazotekelezwa kupitia funguo za kigeni hazitumiki katika MySQL. Na wasiwasi wote juu ya kuhakikisha uadilifu na uthabiti wa habari katika hifadhidata ya MySQL huanguka kwenye mabega ya watengenezaji wa programu za mteja.

Watengenezaji wa MySQL wanaahidi kutekeleza kazi na funguo za kigeni na kudumisha uadilifu wa marejeleo katika toleo la 5.0. Kweli, toleo la MySQL 5.0 linapokuwa thabiti, tutaona kitakachotokea hapo mwisho. Ningependa sana MySQL kuunga mkono uadilifu wa marejeleo (bila kutoa dhabihu utendaji :).

  • Tafsiri

Ninachapisha muendelezo wa tafsiri ya mfululizo wa makala kwa wanaoanza.
Hizi na zinazofuata zina habari zaidi juu ya sifa.
Anza -.

4. MEZA NA FUNGUO ZA MSINGI

Kama unavyojua tayari kutoka kwa sehemu zilizopita, data huhifadhiwa ndani meza, ambayo yana mistari au kwa njia nyingine kumbukumbu. Hapo awali nilitoa mfano wa jedwali lenye habari kuhusu masomo. Hebu tuangalie tena.

Kuna masomo 6 kwenye jedwali. Zote 6 ni tofauti, lakini kwa kila somo maadili ya sehemu sawa huhifadhiwa kwenye jedwali, ambayo ni: tutorial_id (kitambulisho cha somo), kichwa (kichwa) na kitengo (kitengo). Kitambulisho_cha_mafunzoufunguo wa msingi meza za masomo. Ufunguo msingi ni thamani ambayo ni ya kipekee kwa kila rekodi kwenye jedwali.
Katika jedwali la mteja hapa chini, mteja_id ndio ufunguo msingi. Katika kesi hii, ufunguo wa msingi pia ni thamani ya pekee (nambari) kwa kila rekodi.

Funguo kuu katika maisha ya kila siku
Katika hifadhidata, funguo za msingi hutumiwa kwa kitambulisho. Katika maisha, funguo za msingi ziko kila mahali karibu nasi. Wakati wowote unapokumbana na nambari ya kipekee, nambari hiyo inaweza kutumika kama ufunguo msingi katika hifadhidata (inaweza, lakini si lazima, itumike hivyo. Hifadhidata zote zinaweza kutoa kiotomatiki thamani ya kipekee kwa kila rekodi kama nambari. ambayo inaongezwa kiotomatiki na kuingizwa pamoja na kila rekodi mpya [Kinachojulikana kama ufunguo msingi wa sintetiki au mbadala - takriban tafsiri]).

Mifano michache

  • Nambari ya agizo unayopokea unaponunua kwenye duka la mtandaoni inaweza kuwa ufunguo msingi wa jedwali fulani la agizo katika hifadhidata ya duka hili, kwa sababu ni thamani ya kipekee.
  • Nambari ya hifadhi ya jamii inaweza kuwa ufunguo msingi katika baadhi ya jedwali katika hifadhidata ya serikali kwa sababu... pia ni ya kipekee, kama katika mfano uliopita.
  • Nambari ya ankara inaweza kutumika kama ufunguo msingi katika jedwali la hifadhidata ambalo huhifadhi ankara zinazotolewa kwa wateja.
  • Nambari ya nambari ya mteja mara nyingi hutumiwa kama ufunguo msingi katika jedwali la mteja.

Je, mifano hii inafanana nini? Ukweli kwamba katika zote thamani ya kipekee, isiyorudiwa kwa kila rekodi imechaguliwa kama ufunguo msingi. Tena. Thamani ya uga wa jedwali la hifadhidata iliyochaguliwa kama ufunguo msingi daima huwa ya kipekee.

Ufunguo wa msingi huonyesha nini? Tabia za ufunguo wa msingi.
Ufunguo wa msingi hutumiwa kutambua rekodi.

Ufunguo wa msingi hutumiwa kitambulisho rekodi kwenye jedwali, ili kila rekodi iwe ya kipekee. Mfano mwingine ... Unapoita usaidizi wa kiufundi, opereta kawaida hukuuliza utoe nambari fulani (mkataba, simu, nk) ambayo unaweza kutambuliwa kwenye mfumo.
Ikiwa umesahau nambari yako, opereta wa usaidizi wa kiufundi atakuuliza utoe maelezo mengine ambayo yatasaidia kukutambulisha kwa njia ya kipekee. Kwa mfano, mchanganyiko wa siku yako ya kuzaliwa na jina la mwisho. Wanaweza pia kuwa ufunguo wa msingi, au tuseme mchanganyiko wao.

Ufunguo wa msingi ni wa kipekee.

Ufunguo msingi daima una thamani ya kipekee. Fikiria kwamba maana yake si ya kipekee. Kisha haikuweza kutumika kutambua data kwenye jedwali. Hii ina maana kwamba thamani yoyote ya msingi inaweza kuonekana mara moja tu katika safu wima iliyochaguliwa kama ufunguo msingi. RDBMS zimeundwa kwa namna ambayo hazitakuwezesha kuingiza nakala kwenye uwanja wa ufunguo wa msingi, utapata hitilafu.
Mfano mmoja zaidi. Fikiria kuwa una jedwali iliyo na sehemu first_name na last_name na kuna rekodi mbili:

| jina la kwanza | jina_mwisho |
| vasya |pupu |
| vasya |pupu |

Wale. kuna Vasyas mbili. Unataka kuchagua Vasya maalum kutoka kwa meza. Jinsi ya kufanya hivyo? Maingizo hayana tofauti kutoka kwa kila mmoja. Hapa ndipo ufunguo wa msingi husaidia. Ongeza safu wima ya kitambulisho (toleo la kawaida la ufunguo wa msingi wa sintetiki) na...

Kitambulisho | jina la kwanza | jina_mwisho |
1 | vasya |pupu |
2 | vasya |pupu |

Sasa kila Vasya ni ya kipekee.

Aina za funguo za msingi.

Kwa kawaida ufunguo msingi ni thamani ya nambari. Lakini inaweza pia kuwa aina nyingine yoyote ya data. Sio kawaida kutumia kamba kama ufunguo wa msingi (kamba ni kipande cha maandishi), lakini inawezekana kinadharia na kivitendo.
Vifunguo vya msingi vya mchanganyiko.
Mara nyingi ufunguo wa msingi huwa na shamba moja, lakini pia inaweza kuwa mchanganyiko wa safu kadhaa, kwa mfano mbili (tatu, nne ...). Lakini unakumbuka kwamba ufunguo wa msingi daima ni wa pekee, ambayo ina maana kwamba mchanganyiko wa nambari ya nth ya mashamba, katika kesi hii 2, lazima iwe ya kipekee. Nitakuambia zaidi kuhusu hili baadaye.

Kuweka nambari kiotomatiki.

Sehemu ya ufunguo wa msingi mara nyingi, lakini sio kila wakati, inachakatwa na hifadhidata yenyewe. Kimsingi unaweza kuiambia hifadhidata kukabidhi kiotomati thamani ya kipekee ya nambari kwa kila rekodi inapoundwa. Hifadhidata kawaida huanza kuweka nambari kwa 1 na huongeza nambari hii kwa moja kwa kila rekodi. Ufunguo wa msingi kama huo unaitwa kuongeza kiotomatiki au kuhesabu kiotomatiki. Kutumia vitufe vya kuongeza kiotomatiki ni njia nzuri ya kufafanua funguo msingi za kipekee. Jina la kawaida la ufunguo kama huo ni ufunguo wa msingi mbadala [Kama ilivyotajwa hapo juu. - takriban. tafsiri.]. Ufunguo kama huo hauna habari muhimu inayohusiana na chombo (kitu), habari juu ya ambayo imehifadhiwa kwenye jedwali, ndiyo sababu inaitwa surrogate.

5. KUUNGANISHA MEZA KWA KUTUMIA FUNGUO ZA KIGENI

Nilipoanza kutengeneza hifadhidata, mara nyingi nilijaribu kuhifadhi habari ambayo ilionekana kuhusishwa katika jedwali moja. Ningeweza, kwa mfano, kuhifadhi maelezo ya agizo kwenye jedwali la mteja. Baada ya yote, maagizo ni ya wateja, sivyo? Hapana. Wateja na maagizo ni vyombo tofauti katika hifadhidata. Wote wawili wanahitaji meza yao wenyewe. Na rekodi katika jedwali hizi mbili zinaweza kuunganishwa ili kuanzisha uhusiano kati yao. Ubunifu wa hifadhidata ni suluhisho la maswala mawili:
  • kufafanua ni vyombo gani unataka kuhifadhi ndani yake
  • kuna uhusiano gani kati ya vyombo hivi?
Mmoja-kwa-wengi.
Wateja na maagizo yana muunganisho (wako kwenye uhusiano) mmoja kwa wengi kwa sababu moja mteja anaweza kuwa nayo mengi maagizo, lakini kila mpangilio maalum (wao kundi la) iliyotolewa tu moja mteja, i.e. inaweza kuwa na mteja mmoja tu. Usijali ikiwa uelewa wako wa muunganisho huu hauko wazi kwa wakati huu. Nitazungumza zaidi juu ya unganisho katika sehemu zijazo.

Jambo moja ambalo ni muhimu sasa ni kwamba kwa mawasiliano moja hadi nyingi ni muhimu mbili meza tofauti. Moja kwa ajili ya wateja, nyingine kwa ajili ya maagizo. Wacha tufanye mazoezi ya kuunda meza hizi mbili.

Tutahifadhi taarifa gani? Hebu tutatue swali la kwanza.
Kuanza na, tutaamua ni habari gani kuhusu maagizo na kuhusu wateja tutahifadhi. Ili kufanya hivyo, lazima tujiulize swali: "Ni vitengo gani vya habari vinavyohusiana na wateja, na ni vitengo gani vya habari vinavyohusiana na maagizo?"

Kubuni meza ya mteja.

Maagizo kweli ni ya wateja, lakini agizo sio kizuizi cha chini cha habari, ambayo inahusiana na wateja (yaani kizuizi hiki kinaweza kugawanywa katika vidogo vidogo: tarehe ya kuagiza, anwani ya utoaji wa utaratibu, nk, kwa mfano).
Sehemu zilizo hapa chini ni sehemu za chini kabisa za habari zinazotumika kwa wateja:

  • mteja_id (ufunguo msingi) - kitambulisho cha mteja
  • jina la kwanza - jina
  • jina_mwisho - jina la kati
  • anwani - anwani
  • zip_code - msimbo wa posta
  • nchi - nchi
  • kuzaliwa_tarehe - tarehe ya kuzaliwa
  • jina la mtumiaji - jina la usajili la mtumiaji (ingia)
  • nenosiri - nenosiri

Wacha tuendelee kuunda jedwali hili moja kwa moja katika SQLyog (bila shaka, unaweza kutumia programu nyingine yoyote). Ifuatayo ni mfano wa jinsi jedwali linaweza kuonekana katika SQLyog mara moja kuundwa. Programu zote za usimamizi wa hifadhidata ya picha zina takriban muundo sawa wa kiolesura. Unaweza pia kuunda meza kwa kutumia mstari wa amri bila kutumia matumizi ya picha.


Kuunda meza katika SQLyog. Tambua kuwa kisanduku cha kuteua cha ufunguo msingi (PK) kwa sehemu ya kitambulisho cha mteja kimechaguliwa. Sehemu ya kitambulisho cha mteja ndio ufunguo msingi. Kisanduku cha kuteua cha Auto Incr pia kimechaguliwa, ambayo ina maana kwamba hifadhidata itaingiza kiotomati thamani ya kipekee ya nambari ambayo, kuanzia sifuri, itaongezeka kwa moja kila wakati.

Kubuni meza ya maagizo.
Ni sehemu gani za chini kabisa za maelezo tunazohitaji kwa agizo?

  • order_id (ufunguo wa msingi) - kitambulisho cha utaratibu
  • order_date - tarehe na wakati wa kuagiza
  • mteja - mteja ambaye alifanya agizo

Chini ni mfano wa jedwali katika SQLyog.

Jedwali hizi mbili ( wateja Na maagizo) zimeunganishwa kwa sababu shamba mteja kwenye jedwali la maagizo inarejelea ufunguo wa msingi ( kitambulisho_cha_mteja) meza za wateja. Uunganisho huu unaitwa uhusiano muhimu wa kigeni. Unapaswa kufikiria ufunguo wa kigeni kama nakala rahisi (nakala ya thamani) ya ufunguo wa msingi wa jedwali lingine. Kwa upande wetu, thamani ya shamba kitambulisho_cha_mteja kutoka kwa meza wateja kunakiliwa kwa meza maagizo kila wakati rekodi inapoingizwa. Kwa hivyo, na sisi, kila agizo linaunganishwa na mteja. Na kila mteja anaweza kuwa na maagizo mengi, kama ilivyoelezwa hapo juu.

Kuunda uhusiano muhimu wa kigeni.

Huenda unajiuliza, "Nitahakikishaje au ninawezaje kuona kuwa sehemu ya mteja katika jedwali la maagizo inarejelea sehemu ya kitambulisho cha mteja katika jedwali la wateja." Jibu ni rahisi - huwezi kufanya hivi kwa sababu bado sijakuonyesha jinsi ya kuunda muunganisho.
Hapo chini kuna dirisha la SQLyog na dirisha ambalo nilitumia kuunda uhusiano kati ya jedwali.


Kuunda uhusiano muhimu wa kigeni kati ya maagizo na meza za wateja.

Katika dirisha lililo hapo juu, unaweza kuona jinsi sehemu ya mteja ya jedwali la maagizo iliyo upande wa kushoto inavyounganishwa na ufunguo msingi (customer_id) wa jedwali la wateja lililo upande wa kulia.

Sasa unapoangalia data ambayo inaweza kuwa katika meza, utaona kwamba meza mbili zinahusiana.


Maagizo yanahusishwa na wateja kupitia sehemu ya mteja, ambayo inarejelea jedwali la wateja.

Katika picha unaweza kuona kwamba mteja maria kuwekwa oda tatu, mteja pablo kuwekwa moja, na mteja john- hakuna mtu.
Unaweza kuuliza: "A Nini Je! ndivyo watu hawa wote walivyoamuru?" Hilo ni swali zuri. Huenda ulitarajia kuona vitu vilivyoagizwa kwenye jedwali la maagizo. Lakini hii ni mfano mbaya wa kubuni. Je, unaweza kuingiza vipi bidhaa nyingi kwenye ingizo moja? Bidhaa ni vyombo tofauti ambavyo lazima vihifadhiwe katika meza tofauti. Na uhusiano kati ya meza maagizo Na bidhaa itakuwa uhusiano wa moja kwa wengi. Nitazungumza juu ya hili zaidi.

6. TENGENEZA MCHORO WA MAHUSIANO YA HILA

Hapo awali, ulijifunza jinsi rekodi kutoka kwa jedwali tofauti zinavyounganishwa kwenye hifadhidata za uhusiano. Kabla ya kuunda na kuunganisha meza, ni muhimu kufikiria vyombo ambazo zipo kwenye mfumo wako (ambao unaunda hifadhidata) na uamue jinsi vyombo hivi vingefanya imewasiliana pamoja. Katika muundo wa hifadhidata, huluki na uhusiano wao hutolewa kwa kawaida mchoro wa uhusiano wa chombo (ERD). Mchoro huu ni matokeo ya mchakato wa muundo wa hifadhidata.
Vyombo.
Unaweza kuwa unajiuliza chombo ni nini. Naam ... ni "jambo" katika mfumo. Hapo. Sikuzote Mama yangu alitaka niwe mwalimu kwa sababu mimi ni hodari wa kueleza mambo.

Katika muktadha muundo wa hifadhidata kiini ni kitu ambacho inastahili meza yako mwenyewe katika modeli yako ya hifadhidata. Unapotengeneza hifadhidata, lazima ueleze haya kiini kwenye mfumo ambao unaunda hifadhidata. Ni zaidi suala la mazungumzo na mteja au na wewe mwenyewe ili kujua ni data gani ambayo mfumo wako utafanya kazi nayo.

Hebu tuchukue duka la mtandaoni kama mfano. Duka la mtandaoni linauza bidhaa. Bidhaa inaweza kuwa huluki dhahiri katika mfumo wa duka la mtandaoni. Bidhaa zinaagizwawateja. Kwa hivyo wewe na mimi tuliona vyombo viwili dhahiri zaidi: maagizo Na wateja.

Agizo linalipwa na mteja ... hii inavutia. Je, tutaunda jedwali tofauti la malipo katika hifadhidata yetu ya duka la mtandaoni? Labda. Lakini je, malipo ni sehemu ya chini kabisa ya habari inayohusiana na maagizo? Hili pia linawezekana.

Iwapo huna uhakika, fikiria tu taarifa ya malipo unayotaka kuhifadhi. Unaweza kutaka kuhifadhi njia ya malipo au Siku ya malipo. Lakini hizi bado ni sehemu ndogo za habari ambazo zinaweza kuhusiana agizo. Unaweza kubadilisha maneno. Njia ya malipo - njia ya malipo ya agizo. Tarehe ya malipo - tarehe ya malipo ya agizo. Kwa hiyo sioni haja ya kuvumilia malipo katika jedwali tofauti, ingawa kimawazo unaweza kutofautisha malipo kama huluki, kwa sababu unaweza kufikiria malipo kama kontena la habari (njia ya malipo, tarehe ya malipo).

Tusiwe wasomi sana.

Kama unaweza kuona, kuna tofauti kati ya chombo na meza yenyewe kwenye hifadhidata, i.e. si kitu kimoja. Wataalamu wa tasnia ya IT wanaweza kuwa wasomi na wapenda sana kuhusu hili. Mimi sio mtaalamu wa aina hiyo. Tofauti hii inategemea maoni yako juu ya data yako, habari yako. Ukiangalia uundaji wa data kutoka kwa mtazamo wa programu, unaweza kuishia na vyombo vingi ambavyo haviwezi kuhamishwa moja kwa moja kwenye hifadhidata. Katika somo hili, tunaangalia data madhubuti kutoka kwa mtazamo wa hifadhidata, na katika ulimwengu wetu mdogo, huluki ni jedwali.


Subiri huko, uko karibu sana kupata digrii yako ya hifadhidata.

Kama unavyoona, kubainisha ni vyombo gani mfumo wako unavyo ni mchakato wa kiakili ambao unahitaji uzoefu fulani na mara nyingi ni somo la mabadiliko, marekebisho, kutafakari, lakini bila shaka sio sayansi ya roketi.


Mchoro wa uhusiano wa chombo unaweza kuwa mkubwa sana ikiwa unafanya kazi kwenye programu ngumu. Baadhi ya chati zinaweza kuwa na mamia au hata maelfu ya jedwali.

Viunganishi
Hatua ya pili katika muundo wa hifadhidata ni kuchagua ni uhusiano gani uliopo kati ya vyombo kwenye mfumo wako. Hii inaweza kuwa ngumu kidogo kuelewa sasa, lakini tena, sio sayansi ya roketi. Ukiwa na uzoefu na kufikiria upya kazi iliyofanywa, utakamilisha muundo wa hifadhidata unaofuata kwa usahihi au karibu kwa usahihi.

Hivyo. Nilikuambia juu ya uhusiano mmoja kwa wengi na nitakuambia zaidi kuhusu miunganisho katika sehemu za baadaye za mwongozo huu, kwa hivyo sitakaa juu yake zaidi kwa sasa. Kumbuka tu kwamba kuamua ni mahusiano gani ambayo vyombo vyako vitakuwa nayo ni sehemu muhimu muundo wa hifadhidata na viunganisho hivi vinaonyeshwa kwenye mchoro chombo-uhusiano.