Kubuni hifadhidata ya uhusiano. Hifadhidata. Serikali ya Shirikisho la Urusi

Mfano wa uhusiano data (RMD) ya baadhi eneo la somo inawakilisha seti ya mahusiano ambayo hubadilika kwa wakati. Wakati wa kuunda mfumo wa habari, seti ya uhusiano inakuwezesha kuhifadhi data kuhusu vitu vya eneo la somo na mfano wa uhusiano kati yao.

Database ya uhusiano ni ghala la data iliyo na seti ya meza mbili-dimensional, data katika meza lazima ikidhi kanuni zifuatazo.

1. Thamani za sifa (safu, uga) lazima ziwe za atomiki (kwa maneno mengine, kila thamani iliyo kwenye makutano ya safu mlalo na safu haipaswi kugawanywa katika maadili kadhaa).

2. Thamani za kila sehemu lazima ziwe za aina moja.

3. Kila ingizo kwenye jedwali ni la kipekee.

4. Kila sehemu ina jina la Kipekee.

5. Mlolongo wa mashamba na rekodi katika meza sio muhimu

Mtazamo ni dhana muhimu na ni jedwali la pande mbili lililo na baadhi ya data.

Essence ni kitu yoyote asili, data ambayo imehifadhiwa kwenye hifadhidata. Data ya huluki huhifadhiwa katika uhusiano.

Sifa ni sifa zinazobainisha huluki. Katika Muundo wa Jedwali, kila sifa imetajwa na inalingana na kichwa cha safu fulani ya jedwali.

Ufunguo wa uhusiano ni seti ya sifa zake zinazotambulisha kwa njia ya kipekee kila nakala za uhusiano.

Vifunguo kawaida hutumiwa kufikia malengo yafuatayo:

Kuondoa maadili ya nakala katika nyanja muhimu;

Kuagiza rekodi. Inawezekana kuagiza katika kupanda au kushuka ili maadili ya nyanja zote muhimu, pamoja na kuagiza mchanganyiko (kwa baadhi - kuongezeka, na kwa wengine - kupungua);

Mashirika ya kuunganisha meza.

Wazo la ufunguo wa kigeni ni muhimu. Ufunguo wa kigeni unaweza kufafanuliwa kama seti ya sifa za uhusiano mmoja R2, ambao thamani zake lazima zilingane na thamani za ufunguo unaowezekana wa uhusiano mwingine R1.

Mfumo wa uendeshaji unaweza kutumika kwa mahusiano, kuruhusu moja kutolewa kutoka kwa mwingine. Kwa mfano, matokeo ya hoja kwenye hifadhidata ya uhusiano inaweza kuwa uhusiano mpya unaokokotolewa kulingana na mahusiano yaliyopo. Kwa hiyo, inawezekana kugawanya data iliyosindika katika sehemu zilizohifadhiwa na zilizohesabiwa. Sehemu kuu ya usindikaji wa data katika hifadhidata za uhusiano ni uhusiano, na sio nakala zake za kibinafsi (rekodi).

Kubuni hifadhidata za mfumo wa habari ni kazi inayohitaji nguvu kazi nyingi. Inafanywa kwa msingi wa kurasimisha muundo na michakato ya eneo la somo, habari kuhusu ambayo inapaswa kuhifadhiwa kwenye hifadhidata. Tofautisha dhana na mzunguko- ya kimuundo kubuni.

Muundo wa kimawazo wa hifadhidata ya IS kwa kiasi kikubwa ni mchakato wa kiheuristic. Utoshelevu wa kielelezo cha habari cha eneo la somo lililojengwa ndani ya mfumo wake unathibitishwa kwa majaribio wakati wa utendakazi wa IS.


Hebu tuorodheshe hatua muundo wa dhana :

Kusoma eneo la somo kuunda wazo la jumla kuhusu yeye;

Utambulisho na uchambuzi wa kazi na kazi za IS iliyotengenezwa;

Ufafanuzi wa vitu kuu-vyombo vya eneo la somo na uhusiano kati yao;

Uwakilishi rasmi wa eneo la somo.

Wakati wa kuunda schema ya hifadhidata ya uhusiano, taratibu zifuatazo zinaweza kutofautishwa:

Kuamua orodha ya meza na mahusiano kati yao;

Kuamua orodha ya mashamba, aina za shamba, mashamba muhimu ya kila meza (schema ya meza), kuanzisha mahusiano kati ya meza kupitia funguo za kigeni;

Kuanzisha indexing kwa ajili ya mashamba katika meza;

Uundaji wa orodha (kamusi) za nyanja zilizo na data ya hesabu;

Kuweka vikwazo vya uadilifu kwa meza na mahusiano;

Urekebishaji wa meza, marekebisho ya orodha ya meza na mahusiano.

Ubunifu wa hifadhidata unafanywa katika viwango vya kimwili na kimantiki. Kubuni katika ngazi ya kimwili inatekelezwa kwa kutumia DBMS na mara nyingi ni automatiska.

Ubunifu wa kimantiki unajumuisha kuamua idadi na muundo wa jedwali, kuunda maswali ya hifadhidata, hati za kuripoti, kuunda fomu za kuingiza na kuhariri data kwenye hifadhidata, nk.

Moja ya kazi muhimu zaidi ya muundo wa hifadhidata wenye mantiki ni uundaji wa data. Mbinu zifuatazo za kubuni miundo ya data zinajulikana:

Kuchanganya habari kuhusu vitu vya chombo ndani ya jedwali moja (uhusiano mmoja) na mtengano unaofuata katika majedwali kadhaa yanayohusiana kulingana na utaratibu wa kuhalalisha uhusiano;

Kuunda maarifa juu ya mfumo (kuamua aina za data ya chanzo na uhusiano) na mahitaji ya usindikaji wa data, kupata schema ya hifadhidata iliyotengenezwa tayari au hata mfumo wa habari wa maombi uliotengenezwa tayari kwa kutumia mfumo wa KESI;

Utekelezaji uchambuzi wa mfumo na maendeleo ya miundo ya miundo.

Urahisi na ufanisi wa msingi wa hifadhidata mfano wa uhusiano bado huamua nafasi yao kuu katika programu tumizi. Hivi sasa, matumizi ya hifadhidata za uhusiano katika mifumo ya programu inayolenga kitu inachukuliwa kuwa ya kawaida. Huu unaonekana kuwa mwelekeo wa muda mrefu na endelevu.

Hifadhidata ya uhusiano ina majedwali mengi ya pande mbili. Jedwali huhifadhi data mbalimbali. Kwa mfano, hifadhidata inaweza kuwa na majedwali ya wateja, bidhaa, akaunti, n.k. Muundo wa kawaida wa jedwali la hifadhidata ya uhusiano umeonyeshwa kwenye Mtini. 1.2.

Mchele. 1.2. Muundo wa kawaida wa jedwali la hifadhidata la uhusiano

Safu za meza zinaitwa kumbukumbu au katika tuples. Nguzo zinaitwa sifa. Katika makutano ya safu mlalo na safu ni thamani isiyogawanyika (ya atomiki) ya kipengele cha data. Seti ya maadili halali ya sifa (safu wima) imedhamiriwa na yake kikoa. Kikoa kinaweza kuwa kidogo sana. Kwa hivyo, maadili ya sifa Ukubwa Jedwali la suti za michezo ni L, XL na XXL. Kinyume chake, kikoa cha sifa Jina la ukoo kubwa sana. Katika hifadhidata, kikoa kinatekelezwa kwa kutumia kizuizi cha kikoa. Kila wakati thamani inapoandikwa kwa hifadhidata, utiifu wake na kikoa kilichorekodiwa kwa sifa fulani huangaliwa. Kwa hivyo, hifadhidata inalindwa dhidi ya kuingiza maadili batili, kwa mfano, tarehe 32 Mei.

Analog halisi ya meza ni utendaji, ambayo hufanya kama jedwali la kawaida kutoka kwa maoni ya mteja, lakini haipo peke yake. Jedwali la kawaida lina data. Mtazamo hauna data yoyote, lakini hubainisha tu vyanzo vyake (jedwali moja au zaidi za kawaida, safu mlalo zinazoweza kuchaguliwa, safu wima zinazoweza kuchaguliwa). Kwa kweli, mtazamo huhifadhiwa kwenye hifadhidata kama ombi la kuunda seti maalum ya data. Matokeo ya swali hili ni maudhui ya mtazamo. Wakati data katika majedwali ya chanzo inabadilika, maudhui ya mwonekano pia hubadilika.

Ufunguo hutumiwa kutambua rekodi ya mtu binafsi kwenye jedwali. Ufunguo wa msingi(MsingiUfunguo, RK) kila meza ina. Hii ni safu wima inayotambulisha kila rekodi kwenye jedwali kwa njia ya kipekee. Katika mfano wetu, kama RK inaweza kuwa safu Jina la ukoo. Hii ni sahihi mpaka, kwa mfano, Bender nyingine inaonekana. Ili kuhakikisha upekee wa thamani muhimu ya msingi, mbinu mbili hutumiwa. Kwanza, inaweza kutumika ufunguo wa msingi wa mchanganyiko (MchanganyikoMsingiUfunguo), iliyoundwa na safu wima kadhaa (sifa za asili) za jedwali. Pili, kama RK unaweza kuingiza safu ya ziada kwenye meza ambayo haina maana kutoka kwa mtazamo wa eneo la somo. Anaitwa ufunguo mbadala. Kwa mfano, ufunguo wa mbadala unaweza kuwa Nambari ya mteja au Nambariagizo.

Ufunguo mwingine una jukumu muhimu katika hifadhidata za uhusiano - Kitufe cha nje. Ufunguo wa nje (KigeniUfunguo,FK) ni safu katika jedwali moja linalorejelea ufunguo msingi wa jedwali lingine. Kwa kutumia funguo za kigeni, viunganisho vinaanzishwa kati ya meza tofauti za database (mfano umeonyeshwa kwenye Mchoro 1.3) - kuharakisha upatikanaji wa meza kwa kutumia index.

Mchele. 1.3. Kitufe cha nje

Mfano huu unaonyesha kuwa ankara na majedwali ya wateja yameunganishwa kwa ufunguo Nambari ya mteja. Ikiwa tunaangalia jedwali la hesabu, basi Nambari ya akaunti itakuwa ufunguo wa msingi na Nambari ya mteja -ufunguo wa kigeni.

Ili kuhakikisha uadilifu wa data ya hifadhidata, funguo za kigeni lazima zikidhi kikwazo uadilifu wa marejeleo. Inamaanisha kuwa kila thamani ya ufunguo wa kigeni katika jedwali moja lazima iwe na thamani inayolingana katika ufunguo msingi uliopo kwenye jedwali lingine. Hiki ndicho kikwazo muhimu zaidi kati ya vizuizi vyote kwa sababu inahakikisha uthabiti wa marejeleo mtambuka kati ya jedwali. Ikiwa maadili ni sawa ufunguo wa kigeni usiangalie, uadilifu wa marejeleo wa data ya hifadhidata unaweza kukiukwa. Kwa mfano, kufuta safu kutoka kwa meza ya wateja kunaweza kusababisha ukweli kwamba katika meza ya maagizo itabaki kumbukumbu za maagizo yaliyotolewa na mteja ambaye sasa haijulikani (na ni nani atakayelipa agizo?). Vikwazo vya uadilifu wa marejeleo lazima vidumishwe kiotomatiki. Kila wakati data ya hifadhidata inapoingizwa au kubadilishwa, vidhibiti hukagua vizuizi na kuhakikisha vinatimizwa. Ikiwa vizuizi vimekiukwa, urekebishaji wa data ni marufuku.

Kwa kuongeza, meza inaweza kuwa na funguo za sekondari - indexes. Zinatumika kama index ya mada katika kitabu. Ili kupata neno mahususi katika kitabu, huna haja ya kupindua kurasa zote mfululizo - angalia tu katika faharasa na upate nambari ya ukurasa unaotaka. Kwa mfano, unaweza kuunda index kwenye safu Jina la ukoo(Mchoro 1.4).

Mchele. 1.4. Kuharakisha upatikanaji wa jedwali kwa kutumia faharisi

Matokeo yake, meza ndogo itaundwa ambayo huhifadhi tu majina ya mwisho na viungo kwa nafasi ya rekodi katika meza kuu. Sasa sio lazima uangalie jedwali zima kubwa ili kutafuta rekodi. Matokeo yake, tunapata faida katika utendaji. Hata hivyo, wakati wa kuongeza na kufuta rekodi (katika meza kuu), meza ya index lazima iundwe upya. Hii inapunguza kasi ya uendeshaji.

Usindikaji wa uendeshaji wa data katika hifadhidata za uhusiano unafanywa taratibu zilizohifadhiwawapumbavu. Aina ya utaratibu uliohifadhiwa ni vichochezi. Kichochezi daima huhusishwa na jedwali maalum na huitwa kiotomatiki tukio maalum linapotokea (kwa mfano, kuingiza, kufuta, au kusasisha rekodi).

Wacha tujadili uhusiano kati ya meza. Baada ya jedwali kuunda, wanaamua jinsi ya kuchanganya data zao wakati wa kutoa kutoka kwa hifadhidata. Hatua ya kwanza ni kufafanua uhusiano kati ya meza. Baada ya hayo, inawezekana kuunda maswali, fomu na ripoti zinazoonyesha data kutoka kwa meza kadhaa mara moja. Kwa mfano, ili kuchapisha ankara, unahitaji kuchukua data kutoka kwa meza tofauti na kuchanganya. Uhusiano wa jedwali huanzisha uhusiano kati ya thamani zinazolingana katika nyanja muhimu. Hebu tuangalie aina za mahusiano.

Uhusiano wa mtu na mmoja. Katika kesi hii, kila safu (rekodi) ya meza moja inahusishwa na safu ya meza nyingine (Mchoro 1.5).

Mchele. 1.5. Uhusiano wa mtu na mmoja

Mfano itakuwa uhusiano kati ya meza ya wafanyakazi na meza ya anwani zao. Uhusiano huu ni nadra kwa sababu data husika inaweza kuwekwa kwa urahisi kwenye jedwali moja.

Uhusiano wa moja kwa wengi. Rekodi moja ya meza ya kwanza inahusishwa na rekodi kadhaa katika meza ya pili (Mchoro 1.6).

Mchele. 1.6. Uhusiano wa moja kwa wengi

Kila rekodi katika jedwali la pili haiwezi kuwa na rekodi zaidi ya moja sambamba katika jedwali la kwanza.

Uhusiano wa wengi kwa wengi. Rekodi moja ya meza ya kwanza inaweza kuendana na rekodi kadhaa kwenye jedwali la pili, na rekodi moja ya meza ya pili inaweza kuendana na rekodi kadhaa za kwanza (Mchoro 1.7).

Mchele. 1.7. Uhusiano wa wengi kwa wengi

Kwa kawaida, kuandaa mahusiano hayo, meza ya msaidizi inahitajika, ambayo inajumuisha funguo za msingi za meza mbili kuu. Uhusiano huu hutokea kati ya maagizo na bidhaa. Agizo moja linaweza kujumuisha majina kadhaa ya bidhaa, na jina moja la bidhaa linaweza kujumuishwa katika maagizo kadhaa. Kwa hivyo, lazima kuwe na meza ya kuagiza, meza ya bidhaa, na meza iliyo na jozi za bidhaa.

Wacha sasa tuchunguze kwa ufupi urekebishaji wa hifadhidata za uhusiano. Urekebishaji huhakikisha uboreshaji wa muundo wa hifadhidata. Inasababisha kuondolewa kwa upungufu katika seti za data. Urekebishaji wa hifadhidata unafanywa kwa mlolongo, hatua kwa hatua. Sheria za kawaida zinawasilishwa kwa namna ya fomu za kawaida.

Fomu ya kwanza ya kawaida (1NF) inahitaji kwamba thamani za vipengele vyote vya data katika safu wima ziwe za atomiki. Fomu ya pili ya kawaida (2NF) inahitaji kwamba kila safu isiyo ya ufunguo inategemea kabisa kitufe cha msingi. Fomu ya tatu ya kawaida (3NF) inahitaji safu wima zote zisizo muhimu (sifa) ziwe huru na zitegemee ufunguo msingi. Utegemezi upo ikiwa, kwa mfano, thamani za safu wima moja zimehesabiwa kutoka kwa data katika safu wima zingine. Matokeo ya kuhalalisha ni muundo bora hifadhidata ambayo kuna nakala muhimu ya data, lakini hakuna upungufu.

Tuma kazi yako nzuri katika msingi wa maarifa ni rahisi. Tumia fomu iliyo hapa chini

Wanafunzi, wanafunzi waliohitimu, wanasayansi wachanga wanaotumia msingi wa maarifa katika masomo na kazi zao watakushukuru sana.

Iliyotumwa kwenye http://www.allbest.ru/

Mtihani

Usanifu wa Hifadhidata ya Uhusiano

  • Kurekebisha mahusiano
  • Vitegemezi vya kiutendaji
  • Fomu ya kawaida ya Boyce-Codd
  • Fasihi

Usanifu wa Hifadhidata ya Uhusiano

Kusudi kuu la muundo wa hifadhidata ni kupunguza upungufu wa data iliyohifadhiwa, na kwa hivyo kuokoa kiasi cha kumbukumbu inayotumiwa, kupunguza gharama ya utendakazi wa sasisho nyingi za nakala zisizohitajika na, kwanza kabisa, kuondoa uwezekano wa kutokwenda kwa sababu ya kuhifadhi habari kuhusu. kiasi sawa katika maeneo tofauti kitu kimoja. Upungufu humaanisha kuwa baadhi ya data au vikundi vya data vinaweza kurudiwa mara nyingi.

Wakati wa mchakato wa kuunda hifadhidata, shida zifuatazo zinaweza kutokea:

Sasisha hitilafu - Kwa sababu ya upungufu wa data, ni lazima data yote ikaguliwe wakati wa kuisasisha, hata hivyo, hali inaweza kutokea ambapo si data yote inayosasishwa (uwezekano wa kutofautiana kwa data).

Hitilafu za ujumuishaji - inawezekana kwamba data haiwezi kuingizwa kwenye hifadhidata hadi maelezo ya ziada yamepokelewa na kuingizwa.

Ufutaji wa hitilafu - tatizo la nyuma inaweza kutokea wakati baadhi ya data imefutwa (kupoteza uwezekano wa taarifa muhimu).

Idadi ya nambari za Null haijapunguzwa. Kama vile kupunguzwa kazi, maadili yasiyobainishwa ni vyanzo vya matatizo yanayoweza kutokea katika hifadhidata za uhusiano kwa sababu haiwezekani kubainisha maana yake. Kwa hiyo, ni vyema kupunguza matumizi yao.

Shida tatu za kwanza zinatatuliwa katika mchakato wa kurekebisha uhusiano.

utegemezi wa utendaji wa msingi wa uhusiano

Kurekebisha mahusiano

Kusawazisha ni kizigeu (au mtengano) wa jedwali kuwa mbili au zaidi ambazo zina sifa bora za kuongeza, kubadilisha na kufuta data. Lengo kuu la kuhalalisha ni kufikia muundo wa hifadhidata "safi" ambao " kila ukweli kuhifadhiwa pekee V moja mahali" , i.e. upunguzaji wa data umeondolewa. Hii inafanywa sio sana kuokoa kumbukumbu ili kuondoa kutokubaliana iwezekanavyo katika data iliyohifadhiwa.

Kila jedwali katika hifadhidata ya uhusiano inakidhi hali ya kuwa kila mara kuna thamani moja ya atomiki kwenye makutano ya kila safu mlalo na safu wima ya jedwali, na kamwe hakuwezi kuwa na thamani nyingi kama hizo. Jedwali lolote linalokidhi hali hii linaitwa kawaida. Kwa kweli, meza zisizo za kawaida, yaani, meza zilizo na vikundi vya kurudia, hazizingatiwi hata katika hifadhidata ya uhusiano.

Jedwali la kawaida linalingana na kwanza kawaida fomu, kifupi 1NF. Kwa hivyo, "kawaida" na "katika 1NF" inamaanisha kitu kimoja kwa meza. Walakini, katika mazoezi, neno "kawaida" mara nyingi hutumiwa kwa maana nyembamba - "iliyosawazishwa kikamilifu", ambayo inamaanisha kuwa muundo haukiuki kanuni zozote za kuhalalisha.

Sasa, pamoja na 1NF, viwango zaidi vya kuhalalisha vinaweza kufafanuliwa - fomu ya pili ya kawaida (2NF), fomu ya tatu ya kawaida (3NF), nk. Jedwali linachukuliwa kuwa katika 2NF ikiwa iko katika 1NF na, kwa kuongeza, inakidhi hali fulani ya ziada, kiini chake kitajadiliwa hapa chini. Jedwali liko katika 3NF ikiwa iko katika 2NF na pia linakidhi hali nyingine ya ziada, nk.

Kwa hivyo, kila fomu ya kawaida kwa maana fulani ni mdogo zaidi, lakini pia ni ya kuhitajika zaidi kuliko ya awali. Hii ni kwa sababu ya ukweli kwamba (n+1) - fomu ya kawaida haina sifa zingine zisizovutia, tabia ya nth fomu ya kawaida. Maana ya jumla ya hali ya ziada iliyowekwa kwenye fomu ya kawaida ya (n+1) kwa heshima na fomu ya kawaida ya nth ni kuondokana na vipengele hivi visivyovutia.

Utaratibu wa kurekebisha uhusiano unaweza kubadilishwa. Kwa mfano, seti ya mahusiano katika 3NF inaweza kubadilishwa kuwa mahusiano katika 2NF. Mali hii muhimu sana ya kuhalalisha inamaanisha kuwa hakuna habari inayopotea wakati wa mchakato wa kuhalalisha.

Nadharia ya urekebishaji inategemea uwepo wa tegemezi fulani kati ya nyanja za jedwali. Tahadhari maalum Inalenga kazi, multivalued na utegemezi wa uhusiano.

Vitegemezi vya kiutendaji

Acha X na Y ziwe viseti vidogo vya kiholela vya seti ya sifa za uhusiano R. Y inategemea X kiutendaji ikiwa na ikiwa tu kila thamani ya X inahusishwa na thamani moja ya Y. Notation: XY (soma "X huamua Y kiutendaji. "). Sehemu za kushoto na kulia za nukuu za ishara zinaitwa sehemu ya kuamua na tegemezi, mtawalia.

Mchele. 1. Jedwali la usambazaji wa PIC

Kwa maneno mengine, ikiwa nakala mbili za uhusiano wa R zinapatana na thamani ya X, basi pia zinapatana na thamani ya Y. Kwa ufafanuzi, fikiria takwimu iliyoonyeshwa kwenye Mtini. 1 ni toleo lililobadilishwa kidogo la jedwali la usambazaji lililoonyeshwa kwenye Mtini. 2.

Nakala zote za uhusiano wa PIC zenye thamani sawa ya sifa ya P№ zinayo maadili sawa sifa Mlima. Hii ina maana kwamba sifa za Milima kiutendaji hutegemea sifa za P№: (P№) (Gor). Kwa kuongezea, katika suala hili, kuna vitegemezi vingine vya utendaji vya kila wakati: (P№, D№) (Kol), (P№, D№) (Gor), (P№, D№) (Gor, Col), (P. №, Д№)(П№), (П№, Д№)(П№, Д№, Gor, Kol), pamoja na vitegemezi vinavyofanya kazi katika hali yoyote. wakati huu, lakini si wakati wote, kwa mfano, (P№)(Kol).

Kumbuka kuwa ikiwa X ni ufunguo wa mgombea wa uhusiano R, basi sifa zote Y za uhusiano R lazima zitegemee X kiutendaji (haya ni matokeo ya ufafanuzi wa ufunguo wa mgombea). Kwa kweli, ikiwa uhusiano R unakidhi utegemezi wa utendaji wa AB na A sio ufunguo unaowezekana, basi R itaainishwa na baadhi. upungufu. Kwa mfano, kuhusu PIC, taarifa kwamba kila mtoa huduma yuko katika jiji fulani itarudiwa mara nyingi.

Vitegemezi vya kiutendaji ni vikwazo vya uadilifu, kwa hivyo ni lazima vikaguliwe kila wakati hifadhidata inaposasishwa. Kwa njia ya wazi kupunguza utegemezi mwingi wa utendaji ni ubaguzi yasiyo na maana tegemezi, i.e. zile ambazo haziwezi kushindwa kutimizwa. Kwa mfano, (P№, D№)(P№). Utegemezi wa kiutendaji ni yasiyo na maana ikiwa tu ikiwa upande wa kulia wa nukuu ya ishara ni sehemu ndogo ya upande wa kushoto. Utegemezi kama huo hauna riba kutoka kwa mtazamo wa vitendo.

Wakati wa kuchambua uhusiano jukumu maalum imepewa isiyoweza kupunguzwa tegemezi. Sifa B inategemea sana sifa ya mchanganyiko A ikiwa kiutendaji inategemea A na haitegemei kiutendaji kitengo chochote cha sifa A. Katika machapisho ya awali, badala ya neno. isiyoweza kupunguzwa uraibu neno lililotumika kamili kazi uraibu.

Vitegemezi vya kiutendaji vinaweza kuonyeshwa kwa kutumia michoro. Kwa hifadhidata ya wasambazaji na sehemu (Mchoro 1), mchoro wa utegemezi wa kazi unaonyeshwa kwenye Mchoro 2.

Kila mshale kwenye mchoro huanza na ufunguo wa msingi wa uhusiano unaofanana. Mishale mingine inawezekana kwenye mchoro. Katika kesi hii, utaratibu wa kuhalalisha unaweza kuwa na sifa isiyo rasmi kama utaratibu wa kuondoa mishale ambayo haianza kwenye ufunguo wa msingi.

Fomu za kawaida zinazohesabiwa haki na utegemezi wa kazi

Tulitaja fomu ya kwanza ya kawaida (1NF). Hebu tupe ufafanuzi mkali zaidi wa hilo, pamoja na ufafanuzi wa aina nyingine za kawaida.

Jedwali liko katika umbo la kwanza la kawaida (1NF) ikiwa tu hakuna safu mlalo iliyo na thamani zaidi ya moja katika sehemu zake zozote na hakuna sehemu zake muhimu zilizo tupu.

Kwa mfano, jedwali lililoonyeshwa kwenye Kielelezo 3 halikidhi mahitaji haya (data katika sehemu ya D№ si ya atomiki):

Mchele. 3. Mfano wa jedwali ambalo si uhusiano wa kimahusiano

Jedwali kama hizo hazizingatiwi hata katika mifano ya uhusiano.

Ikiwa tunatengeneza hifadhidata ya uhusiano, basi katika hatua ya kwanza meza inaweza kuundwa ambayo inachanganya data zote zinazozingatiwa, kwa mfano, Wasambazaji, Sehemu, Ugavi. Jedwali katika Mchoro 3 inawakilisha uhusiano sahihi wa uhusiano. Anaitwa zima mtazamo hifadhidata iliyoundwa. Uhusiano mmoja wa jumla unajumuisha sifa zote za maslahi na unaweza kuwa na data yote inayotarajiwa kuhifadhiwa katika hifadhidata katika siku zijazo. Kwa hifadhidata ndogo, uhusiano wa ulimwengu wote unaweza kutumika kama mahali pa kuanzia kwa muundo wa hifadhidata. Ufunguo msingi wa jedwali ni mchanganyiko wa sehemu P№ na D№. Jedwali hili linakidhi mahitaji yote ya 1NF.

Kipimo

Radiometer

Kipimo

Kipimo

Kipimo

Mchele. 4. Uhusiano katika fomu ya kwanza ya kawaida

Mchoro wa utegemezi wa kazi wa uhusiano kama huo una fomu iliyoonyeshwa kwenye Mtini. 4 (tutafikiri kwamba hali ya muuzaji imedhamiriwa na jiji).

Uhusiano unaozungumziwa, ambao uko katika 1NF, una muundo ambao kwa sababu fulani hauhitajiki kabisa. Kwa mfano, kuna upungufu wa wazi wa habari. Hii inasababisha sio tu kuongezeka kwa saizi ya hifadhidata, lakini pia kwa makosa kadhaa:

Ingiza. Huwezi kuingiza data kuhusu mtoa huduma (P5) bila kutaja sehemu (Thamani ya null katika sehemu muhimu hairuhusiwi).

Futa. Unapofuta tuple fulani, unapaswa kufuta maelezo mengine mengi sana (kufuta maelezo ya usambazaji hufuta maelezo ya wasambazaji).

Sasisha. Taarifa nyingi zinaweza kusababisha matokeo yasiyolingana. Ikiwa muuzaji P1 alihamia jiji lingine, na sasisho halikufanywa katika nakala zote, basi hifadhidata itakuwa na habari zinazokinzana.

Hitilafu hizi zinaweza kuondolewa kwa kupunguza uhusiano na fomu ya pili ya kawaida, kuivunja katika mbili.

Jedwali liko katika umbo la pili la kawaida (2NF) ikiwa linakidhi ufafanuzi wa 1NF na sehemu zake zote ambazo si sehemu ya ufunguo msingi zinategemea bila kupunguzwa ufunguo msingi (au zinategemea kikamilifu ufunguo msingi).

Mategemeo ya kiutendaji ya mahusiano katika hifadhidata yetu yaliyopunguzwa hadi 2NF yanaonyeshwa kwenye Mtini. 4, na meza zinazolingana ziko kwenye Mtini. 5.

Sasa unaweza kuingiza habari kuhusu wauzaji kwenye hifadhidata bila habari kuhusu bidhaa zao; unapofuta habari kuhusu bidhaa, data iliyobaki inabaki (kuhusu wauzaji, kwa mfano), habari kuhusu jiji inaonekana mara moja tu, na hii huondoa shida inayohusiana. na upungufu wa habari. Hiyo ni, shukrani kwa mtengano, tuliondoa shida nyingi ambazo zilikuwepo katika uhusiano katika 1NF. Wakati huo huo, mahusiano yaliyoonyeshwa kwenye Mchoro wa 5 yanaweza kuunganishwa na kisha tutarudi kwenye uhusiano ulioonyeshwa kwenye Mchoro 3 - ambayo ina maana ya uharibifu ulifanyika bila kupoteza data.

Hivyo, kwanza jukwaa taratibu kuhalalisha uhusiano ni Uumbaji makadirio Kwa isipokuwa " imetajwa" kazi tegemezi.

Mchele. 7. Mahusiano katika 2NF

Hata hivyo, muundo wa uhusiano ulioonyeshwa katika Mchoro 7 unaweza kuunda matatizo fulani yanayohusiana na uhusiano wa Wasambazaji ambapo sifa zisizo muhimu hazijitegemea. Utegemezi wa sifa ya Hali kwenye sifa ya P№ unafanya kazi na hauwezi kupunguzwa, lakini utegemezi huu pia mpito kupitia sifa ya Jiji - kila thamani ya P№ huamua thamani ya Jiji, na kila thamani ya Jiji huamua thamani ya Hali. Lakini ikiwa vitegemezi AB na BC vimeridhika, basi utegemezi AC pia umeridhika. Utegemezi wa mpito unaweza tena kusababisha hitilafu za kusasisha:

Ingiza - huwezi kujumuisha data kuhusu jiji fulani na hali yake wakati hakuna msambazaji ndani yake.

Kufuta - wakati muuzaji amefutwa, taarifa kuhusu hali ya jiji inapotea (kwa wazi, sababu ya tatizo hili ni habari ya pamoja - meza ina taarifa kuhusu wauzaji wote na jiji).

Sasisha - hali ya miji inarudiwa mara kadhaa. Wakati wa kubadilisha hali ya jiji, unapaswa kuangalia kupitia mistari mingi ili kuepuka kupata matokeo yasiyolingana, lakini uwezekano wa kosa unabakia.

Shida hutatuliwa kwa kuleta uhusiano wa Msambazaji kwa fomu ya tatu ya kawaida kupitia mtengano wake:

Utaratibu huu huondoa utegemezi wa mpito na kutatua shida zote.

Mtazamo iko V cha tatu kawaida fomu (3NF) Kisha Na pekee Kisha, Lini hiyo iko V 2NF Na kila yasiyo ya ufunguo sifa isiyobadilika inategemea kutoka msingi ufunguo.

Kwa maneno mengine: meza iko V cha tatu kawaida fomu (3NF), Kama yeye iko V 2NF Na wala moja kutoka yake yasiyo ya ufunguo mashamba Sivyo inategemea kazi kutoka yoyote mwingine yasiyo ya ufunguo mashamba.

Hivyo, pili jukwaa kuhalalisha ni Uumbaji makadirio Kwa isipokuwa mpito tegemezi.

Wakati wa utaratibu wa kuhalalisha, hali mara nyingi hutokea wakati uhusiano unaweza kukabiliwa na mtengano kwa njia kadhaa. Kwa mfano, uhusiano wa Wasambazaji (Kielelezo 7) na tegemezi za utendakazi P#City na CityStatus na, kwa hivyo, utegemezi wa mpito P #Status. Kuna chaguzi zinazowezekana za kutenganisha uhusiano huu katika makadirio mawili yaliyo katika 3NF:

J: (P№, Jiji) na (Jiji, Hali) (kama ilivyopendekezwa awali) na B: (P№, Jiji) na (P№, Hali)

Chaguo la tatu la mtengano katika makadirio (P №, Hali) na (Jiji, Hali) haliwezi kutumika, kwani inafanywa na upotezaji wa habari - miji kadhaa inaweza kuwa na hadhi sawa, basi habari juu ya jiji ambalo mtoaji. iko itapotea.

Kwa sababu fulani, uharibifu wa B hauhitajiki zaidi kuliko utengano A. Kwa mfano, baada ya kufanya uharibifu B, haiwezekani kuingiza habari kwamba jiji fulani lina hali fulani bila kutaja muuzaji kutoka mji huo.

Katika mtengano A, makadirio yote mawili yanajitegemea kwa maana kwamba masasisho katika kila moja ya makadirio yanaweza kufanywa kwa kujitegemea kabisa kwa kila mmoja. Katika mtengano B, masasisho kwa mojawapo ya makadirio hayo mawili lazima yadhibitiwe ili yasivunje utegemezi asilia wa CityStatus. Hiyo ni, makadirio ya mtengano B hayajitegemea.

Dhana uhuru makadirio hutoa kigezo cha kuchagua mojawapo ya mitengano kadhaa inayowezekana. Makadirio R1 na R2 ya uhusiano R yanajitegemea kwa maana iliyotajwa hapo juu ikiwa na iwapo tu

Kila utegemezi wa kazi kuhusiana na R ni matokeo ya kimantiki ya utegemezi wa kazi katika makadirio ya R1 na R2;

Sifa za kawaida za makadirio R1 na R2 huunda ufunguo unaowezekana, kulingana na angalau, kwa mmoja wao.

Katika mfano unaozingatiwa katika mtengano A, makadirio hayo mawili ni huru, kwa kuwa sifa yao ya kawaida Jiji ni ufunguo unaowezekana kwa makadirio ya pili na kila utegemezi wa utendaji wa uhusiano wa asili umehifadhiwa katika makadirio. Kinyume chake, katika mtengano B makadirio mawili hayajitegemea, kwa sababu utegemezi wa Hali ya Jiji hauwezi kutokana na utegemezi wa utendaji wa makadirio haya, ingawa sifa yao ya kawaida P№ ni ufunguo unaowezekana kwa makadirio yote mawili.

Wazo la kuhalalisha na mtengano katika makadirio huru lilipendekezwa na Rissanen na linaitwa mtengano Na uhifadhi tegemezi.

Fomu ya kawaida ya Boyce-Codd

Kufikia sasa, tumechukulia kwa urahisi kwamba kila uhusiano una ufunguo mmoja tu wa mgombea - ufunguo msingi. Ufafanuzi wa hapo juu wa 3NF haufai kabisa ikiwa

- uhusiano una funguo mbili au zaidi za mgombea;

- funguo mbili za mgombea ni ngumu na zinaingiliana (zina angalau sifa moja ya kawaida).

Kwa hiyo, ufafanuzi wa 3NF uliongezwa kawaida umbo Boyce-Codd ( Boyce-Codd) - NFBC. Inaweza kutayarishwa kama hii:

Mtazamo iko V kawaida fomu Boyce-Codd Kisha Na pekee Kisha, Lini viambuzi ni uwezo funguo.

Kwa maneno mengine, katika mchoro wa utegemezi wa kazi, mishale inapaswa kuanza tu na funguo za mgombea.

Mchanganyiko wa hali hiyo haipatikani mara nyingi katika mazoezi, hivyo kwa mahusiano bila hali hiyo, 3NF na BCNF ni sawa.

Wacha tutoe ufafanuzi mmoja zaidi: Jedwali iko V kawaida fomu Boyce-Codd (NFBC), Kisha Na pekee Kisha, Lini yoyote kazi uraibu kati ya yake mashamba inakuja chini Kwa isiyoweza kupunguzwa kazi tegemezi kutoka uwezo ufunguo.

Fikiria mfano unaohusisha funguo mbili za mgombea zisizoingiliana:

Muuzaji (P№, Jina_P, Hali, Jiji),

ambapo sifa P№ na Name_P ni funguo zinazowezekana, na sifa Hali na Jiji ni huru kabisa. Mchoro wa utegemezi wa utendaji unaonyeshwa kwenye Mtini. 8. Uhusiano huu unapatikana katika BCNF. Hapa, vibainishi vyote ni funguo zinazowezekana, na mishale yote huanza na vitufe vinavyowezekana.

Hapa kuna mifano ya mahusiano ambayo funguo zinazowezekana zinaingiliana.

Mfano wa kwanza: Uhusiano wa uwasilishaji (P№, Name_P, D№, Qty).

Kuna upungufu fulani katika suala hili ambao husababisha hitilafu za sasisho. Vifunguo vinavyowezekana hapa ni (P№, D№) na (Jina_P, D№), na P№ na Name_P hufafanuana. Uhusiano huu hauko katika hali ya pili ya kawaida na unaweza kugawanywa katika makadirio mawili (P№, Jina_P) na (P№, D№, Kiasi) ili kupata vitegemezi vya utendaji visivyoweza kupunguzwa. Lakini mtengano huo unaweza kupendekezwa kwa kuzingatia ukweli kwamba uhusiano hauko katika BCNF, kwa sababu ina viambajengo viwili ambavyo si funguo zinazowezekana (P№ na Name_P ni viamuzi, kwa vile vinafafanuana):

Muuzaji (P#, Jina_P) na Ugavi 1 (P#, D#, Ukubwa).

Mfano wa pili: Uwiano SDP (S, D, P),

ambapo sifa zinasimama kwa Wanafunzi, Nidhamu na Walimu. Nakala ya SDP ya uhusiano ina maana kwamba baadhi ya mwanafunzi C anasoma taaluma D kutoka kwa mwalimu fulani P. Kuna vikwazo:

- Kila mwanafunzi anasoma somo fulani na mwalimu mmoja;

- Kila mwalimu anafundisha somo moja tu (lakini kila somo linaweza kufundishwa na walimu kadhaa).

Kikwazo cha kwanza kinamaanisha utegemezi (C, D) P, na pili - PD. Mchoro wa 9 unaonyesha mfano wa meza na mchoro wa tegemezi za kazi za uhusiano huo. Katika mfano unaozingatiwa, kuna funguo mbili zinazoweza kuingiliana - (S, D) na (S, P). Uhusiano uko katika 3NF (utegemezi wa mpito uliopo hapa ni juu ya sifa kuu), lakini hauko katika BNFB na una hitilafu za sasisho. Kwa mfano, ikiwa tunafuta habari ambayo Oleg anasoma fizikia, basi tutapoteza habari ambayo Petrov anafundisha fizikia. Shida hii inasababishwa na ukweli kwamba P ni kiashiria lakini sio ufunguo wa mgombea. Ili kutatua tatizo hili, uhusiano wa awali lazima ugawanywe katika makadirio mawili: SP na PD.

Kwa hivyo, dhana ya NFBC huturuhusu kuondoa baadhi ya matatizo yaliyo katika mahusiano katika 3NF. Ufafanuzi wa BCNF ufafanuzi rahisi zaidi 3NF, kwa sababu haitumii dhana za fomu za kawaida, ufunguo msingi, na utegemezi wa mpito. Kwa kuongeza, dhana ya ufunguo wa mgombea inaweza kubadilishwa na kuanzishwa kwa dhana ya msingi zaidi ya utegemezi wa kazi. Lakini kwa upande mwingine, dhana za ufunguo wa msingi, utegemezi wa mpito, nk. zinafaa kiutendaji kwa sababu zinaanzisha wazo la mchakato wa nyongeza unaofanywa na msanidi programu ili kupunguza uhusiano wa kiholela na seti sawa ya mahusiano katika BCNF.

Fomu za kawaida zinahalalishwa na tegemezi ngumu zaidi

Mchele. 10. Uwiano wa DPU usio wa kawaida

Aina zifuatazo za kawaida (4NF na 5NF) hazizingatii kazi tu, bali pia utegemezi wa thamani nyingi na uhusiano kati ya sifa za uhusiano. Ili kufahamiana nao, zingatia uwiano usio wa kawaida unaoonyeshwa kwenye Mchoro 10. Kila nakala ya uhusiano ina jina la taaluma, kikundi cha majina ya walimu, na seti ya vitabu vya kiada. Hii ina maana kwamba kila kozi inaweza kufundishwa na mwalimu yeyote kwa kutumia kitabu chochote cha kiada. Wacha tubadilishe uwiano huu kuwa sawa wa kawaida. Hakuna utegemezi wa utendaji ambao umefafanuliwa kwa data iliyotolewa. Kwa hivyo, hakuna msingi rasmi wa mtengano wa uhusiano huu na uhusiano wa kawaida unaonyeshwa kwenye Mtini. kumi na moja.

Mitambo

Mitambo

Hisabati

Jiometri

Hisabati

Mat. uchambuzi

Mchele. 11. Uwiano wa kawaida wa DPU

Mchele. 12. Makadirio (D,P) na (D,U) ya DPU ya uhusiano

Kwa wazi, uhusiano wa DPU una sifa ya upungufu mkubwa na husababisha kusasisha makosa, kwa mfano, wakati wa kuongeza mwalimu mpya, unahitaji kuingiza nakala kwa kila kitabu. Hata hivyo, mtazamo ni muhimu kabisa na kwa hiyo uko katika BCNF. Matatizo yanayotokea yanasababishwa na ukweli kwamba walimu na vitabu vya kiada vinajitegemea kabisa. Tatizo la uwiano wa kawaida wa DPU hautatokea ikiwa vikundi vyote huru vya kurudia vilitenganishwa hapo awali. Kwa upande wetu, iliwezekana kuboresha hali kwa kuchukua nafasi ya uwiano wa DPU na makadirio (D, P) na (D, U) (Mchoro 12). Katika kesi hii, makadirio yote mawili ni muhimu kabisa na iko katika BCNF, na uhusiano wao hutoa meza ya awali, yaani, mtengano unafanywa bila hasara. Mtengano huu hauwezi kufanywa kwa kuzingatia utegemezi wa kazi, ambao haupo katika mfano huu. Inaweza kutekelezwa kwa misingi ya uhusiano wa multivalued. Vitegemezi vilivyo na thamani nyingi ni ujumuishaji wa tegemezi za kiutendaji kwa maana kwamba kila utegemezi wa utendaji ni ule ulio na thamani nyingi ambao sehemu yake tegemezi ni seti ya singleton.

Kuhusiana na DPU, kuna tegemezi mbili zenye thamani nyingi: DP na DU.

La kwanza kati ya vitegemezi hivi vya thamani nyingi linamaanisha kwamba ingawa kwa kila taaluma hakuna mwalimu mmoja anayelingana na taaluma hii tu, i.e. utegemezi wa utendaji kazi wa DP haujatimizwa, hata hivyo, kila taaluma ina seti fulani ya walimu, bila kujali jina la kitabu cha kiada.

Utegemezi wa pili wenye thamani nyingi hufasiriwa vile vile.

Hebu A, B, C ni kiholela seti ndogo seti sifa uhusiano R. KATIKA utata inategemea kutoka A (A KATIKA) Kisha Na pekee Kisha, Lini kundi la maadili NDANI, sahihi kupewa wanandoa maadili (A, NA) uhusiano R, inategemea pekee kutoka A, Lakini Sivyo inategemea kutoka NA.

Ni wazi, utegemezi wa thamani nyingi AB huridhika tu wakati utegemezi wa thamani nyingi wa AC umeridhika. Vitegemezi vilivyo na thamani nyingi kila mara huunda jozi zinazohusiana: AB||C.

Kurudi kwa shida za uhusiano wa DPU, tunaweza kusema kwamba zinahusishwa na uwepo wa tegemezi nyingi ambazo hazifanyi kazi (ni uwepo wa utegemezi kama huo ambao unahitaji kuingiza nakala mbili wakati inahitajika kuongeza data kuhusu mwalimu mwingine wa fizikia. ) Makadirio (D, P) na (D, U) hayana vitegemezi vyenye thamani nyingi na kwa hivyo yanafaa zaidi. Kabla ya kufafanua kidato cha nne cha kawaida, hebu tufahamiane na nadharia ya R. Fagin:

Acha A, B, C ziwe seti za sifa za uhusiano R (A, B, C). Uhusiano R utakuwa sawa na mchanganyiko wa makadirio yake (A, B) na (A, C) ikiwa na tu ikiwa vitegemezi vingi vya AB na AC vinaridhishwa kwa uhusiano R.

Mtazamo R iko V nne kawaida fomu (4NF) Kisha Na pekee Kisha, Lini V kesi kuwepo polysemantic tegemezi A B Wote pumzika sifa R kazi hutegemea kutoka A.

Kwa maneno mengine:

Mtazamo R iko V 4NF, Kama hiyo iko V NFBC Na Wote polysemantic tegemezi uhusiano R kweli ni kazi tegemezi kutoka uwezo funguo.

Uhusiano wa DPU hauko katika 4NF kwa sababu ina utegemezi wenye thamani nyingi ambao si tegemezi la utendaji. Hata hivyo, makadirio yote mawili (D, P) na (D, U) yako katika 4NF, ambayo, ikilinganishwa na BCNF, inakuwezesha kuunda muundo ulioboreshwa.

Kumbuka kuwa wazo la Rissanen la makadirio huru, kwa kuzingatia utegemezi wa kiutendaji (uhusiano R(A,B,C), kutosheleza utegemezi wa kiutendaji A>B na B>C, inapaswa kugawanywa katika makadirio (A,B) na (B, C), na si (A,B) na (A,C)), pia inatumika kwa uchaguzi wa njia ya mtengano, ikiwa badala ya utegemezi wa kazi kuna utegemezi wa multivalued A>>B na A>>C. Katika kesi hii, mtengano katika uhusiano (A, B) na (A, C) unapaswa kufanywa.

Katika taratibu zote za kuhalalisha zilizozingatiwa hadi wakati huu, mtengano wa uhusiano mmoja kuwa mbili ulifanyika. Wakati mwingine hii haiwezi kufanywa, lakini mtengano ndani idadi kubwa zaidi mahusiano, ambayo kila mmoja ana mali bora. Uhusiano kama huo unaitwa uhusiano wa n-decomposed, ambao n>2.

Fikiria, kwa mfano, uhusiano P-D-Pr (Suppliers-Parts-Projects) (Mchoro 13). Mtoa huduma sawa anaweza kutoa aina nyingi za sehemu kwa miradi tofauti. Ufunguo wa msingi wa uhusiano huu ni seti kamili ya sifa zake; hakuna utegemezi wa kazi na wenye thamani nyingi (hakuna utegemezi wa thamani nyingi, kwani kwa P1 seti ya sehemu inategemea mradi). Kwa hivyo uhusiano uko katika 4NF. Walakini, kunaweza kuwa na makosa ndani yake (sio dhahiri kila wakati), ambayo inaweza kuondolewa kwa mtengano katika mahusiano matatu (mtengano katika mahusiano mawili hauwezekani, kwani operesheni ya nyuma hairuhusu kurudi kwenye uhusiano wa asili). Kwa kuongeza, kiwango cha mtengano hutegemea tuples. Kwa mfano, ikiwa katika uhusiano wa awali moja ya tuples tatu za kwanza zimeondolewa au tuple (P2, D1, P2) imeongezwa, basi inaweza kugawanywa katika makadirio mawili. Ikiwa katika uhusiano wa awali tuple ya mwisho imeondolewa au kubadilishwa na tuple (P2, D1, Pr2), basi haiwezi kugawanywa katika makadirio mawili au matatu bila kukiuka uadilifu wa data. Kutengana kwa uhusiano huu kunaweza kuwa mali ya kimsingi na inayojitegemea kwa wakati ikiwa kizuizi cha ziada kinaongezwa.

Taarifa kwamba PDPr ni sawa na mchanganyiko wa makadirio matatu PD, DPr, PrP ni sawa na taarifa ifuatayo:

IFpair (P1, D1) ni ya uhusiano wa PD

Ipara (D1, Pr1) ni ya uhusiano wa Dpr

Ipara (Pr,1P1) ni ya PrP ya uhusiano,

TOTriple (P1, D1, Pr1) ni ya PDPr ya uhusiano.

Hii ni dhahiri, kwa kuwa P1 tatu, D1, Pr1 iko katika uunganisho wa makadirio ya PD, Dpr, PrP. Taarifa ya mazungumzo pia ni kweli kila wakati.

Kwa upande mwingine, ni kweli kwamba jozi (P1, D1) iko katika uhusiano na PD ikiwa mara tatu (P1, D1, Pr2) iko katika uhusiano na PDP, jozi (P1, D1) iko katika uhusiano. kwa PPr ikiwa (P1, D2, Pr1) iko katika DPR, na jozi (D1, Pr1) inahusiana na DPR, ikiwa (P2, D1, Pr1) iko kwenye DDP. Kisha, ikiwa tunazingatia taarifa yetu ya kwanza, basi tuple (P1, D1, Pr1) lazima iwepo katika uhusiano huo! Hii ina maana kwamba ili kuhakikisha usahihi wa uwiano wa DPR wakati wowote, ni muhimu kuanzisha kizuizi kifuatacho:

Kama tuples (P1, D1 , Pp2), (P2, D1 , Pp1) Na (P1, D2 , Pp1) mali mtazamo PDPr, Hiyo Na msafara wa magari (P1, D1 , Pp1) Pia ni mali hii mtazamo.

Ikiwa taarifa hii daima ni ya kweli, yaani, kwa nakala zote za ziada zinazowezekana za uhusiano wa PDPr, basi kizuizi cha muda cha muda juu ya uhusiano huu kitapatikana, kinachoitwa kizuizi cha 3D. Kwa kuwa kizuizi cha 3D kinaridhika wakati uhusiano ni sawa na muunganisho wa baadhi ya makadirio yake, kizuizi kama hicho kinaitwa kizuizi cha unganisho.

Unaweza kuzingatia ukweli kwamba katika mfano tunazingatia kuna mzunguko fulani katika data. Kigezo cha n-mtengano wa uhusiano wa n> 2 ni kizuizi cha mzunguko. Je, kizuizi cha mzunguko kinamaanisha nini? Katika mfano wetu, acha nakala ya mwisho imaanishe kwamba Smith anatoa vifungu kwa ajili ya Mradi wa Manhattan. Nakala tatu za kwanza hubeba maelezo ambayo Smitt hutoa vifungu, Smitt ni msambazaji wa Mradi wa Manhattan, na vifungu vinatumika katika Mradi wa Manhattan. Lakini taarifa hizi hazimaanishi kwamba ni Smith ambaye hutoa funguo za mradi huu. Ikiwa tutatenganisha PDPr ya uhusiano, inayojumuisha nakala hizi tatu, katika makadirio matatu, basi unganisho wao hautakuwa sawa na ule wa asili - "ziada" nakala ya nne (P1, D1, Pr1) itaonekana, kama ilivyotajwa hapo juu. Ili kuepuka tofauti hiyo, kizuizi cha ziada kinaanzishwa, ambacho kinaweza kutekelezwa kwa urahisi kwa kuharibu uhusiano. Mtengano kama huo unawezekana bila upotezaji wa habari tu ikiwa kuna utegemezi wa unganisho:

Mtazamo R (X,Y,. , Z) inaridhisha tegemezi miunganisho * (X,Y,. , Z) V kiasi Na pekee V kiasi kesi, Lini R inarejeshwa bila hasara kwa miunganisho zao makadirio juu X, Y,. , Z.

Hebu tuangalie mifano miwili ya hitilafu zilizopo katika uhusiano ambao uko chini ya kikwazo cha 3D.

2. Katika uhusiano ulioonyeshwa kwenye Mchoro 15, tuple (P2, D1, Pr1) inaweza kufutwa bila matatizo. Lakini ukifuta (P1, D1, Pr1), basi unahitaji kufuta moja ya iliyobaki ili hakuna mzunguko katika data.

Sasa nadharia ya Feigin inaweza kutengenezwa kama ifuatavyo:

Mtazamo R (A, B, C) inaridhisha tegemezi miunganisho * (AB, ANA) Kisha Na pekee Kisha, Lini hiyo inaridhisha utata tegemezi A KATIKA Na A NA.

Utegemezi wa kujiunga ni ujumuishaji wa dhana ya utegemezi wenye thamani nyingi. Aidha, hii ndiyo zaidi sura ya jumla tegemezi.

Ukirudi kwa uhusiano wa Wasambazaji-Sehemu-Miradi, utagundua kuwa ina utegemezi wa kujiunga PDPr * (PD, DPr, PrP), ambayo si kazi au tegemezi yenye thamani nyingi na haidokezwi na ufunguo wake pekee unaowezekana - mchanganyiko wa sifa zote. Inashauriwa kutenganisha uhusiano kama huo kwa makadirio yaliyoainishwa na utegemezi wa unganisho. Mchakato huu wa mtengano unaweza kurudiwa hadi mahusiano yote yanayotokana yawepo tano kawaida fomu (5NF).

Mtazamo R iko V tano kawaida fomu V kiasi Na pekee V kiasi kesi, Lini yoyote uraibu miunganisho V R lazima kutoka kuwepo baadhi inawezekana ufunguo V R.

Ufafanuzi mkali kidogo wa 5NF:

Jedwali iko V tano kawaida fomu (5NF) Kisha Na pekee Kisha, Lini V kila mmoja yake kamili mtengano Wote makadirio vyenye inawezekana ufunguo. Jedwali, Sivyo kuwa na wala moja kamili mtengano, Pia iko V 5NF.

Sasa tunaweza kusema kwamba baada ya mtengano wa 3 wa mahusiano PDPr makadirio yake PD, DPR na PPR ni katika fomu 5 ya kawaida, kwani kwao hakuna utegemezi wa uhusiano wakati wote.

Fomu ya nne ya kawaida (4NF) ni kesi maalum ya 5NF, ambapo mtengano kamili lazima uwe muungano wa makadirio mawili haswa. Si rahisi kupata jedwali halisi ambalo lingekuwa katika 4NF, lakini si katika 5NF.

Kwa uhusiano fulani R, tunaweza kusema kuwa iko katika 5NF, mradi vitufe vyote vinavyowezekana na vitegemezi vyote vya muunganisho vinajulikana. Walakini, hakuna algorithm ambayo hukuruhusu kuamua utegemezi wote wa unganisho. Lakini uhusiano kama huo ni nadra sana katika mazoezi.

Fomu ya tano ya kawaida ni fomu ya mwisho ya kawaida ambayo inaweza kupatikana kwa kuharibika. Masharti yake sio madogo kabisa, lakini haitumiki.

Utaratibu wa kawaida na muundo

Tuliangalia teknolojia ya mtengano isiyo na hasara inayotumika kwa muundo wa hifadhidata. Wazo la msingi la teknolojia hii ni kupunguza kwa utaratibu uhusiano wa asili, unaopatikana katika 1NF, kwa seti ya mahusiano madogo, ambayo kwa maana fulani ni sawa na uhusiano wa awali, lakini ni vyema zaidi. Kila hatua ya mchakato wa kupunguza inajumuisha kugawanya katika makadirio ya mahusiano yaliyopatikana katika hatua ya awali. Katika kesi hii, vizuizi vilivyoainishwa hutumiwa katika kila hatua ya utaratibu wa kuhalalisha kuchagua makadirio katika hatua inayofuata. Urekebishaji ni ugawaji wa uhusiano (jedwali) katika mahusiano kadhaa ambayo yana sifa bora wakati wa kusasisha, ikijumuisha, na kufuta data. Mchakato huu wa kubadilisha jedwali kwa mfululizo na mtengano wake kamili unafanywa hadi zote ziwe katika 5NF (katika mazoezi, kawaida huwa na kikomo cha kupunguza uhusiano na fomu ya kawaida ya Boyce-Codd). Kwa ujumla, malengo yafuatayo ya mchakato wa kuhalalisha yanaweza kutofautishwa:

kuondoa aina fulani za upungufu;

hurekebisha sasisho fulani, kuwezesha na kufuta hitilafu;

kubuni mpangilio wa hifadhidata ambao ni uwakilishi "mzuri" wa ulimwengu halisi, ni angavu, na hutoa msingi mzuri wa maendeleo zaidi;

kurahisisha mchakato wa kuweka vikwazo vya uadilifu.

Hebu tuorodhe sheria za msingi zinazotumiwa katika utaratibu wa kuhalalisha.

1. Uhusiano uliounganishwa lazima upunguzwe hadi 1NF.

2. Mahusiano katika 1NF yanapaswa kugawanywa katika makadirio ili kuwatenga tegemezi zote za utendaji ambazo haziwezi kupunguzwa.

Kwa maneno mengine, ikiwa uhusiano una ufunguo wa msingi wa fomu (K1, K2) na pia inajumuisha shamba F, ambayo inategemea sehemu ya ufunguo huu, kwa mfano, kwenye K2, lakini si kwa ufunguo kamili, basi. katika kesi hii inashauriwa kuunda uhusiano mwingine ulio na K2 na F (ufunguo wa msingi - K2), na uondoe F kutoka kwa uhusiano wa asili:

Kama matokeo ya hatua hii, seti ya mahusiano katika 2NF itapatikana.

3. Mahusiano katika 2NF yanapaswa kugawanywa katika makadirio ili kuwatenga tegemezi zozote za utendakazi zinazobadilika. Kwa maneno mengine, ikiwa uhusiano una ufunguo wa mgombea K, sifa ya ufunguo isiyo ya mgombea F1 ambayo inategemea K kiutendaji, na sifa nyingine isiyo ya ufunguo F2 ambayo inategemea F1 kiutendaji, basi inashauriwa kuondoa sifa ya F2. kutoka kwa uhusiano wa asili na kuunda uhusiano mwingine ulio na F1 na F2, na ufunguo wa msingi F1.

Matokeo yake yatakuwa seti ya mahusiano katika 3NF.

5. Mahusiano katika BCNF yanapaswa kugawanywa katika makadirio ili kuondoa tegemezi zote zenye thamani nyingi ambazo si tegemezi za utendaji. Matokeo yake yatakuwa seti ya mahusiano katika 4NF (katika mazoezi, utegemezi kama huo wenye thamani nyingi kawaida haujumuishwi wakati wa kuunda uhusiano wa asili, kutenganisha vikundi huru vya kurudia).

6. Mahusiano yanapaswa kugawanywa katika makadirio ili kuondoa utegemezi wowote wa kujiunga ambao haujaonyeshwa na funguo za wagombea, ikiwa wanaweza kutambuliwa. Hii itasababisha seti ya mahusiano katika 5NF (mtengano kamili wa mahusiano).

Wakati wa kufuata sheria zilizopendekezwa, ni muhimu kukumbuka kuwa kugawanya katika makadirio lazima kufanyike bila kupoteza data na wakati wa kuhifadhi utegemezi wa kazi na wa thamani nyingi.

Miongozo iliyopendekezwa ya kuhalalisha ni miongozo tu, na kunaweza kuwa na hali ambapo urekebishaji haufai kukamilishwa kuanzia mwanzo hadi mwisho. Kuna sababu kadhaa za dhana hii. Kwanza, kuhalalisha kunaweza kusaidia kunasa baadhi ya vikwazo vya uadilifu kwa njia rahisi, lakini pamoja na utendaji kazi, utegemezi mwingi na kujiunga, aina nyingine za utegemezi zinaweza kuwepo kiutendaji. Pili, kuna vigezo vichache vya kuchagua mtengano unaopendelea. Tatu, mchakato wa kuhalalisha na kuendelea kwa madawa ya kulevya sio sambamba kila wakati. Nne, sio upungufu wote unaweza kuondolewa katika mchakato wa kuhalalisha.

Uundaji wa mifumo ya hifadhidata huanza na ujenzi wa mfano wa data ya habari, i.e. kitambulisho cha chombo. Hatua zifuatazo za utaratibu wa kubuni lazima zikamilishwe:

1. Wakilisha kila huluki inayojitegemea kama jedwali la hifadhidata (jedwali la msingi) na ubainishe ufunguo msingi wa jedwali hili la msingi.

2. Wakilisha kila muungano (uhusiano kati ya mashirika) kama jedwali la msingi. Tumia funguo za kigeni katika jedwali hili ili kutambua wanachama wa chama na kubainisha vikwazo vinavyohusishwa na kila moja ya funguo hizi za kigeni.

3. Onyesha sifa za huluki kama majedwali ya msingi yenye ufunguo wa kigeni unaotambulisha huluki husika. Bainisha vizuizi kwenye funguo za kigeni za jedwali hizi na funguo zao msingi.

4. Ili kuwatenga ukiukwaji bila kukusudia wa kanuni zozote za urekebishaji katika mradi, fanya utaratibu wa kuhalalisha.

5. Ikiwa wakati wa mchakato wa kuhalalisha meza yoyote iligawanywa, basi mfano wa habari wa hifadhidata unapaswa kubadilishwa na hatua zilizo hapo juu zinapaswa kurudiwa.

6. Bainisha vikwazo vya uadilifu vya hifadhidata iliyoundwa na utoe (ikihitajika) maelezo mafupi meza zinazotokana na mashamba yao.

Kwa uwakilishi wa kuona Kwa muundo wa mfumo ulioundwa, lugha ya mfano wa habari "Jedwali-Uhusiano" inaweza kutumika, kutumika katika hifadhidata za kawaida za uhusiano. Ndani yake, huluki zote zinawakilishwa kama majedwali ya safu wima moja yenye vichwa vinavyojumuisha jina la huluki. Safu mlalo za jedwali ni orodha ya sifa za huluki, na zile zinazounda ufunguo msingi zimeangaziwa. Uhusiano kati ya vyombo huonyeshwa kwa mishale iliyoelekezwa kutoka kwa funguo za msingi au vipengele vyake.

7. Mfano wa muundo wa hifadhidata

Kusudi na eneo la somo

Hifadhidata imeundwa kuhifadhi habari kuhusu wafanyikazi wa kampuni fulani. Kampuni ina idara kadhaa. Kila idara ina wafanyikazi kadhaa, miradi kadhaa na ofisi kadhaa. Kila mfanyakazi ana kazi kadhaa. Kwa kila kazi kuna karatasi iliyo na orodha kiasi cha fedha kupokelewa na mfanyakazi kwa kufanya kazi hii. Kila ofisi ina simu kadhaa.

Taarifa zifuatazo zinapaswa kuhifadhiwa katika hifadhidata:

Kwa kila idara: nambari ya kipekee idara, bajeti na idadi ya kipekee ya mkuu wa idara;

kwa kila mfanyakazi: nambari ya kipekee ya mfanyakazi, nambari ya mradi wa sasa, nambari ya ofisi, nambari ya simu, pamoja na jina la kazi inayofanywa, pamoja na tarehe na kiasi cha malipo yote yaliyopokelewa kwa kufanya kazi hii;

kwa kila mradi: nambari ya mradi wa kipekee na bajeti;

kwa kila ofisi: nambari ya kipekee ya ofisi, eneo, nambari zote za simu.

Taarifa za kisemantiki (vikwazo): Hakuna mfanyakazi wakati huo huo ni mkuu wa idara kadhaa; hakuna mfanyakazi anayefanya kazi katika idara zaidi ya moja kwa wakati mmoja; hakuna mfanyakazi anayefanya kazi kwa wakati mmoja kwenye mradi zaidi ya mmoja; hakuna mfanyakazi aliye na ofisi zaidi ya moja kwa wakati mmoja; hakuna mfanyakazi aliye na simu zaidi ya moja kwa wakati mmoja; hakuna mfanyakazi aliye na kazi zaidi ya moja kwa wakati mmoja; hakuna mradi unaotolewa kwa zaidi ya idara moja kwa wakati mmoja; hakuna ofisi iliyo ya idara zaidi ya moja kwa wakati mmoja.

Ubunifu wa hifadhidata

Uchambuzi wa vitu na sifa zilizoelezwa hapo juu hutuwezesha kutambua vyombo vya database iliyoundwa na kujenga mfano wake wa habari kwa namna ya "Jedwali la Kiungo" (Mchoro 16).

Mchele. 16. Taarifa kuhusu kampuni ambayo inapaswa kuhifadhiwa kwenye hifadhidata

Muundo wa awali wa daraja unaweza kutazamwa kama uhusiano usio wa kawaida:

IDARA (IDARA NAMBA, BAJETI_O, NAMNA YA USIMAMIZI, WAFANYAKAZI, MIRADI, OFISI) UFUNGUO WA MGOMBEA (IDARA NA.) UFUNGUO WA MGOMBEA (NAMNA YA USIMAMIZI)

Hapa, maana ya sifa DTD# (nambari ya idara ya kipekee), BUDGET_O, RUK# (nambari ya msimamizi) ni wazi kutoka kwa majina, na sifa WAFANYAKAZI, MIRADI, OFISI zinajumuisha maadili ya uhusiano. Tunaweza kuelezea sifa zao za kiota:

IDARA (IDARA Na., BAJETI, Nambari ya USIMAMIZI, WAFANYAKAZI (Nambari ya STIMU, Nambari ya MRADI, Nambari ya OFISI, Nambari ya TEL., KAZI (MADA, MALIPO (TAREHE, KIASI)), MIRADI (Nambari ya MRADI, BAJETI_P). ), OFISI (NAMBA YA OFISI, ENEO, SIMU (TEL#))) UFUNGUO WA MGOMBEA (IDARA#) UFUNGUO WA MGOMBEA (RUNK#)

Sasa tunaweza kupunguza uhusiano huu kwa seti ya mahusiano katika 1NF. Wakati huo huo, kwa kuzingatia kila uhusiano wa thamani kando, tunatenga tegemezi zote zenye thamani nyingi ambazo si tegemezi za utendaji.

IDARA1 (IDARA#, BAJETI_O, USIMAMIZI#) UFUNGUO WA MSINGI (IDARA#) FUNGUO MBADALA (USIMAMIZI#)

MFANYAKAZI1 (Nambari ya COTR, ​​Nambari ya IDARA, Nambari ya MRADI, Nambari ya CABIN, Nambari ya TEL) UFUNGUO WA MSINGI (NAMBALI YA MFANYAKAZI)

KAZI1 (SOMO, NAKILI NO.) UFUNGUO WA MSINGI (SOMO, NAKILI NAMBA.)

MALIPO1 (NAMBA YA SHIRIKA, MADA, TAREHE, KIASI) UFUNGUO WA MSINGI (NAMBALI YA SHIRIKA, SOMO, TAREHE)

PROJECTS1 (PROJECT#, BAJETI_P, IDARA#) UFUNGUO WA MSINGI (MRADI#)

OFISI1 (NAMBA YA CHUMBA, ENEO, IDARA Na.) UFUNGUO WA MSINGI (CHUMBA NAMBA.)

SIMU1 (TEL#, chumba#) UFUNGUO MSINGI (TEL#)

Idara za uhusiano IDARA1, MWAJIRIWA1, MALIPO1, MIRADI1, OFISI1 na PHONES1 tayari ziko katika 2NF.

Uhusiano wa JOB1 ni makadirio ya uhusiano wa PAYMENT1, kwa hivyo unabeba taarifa zisizohitajika na unaweza kufutwa bila kupoteza data. Wakati huo huo, uhusiano wa PHONES1 ni makadirio ya uhusiano wa EMPLOYEES1, lakini ikiwa itafutwa, makosa ya sasisho yatatokea - data kuhusu simu hazitakuwepo bila data kuhusu wafanyakazi maalum.

Wacha sasa tuonyeshe muundo wa hifadhidata, uhusiano ambao umepunguzwa hadi 2NF, kwa kutumia lugha ya modeli ya "Jedwali-Uhusiano", ambayo inatumika katika MS ACCESS DBMS:

Zaidi ya hayo, bila kujumuisha utegemezi wa mpito, tunaweza kupunguza mahusiano hadi seti sawa ya mahusiano katika 3NF. Uhusiano pekee ambao hauko katika 3NF ni uhusiano wa COTRUDN, ambapo sifa za KABNo na DTDNo hutegemea kwa mpito ufunguo msingi COTRNO - KABNo. na TEL NO. Kisha uhusiano wa COTRUDN unaweza kubadilishwa na seti ya makadirio yaliyo katika 3NF:

X (TEL#, CAB#) FUNGUO MSINGI (TEL#)

Y (Nambari ya MRADI, IDARA Na.) UFUNGUO WA MSINGI (MRADI Na.)

Z (KAB#, OTD#) UFUNGUO MSINGI (KAB#)

Lakini uhusiano wa X ni analog ya uhusiano wa PHONE2, Y ni makadirio ya uhusiano wa PROJECT2, Z ni makadirio ya OFFICE2 na, kwa hiyo, inaweza kuondolewa kutoka kwa mfano wa hifadhidata. Kwa hivyo, mfano wa hifadhidata ambao uhusiano wake umepunguzwa hadi 3NF utaonekana kama hii:

IDARA3 (IDARA#, BAJETI_O, USIMAMIZI#) UFUNGUO WA MSINGI (IDARA#) FUNGUO MBADALA (USIMAMIZI#)

MFANYAKAZI3 (COTRNO., NO. MRADI, TEL NO.) UFUNGUO WA MSINGI (COTRNO.)

MALIPO3 (NAMBA YA SHIRIKA, MADA, TAREHE, KIASI) UFUNGUO WA MSINGI (NAMBALI YA SHIRIKA, SOMO, TAREHE)

MIRADI3 (PROJECT#, BAJETI_P, IDARA#) UFUNGUO WA MSINGI (MRADI#)

OFISI 3 (NAMBA YA CHUMBA, ENEO, IDARA Na.) UFUNGUO WA MSINGI (CHUMBA NAMBA.)

SIMU3 (TEL#, chumba#) UFUNGUO MSINGI (TEL#)

Kila moja ya mahusiano haya yako katika BCNF. Zaidi ya hayo, wako katika 4NF - tuliondoa utegemezi unaowezekana wa thamani nyingi katika hatua ya kuleta mfano kwa 1NF. Mahusiano yote hayana kasoro zinazoonekana na kwa hivyo inaweza kuzingatiwa kuwa hifadhidata imeundwa kwa usahihi.

Fasihi

1. Beck, Miundo ya Utekelezaji ya Kent maombi ya biashara; M.: Williams, 2008. - 369 p.

2. Weimayer, R.; Sawtel, R. Mwalimu mwenyewe Microsoft SQL Seva 2000 kwa siku 21 (+ CD-ROM); M.: Williams, 2013. - 549 p.

3. Ganderloy, Mike; Harkins, Susan Mauzo Automation Ufikiaji wa Microsoft kutumia VBA; M.: Williams, 2013. - 416 p.

4. Goetz, Ken; Ginbert, Michael; Litvin, Paul Access 2000. Mwongozo wa Msanidi. Kiasi cha 1. Maombi ya Kompyuta ya Kompyuta. juzuu ya 1; Kyiv: BV, 2008. - 576 p.

5. Golitsyna, O.L. na hifadhidata zingine; Jukwaa; Infra-M, 2013. - 399 p.

6. Grinchenko, N.N. nk. Ubunifu wa hifadhidata. Microsoft Access DBMS; Hotline Telecom, 2012. - 613 p.

7. Tarehe, K. J. Utangulizi wa Mifumo ya Hifadhidata; K.: Dialectics; Toleo la 6, 2012. - 360 p.

8. Davidson, muundo wa hifadhidata wa Louis kwenye SQL Server 2000; Beanom, 2009. - 631 p.

9. Duval, Paul M. Kuunganishwa kwa kuendelea. Kuboresha ubora wa programu na kupunguza hatari; M.: Williams, 2008. - 497 p.

10. Karatygin, S.; Tikhonov, A. Kufanya kazi katika Paradoksia kwa Windows 5.0 na mifano; M.: Binom, 2011. - 512 p.

11. Karatygin, Sergey Access 2000 na mifano. Mwongozo wa Mtumiaji na mifano; M.: Maabara ya Maarifa ya Msingi, 2012. - 376 p.

12. Kaufeld, John Microsoft Ufikiaji wa Ofisi 2003 kwa dummies; M.: Dialectics, 2013. - 439 p.

13. Couchman, Jason; Schwinn, Ulrike Oracle 8i CertifiedProfessionalql Mafunzo ya msimamizi wa Hifadhidata ya DBA; LORI, 2009. - 510 p.

Nyaraka zinazofanana

    Dhana ya mfumo wa hifadhidata. Mfano wa uhusiano na sifa zake. Uadilifu katika mfano wa uhusiano. algebra ya uhusiano. Masuala ya muundo wa hifadhidata. Aina za kawaida za mahusiano. Kubuni hifadhidata kwa kutumia mbinu ya uhusiano wa chombo. michoro ya ER. Lugha ya SQL.

    kozi ya mihadhara, imeongezwa 10/03/2008

    Kutumia kuhalalisha. Fomu ya pili na ya tatu ya kawaida. Fomu ya kawaida ya Boyce-Codd. Kidato cha nne na cha tano cha kawaida. Uundaji wa data ya kisemantiki, michoro za ER. Dhana za kimsingi za modeli ya Uhusiano wa Chombo.

    mtihani, umeongezwa 08/07/2007

    Wazo la urekebishaji wa jedwali la hifadhidata na madhumuni yake. Hatua za mchakato wa kuhalalisha. Mfano wa data isiyo ya kawaida. Fomu za kawaida ambazo meza hupunguzwa. Aljebra ya uhusiano juu ya msingi wa elimu. Hifadhidata ya eneo la somo "Mafunzo".

    mtihani, umeongezwa 07/30/2010

    Kuunda muundo wa hifadhidata kwa kutumia mfano wa "Jarida la Shule" kwa kutumia njia na kanuni ya kuhalalisha. Dhana za hifadhidata, usanifu wa hifadhidata na muundo. Maelezo ya eneo la somo; maombi ya kufanya kazi na hifadhidata ya TTable na TQuery.

    tasnifu, imeongezwa 04/01/2012

    Utafiti wa misingi ya kinadharia ya muundo na maendeleo ya hifadhidata. Utambulisho wa utegemezi wa kazi, ujenzi wa mfano wa habari. Mapitio ya zana za lugha na programu iliyoundwa kwa ajili ya kuunda, kudumisha na kushiriki hifadhidata.

    kazi ya kozi, imeongezwa 02/22/2012

    Uidhinishaji na katalogi za muundo wa hifadhidata. Kazi za hifadhidata: uhasibu wa bidhaa zote, kutafuta na kutoa data ya mteja, anwani, nambari za simu, bei na upatikanaji wa bidhaa. Hatua za muundo wa hifadhidata. Schema ya data, kuunda maswali na fomu zao.

    muhtasari, imeongezwa 10/22/2009

    Misingi ya muundo wa hifadhidata ya uhusiano. Mchoro wa mahusiano kati ya mifano na maoni mfumo mgumu katika mchakato wa uchambuzi wenye mwelekeo wa kitu. Mifano picha ya mchoro madarasa maalum. Kuelewa muundo wa data ya habari.

    uwasilishaji, umeongezwa 10/14/2013

    Ufafanuzi unaohitajika ili kuelewa mchakato wa kubuni hifadhidata za uhusiano kulingana na urekebishaji. Mtengano usio na hasara kwa kutumia nadharia ya Heath. Masasisho yasiyo ya kawaida. Maendeleo ya database na mifano ya maombi, uchambuzi wa matatizo wakati wa uumbaji wao.

    uwasilishaji, umeongezwa 10/14/2013

    Database iliyojumuishwa. Maendeleo ya dhana na muundo wa hifadhidata ya shirika kwa mfumo mpya wa habari. Mbinu za mbinu za usanifu wa hifadhidata: uwazi wa sehemu na mwingiliano wa kisemantiki; maendeleo ya mifano ya dhana.

    ripoti, imeongezwa 01/11/2011

    Uchambuzi wa eneo la somo, urasimishaji wake kwa kutumia utegemezi wa kazi. Hatua za kupunguza mfumo wa utegemezi wa kazi na, kwa kuzingatia mfumo uliopunguzwa unaosababisha, kuunda mfano wa hifadhidata. Kuunda na kuuliza maswali ya mfano.

PITIA MAELEZO YA MUHADHARA

Kwa wanafunzi maalum
T1002 "Programu teknolojia ya habari»

(L.V. Rudikova, Ph.D., Profesa Mshiriki)

Swali la 31. USANIFU WA DBMS. MFANO WA DATA YA UHUSIANO

1. Dhana ya hifadhidata.

2. Usanifu wa hifadhidata wa tabaka tatu.

3. Mzunguko wa maisha Hifadhidata.

4. Usanifu wa DBMS.

5. Mfano wa data ya uhusiano.

6. Ubunifu wa hifadhidata za uhusiano.

7. Aina za kawaida za mahusiano.

8. algebra ya uhusiano.

1. Dhana ya hifadhidata.

Mfumo wa hifadhidata ni mfumo wowote wa habari unaotegemea kompyuta ambapo data inaweza kushirikiwa kati ya programu nyingi.

Mfumo wa habari - mfumo otomatiki ambao hupanga data na kutoa habari.

Mfumo wa habari na usimamizi - mfumo ambao hutoa msaada wa habari usimamizi.

Data - ukweli uliotawanyika.

Habari - data iliyopangwa na kuchakatwa.

Chini ya hifadhidata inarejelea seti ya vikundi vya msingi vilivyounganishwa vya data (habari) ambavyo vinaweza kuchakatwa na mfumo mmoja au zaidi wa programu. Mfumo wa hifadhidata lina hifadhidata; programu ya madhumuni ya jumla inayoitwa mfumo wa usimamizi wa hifadhidata (DBMS) , na hutumikia kusimamia hifadhidata; vifaa na watu sahihi.

Kila DBMS lazima ikidhi mahitaji yafuatayo:

· kumpa mtumiaji uwezo wa kuunda hifadhidata mpya na kuzifafanua schema (muundo wa data wa kimantiki) kutumia lugha maalum - lugha ya ufafanuzi wa data; kuunga mkono maoni mengi ya data sawa;

· acha" ombi» data na kuzibadilisha kwa kutumia lugha ya kuuliza, au lugha ya upotoshaji wa data; kuruhusu ushirikiano na kugawana data kutoka kwa programu mbalimbali;

· kusaidia uhifadhi wa kiasi kikubwa sana cha data, kipimo katika gigabytes au zaidi, kwa muda mrefu, kuwalinda kutokana na uharibifu wa ajali na matumizi yasiyoidhinishwa, na pia kutoa urekebishaji wa database na upatikanaji wa data kwa njia ya maswali, i.e. kuhakikisha usalama na uadilifu wa data;

· kudhibiti upatikanaji wa data wakati huo huo kwa watumiaji wengi; kuwatenga ushawishi wa ombi la mtumiaji mmoja kwa ombi la mwingine na kuzuia upatikanaji wa wakati mmoja, ambayo inaweza kuharibu data, i.e. kuhakikisha udhibiti wa concurrency wa ufikiaji wa data.

Mfumo wa hifadhidata unajumuisha vipengele vifuatavyo:

· Watumiaji, i.e. watu wanaotumia data.

· Maombi, i.e. programu za mtumiaji zinazohitaji data kutoka kwa mfumo.

· DBMS ni programu inayodhibiti ufikiaji wa data na kutoa maalum utendakazi mifumo ya hifadhidata.

· Data, i.e. kamba zilizohifadhiwa kwenye faili.

· Mfumo wa mwenyeji ni mfumo wa kompyuta ambao faili huhifadhiwa. Safu mlalo za data hufikiwa na mfumo wa seva pangishi. Jukumu la DBMS ni kutoa hoja zinazowezesha utendakazi wa usimamizi wa faili wa mfumo wa seva pangishi kutumika kuhudumia programu mbalimbali. DBMS ni safu ya ziada ya programu iliyojengwa juu programu mfumo wa mwenyeji.

Kwa hivyo, mfumo ulio na hifadhidata unaweza kuwakilishwa kama mlolongo ufuatao wa viwango:

Katika kiwango cha chini kabisa kuna data iliyohifadhiwa kwenye faili za kimwili (kumbukumbu ya hifadhidata ya kimwili). Washa ngazi ya juu- programu zilizo na uwasilishaji wao wenyewe wa data sawa ya mwili. Kila mwonekano wa hifadhidata ni muundo maalum wa kimantiki uliojengwa kutoka kwa data halisi ya msingi. Ili kutoa kiolesura kati ya kumbukumbu halisi ya hifadhidata na matoleo yake mbalimbali ya kimantiki (maoni mengi yanayoungwa mkono), DBMS, kwa upande wake, lazima iwe na tabaka kadhaa.

2. Usanifu wa hifadhidata wa ngazi tatu.

Tofauti kati ya uwakilishi wa kimantiki na halisi wa data ilitambuliwa rasmi mwaka 1978 wakati kamati ANSI/SPRC ilipendekeza muundo wa jumla wa mifumo ya hifadhidata. Muundo huu unaitwa usanifu wa ngazi tatu. Ngazi tatu za usanifu ni: ndani, dhana na nje.

Kiwango cha ndani - hii ni kiwango ambacho huamua mwonekano wa kimwili wa hifadhidata, karibu na hifadhi ya kimwili na inahusishwa na mbinu za kuhifadhi habari kwenye vifaa vya hifadhi ya kimwili. Anatoa za diski zinazohusiana na kiwango hiki ni anwani za kimwili, faharasa, viashiria, n.k. Safu hii ni wajibu wa waundaji wa hifadhidata halisi ambao huamua ni vifaa gani halisi vitahifadhi data, mbinu gani za ufikiaji zitatumika kurejesha na kusasisha data, na hatua zipi zinapaswa kuchukuliwa ili kudumisha au kuboresha utendaji wa mfumo wa usimamizi wa hifadhidata. Watumiaji hawagusi kiwango hiki.

Kiwango cha dhana - kiwango cha kimuundo kinachofafanua muundo wa kimantiki wa hifadhidata. Katika kiwango hiki, muundo wa dhana wa hifadhidata unafanywa, ambao unajumuisha kuchanganua mahitaji ya habari ya watumiaji na kutambua vipengele vya data wanavyohitaji. Matokeo ya muundo wa dhana ni mchoro wa dhana, maelezo ya kimantiki ya vipengele vyote vya data na uhusiano kati yao.

Kiwango cha nje - kiwango cha muundo wa hifadhidata, ambayo inafafanua maoni ya watumiaji wa data. Kila moja kikundi cha watumiaji hupata uwakilishi wake wa data katika hifadhidata. Kila mwonekano kama huo wa data hutoa maelezo yanayomlenga mtumiaji ya vipengele vya data vinavyounda mwonekano wa data na uhusiano kati yao. Inaweza kutolewa moja kwa moja kutoka kwa mfumo wa dhana. Jumla ya vile maoni maalum data na inatoa kiwango cha nje.

Mionekano ya Mtumiaji na Programu

Kiwango cha nje

Maonyesho

Mchoro wa dhana

Kiwango cha dhana

Onyesho

Kiwango cha ndani

Mfumo wa mwenyeji

Data iliyohifadhiwa

Mchele. Viwango vya DBMS

3. Mzunguko wa maisha ya hifadhidata.

Mchakato wa kubuni, kutekeleza na kudumisha mfumo wa hifadhidata unaitwa mzunguko wa maisha wa hifadhidata (LDC). Utaratibu wa kuunda mfumo unaitwa mzunguko wa maisha ya mfumo (SLC).

Kuelewa na njia sahihi kwa LCBD ni muhimu sana na inahitaji kuzingatia kwa kina, kwa kuwa inategemea mbinu data-centric. Vipengele vya data ni thabiti zaidi kuliko kazi za mfumo zinazofanywa. Uumbaji muundo sahihi data inahitaji uchanganuzi changamano wa madarasa ya vitengo vya data na uhusiano kati yao. Ikiwa utaunda schema ya database ya mantiki, basi katika siku zijazo unaweza kuunda idadi yoyote ya mifumo ya kazi inayotumia schema hii. Mbinu inayolenga kazi inaweza kutumika tu kuunda mifumo ya muda ambayo imeundwa kwa muda mfupi wa uendeshaji.

LCBD ina hatua zifuatazo:

1. Kupanga mapema - upangaji wa hifadhidata, unaofanywa katika mchakato wa kutengeneza mpango mkakati wa hifadhidata. Wakati wa kupanga, habari ifuatayo inakusanywa:

· ni programu gani za maombi zinazotumiwa na ni kazi gani wanazofanya;

· ni faili gani zinazohusishwa na kila moja ya programu hizi;

· ni programu na faili gani mpya ziko kwenye kazi.

Taarifa hii husaidia kubainisha jinsi taarifa ya maombi inavyotumiwa na kubainisha mahitaji ya siku za usoni kwa mfumo wa hifadhidata.

Taarifa kutoka kwa hatua hii imeandikwa kwa namna ya mfano wa data ya jumla.

2. Upembuzi yakinifu . Hapa uwezekano wa kiteknolojia, kiutendaji na kiuchumi wa mpango wa kuunda hifadhidata imedhamiriwa, yaani:

· uwezekano wa kiteknolojia - je, teknolojia inapatikana kutekeleza hifadhidata iliyopangwa?

· upembuzi yakinifu wa uendeshaji - je, kuna fedha na wataalam wanaohitajika ili kutekeleza kwa ufanisi mpango wa hifadhidata?

· uwezekano wa kiuchumi - hitimisho linaweza kuamuliwa? Je, mfumo uliopangwa utajilipa? Je, inawezekana kukadiria gharama na faida?

3. Kufafanua Mahitaji inajumuisha uteuzi wa malengo ya hifadhidata, ufafanuzi wa mahitaji ya habari ya mfumo na mahitaji ya maunzi na programu. Kwa hivyo, katika hatua hii ya ukusanyaji wa data na ufafanuzi wa mahitaji, a mfano wa habari ya jumla, imeonyeshwa katika kazi zifuatazo:

· Malengo ya mfumo yamedhamiriwa kwa kuchambua mahitaji ya habari. Pia inaonyesha ni aina gani ya hifadhidata inapaswa kuundwa (kusambazwa, jumla) na ni zana gani za mawasiliano zinahitajika. Hati ya pato ni maoni yanayoelezea malengo ya mfumo.

· Uamuzi wa mahitaji ya mtumiaji: nyaraka kwa namna ya habari ya jumla (maoni, ripoti, tafiti, dodoso, nk); kurekebisha kazi za mfumo na ufafanuzi mifumo ya maombi ambayo itatimiza mahitaji haya. Data imewasilishwa kwa namna ya nyaraka husika.

· Uamuzi wa mahitaji ya jumla ya vifaa na programu kuhusiana na kudumisha kiwango cha taka cha utendaji. (Tafuta idadi ya watumiaji wa mfumo, idadi ya ujumbe wa ingizo kwa siku, idadi ya machapisho). Taarifa hii hutumiwa kuchagua aina za kompyuta na DBMS, uwezo wa diski, na idadi ya vichapishi. Data kutoka hatua hii inawasilishwa katika ripoti iliyo na sampuli ya usanidi wa maunzi na programu.

· Kuendeleza mpango wa uundaji wa awamu wa mfumo, pamoja na uteuzi wa programu za awali.

4. Ubunifu wa dhana - uundaji wa mchoro wa hifadhidata ya dhana. Vipimo vinatengenezwa kwa kiwango kinachohitajika ili kuhamia utekelezaji.

Hati kuu ya pato ni moja mfano wa habari(au schema ya hifadhidata katika kiwango cha dhana) Wakati wa kuendeleza mfano huu, habari na kazi ambazo mfumo lazima ufanye, kuamua katika hatua ya kukusanya na kuamua mahitaji ya mfumo, hutumiwa. Katika hatua hii, pia ni kuhitajika kufafanua: 1) sheria za data; 2) sheria za michakato; 3) sheria za interface.

5. Utekelezaji mchakato wa kugeuza kielelezo cha dhana kuwa hifadhidata inayofanya kazi. Inajumuisha hatua zifuatazo.

1) Kuchagua na kununua DBMS muhimu.

2) Kubadilisha muundo wa hifadhidata wa dhana (infological) kuwa muundo wa data wa kimantiki na halisi:

· Kulingana na modeli ya data ya elimu, taratibu za data hutengenezwa kwa ajili ya DBMS mahususi; ikibidi, hifadhidata inarekebishwa ili kuharakisha usindikaji wa hoja katika programu zote muhimu za wakati;

· inabainishwa ni michakato gani ya utumaji programu inayohitaji kutekelezwa katika taratibu za data kama taratibu zilizohifadhiwa;

· kutekeleza vikwazo vilivyoundwa ili kuhakikisha uadilifu wa data na kutekeleza sheria za data;

· kubuni na kuzalisha vichochezi vya kutekeleza sheria zote za data zilizoainishwa na serikali kuu na sheria za uadilifu wa data ambazo haziwezi kubainishwa kama vikwazo;

· kuendeleza mkakati wa kuorodhesha na kuunganisha; kukadiria ukubwa wa majedwali yote, makundi na faharisi;

· kuamua viwango vya ufikiaji wa mtumiaji, kukuza na kutekeleza sheria za usalama na ukaguzi. Unda majukumu na visawe ili kutoa ufikiaji wa watumiaji wengi na viwango thabiti vya ruhusa za ufikiaji.

· tengeneza topolojia ya mtandao ya hifadhidata na utaratibu wa ufikiaji usio na mshono wa data ya mbali (database iliyorudiwa au kusambazwa).

3) Ujenzi wa kamusi ya data ambayo inafafanua uhifadhi wa ufafanuzi wa muundo wa data ya hifadhidata. Kamusi ya data pia ina taarifa kuhusu ruhusa za ufikiaji, sheria za ulinzi wa data na udhibiti wa data.

4) Kujaza hifadhidata.

5) Uundaji wa programu za maombi, udhibiti wa usimamizi.

6) Mafunzo ya mtumiaji.

6. Tathmini na uboreshaji wa schema ya hifadhidata. Inahusisha watumiaji wa uchunguzi ili kutambua mahitaji ya utendaji ambayo hayajatimizwa. Mabadiliko hufanywa inapohitajika, na kuongeza programu mpya na vipengele vya data kadiri mahitaji yanavyobadilika na kupanuka.

Kwa hivyo, LCBD inajumuisha:

· Soma eneo la somo na utoe nyaraka zinazofaa (1-3).

· Ujenzi wa modeli ya habari (4).

· Utekelezaji (5).

· Tathmini ya utendaji na usaidizi wa hifadhidata (6).

4. Usanifu wa DBMS.



Mchele. Sehemu kuu za DBMS

Data, metadata - vyenye sio data tu, bali pia habari juu ya muundo wa data ( metadata) Katika DBMS ya uhusiano, metadata inajumuisha majedwali ya mfumo (mahusiano), majina ya mahusiano, majina ya sifa za mahusiano hayo, na aina za data za sifa hizo.

Mara nyingi DBMS inasaidia fahirisi data. Kielezo ni muundo wa data ambao husaidia kupata vipengele vya data kwa haraka kutokana na sehemu ya thamani yake (kwa mfano, faharasa ambayo hupata nakala za uhusiano fulani ambao una thamani fulani ya mojawapo ya sifa). Faharasa ni sehemu ya data iliyohifadhiwa, na maelezo yanayoonyesha ni sifa gani faharasa zinayo ni sehemu ya metadata.

Meneja wa kumbukumbu -kupokea taarifa zinazohitajika kutoka eneo la kuhifadhi data na kubadilisha taarifa ndani yake kwa ombi la viwango vya juu vya mfumo.

Katika mifumo rahisi ya hifadhidata, kidhibiti kumbukumbu kinaweza kuwa mfumo wa faili wa mfumo wa uendeshaji. Hata hivyo, ili kuboresha ufanisi, DBMS kawaida hufanya udhibiti wa kumbukumbu ya moja kwa moja. Kidhibiti cha kumbukumbu kinajumuisha vipengele viwili:

· Kidhibiti faili inafuatilia eneo la faili kwenye diski na kupata kizuizi au vizuizi vilivyo na faili inapoombwa na msimamizi wa buffer (diski kwa ujumla imegawanywa katika vitalu vya diski - maeneo yanayohusiana kumbukumbu iliyo na kutoka 4000 hadi 16000 byte).

· Meneja wa buffer inasimamia kumbukumbu kuu. Inapokea vitalu vya data kutoka kwa diski kupitia meneja wa faili na kuchagua ukurasa kuu wa kumbukumbu ili kuhifadhi kizuizi fulani. Inaweza kuhifadhi kizuizi cha diski kwa muda kwenye kumbukumbu kuu, lakini inarudisha kwenye diski wakati ukurasa kuu wa kumbukumbu unahitajika kwa kizuizi kingine. Kurasa pia hurejeshwa kwenye diski wakati ombi la msimamizi wa muamala.

"Omba" processor - huchakata maombi na maombi ya mabadiliko kwa data au metadata. Inapendekeza njia bora ya kufanya operesheni inayohitajika na kutoa amri zinazofaa kwa msimamizi wa kumbukumbu.

Kichakataji hoja (msimamizi) hugeuza hoja au kitendo cha hifadhidata ambacho kinaweza kutekelezwa kwa kiwango cha juu sana (kwa mfano, kama swali. SQL ), katika mlolongo wa maombi ya data iliyohifadhiwa kama vile nakala mahususi za uhusiano au sehemu za faharasa kwenye uhusiano. Mara nyingi sehemu ngumu zaidi ya usindikaji ombi ni yake shirika, yaani kuchagua nzuri mpango wa kuuliza au mlolongo wa maombi kwa mfumo wa kumbukumbu unaojibu ombi.

Meneja wa Shughuli - inawajibika kwa uadilifu wa mfumo na lazima ihakikishe usindikaji wa wakati mmoja wa maombi mengi, kutokuwepo kwa kuingiliwa kwa maombi (kuongeza, dakika, max ) na ulinzi wa data katika kesi ya kushindwa kwa mfumo. Inashirikiana na msimamizi wa hoja kwa sababu inahitaji kujua ni data gani inayoathiriwa na hoja za sasa (ili kuepuka migongano) na inaweza kuahirisha baadhi ya hoja na uendeshaji ili kuepuka migongano. Kidhibiti cha muamala pia hutangamana na kidhibiti kumbukumbu kwa sababu mipango ya ulinzi wa data kwa kawaida huhusisha kuhifadhi kumbukumbu ya mabadiliko ya data. Ikiwa operesheni inafanywa kwa usahihi, faili usajili itakuwa na rekodi ya mabadiliko, ili uweze kutekeleza tena hata mabadiliko hayo ambayo hayakufikia diski kutokana na kushindwa kwa mfumo.

DBMS za kawaida huruhusu mtumiaji kupanga maswali mengi na/au mabadiliko katika muamala mmoja. Shughuli ni kundi la shughuli ambazo lazima zifanywe kwa mfuatano kama zima.

Kwa kawaida, mfumo wa hifadhidata unasaidia shughuli nyingi kwa wakati mmoja. Ni utekelezaji sahihi wa miamala yote kama hii ambayo inahakikisha meneja wa shughuli. Utekelezaji sahihi wa shughuli unahakikishwaACID -mali (atomiki, uthabiti, kutengwa, uimara):

· atomiki- Utekelezaji wa shughuli zote au kutokuwepo kwao (kwa mfano, kutoa pesa kutoka kwa ATM na kutoa malipo yanayolingana kwa akaunti ya mteja lazima iwe shughuli moja ya atomiki; kila moja ya shughuli hizi hairuhusiwi kufanywa kando);

· uthabiti - hali ambayo data hukutana na matarajio yote yanayowezekana (kwa mfano, hali ya uthabiti kwa hifadhidata ya ndege ni kwamba hakuna kiti kwenye ndege kinachohifadhiwa kwa abiria wawili);

· insulation- wakati shughuli mbili au zaidi zinafanywa kwa sambamba, matokeo yao lazima yawe pekee kutoka kwa kila mmoja. Utekelezaji wa wakati mmoja wa miamala miwili kwa wakati mmoja haupaswi kusababisha matokeo ambayo hayangetokea ikiwa yangetekelezwa kwa mfuatano (kwa mfano, wakati wa kuuza tikiti za ndege moja katika tukio la kiti cha mwisho cha bure wakati mawakala wawili waliomba kwa wakati mmoja. , ombi la moja lazima litimizwe, lingine - Hapana);

· maisha marefu - baada ya shughuli kukamilika, matokeo haipaswi kupotea katika tukio la kushindwa kwa mfumo, hata ikiwa kushindwa huku hutokea mara baada ya kukamilika kwa shughuli.

Wacha pia tuzingatie aina 3 za ufikiaji wa DBMS:

1. Maombi - Maswali kuhusu data yanaweza kuzalishwa kwa njia mbili:

a)kwa kutumia kiolesura cha swala la kawaida(kwa mfano, DBMS ya uhusiano inaruhusu maswali SQL , ambayo hupitishwa kwa processor ya ombi, na pia hupokea majibu kwao);

b) kwa msaada miingiliano ya programu ya programu- maombi yanapitishwa kupitia interface maalum (maombi ya kiholela hayawezi kupitishwa kupitia interface hii);

2. Marekebisho - Hizi ni shughuli za kubadilisha data. Wanaweza pia kutekelezwa ama kupitia kiolesura cha kawaida au kupitia kiolesura cha programu ya programu;

3. Marekebisho ya mzunguko - Hizi ni timu za wasimamizi wa hifadhidata ambazo zina haki ya kubadilisha schema ya hifadhidata au kuunda hifadhidata mpya.

Usanifu wa mteja/seva. Matoleo mengi ya programu ya kisasa yanatekeleza usanifu mteja/seva: Mchakato mmoja (mteja) hutuma ombi kwa mchakato mwingine (seva) ili kutekeleza. Kwa kawaida, hifadhidata mara nyingi hugawanywa katika mchakato wa seva na michakato kadhaa ya mteja.

Katika usanifu rahisi zaidi wa mteja/seva, DBMS nzima ni seva, isipokuwa violesura vya hoja, ambavyo huingiliana na mtumiaji na kutuma maswali au amri nyingine kwa seva. Kwa mfano, DBMS ya uhusiano mara nyingi hutumia lugha SQL kuwakilisha maombi kutoka kwa mteja hadi seva. Seva ya hifadhidata basi humpa mteja jibu katika mfumo wa jedwali (uhusiano). Kuna tabia ya kuongeza mzigo kwa mteja, kwani ikiwa kuna watumiaji wengi wa hifadhidata wanaofanya kazi wakati huo huo, shida zinaweza kutokea na seva.

5. Mfano wa data ya uhusiano.

RMD ya eneo fulani la somo ni seti ya mahusiano ambayo hubadilika kwa wakati. Wakati wa kuunda mfumo wa habari, seti ya uhusiano inakuwezesha kuhifadhi data kuhusu vitu vya eneo la somo na mfano wa uhusiano kati yao.

Mtazamo ni jedwali la pande mbili lililo na baadhi ya data. Kihisabati chiniN - uhusiano wa kimapenzi R kuelewa seti ya bidhaa ya Cartesian D 1 D 2 … D n seti ( vikoa) D 1, D 2, ..., D n (), kwa hiari tofauti:

R D 1 D 2 … D n ,

ambapo D 1 D 2 … D n - Bidhaa kamili ya Cartesian, i.e. seti ya mchanganyiko wote unaowezekana wa n vipengele kila moja, ambapo kila kipengele kinachukuliwa kutoka kwa kikoa chake.

Kikoa ni dhana ya kimantiki. Kikoa kinaweza kuzingatiwa kama kikundi kidogo cha maadili ya aina fulani ya data ambayo ina maana maalum. Kikoa kina sifa ya sifa zifuatazo:

· Kikoa kina jina la kipekee(ndani ya hifadhidata).

· Kikoa kinafafanuliwa kwa baadhi rahisi aina ya data au kwenye kikoa tofauti.

· Kikoa kinaweza kuwa na baadhi hali ya kimantiki, ambayo hukuruhusu kuelezea kikundi kidogo cha data ambacho ni halali kwa kikoa fulani.

· Kikoa hubeba fulani mzigo wa semantic.

Sifa ya uhusiano kuna michache ya aina<Имя_атрибута: Имя_домена>. Majina ya sifa lazima yawe ya kipekee ndani ya uhusiano. Mara nyingi majina ya sifa ya uhusiano ni sawa na majina ya vikoa vinavyolingana.

Uwiano , iliyofafanuliwa kwenye vikoa vingi, ina sehemu mbili: kichwa na mwili.

Kichwa cha uhusiano ni idadi maalum ya sifa za uhusiano:

Kichwa cha uhusiano kinaelezea bidhaa ya Cartesian ya vikoa ambavyo uhusiano umefafanuliwa. Kichwa ni tuli; haibadilika wakati wa kufanya kazi na hifadhidata. Ikiwa sifa zinabadilishwa, kuongezwa au kufutwa katika uhusiano, basi matokeo yatakuwa nyingine uhusiano (hata kwa jina moja).

Uhusiano wa mwili ina nyingi tuples uhusiano. Kila uhusiano wa tuple inawakilisha seti ya jozi za fomu<Имя_атрибута: Значение_атрибута>:

kiasi kwamba thamani ya sifa ni ya kikoa . Mwili wa uhusiano ni seti ya tuples, i.e. sehemu ndogo ya bidhaa ya Cartesian ya vikoa. Kwa hivyo, mwili wa uhusiano kwa kweli ni uhusiano katika maana ya hisabati ya neno. Mwili wa uhusiano unaweza kubadilika wakati wa kufanya kazi na hifadhidata - nakala zinaweza kubadilishwa, kuongezwa na kufutwa.

Uhusiano kawaida huandikwa kama:

au mfupi zaidi

,

au kwa urahisi

Idadi ya sifa katika uhusiano inaitwa shahada (au -moyo ) uhusiano. Kardinali ya seti ya nakala za uhusiano inaitwa nguvu uhusiano.

Mchoro wa uhusiano ni orodha ya majina ya sifa ya uhusiano fulani inayoonyesha kikoa kinachomilikiwa:

Ikiwa sifa huchukua maadili kutoka kwa kikoa sawa, basi zinaitwa -comparable, ambapo ni seti ya shughuli halali za ulinganisho zilizobainishwa kwa kikoa fulani. Kwa mfano, ikiwa kikoa kina data ya nambari, basi shughuli zote za kulinganisha ni halali kwake, basi. Walakini, kwa vikoa vilivyo na data ya wahusika, sio tu shughuli za kulinganisha za usawa na usawa wa maadili zinaweza kubainishwa. Ikiwa kikoa fulani kina mpangilio wa leksikografia, basi pia kina anuwai kamili ya shughuli za kulinganisha.

Mipango ya mahusiano mawili inaitwa sawa , ikiwa wana digrii sawa na inawezekana kuagiza majina ya sifa katika schemas kwa njia ambayo sifa zinazofanana, yaani, sifa zinazochukua maadili kutoka kwa kikoa sawa, zitakuwa katika maeneo sawa:

Hebu - mchoro wa uhusiano. - schema ya uhusiano baada ya kuagiza majina ya sifa. Kisha

~

Kwa hivyo, kwa uhusiano sawa, masharti yafuatayo yanatimizwa:

· Majedwali yana idadi sawa ya safuwima.

· Majedwali yana safu wima zilizo na majina sawa.

· Safu wima zilizo na majina sawa zina data kutoka kwa vikoa sawa.

· Jedwali zina safu sawa, lakini mpangilio wa safu unaweza kutofautiana.

Jedwali kama hizo zote ni tofauti Picha uhusiano huo.

Tabia za mahusiano. Sifa za mahusiano hufuata moja kwa moja kutoka kwa ufafanuzi hapo juu wa uhusiano. Tabia hizi ni tofauti kuu kati ya mahusiano na meza.

· Hakuna nakala zinazofanana katika uhusiano .

· Nambari hazijaagizwa (juu hadi chini) .

· Sifa hazijaagizwa (kutoka kushoto kwenda kulia) .

· Thamani zote za sifa ni za atomiki .

Mchele. Uwakilishi wa kimkakati wa uhusiano

Mfano wa uhusiano ni hifadhidata katika mfumo wa seti ya mahusiano yaliyounganishwa. Katika kila unganisho, uhusiano mmoja unaweza kufanya kama kuu, na uhusiano mwingine hufanya kama wa chini. Kwa hivyo, nakala moja ya uhusiano mkuu inaweza kuhusishwa na nakala kadhaa za uhusiano wa chini. Ili kuunga mkono uhusiano huu, uhusiano wote lazima uwe na seti za sifa ambazo zinahusiana. Kimsingi ni hii ufunguo wa msingi wa uhusiano , ambayo hufafanua kipekee tuple ya uhusiano mkuu. Ili kuunda uhusiano, uhusiano mdogo lazima uwe na seti ya sifa zinazolingana na ufunguo wa msingi wa uhusiano mkuu. Walakini, hapa seti hii ya sifa tayari iko ufunguo wa pili au ufunguo wa kigeni , i.e. inafafanua seti ya nakala za uhusiano ambazo zinahusishwa na nakala moja ya uhusiano mkuu.

6. Ubunifu wa hifadhidata za uhusiano.

Wakati wa kuunda hifadhidata ya uhusiano, shida zifuatazo lazima zisuluhishwe:

1) Kwa kuzingatia semantiki ya eneo la somo, ni muhimu kuwakilisha vyema vitu vya eneo la somo kwa namna ya mfano wa data ya kufikirika (muundo wa data). Wale. - amua juu ya schema ya hifadhidata: ni uhusiano gani ambao hifadhidata inapaswa kujumuisha, ni sifa gani uhusiano huu unapaswa kuwa nao, ni uhusiano gani kati ya uhusiano.

2) Hakikisha ufanisi wa kutekeleza maswali ya hifadhidata (muundo wa hifadhidata ya kimwili).

Baada ya hatua ya muundo wa data, hati zifuatazo zinapaswa kupatikana:

· Kuunda schema sahihi ya data kulingana na muundo wa data wa uhusiano.

· Maelezo ya schema ya hifadhidata kulingana na DBMS iliyochaguliwa.

· Maelezo mifano ya nje kwa mujibu wa DBMS iliyochaguliwa.

· Maelezo ya sheria za kutangaza kwa kudumisha uadilifu wa hifadhidata.

· Ukuzaji wa taratibu za kudumisha uadilifu wa kisemantiki wa hifadhidata.

Kwa hivyo, kazi ya kuunda hifadhidata ya uhusiano ni kuchagua schema ya hifadhidata kutoka kwa chaguzi nyingi mbadala.

Sahihi ni schema ya hifadhidata ambayo hakuna utegemezi usiohitajika kati ya sifa za uhusiano. Mchakato wa kuunda schema sahihi ya hifadhidata inaitwa muundo wa kimantiki .

Kubuni schema ya hifadhidata inaweza kufanywa kwa njia mbili:

· Njia ya mtengano (kugawa). seti ya asili ya mahusiano iliyojumuishwa kwenye schema ya hifadhidata inabadilishwa na seti nyingine ya mahusiano ambayo ni makadirio ya mahusiano ya asili! Wakati huo huo, idadi ya mahusiano huongezeka.

· Mbinu ya awali mpangilio wa schema ya hifadhidata kutoka kwa utegemezi wa kimsingi wa msingi kati ya vitu vya eneo la somo.

Muundo wa awali wa hifadhidata unahusishwa na nadharia kuhalalisha , ambayo inategemea uchanganuzi wa utegemezi wa kiutendaji kati ya sifa za uhusiano. Utegemezi wa kiutendaji hufafanua uhusiano thabiti kati ya vitu na mali zao katika eneo la somo linalozingatiwa.

Njia ya mtengano ni mchakato wa kuhalalisha kwa mpangilio wa miradi ya uhusiano: kila iteration mpya inalingana na hali ya juu ya utaratibu wa kawaida na ina mali bora ikilinganishwa na ile ya awali. Kwa hivyo, kuwepo kwa uhusiano wa ulimwengu wote unao na sifa zote za database ni kudhaniwa hapo awali, basi, kwa kuzingatia uchambuzi wa uhusiano kati ya sifa, mtengano wa uhusiano wa ulimwengu wote unafanywa (au jaribio linafanywa), i.e. mpito kwa mahusiano kadhaa ya mwelekeo wa chini, na uhusiano wa awali lazima urejeshwe kwa kutumia operesheni ya asili ya kujiunga.

Kwa hivyo, kila fomu ya kawaida inalingana na seti fulani ya vikwazo, na uhusiano ni katika fomu fulani ya kawaida ikiwa inakidhi seti yake ya asili ya vikwazo.

Katika nadharia ya hifadhidata za uhusiano, aina zifuatazo za kawaida kawaida hutofautishwa:

fomu ya kwanza ya kawaida (1 NF);

· fomu ya pili ya kawaida (2 NF);

· kidato cha tatu cha kawaida (3 NF);

· Fomu ya kawaida ya Bays-Codd ( BCNF);

· kidato cha nne cha kawaida (4 NF);

· fomu ya tano ya kawaida au fomu ya makadirio - misombo (5 NF au PYNF).

Tabia kuu za fomu za kawaida:

· kila umbo la kawaida linalofuatana kwa maana fulani ni bora kuliko lile lililotangulia;

· wakati wa kuhamia kwenye fomu inayofuata ya kawaida, mali ya mali ya awali ya kawaida yanahifadhiwa.

Mipangilio ya hifadhidata inaitwa sawa, ikiwa maudhui ya hifadhidata ya chanzo yanaweza kupatikana kwa muunganisho wa asili wa mahusiano yaliyojumuishwa kwenye schema inayosababisha, na hakuna nakala mpya zinazoonekana kwenye hifadhidata ya chanzo.

7. Aina za kawaida za mahusiano.

Mchakato wa kuhalalisha unategemea onyesho la kutosha la eneo la somo katika mfumo wa majedwali yaliyo na data kuhusu kitu kilichoundwa, na uwezo wa kubadilisha hali ya hifadhidata kwa wakati. Kama sheria, kwa sababu ya kutolingana kati ya modeli ya data ya kikoa, hitilafu zinaweza kutokea ambazo huonekana wakati wa kufanya shughuli zinazolingana:

· Hitilafu za Uingizaji (INGIZA) - uhifadhi wa habari tofauti kwa njia moja.

· Sasisha hitilafu (UPDATE) -Kutohitajika kwa data ya uhusiano kwa sababu ya uhifadhi mwingi.

· Hitilafu za kufuta (FUTA) - uhifadhi wa habari tofauti katika uhusiano mmoja.

Pia ni lazima kuzingatia wanaojitokeza haijafafanuliwa ( NULL) maadili. Katika DBMS tofauti wakati wa kutekeleza shughuli mbalimbali(kulinganisha, kuchanganya, kupanga, kuweka kambi n.k.) mbili NULL -maadili yanaweza au yasiwe sawa kwa kila mmoja, yana athari tofauti kwa matokeo ya kufanya shughuli ili kuamua maadili ya wastani na kupata idadi ya maadili. Ili kuondoa makosa katika DBMS nyingi inawezekana kuchukua nafasi NULL -maadili ni sifuri wakati wa kufanya mahesabu, kutangaza yote NULL - maadili sawa kwa kila mmoja, nk.

Kusawazisha - kugawanya meza katika kadhaa, ambayo ina sifa bora wakati wa kusasisha, kuingiza na kufuta data. Wale. kuhalalisha ni mchakato wa kubadilisha jedwali kwa mpangilio na mtengano wake kamili hadi zote ziwe katika 5NF; hata hivyo, katika mazoezi inatosha kubadilisha jedwali kuwa BCNF.

Utaratibu wa kuhalalisha unategemea ukweli kwamba utegemezi pekee wa kazi katika jedwali lolote unapaswa kuwa utegemezi wa fomu , wapi ufunguo wa msingi na ni sehemu nyingine. Kwa hiyo, wakati wa mchakato wa kuhalalisha, unapaswa kuondokana na utegemezi wote wa "nyingine" wa kazi, i.e. kutoka kwa wale ambao wana mwonekano tofauti na .

Ikiwa tutabadilisha nambari za funguo za msingi (za kigeni) wakati wa kuhalalisha, basi tunapaswa kuzingatia kesi 2:

1. Jedwali lina ufunguo wa msingi wa mchanganyiko, kwa mfano, na shamba ambalo linategemea sehemu ya ufunguo huu, kwa mfano, juu ya (haitegemea ufunguo kamili). Inapendekezwa kuunda jedwali lingine lililo na ( - ufunguo wa msingi) na ufute kutoka kwa jedwali asili:

Badilisha, ufunguo wa msingi, sheria ya shirikisho

juu ya , ufunguo msingi

na , ufunguo msingi .

2. Jedwali lina ufunguo wa msingi (unaowezekana), shamba ambalo sio ufunguo unaowezekana, lakini kiutendaji inategemea, na sehemu nyingine isiyo ya ufunguo ambayo inategemea kazi :. Inapendekezwa kuunda meza iliyo na zote mbili ( - ufunguo wa msingi) na - kufuta kutoka kwa jedwali asili: Ikumbukwe kwamba kufanya shughuli kama hizi, mtu anapaswa kuwa na uhusiano "mkubwa" (ulimwengu) kama data ya pembejeo.

Def.1. Uhusiano uko ndani fomu ya kwanza ya kawaida (1NF) ikiwa na ikiwa tu hakuna safu mlalo yake iliyo na thamani moja katika sehemu zake zozote na hakuna sehemu muhimu za uhusiano ambazo hazina kitu.

Kulingana na ufafanuzi 1, uhusiano wowote utakuwa katika 1NF, i.e. uhusiano unaokidhi mali ya mahusiano: hakuna nakala zinazofanana katika uhusiano; tuples hazijaagizwa; sifa hazijaagizwa na hutofautiana kwa jina; thamani zote za sifa ni za atomiki.

Def.2. Uhusiano uko ndani fomu ya pili ya kawaida (2NF) ikiwa na tu ikiwa uhusiano uko katika 1NF na hakuna sifa zisizo za ufunguo ambazo zinategemea sehemu ya ufunguo changamano (yaani, sehemu zote ambazo hazijajumuishwa katika ufunguo msingi zinahusiana na utegemezi kamili wa utendaji kazi kwa ufunguo msingi).

Ikiwa ufunguo wa mgombea ni mkuu, basi uhusiano ni moja kwa moja katika 2NF.

Ili kuondokana na utegemezi wa sifa kwa sehemu ya ufunguo tata, ni muhimu kufanya mtengano mahusiano ya mahusiano mengi. Sifa zinazotegemea sehemu ya ufunguo tata huwekwa katika uhusiano tofauti.

Sifa za uhusiano zinaitwa kujitegemea , ikiwa hakuna hata mmoja wao anayetegemea mwingine kiutendaji.

Def.3. Uhusiano uko ndani kidato cha tatu cha kawaida (3NF) ikiwa na tu ikiwa uhusiano uko katika 2NF na sifa zote zisizo za ufunguo zinajitegemea (yaani, hakuna sehemu zisizo muhimu za uhusiano zinazotegemea kiutendaji kwenye sehemu nyingine yoyote isiyo ya ufunguo).

Ili kuondokana na utegemezi wa sifa zisizo muhimu, unahitaji kuharibu uhusiano katika mahusiano kadhaa. Katika kesi hii, sifa hizo zisizo muhimu ambazo zinategemea zimewekwa katika uhusiano tofauti.

Wakati wa kupunguza uhusiano kwa kutumia algorithm ya kuhalalisha mahusiano katika 3NF, inachukuliwa kuwa mahusiano yote yana ufunguo mmoja wa mgombea. Hii sio kweli kila wakati. Kuna nyakati ambapo uhusiano unaweza kuwa na funguo nyingi.

Def.4. Uhusiano uko ndani Fomu ya kawaida ya Bays-Codd (NFBK) ikiwa na tu ikiwa vibainishi vya tegemezi zote za utendaji ni funguo zinazowezekana (au ikiwa utegemezi wowote wa kiutendaji kati ya marafiki zake umepunguzwa hadi utegemezi kamili wa utendaji kwa ufunguo unaowezekana).

Ikiwa uhusiano uko katika BCNF, basi unakuwa katika 3NF kiotomatiki, kama ifuatavyo kutoka kwa Ufafanuzi wa 4. Ili kuondoa utegemezi wa viambishi ambavyo si funguo zinazowezekana, mtengano unapaswa kutekelezwa, na kuweka viambajengo hivi na sehemu zinazovitegemea katika a. uhusiano tofauti.

Kuna nyakati ambapo uhusiano hauna tegemezi zozote za kiutendaji. Wale. mtazamo ni muhimu kabisa, i.e. ufunguo wa uhusiano ni seti nzima ya sifa. Kwa hivyo, tuna utegemezi wa thamani nyingi, kwa sababu Bado kuna uhusiano kati ya sifa.

Def.5. Uhusiano uko ndani kidato cha nne cha kawaida (4NF) ikiwa na tu ikiwa uhusiano uko katika BCNF na hauna vitegemezi vingi visivyo vya kawaida.

Mahusiano na utegemezi usio na maana usio na maana hutokea, kama sheria, kama matokeo ya uhusiano wa asili wa mahusiano mawili juu ya uwanja wa kawaida, ambao sio muhimu katika mahusiano yoyote. Kwa kweli, hii inasababisha kuhifadhi habari kuhusu vyombo viwili huru katika uhusiano mmoja.

Ili kuondokana na utegemezi usio na maana wa multivalued, unaweza kutenganisha uhusiano wa awali katika kadhaa mpya.

Def.6. Uhusiano uko ndani kidato cha tano cha kawaida (5NF) ikiwa na tu ikiwa utegemezi wowote wa muunganisho uliopo ni mdogo.

Def.6. sawa pia hufuata ufafanuzi.

Def.7. Uhusiano hauko katika 5NF ikiwa uhusiano una utegemezi usio wa kawaida wa kujiunga.

Hiyo. Ikiwa katika kila mtengano kamili makadirio yote ya uhusiano asilia yana ufunguo unaowezekana, tunaweza kuhitimisha kuwa uhusiano uko katika 5NF. Uhusiano ambao hauna mtengano wowote kamili pia uko katika 5NF.

Bila kujua chochote kuhusu funguo zinazowezekana katika uhusiano na jinsi sifa zimeunganishwa, mtu hawezi kusema kwamba uhusiano uliotolewa uko katika 5NF au aina zingine za kawaida.

Kidokezo kinachowezekana uhusiano ni seti ya sifa za uhusiano ambazo kabisa na za kipekee (kitendaji kabisa) huamua maadili ya sifa zingine zote za uhusiano. Kwa ujumla, kunaweza kuwa na kadhaa funguo zinazowezekana. Miongoni mwa funguo zote zinazowezekana za uhusiano, mtu huchaguliwa kawaida, ambayo inachukuliwa kuwa kuu na ambayo inaitwa ufunguo wa msingi wa uhusiano.

Sifa zinazojitegemea hizi ni sifa zisizotegemeana. Ikiwa kuna sheria kadhaa za kimaumbile katika uhusiano, basi kila sifa au seti ya sifa ambayo sifa nyingine inategemea inaitwa kibainishi cha uhusiano.

9. Aljebra ya uhusiano.

Aljebra ya uhusiano hutoa mfumo wa kufikia data ya uhusiano. Kusudi kuu la algebra ni kutoa misemo ambayo inaweza kuandikwa. Maneno yanaweza kutumika kwa:

· ufafanuzi wa eneo sampuli, i.e. kufafanua data ya uteuzi kama matokeo ya operesheni ya sampuli;

· ufafanuzi wa eneo sasisho, i.e. kufafanua data ya kuingizwa, kurekebishwa, au kufutwa kama matokeo ya operesheni ya sasisho;

· ufafanuzi (jina) mahusiano ya mtandaoni , i.e. uwasilishaji wa data kwa taswira kupitia maoni;

· ufafanuzi wa snapshot, i.e. kufafanua data ya kuhifadhiwa kama "picha" ya uhusiano;

· kufafanua sheria za usalama, i.e. uamuzi wa data ambayo udhibiti wa upatikanaji unafanywa;

· uamuzi wa mahitaji ya uendelevu, i.e. kuamua data ambayo imejumuishwa katika wigo wa shughuli fulani za udhibiti wa sarafu;

· kufafanua sheria za uadilifu, i.e. baadhi ya sheria maalum ambazo hifadhidata lazima zikidhi, pamoja nazo kanuni za jumla, inayowakilisha sehemu ya muundo wa uhusiano na kutumika kwa kila hifadhidata.

Katika utekelezaji maalum DBMS ya uhusiano wala aljebra ya uhusiano wala calculus ya uhusiano inatumika kwa sasa katika hali yake safi. Kiwango cha ukweli cha kupata data ya uhusiano imekuwa Lugha ya SQL(Lugha ya Maswali Iliyoundwa).

Aljebra ya uhusiano, iliyofafanuliwa na Codd, ina waendeshaji 8 wanaojumuisha vikundi 2:

  • shughuli za kuweka jadi (muungano, makutano, kutoa, bidhaa ya Cartesian);
  • Maalum shughuli za uhusiano (uteuzi, makadirio, unganisho, mgawanyiko).

Kwa kuongezea, algebra inajumuisha operesheni ya mgawo, ambayo hukuruhusu kuokoa matokeo ya kuhesabu misemo ya algebra kwenye hifadhidata, na operesheni ya kubadilisha sifa, ambayo inafanya uwezekano wa kuunda kwa usahihi kichwa (schema) cha uhusiano unaosababishwa.

Muhtasari mfupi wa waendeshaji aljebra wenye uhusiano.

Sampulihurejesha uhusiano ambao una nakala zote za uhusiano fulani ambao unakidhi hali fulani. Operesheni ya sampuli pia inaitwa operesheni ya kizuizi ( zuia - kizuizi, sasa sampuli inakubaliwa mara nyingi zaidi - CHAGUA).

Makadirioinarejesha uhusiano ulio na nakala zote (yaani - nakala ndogo) za uhusiano fulani baada ya kuwatenga baadhi ya sifa kutoka kwayo.

Kazihurejesha uhusiano ulio na nakala zote zinazowezekana ambazo ni mchanganyiko wa nakala mbili za mahusiano mawili yaliyobainishwa, mtawalia.

Muunganohurejesha uhusiano ulio na nakala zote ambazo ni za aidha au zote mbili kati ya mahusiano yaliyobainishwa.

Makutano -hurejesha uhusiano ulio na nakala zote ambazo ni za mahusiano mawili yaliyobainishwa kwa wakati mmoja.

Kutoa -inarejesha uhusiano ulio na nakala zote ambazo ni za uhusiano wa kwanza kati ya mbili zilizobainishwa na sio za pili.

Uunganisho (asili) - inarejesha uhusiano ambao nakala zake ni mchanganyiko wa nakala mbili (za mtawalia za mahusiano mawili yaliyofafanuliwa) ambayo yana thamani ya kawaida kwa sifa moja au zaidi ya kawaida ya mahusiano hayo mawili (na maadili kama haya ya kawaida huonekana mara moja tu katika nakala inayotokana; sio mara mbili).

Idara -kwa mahusiano mawili, ya binary na yasiyo ya kawaida, hurejesha uhusiano ulio na thamani zote za sifa moja ya uhusiano wa binary zinazolingana (katika sifa nyingine) thamani zote katika uhusiano usio wa kawaida.

FASIHI

1. Tarehe K.J. Utangulizi wa Mifumo ya Hifadhidata, toleo la 6: Trans. kutoka kwa Kiingereza - KWA.; M.; St. Petersburg: Williams Publishing House, 2000. - 848 p.

2. Connolly T., Begg K., Strachan A. Hifadhidata: muundo, utekelezaji na matengenezo. Nadharia na mazoezi, toleo la 2: Trans. kutoka kwa Kiingereza - M.: Williams Publishing House, 2000. - 1120 p.

3. Karpova T.S. Hifadhidata: mifano, maendeleo, utekelezaji. - St. Petersburg: Peter, 2001. - 304 p.

4. Faronov V.V., Shumakov P.V. Delphi 4. Mwongozo wa Wasanidi wa Hifadhidata. - M.: "Maarifa", 1999. - 560 p.

5. J. Groff, P. Weinberg. SQL: Mwongozo Kamili: Kwa. kutoka kwa Kiingereza - K .: BV Publishing Group, 2001. - 816 p.

6. Ken Goetz, Paul Litwin, Mike Gilbert. Ufikiaji wa 2000. Mwongozo wa Msanidi. T.1, 2. Per. kutoka kwa Kiingereza - K .: BV Publishing Group, 2000. - 1264 p., 912 p.

7. Maklakov S.V BPwin na EPwin. CASE-zana kwa ajili ya maendeleo ya mifumo ya habari. - M.: DIALOG-MEPHI, 2001. - 304 p.

8. Ullman D., Widom D. Utangulizi wa mifumo ya hifadhidata / Transl. kutoka kwa Kiingereza - M.: "Lori", 2000. - 374 p.

9. Khomonenko A.D., Tsygankov V.M., Maltsev M.G. Hifadhidata: Kitabu cha kiada kwa elimu ya juu taasisi za elimu/ Mh. Prof. A.D. Khomonenko. - St. Petersburg: CORONA magazeti, 2000. - 416 p.

Tafsiri ya mfululizo wa makala 15 kuhusu muundo wa hifadhidata.
Taarifa imekusudiwa kwa wanaoanza.
Imenisaidia. Labda itasaidia mtu mwingine kujaza mapengo.

Mwongozo wa Kubuni Hifadhidata.

1. Utangulizi.
Ikiwa utaunda misingi mwenyewe data, ni wazo nzuri kufuata miongozo ya muundo wa hifadhidata ili kuhakikisha uadilifu wa muda mrefu na urahisi wa matengenezo ya data yako. Mwongozo huu utakuambia hifadhidata ni nini na jinsi ya kuunda hifadhidata inayofuata sheria za muundo wa hifadhidata wa uhusiano.

Hifadhidata ni programu zinazokuruhusu kuhifadhi na kupata habari nyingi zinazohusiana. Hifadhidata zinajumuisha meza, ambayo yana habari. Unapounda hifadhidata unahitaji kufikiria ni nini meza unahitaji kuunda na nini mawasiliano zipo kati ya habari iliyo kwenye jedwali. Kwa maneno mengine, unahitaji kufikiria mradi hifadhidata yako. Mradi mzuri hifadhidata, kama ilivyotajwa hapo awali, itahakikisha uadilifu wa data na urahisi wa matengenezo.
Hifadhidata imeundwa kuhifadhi habari ndani yake na kupata habari hii inapohitajika. Hii ina maana kwamba ni lazima tuweze kuweka, kuingiza ( INGIZA) habari kwenye hifadhidata na tunataka kuweza kupata habari kutoka kwa hifadhidata ( CHAGUA).
Lugha ya swala ya hifadhidata ilivumbuliwa kwa madhumuni haya na iliitwa Lugha ya Maswali Iliyoundwa au SQL. Shughuli za kuingiza data (INSERT) na kuzichagua (CHAGUA) ni sehemu za lugha hii hii. Ifuatayo ni mfano wa ombi la kurejesha data na matokeo yake.

SQL ni mada kubwa na iko nje ya upeo wa mafunzo haya. Nakala hii imejikita sana katika kuwasilisha mchakato wa kubuni database. Baadaye, katika mwongozo tofauti, nitashughulikia misingi ya SQL.

Mfano wa uhusiano.
Katika somo hili, nitakuonyesha jinsi ya kuunda mfano wa data ya uhusiano. Kielelezo cha uhusiano ni kielelezo kinachoeleza jinsi ya kupanga data katika majedwali na jinsi ya kufafanua uhusiano kati ya majedwali hayo.

Sheria za muundo wa uhusiano huamuru jinsi habari inapaswa kupangwa katika majedwali na jinsi majedwali yanahusiana. Hatimaye, matokeo yanaweza kuwasilishwa kwa namna ya mchoro wa hifadhidata au, kwa usahihi zaidi, mchoro wa uhusiano wa chombo, kama kwenye takwimu (Mfano uliochukuliwa kutoka MySQL Workbench).

Mifano.
Nilitumia maombi kadhaa kama mifano kwenye mwongozo.

RDBMS.

RDBMS niliyotumia kuunda jedwali za mfano ilikuwa MySQL. MySQL ndio RDBMS maarufu zaidi na ni bure.

Huduma ya usimamizi wa hifadhidata.

Baada ya Mipangilio ya MySQL unapata kiolesura pekee mstari wa amri kuingiliana na MySQL. Binafsi, napendelea GUI kusimamia hifadhidata zangu. Mimi hutumia SQLyog mara nyingi. Hii matumizi ya bure Na kiolesura cha picha. Picha za meza ndani mwongozo huu kuchukuliwa kutoka hapo.

Muundo wa kuona.

Kuna programu bora ya bure inayoitwa MySQL Workbench. Inakuruhusu kuunda hifadhidata yako kwa michoro. Picha za mchoro katika mwongozo zinafanywa katika programu hii.

Ubunifu usiotegemea RDBMS.
Ni muhimu kujua kwamba ingawa mwongozo huu unatoa mifano kwa MySQL, muundo wa hifadhidata haujitegemei na RDBMS. Hii ina maana kwamba taarifa inatumika kwa hifadhidata za uhusiano kwa ujumla, sio tu MySQL. Unaweza kutumia maarifa kutoka kwa somo hili kwa hifadhidata zozote za uhusiano kama vile Mysql, Postgresql, Microsoft Access, Microsoft Sql au Oracle.

Katika sehemu inayofuata nitazungumza kwa ufupi juu ya mabadiliko ya hifadhidata. Utajifunza wapi hifadhidata na muundo wa data wa uhusiano hutoka.

2. Historia.
Katika miaka ya 70 na 80, wakati wanasayansi wa kompyuta bado walivaa tuxedo za kahawia na glasi zilizo na fremu kubwa za mraba, data ilihifadhiwa bila mpangilio katika faili zilizowakilisha. Hati ya maandishi na data ikitenganishwa na (kawaida) koma au vichupo.

Hivi ndivyo wataalamu wa teknolojia ya habari walivyoonekana katika miaka ya 70. (Chini kushoto ni Bill Gates).

Faili za maandishi bado hutumiwa leo kuhifadhi kiasi kidogo cha habari rahisi. Thamani Zilizotenganishwa kwa Koma (CSV) - Thamani zilizotenganishwa kwa koma ni maarufu sana na zinaungwa mkono sana leo na programu na mifumo mbalimbali ya uendeshaji. Microsoft Excel ni mfano mmoja wa programu zinazoweza kufanya kazi na faili za CSV. Data iliyohifadhiwa katika faili kama hiyo inaweza kusomwa na programu ya kompyuta.

Hapo juu ni mfano wa jinsi faili kama hiyo inaweza kuonekana. Programu inayosoma faili hii lazima ijulishwe kuwa data imetenganishwa na koma. Ikiwa programu inataka kuchagua na kuonyesha kategoria ambayo somo liko "Mafunzo ya Usanifu wa Hifadhidata", basi lazima asome mstari kwa mstari hadi maneno yapatikane "Mafunzo ya Usanifu wa Hifadhidata" na kisha atahitaji kusoma neno kufuatia koma ili kukisia kategoria Programu.

Jedwali la hifadhidata.
Kusoma mstari wa faili kwa mstari sio ufanisi sana. Katika hifadhidata ya uhusiano, data huhifadhiwa kwenye jedwali. Jedwali hapa chini lina data sawa na faili. Kila mstari au "kiingilio" kina somo moja. Kila safu ina sifa fulani ya somo. KATIKA kwa kesi hii hiki ndicho kichwa na kategoria yake.

Programu ya kompyuta inaweza kutafuta safu wima_ya_kitambulisho cha jedwali fulani kwa kitambulisho maalum cha mafunzo ili kupata jina na kategoria inayolingana kwa haraka. Hii ni haraka zaidi kuliko kutafuta mstari wa faili kwa mstari, kama vile programu inavyofanya katika faili ya maandishi.

Hifadhidata za kisasa za uhusiano zimeundwa ili kuruhusu data kurejeshwa kutoka kwa safu mlalo, safu wima na majedwali mahususi kwa wakati mmoja, haraka sana.

Historia ya mfano wa uhusiano.
Mtindo wa hifadhidata wa uhusiano ulivumbuliwa katika miaka ya 70 na Edgar Codd, mwanasayansi wa Uingereza. Alitaka kushinda mapungufu yake mfano wa mtandao hifadhidata na mfano wa kihierarkia. Na alifanikiwa sana katika hili. Mtindo wa hifadhidata ya uhusiano sasa unakubalika na kuzingatiwa kote mfano wenye nguvu kwa shirika bora la data.

Leo kuna uteuzi mpana wa mifumo ya usimamizi wa hifadhidata inayopatikana: kutoka kwa programu ndogo za desktop hadi kazi nyingi mifumo ya seva na mbinu za utafutaji zilizoboreshwa sana. Hapa kuna baadhi ya mifumo maarufu ya usimamizi wa hifadhidata ya uhusiano (RDBMS):

- Oracle- kutumika kimsingi kwa ajili ya kitaaluma, maombi makubwa.
- Seva ya Microsoft SQL- RDBMS Microsoft. Inapatikana tu kwa mfumo wa uendeshaji Windows.
- mysql ni chanzo wazi cha RDBMS maarufu sana. Inatumiwa sana na wataalamu na Kompyuta. Nini kingine inahitajika?! Ni bure.
- IBM- ina idadi ya RDBMS, maarufu zaidi ikiwa DB2.
- Ufikiaji wa Microsoft- RDBMS, ambayo hutumiwa ofisini na nyumbani. Kwa kweli, ni zaidi ya hifadhidata tu. Ufikiaji wa MS hukuruhusu kuunda hifadhidata na kiolesura cha mtumiaji.
Katika sehemu inayofuata nitakuambia kitu kuhusu sifa za hifadhidata za uhusiano.

3. Tabia za hifadhidata za uhusiano.
Hifadhidata za uhusiano zimeundwa kwa ajili ya kuokoa haraka na kupokea kiasi kikubwa habari. Zifuatazo ni baadhi ya sifa za hifadhidata za uhusiano na muundo wa data wa uhusiano.
Kutumia funguo.
Kila safu mlalo ya data katika jedwali inatambuliwa na "ufunguo" wa kipekee unaoitwa ufunguo msingi. Mara nyingi, ufunguo wa msingi ni nambari inayoongezeka kiotomatiki (1,2,3,4, nk). Data katika majedwali tofauti inaweza kuunganishwa kwa kutumia vitufe. Thamani za msingi za jedwali moja zinaweza kuongezwa kwa safu (rekodi) za jedwali lingine, na hivyo kuunganisha rekodi hizo pamoja.

Kutumia lugha iliyoundwa maswali (SQL), data kutoka kwa jedwali tofauti ambazo zinahusiana na ufunguo zinaweza kuchaguliwa kwa wakati mmoja. Kwa mfano, unaweza kuunda swali ambalo litachagua maagizo yote kutoka kwa jedwali la maagizo ambalo ni la kitambulisho cha mtumiaji 3 (Mike) kutoka kwa jedwali la watumiaji. Tutazungumza zaidi juu ya funguo katika sehemu zifuatazo.


Safu wima ya kitambulisho katika jedwali hili ndio ufunguo msingi. Kila rekodi ina ufunguo msingi wa kipekee, mara nyingi nambari. Safu ya kikundi cha watumiaji ni ufunguo wa kigeni. Kwa kuzingatia jina lake, inaonekana inarejelea jedwali ambalo lina vikundi vya watumiaji.

Hakuna upungufu wa data.
Katika muundo wa hifadhidata unaofuata sheria za muundo wa data ya uhusiano, kila sehemu ya habari, kama vile jina la mtumiaji, huhifadhiwa katika sehemu moja pekee. Hii inaondoa hitaji la kufanya kazi na data katika sehemu nyingi. Data iliyorudiwa inaitwa upunguzaji wa data na inapaswa kuepukwa mradi mzuri Hifadhidata.
Kizuizi cha ingizo.
Kwa kutumia hifadhidata ya uhusiano, unaweza kuamua ni aina gani ya data inaruhusiwa kuhifadhiwa kwenye safu. Unaweza kuunda uwanja ambao una nambari kamili, nambari za desimali, vipande vidogo vya maandishi, vipande vikubwa vya maandishi, tarehe, nk.


Unapounda jedwali la hifadhidata unatoa aina ya data kwa kila safu. Kwa mfano, varchar ni aina ya data kwa vipande vidogo vya maandishi na idadi ya juu herufi sawa na 255, na ints ni nambari.

Kando na aina za data, RDBMS hukuruhusu kuweka kikomo zaidi cha data unayoweza kuingiza. Kwa mfano, punguza urefu au lazimisha upekee wa thamani ya rekodi safu hii. Kizuizi cha mwisho mara nyingi hutumika kwa nyanja ambazo zina majina ya usajili watumiaji (kuingia), au anwani za barua pepe.

Vizuizi hivi hukupa udhibiti wa uadilifu wa data yako na kuzuia hali kama zifuatazo:

Kuingiza anwani (maandishi) kwenye sehemu ambayo unatarajia kuona nambari
- kuingiza faharasa ya kanda yenye urefu wa faharasa hii ya herufi mia moja
- kuunda watumiaji kwa jina moja
- kuunda watumiaji na barua pepe sawa
- ingiza uzito (nambari) kwenye uwanja wa kuzaliwa (tarehe)

Kudumisha uadilifu wa data.
Kwa kurekebisha sifa za uga, kuunganisha majedwali, na vikwazo vya kusanidi, unaweza kuongeza uaminifu wa data yako.
Ugawaji wa haki.
RDBMS nyingi hutoa mipangilio ya haki za ufikiaji inayokuruhusu kugawa haki mahususi watumiaji fulani. Baadhi ya vitendo vinavyoweza kuruhusiwa au kukataliwa kwa mtumiaji: CHAGUA, WEKA, FUTA, ALTER, CREATE, n.k. Hizi ni shughuli zinazoweza kufanywa kwa kutumia Lugha ya Maswali Iliyoundwa (SQL).
Lugha ya Maswali Iliyoundwa (SQL).
Ili kufanya shughuli fulani kwenye hifadhidata, kama vile kuhifadhi data, kuirejesha, kuibadilisha, lugha ya swala iliyopangwa (SQL) hutumiwa. SQL ni rahisi kuelewa na inaruhusu... na chaguo zilizopangwa, kama vile kurejesha data inayohusiana kutoka kwa jedwali nyingi kwa kutumia Taarifa ya SQL JIUNGE. Kama ilivyoelezwa hapo awali, SQL haitajadiliwa katika mafunzo haya. Nitazingatia muundo wa hifadhidata.

Jinsi unavyounda hifadhidata yako itakuwa na athari ya moja kwa moja kwenye hoja utakazohitaji kuendesha ili kupata data kutoka kwa hifadhidata. Hii ni sababu nyingine kwa nini unahitaji kufikiria juu ya msingi wako unapaswa kuwa nini. Kwa hifadhidata iliyoundwa vizuri, hoja zako zinaweza kuwa safi na rahisi zaidi.

Kubebeka.
Mfano wa data ya uhusiano ni ya kawaida. Kwa kufuata sheria za muundo wa data ya uhusiano, unaweza kuwa na uhakika kwamba data yako inaweza kuhamishiwa kwa RDBMS nyingine kwa urahisi.

Kama ilivyoelezwa hapo awali, muundo wa hifadhidata ni suala la kutambua data, kuihusisha, na kuweka matokeo ya swali hilo kwenye karatasi (au katika programu ya kompyuta). Tengeneza hifadhidata isiyotegemea RDBMS unayopanga kutumia kuiunda.

Katika sehemu inayofuata tutaangalia kwa karibu funguo za msingi.