Transcript 6 tema.
Duomenų bazės (DB). Reliacinės DB • • • • Duomenų bazės samprata; Duomenų organizavimo (DB) modeliai; Reliacinės duomenų bazės ir jų savybės; Duomenų normalizavimas ir normalinės formos. 1 Duomenų bazės samprata Sutvarkyti duomenys Duomenys ir programinė įranga Duomenų bazė - tai kartu saugomų ir susijusių duomenų, skirtų apdoroti kompiuteriu, visuma. Duomenų bazė – tai tarpusavyje susietų struktūrizuotų duomenų visuma, skirta tam tikrai tematikai ar tikslams. Duomenų bazė – tai duomenys + programinė įranga (DBVS), skirta duomenų struktūroms kurti ir įvairiais būdais juos apdoroti. 2 Duomenų bazės samprata (2) Reikia atskirti fizinį ir loginį duomenų organizavimą. Pirmasis nurodo duomenų fizinio išdėstymo būdus kompiuterio atmintyje, o antrasis duomenų struktūros vaizdavimą - modelį, reikalingą ir suprantamą vartotojams. Loginėms duomenų struktūroms aprašyti naudojami šie terminai: Duomenų elementas (laukas) – mažiausias aprašytų duomenų vienetas; Įrašas – įvardytas DE ar agregatų rinkinys, kurį taikomoji programa (DBVS) traktuoja kaip nedalomą vienetą; Duomenų agregatas (grupė) – įvardyta DE visuma, kuri įrašo viduje traktuojama kaip nedaloma grupė; Failas – įvardyta visų duoto tipo įrašų visuma; Duomenų bazė – įvairių tipų įrašų ir santykių tarp įrašų, duomenų agregatų ir elementų visuma. 3 DB duomenų savybės Duomenims, saugomiems duomenų bazėje, būdingos šios savybės: • vientisumas( integralumas); • nepertekliškumas; • neprieštaringumas; • saugumas; • nepriklausomumas. 4 Duomenų organizavimo modeliai Pagal tai, kokiu būdu duomenys jungiami į visumą, išskiriami šie duomenų organizavimo modeliai (DB tipai): • hierarchinis modelis; • tinklinis modelis; • reliacinis modelis; • objektinis modelis. Pastaruoju metu populiariausios duomenų bazės, kuriose duomenys organizuojami pagal reliacinį modelį, - tai reliacinės duomenų bazės. 5 Hierarchinis modelis (vienas-su-daugeliu ryšių) Hierarchiniam duomenų modeliui yra būdingas žemesnio lygmens objektų pavaldumas aukštesniojo lygmens objektams. Aukštesnio ir žemesnio lygmens objektus sieja ryšys “vienas su daugeliu”. Be įprastinių operatorių, tokiose DB naudojami ir perėjimo iš vieno hierarchijos lygio į kitą operatoriai. Pavyzdžiui, Direktorius Pirkimų vadovas Vadybininkas Vadybininkas Pardavimų vadovas Vadybininkas 6 Hierarchinis modelis (2) Kiekvienas įrašas: • sudaromas iš dviejų elementų: raktu vadinamo pagrindinio lauko ir jam pavaldžių laukų rinkinio; • hierarchinėje struktūroje gali turėti daug nuorodų į jam pavaldžius įrašus ir tik vieną nuorodą į valdantį (esantį aukštesniame hierarchijos lygyje) įrašą; Privalumai: • žemesnio lygio objektai „tiesiogiai pavaldūs“ aukštesnio lygio objektams; • pavaldumo ryšiai yra natūrali daugumos mūsų aplinkos objektų savybė. Trūkumai: • labai dažnas duomenų dubliavimas, kuris užima daugiau atminties ir pristabdo greitą reikiamos informacijos paiešką; • galima naudoti tik mažai ir nesudėtingai duomenų bazei kurti. 7 Tinklinis modelis (daugelis-su-daugeliu ryšių) Tinklinę duomenų struktūrą galima pateikti, pavyzdžiui, tokia schema: Klientas nr. 1 Maisto prekių parduotuvė Klientas nr. 2 Drabužių parduotuvė Klientas nr. 3 Batų parduotuvė Privalumai: • aprašo ryšius tarp nepriklausomų duomenų elementų; • plačiai naudojama prekyba užsiimančiose įmonėse; • išvengiama duomenų dubliavimo, o tai savo ruoštu paspartina paiešką ir sutaupoma vietos atmintyje; • galima naudoti ir didelių bazių kūrimui. 8 Reliacinis duomenų modelis Reliacinį duomenų modelį 1969 metais pasiūlė firmos IBM darbuotojas E.F.Kodas (E.F.Codd). Reliacinė duomenų bazė – tai tokia duomenų visuma kurioje informacija saugoma dvimatėse lentelėse. Kiekviena lentelė susideda iš eilučių (dar vadinamų įrašais arba kortežais (record)) ir stulpelių (dar vadinamų laukais arba atributais (field)). Naudosime įvairias šių terminų poras. Eilutėse yra duomenys apie pateiktus lentelėje faktus (dokumentus, žmones, vienu žodžiu, – vieno tipo objektus). Stulpelių ir eilučių susikirtimuose yra konkrečios saugomų lentelėje duomenų reikšmės (laukų reikšmės). 9 Dvimatė lentelė Lauko sąvoka atitinka DE sąvoką anksčiau nagrinėtuose duomenų vaizdavimuose. Į lentelės įrašus įtraukiamos duomenų porcijos, kurias sudaro DE reikšmės, dar vadinamos laukų reikšmėmis (pvz., «A2599», «98 01 26» ir pan.). 6.1 pav. Bet kurios eilutės ir bet kurio stulpelio susikirtime turi būti tik viena DE reikšmė, o ne tų reikšmių rinkinys. 10 Reliacinės duomenų bazės savybės Reliacinėse DB kiekviena lentelė pasižymi tokiomis savybėmis: Visi įrašai yra vienodai organizuoti, turi tą pačią struktūrą. Visuose įrašuose yra tiek pat laukų, o laukai yra vienarūšiai, t.y. atskiro lauko reikšmės yra vieno tipo. Tačiau skirtinguose laukuose gali būti skirtingų tipų duomenys; Lentelėje negali būti tuščių įrašų, taip pat identiškų įrašų, t.y. įrašų su pasikartojančiais duomenimis, nors atskiri duomenų elementai gali būti tušti arba pasikartojantys; Įrašų ir laukų išdėstymo tvarka lentelėje nėra svarbi. Atliekant duomenų apdorojimo operacijas lentelės eilutės ir stulpeliai gali būti peržiūrimi bei tvarkomi bet kuria tvarka, nepriklausomai nuo jų informacinio turinio. Kiekvienai lentelei suteikiamas vardas. Lentelės vardas turėtų atspindėti atitinkamo realaus informacinio objekto pavadinimą, o laukų vardai – to objekto atributų pavadinimus. 11 Lentelių raktai Lentelėms nustatomi raktai, t. y. laukai ar laukų grupės, kurių įgyjamos reikšmės yra nepasikartojančios, taigi šios reikšmės vienareikšmiškai identifikuoja tų lentelių įrašus. Lentelės gali turėti po kelis raktus, iš kurių konkrečiu momentu faktiškai naudojamas tik vienas - pirminis raktas (primary key). Jei pirminį raktą sudaro keli laukai, jis vadinamas sudėtiniu pirminiu raktu (composite primary key). 12 Lentelių pateikimo formos Sutrumpinta lentelių pateikimo forma, kai iš pradžių užrašomas lentelės vardas, o po to tarp skliaustelių išvardijami lentelės laukų vardai pabraukiant raktinius laukus, vadinama lentelės schema. 6.1 pav. pateiktos lentelės schema atrodo taip: UŽSAKYMAI (UŽSAKYMO NUMERIS, PIRKĖJO KODAS, PREKĖS KODAS, UŽSAKYMO DATA, UŽSAKYTAS KIEKIS). Didesniam vaizdumui gauti nustatant ryšius tarp lentelių taip pat dažnai naudojama stačiakampė lentelės schema: Užsakymai CUSTOMERS UŽSAKYMO NUMERIS CustomerID PIRKĖJO KODAS CompanyName City Country …. PREKĖS KODAS UŽSAKYMO DATA UŽSAKYTAS KIEKIS 13 Ryšiai tarp lentelių Į reliacinių DB sudėtį įeinančios lentelės tarpusavyje susiejamos. Ryšį tarp atskirų lentelių nustato bendri, sutampantys tų lentelių laukai, kurie dar vadinami siejančiais laukais (išoriniu raktu). Taip susietų lentelių visuma ir apibrėžia reliacinį modelį. Galima pastebėti reliacinio modelio tam tikro laipsnio pertekliškumą. Pertekliniai laukai įvedami dažniausiai dėl dviejų priežasčių: a) daliai lentelių reikalingi laukai, skirti suformuoti pirminius raktus, t.y. vienareikšmius lentelių įrašų identifikatorius; b) kai kurioms lentelėms reikalingi laukai, kurie nėra pirminiai raktai (ar jų dalis), bet naudojami nustatyti ryšiams. 14 Reliacinis DB modelis Ankstesnėje temoje suformuotą rodyklinį bilietų rezervavimo DB modelį: Reiso Nr. Išvykimo punktas Reiso Nr. + Data Atvykimo punktas Lėktuvo tipas Laisvos vietos pervesime į reliacinį DB modelį: REISAS(REISO_NR., IŠVYKIMO PUNKTAS, ATVYKIMO PUNKTAS, LĖKTUVO TIPAS); LAISVOS VIETOS(REISO_NR., DATA, LAISVOS VIETOS). Arba: 15 Reliacinis DB modelis (2) REISAS LAISVOS VIETOS REISO_NR. REISO_NR. IŠVYKIMO PUNKTAS DATA ATVYKIMO PUNKTAS LAISVOS VIETOS LĖKTUVO TIPAS CustomerID (PK) CompanyName City Country …. OrderID (PK) CustomerID (FK) OrderDate Freight Ship Address …. PK – Primary Key (pirminis raktas) FK – Foreign Key (išorinis raktas) 16 Reliacinis DB modelis (3) Pirmoje schemoje sąryšį (relationchip) tarp lentelių sukuria raktinis atributas „Reiso Nr.”. Čia lentelė „REISAS” vadinama pagrindine (master) lentele lentelės „LAISVOS VIETOS” atžvilgiu, o lentelė „LAISVOS VIETOS” - antrine (detail) lentele lentelės „REISAS” atžvilgiu. Antroje schemoje raktiniai atributai CustomerID išskirti į pirminį (PK) ir išorinį (FK) raktus. Laukas, nurodantis įrašą kitoje lentelėje, kuris susijęs su duotu įrašu, vadinamas išoriniu raktu (foreign key). Mūsų atveju lentelės Orders išorinis raktas yra laukas CustomerID. Kitaip tariant, išorinis raktas – tai laukas ar jų rinkinys, kurio reikšmės sutampa su kitos lentelės pirminio rakto reikšmėmis. Ryšys tarp lentelių nustatomas (sudaromas) priskiriant vienos lentelės išorinio rakto reikšmes kitos lentelės pirminio rakto reikšmėms. 17 Įstaigos darbinės veiklos informacinis modelis 6.2 pav. 18 Įstaigos darbinės veiklos reliacinės DB modelis SKYRIUS (SKYRIAUS_NR, PAVADINIMAS, VADOVAS, BIUDŽETAS); DARBAS (DARBO_NR, SKYRIAUS_NR, DARBO_APRAŠYMAS); DARBUOTOJAI (DARBUOTOJO_NR, DARBO_NR, PAVARDĖ, SKYRIAUS_NR, ALGA); DARBINĖ_VEIKLA (PASKYRIMO_DATA, DARBUOTOJO_NR, PAREIGOS); ALGOS_KEITIMAI (KEITIMO_DATA, DARBUOTOJO_NR, ALGA). Čia atsižvelgiama į tai, jog požymis „DARBO_NR” nėra visuotinai priimtas identifikatorius įstaigoje, o kiekviename skyriuje yra savi darbų numeriai. Todėl pilnai darbų identifikacijai į lentelės „DARBAS” schemą įvedamas papildomas laukas „SKYRIAUS_NR”, kuris kartu su lauku „DARBO_NR” sudaro pirminį raktą. Laukas „DARBUOTOJO_NR” įvedamas į lentelių „DARBINĖ_VEIKLA” ir „ALGOS_KEITIMAI” schemas taip pat kaip pirminio rakto dalis. Į lentelę „DARBUOTOJAI” įvestas papildomas laukas („DARBO_NR”), neįeinantis į pirminio rakto sudėtį, bet naudojamas ryšiui užtikrinti. 19 Reliacinė DB lentelių schema DARBAS DARBO_NR SKYRIAUS_NR DARBO_APRAŠYMAS DARBUOTOJAI ALGOS_KEITIMAI DARBUOTOJO_NR KEITIMO_DATA DARBO_NR DARBUOTOJO_NR PAVARDĖ ALGA SKYRIAUS_NR ALGA SKYRIUS SKYRIAUS_NR. DARBINĖ_VEIKLA PASKYRIMO_DATA DARBUOTOJO_NR PAREIGOS PAVADINIMAS VADOVAS BIUDŽETAS 20 Duomenų normalizavimas ir normalinės formos Normalizavimas yra dalykinės srities (DS) objektų ir jų ryšių apibrėžimas, naudojant reliacinį modelį. Tai formalus metodas, leidžiantis identifikuoti lenteles pagal pirminius raktus ir jų laukų funkcines priklausomybes. Jis susideda iš aibės taisyklių, kurios leidžia normalizuoti DB iki norimo lygio. Jei lentelė netenkina jos laukų funkcinių priklausomybių reikalavimų, ji turi būti suskaidyta į paprastesnės struktūros lenteles. Šis procesas vadinamas normalizavimu. Jo metu sprendžiamos tokios problemos: a) kaip sugrupuoti duomenų elementus, t. y. kokius laukus surinkti į vieną lentelę (kad išvengti nepageidaujamų funkcinių priklausomybių tarp lentelių laukų); b) kaip parinkti raktus; c) kaip tarp lentelių nustatyti ryšius. Normalizuojama keliais žingsniais (etapais), kurių metu lentelės įgyja atitinkamas pateikimo formas, vadinamas normalinėmis formomis (NF). 21 Normalizuojamos lentelės pervedamos iš vienos NF į kitą. Lentelės laukų funkcinės priklausomybės Pirmiausia apibrėšime terminą „funkcinė priklausomybė”. Sakoma, kad lentelės laukas B funkcionaliai priklauso nuo tos pačios lentelės lauko A, jei bet kuriuo momentu kiekvieną A reikšmę atitinka ne daugiau kaip viena B reikšmė. Kitaip tariant, A lauko reikšmės identifikuoja B lauko reikšmes. Trumpai tai užrašoma naudojant rodyklę: A B. Jei keli laukai priklauso nuo vieno lauko A, pateikiamas jų sąrašas, pvz., A B, C, D. Pvz.: lentelėje DARBUOTOJAI (DARBUOTOJO_NR, DARBO_NR, PAVARDĖ, SKYRIAUS_NR, ALGA); DARBUOTOJO_NR PAVARDĖ 22 Laukų funkcinės priklausomybės 1. Jei neraktinis laukas funkcionaliai priklauso nuo sudėtinio rakto atskiros dalies, tai suprantama kaip šio lauko dalinė funkcinė priklausomybė nuo rakto. 2. Jei neraktinis laukas priklauso tik nuo viso sudėtinio rakto, o ne nuo atskirų dalių, tai sakoma, kad yra pilna funkcinė šio lauko priklausomybė nuo rakto. 3. Jei A, B ir C laukams egzistuoja priklausomybės A B bei B C, bet atvirkštinių priklausomybių nėra, tai sakoma, kad C tranzityviai priklauso nuo A. Funkcinės priklausomybės atspindi duomenų vidinius, prasminius ryšius, tuo tarpu laukai - duomenų struktūrą. 23 Normalinės formos (NF) Yra trys pagrindinės NF. 1. Lentelė yra pirmosios normalinės formos (1NF), jeigu kiekvienas neraktinis laukas yra pilnoje arba dalinėje funkcinėje priklausomybėje nuo bet kokio galimo tos lentelės rakto. Visi laukai yra atomariniai, t.y. mažiausios įmanomos komponentės. T.y. kiekvienos lentelės lauke yra tik viena reikšmė, o ne jų rinkinys. 2. Lentelė yra antrosios normalinės formos (2NF), jeigu ji yra 1NF ir kiekvienas jos neraktinis laukas yra pilnoje funkcinėje priklausomybėje nuo bet kokio galimo tos lentelės rakto. 3. Lentelė yra trečiosios normalinės formos (3NF), jeigu ji yra 2NF ir kiekvienas jos neraktinis laukas yra tiesioginėje pilnoje, bet ne tranzityvioje priklausomybėje nuo bet kokio galimo tos lentelės rakto. T.y. reikia užtikrinti, kad visi neraktiniai laukai būtų vienas nuo kito nepriklausomi. Jei taip nėra, reikia sukurti naują lentelę (sąryšį), kuri neturėtų neraktinių lakų tarpusavio priklausomybės. 24 1 NF 1NF lentelės pavyzdys. Informacija apie gaminių tiekimą. Lentelės schema yra tokia: TIEKIMAS(TIEKĖJO_NR(TN), GAMINIO_NR(GN), TIEKĖJO_PAVARDĖ(TP), DUOMENYS_APIE_TIEKĖJĄ(TD), TIEKIMO_KAINA(TK)). Funkcinės priklausomybės tarp šios lentelės laukų: TN+GN TP, TD, TK TN TP, TD . Čia pirmoje eilutėje parodytos pilnos funkcinės priklausomybės nuo pirminio rakto, o antroje - dalinės funkcinės priklausomybės nuo sudėtinio rakto dalies TN. Kaip matome, laukai TP ir TD, būdami neraktiniais laukais, funkcionaliai priklauso nuo vienintelio galimo rakto TN+GN dalies TN. Taigi ši lentelė nėra 2NF, tai reiškia, kad ji yra 1NF. 25 1 NF anomalijos Pirmos NF lentelių apdorojimui būdinga nemaža keblumų, vadinamų anomalijomis: 1. Įvedimo anomalija. Negalima įvesti tam tikrų duomenų tol, kol neįvesta pilna rakto reikšmė (pvz., pateiktoje lentelėje TIEKIMAS negalima įvesti jokių duomenų apie tiekėją iki to laiko, kol jis nepristatęs kokio nors gaminio). 2. Atnaujinimo (keitimo) anomalija. Reikia didelių papildomų laiko, atminties resursų, atnaujinant lentelėje dažnai pasikartojančias reikšmes bei įterpiant lentelėje naujus laukus (pvz., norint įvesti papildomus duomenis apie tiekėją, reikės juos daug kartų kartoti, jei tiekėjo pristatomų gaminių įvairovė didelė). 3. Šalinimo anomalija. Šalinant tam tikrus duomenis, gali būti prarasta naudinga informacija, netiesiogiai susijusi su šalinamais duomenimis (pvz., šalinant konkretų tiekėją, atsiranda pavojus prarasti informaciją apie gaminius, jei juos tiekė tik šis tiekėjas). 26 1 NF anomalijų šalinimas Tokio tipo anomalijas galima panaikinti išskaidžius lentelę, t. y. išskyrus į atskiras lenteles sudėtinio rakto dalis ir nuo jų priklausančius laukus. Pavyzdžiui, lentelė TIEKIMAS *TIEKĖJO_NR *GAMINIO_NR TIEKĖJO_PAVARDĖ DUOMENYS_APIE_TIEKĖJĄ TIEKIMO_KAINA gali būti išskaidyta į tokias dvi lenteles: TIEKĖJAI TIEKIMAS *TIEKĖJO_NR, TIEKĖJO_PAVARDĖ DUOMENYS_APIE_TIEKĖJĄ *TIEKĖJO_NR *GAMINIO_NR TIEKIMO_KAINA 27 2 NF Tegul lentelėje yra informacija apie projektavimo įstaigos darbuotojus, o lentelės schema atrodo taip: DARBUOTOJAI(DARBUOTOJO_NR(DN), DARBUOTOJO_ASM_KOD(DAK), ALGA(AL), PROJEKTO_NR(PN), BAIGIMO_DATA(BD)). Funkcinės priklausomybės tarp šios lentelės laukų: DN DAK, AL, PN DAK DN, AL, PN PN BD Lentelė DARBUOTOJAI, būdama 1NF, yra ir 2NF, nes jos abu galimi raktai (DN ir DAK) turi tik po vieną lauką. Tačiau ši lentelė nėra 3NF, nes jos neraktinis laukas BD tranzityviai priklauso nuo galimų raktų (tai aišku iš priklausomybių: DN PN arba DAK PN, PN BD). 28 3 NF 2NF lentelėms irgi būdingos įvedimo, atnaujinimo ir šalinimo anomalijos. Pavyzdžiui, negalima įvesti projekto baigimo datos tol, kol nepaskirti šio projekto vykdytojai (įvedimo anomalija). Projekto datos keitimas reikalauja visų turinčių šią datą įrašų o jų gali būti labai daug - paieškos ir modifikavimo (atnaujinimo anomalija). Atleidus iš darbo visus kurio nors projekto vykdytojus, t.y. pašalinus šiuos darbuotojus atitinkančius įrašus, bus prarasta ir to projekto baigimo data (šalinimo anomalija). Šios anomalijos išnyksta, panaikinus lentelėje esančią tranzityvią funkcinę priklausomybę. Tai galima padaryti išskaidžius lentelę į atitinkamas atskiras lenteles. Pavyzdžiui, lentelę DARBUOTOJAI galima išskaidyti į tokias lenteles: DARBUOTOJAI (DARBUOTOJO_NR, PROJEKTO_NR, DARBUOTOJO_ASM_KOD, ALGA); PROJEKTAI (PROJEKTO_NR, BAIGIMO_DATA). Gautos lentelės DARBUOTOJAI ir PROJEKTAI yra trečiosios normalinės formos. 29 Tipinis duomenų normalizavimo pavyzdys Tarkime, kad reikia sukurti DB, kurioje turi būti saugoma informacija apie studentų mokymosi rezultatus. Į DB pradinės lentelės sudėtį įtraukiami šie laukai: STUDENTO_BILIETO_NR(SB), STUDENTO_PAVARDĖ(SP), AKADEMINĖ_GRUPĖ(AG), FAKULTETAS(FA), GIMIMO_METAI(GM), GYVENAMOS_VIETOS_ADRESAS(GA) DISCIPLINOS_KODAS(DK), DISCIPLINOS_PAVADINIMAS(DP), KREDITŲ_SKAIČIUS(KS), EGZAMINO_ĮVERTINIMAS(EĮ), EGZAMINO_DATA(ED), EGZAMINATORIAUS_PAVARDĖ(EP) Šioje didelėje lentelėje norint surasti kurio nors studento laikyto egzamino įvertinimą, datą ir egzaminatoriaus pavardę, reiktų parinkti pirminį raktą, sudarytą iš dviejų laukų (SB+DK) 30 Tipinis duomenų normalizavimo pavyzdys (2) Pradinė DB lentelė aprašoma štai tokia schema: STUDIJOS (SB, SP, AG, FA, GM, GA, DK, DP, KS, EĮ, ED, EP). Funkcinės priklausomybės, egzistuojančios tarp lentelės (duomenų bazės) STUDIJOS laukų: SB+DK EĮ, ED, EP SB SP, AG, FA, GM, GA DK DP, KS AG FA Tai reiškia, kad turime 1NF lentelę. 31 Normalizavimas iki 2NF Lentelėje STUDIJOS yra laukų, iš dalies priklausančių nuo sudėtinio rakto SB+DK. SB+DK EĮ, ED, EP. Čia ED ir EP priklauso tik nuo DK Normalizavę, t. y. išskaidę iš dalies priklausančius laukus į atskiras lenteles, gausime šias lenteles: STUDENTAI (SB, SP, AG, FA, GM, GA); STUDIJOS (SB, DK, EĮ, ED, EP); DISCIPLINOS (DK, DP, KS). Dabar jau turime 2NF lenteles. 32 Normalizavimas iki 3NF Lentelėje STUDENTAI egzistuoja lauko FA tranzityvi priklausomybė nuo rakto SB. Jos galima išvengti sudarius dar vieną lentelę GRUPĖS(AG, FA) ir pašalinus lauką FA lentelėje STUDENTAI. Po šių pakeitimų turime 3NF lenteles: GRUPĖS (AG, FA); STUDENTAI (SB, SP, AG, GM, GA); STUDIJOS (SB, DK, EĮ, ED, EP); DISCIPLINOS (DK, DP, KS). 33 Dar vienas normalizavimo pavyzdys [3] a) KURSŲ_INFORMACIJA (pradinė nenormalizuota lentelė) KURSAS B74 B94 K_PAVADINI-MAS LYGIS MODULIS M_PAVADINIMAS STATUSAS KREDITA I Informatika Bs B741 Programavimas 1 Bazinis 8 B742 Komp. architektūra 1 B743 Duomenų apdorojim. B744 Programavimas 2 Specializ. 11 B745 Komp. architektūra 2 B951 Informacijos teorija Magistr. 15 B952 Mikroprocesoriai B741 Programavimas 1 Bazinis 8 Komp. Taikymas Ms 34 1NF b) KURSŲ_INFORMACIJA (pirma normalinė forma) KURSAS K_PAVADIN-IMAS LYGIS MODULIS M_PAVADINI-MAS STATUSAS KREDITAI B74 Informatika Bs B741 Programavimas 1 Bazinis 8 B74 Informatika Bs B742 Komp. architektūra 1 Bazinis 8 B74 Informatika Bs B743 Duomenų apdorojim. Bazinis 8 B74 Informatika Bs B744 Programavimas 2 Specializ 11 B74 Informatika Bs B745 Komp. architektūra 2 Specializ 11 B94 Komp. taikymas Ms B951 Informacijos teorija Magistr. 15 B94 Komp. taikymas Ms B952 Mikroprocesoriai Magistr. 15 B94 Komp. taikymas Ms B741 Programavimas 1 Bazinis 8 35 a) Žingsnis link 2NF KURSAI_MODULIAI KUR-SAS MODU-LIS K_PAVADINI-MAS LYGIS B74 B74 B741 B742 Informatika Informatika Bs Bs B74 B743 Informatika Bs B74 B744 Informatika Bs B74 B745 Informatika Bs B94 B94 B94 B951 B952 B741 Komp. taikymas Komp. taikymas Komp. taikymas Ms Ms Ms Ankstesnėje 1NF lentelėje pirminį raktą sudaro atributai ‘kursas’ ir ‘moduliai’. b) MODULIAI MODU-LIS M_PAVADINIMAS B741 B742 B743 B744 B745 B951 B952 Programavimas 1 Komp. architektūra 1 Duomenų apdorojim. Programavimas 2 Komp. architektūra 2 Informacijos teorija Mikroprocesoriai STATUSAS Bazinis Bazinis Bazinis Specializ Specializ Magistr. Magistr. KREDITAI 8 8 8 11 11 15 15 Atributai ‘m_pavadinimas’, ‘statusas’ ir ‘kreditai’ priklauso tik nuo rakto dalies ‘moduliai’, taigi, turime dalinę priklausomybę, kurios 2NF neturi būti. Tam skaidome lentelę į dvi. Bet lentelė KURSAI_MODULIAI dar nėra 2NF, nes ‘k_pavadinims’ ir ‘lygis’ priklauso nuo rakto dalies ‘kursas’. Taigi, šią lentelę reikia dar skaldyti. 36 2 NF a) KURSAI_MODULIAI c) MODULIAI MODULIS M_PAVADINIMAS STATUSAS KREDITAI B741 Programavimas 1 Bazinis 8 B742 Komp. architektūra 1 Bazinis 8 B743 Duomenų apdorojim. Bazinis 8 B744 Programavimas 2 Specializ 11 KURSAS MODULIS B74 B74 B74 B74 B74 B741 B742 B743 B744 B745 B94 B951 B745 Komp. architektūra 2 Specializ 11 B94 B952 B951 Informacijos teorija Magistr. 15 B94 B741 B952 Mikroprocesoriai Magistr. 15 B741 Programavimas 1 Bazinis 8 b) KURSAI KURSAS K_PAVADINIMAS LYGIS B74 Informatika Bs B94 Komp. taikymas Ms 37 3 NF c) MODULIAI a) KURSAI_MODULIAI MODULIS M_PAVADINIMAS STATU-SAS B741 Programavimas 1 Bazinis B742 Komp. architektūra 1 Bazinis B743 Duomenų apdorojim. Bazinis B744 Programavimas 2 Specializ KURSAS MODULIS B74 B74 B74 B74 B74 B741 B742 B743 B744 B745 B94 B951 B745 Komp. architektūra 2 Specializ B94 B952 B951 Informacijos teorija Magistr. B94 B741 B952 Mikroprocesoriai Magistr. b) KURSAI d) STATUSAS KURSAS K_PAVADINIMAS LYGI S B74 Informatika Bs B94 Komp. taikymas Ms STATUSAS Bazinis KREDITAI 8 Specializ. 11 Magistr. 15 38 Parengta pagal: 1. J.Adomaitis ir kt. Informatika I dalis Vadovėlis, L-kla “Technolgija”, Kaunas, 1999, p.p. 161 – 173. 2. Informacijos ir komunikacijos technologijos / Rimvydas Skyrius, Audronė Mikalauskienė, Laima Zalieckaitė. Vilnius: VU, 2005, 32-44. 3. V. Sekliuckis, S.Gudas, G.Garšva INFORMACIJOS SISTEMOS IR DUOMENŲ BAZĖS, Vadovėlis. Kaunas: Technologija, 2003, 64-85. 4. A.Saulis, O.Vasilecas INFORMACINIŲ SISTEMŲ PAGRINDAI, mokomoji knyga, Technika, Vilnius, 1998, 82 – 98. Dar apie tai rasite: 1. ИНФОРМАТИКА базовый курс. Учебник для ВУЗОВ / СПб., Питер, 2001, c.c. 328-355. 2. http://distance.ktu.lt/kursai/informatika1/8/ 3. http://www.citforum.ru/database/dbguide/index.shtml 4. http://www.citforum.ru/database/dblearn/index.shtml 39