Duomenų bazės - tai nauja informacinių technologijų atšaka, sukurta einamiesiems duomenų saugojimo ir naudojimo uždaviniams spręsti. Kuriant vieningą duomenų bazę atsižvelgiama į organizacijos funkcinių sričių įvairovę, ji užtikrina vidinių ir išorinių ryšių palaikymą tarp įvairių funkcinės veiklos sričių. Šiuolaikinės organizacijos susiduria su žiauria konkurencija ne tik tarp savo šalies įmonių, bet ir tarptautiniu mastu. Todėl bet kurios organizacijoje naudojamos informacinės sistemos svarbiausias tikslas turėtų būti duomenų pavertimas informacija ir žiniomis, nes tik informacija ir žinios suteikia organizacijai konkurencinį pranašumą. Informacija ir žinios - tai organizacijos kompetencijos pagrindas, tai tie ištekliai, kurios organizacija naudoja gamindama aukštos kokybės prekes bei paslaugas ir kurių negali, arba beveik negali dubliuoti jokia kita konkurentinė organizacija. Kaupti duomenis ir iš jų gauti informaciją bei žinias stengiasi kiekviena organizacija. Būtent duomenų bazės leidžia sukaupti milžiniškus duomenų kiekius ir garantuoja lengvą priėjimą prie jų.
Duomenų Bazių Samprata ir Savybės
Duomenų baze galima vadinti kartu saugomų ir tarpusavyje susijusių duomenų visumą, kuriems apdoroti pasitelkiamos programos. Duomenų bazė - tai duomenų hierarchijos aukščiausias lygmuo. Tai specialių būdu organizuotas integruotų duomenų visuos saugojimas, kuris vartotojui užtikrina patogią sąveiką ir greitą bei lengvą prieigą prie sukauptų duomenų. Kai kalbama apie visumą duomenų bazę sudarančių ir kartu veikiančių elementų, ji suvokiama kaip automatizuota sistema, kurią sudaro duomenys, programinė ir techninė įranga, papildomos priemonės, tokios, kaip kalbos priemonės, programavimo, duomenų aprašymo, užklausų priemonės, metodinės priemonės, pavyzdžiui, rekomendacijos ir instrukcijos apie duomenų bazės sukūrimą ir funkcionavimą, taipogi ir kiti personalo atstovai, kurių pagrindinė užduotis - duomenų bazės darbo kontrolė, ir visa užtikrina duomenų kaupimą, saugojimą, atnaujinimą, paiešką bei pateikimą vartotojui.
Duomenims, saugomiems DB, būdingos šios savybės: integruotumas, nepertekliškumas, nepriklausomumas. Duomenų integruotumas reiškia, kad visi duomenys kaupiami ir saugomi kartu nustačius jų tarpusavio ryšius. Taip saugomus duomenis dažniausiai naudoja ne vienas, o keli vartotojai. Antroji savybė nusako tai, jog duomenys saugomi vengiant jų dubliavimo. Kai yra pertekliškumas, t.y. kelios duomenų kopijos, joms veltui eikvojama atmintis, o modifikuojant duomenis tenka kelis kartus naudoti tas pačias atnaujinimo operacijas. Be to, kai duomenų kopijos atitinka skirtingas atnaujinimo stadijas, tai gali iššaukti prieštaringos informacijos pateikimą.
Duomenų bazė gali būti išdėstyta viename kompiuteryje, taip vadinama, vietinė duomenų bazė, arba paskirstyta keliuose, sujungtuose į tinklą kompiuteriuose - paskirstyta duomenų bazė. Vietinės duomenų bazės efektyviau išnaudojamos, kai dirba vienas ar keli vartotojai, kai jų veiksmus galima suderinti. Paskirstytų duomenų bazių paskirtis - pateikti lankstesnes, daugelio nutolusių ir išsimėčiusių geografiškai vartotojų aptarnavimo formas, kai dirbama su dideliais duomenų kiekiais. Paskirstytos duomenų bazės sistemos suteikia daugiau galimybių valdant sudėtingus objektus ar procesus, susidedančius iš daugelio grandžių, pavyzdžiui, organizacija, jungiančią tam tikrą filialų skaičių. Viena iš paskirstytų duomenų bazių valdymo priemonių - tai duomenų tiražavimas. Tai procesas, kurio metu pradinės duomenų bazės objektų pakeitimai perkeliami į pačią duomenų bazę, ar jos dalis, esančias skirtinguose paskirstytos sistemos mazguose.
Duomenų Bazių Valdymo Sistemos (DBVS)
Kai duomenys saugomi kompiuterio atmintyje, veiksmus su jais galima atlikti tik naudojantis programine įranga. Programinė įranga, skirta darbui su duomenų baze ir pati duomenų bazė vadinama duomenų bazės sistema. Kai kalbama apie kompiuterines sistemas, duomenų bazės sistema suvokiama kaip sistema, kurią sudaro jos vartotojai, asmenys tiesiogiai naudojantys duomenų bazės teikiamomis paslaugomis, bei taikomosios programos, kurios atlieka operacijas su duomenų baze. Pagrindinė duomenų bazės programinės įrangos paskirtis - suteikti vartotojui galimybę naudotis duomenų baze, nesigilinant į technines detales, taip pat traktuoti duomenų bazę kaip aukštesnio lygio objektą nei įrašų failas. Tokia programinė įranga vadinama duomenų bazių valdymo sistema. Duomenų bazės valdymo sistema yra tarsi sąsaja tarp vartotojo ir duomenų bazės.
Taip pat skaitykite: Koreliacija vs. Funkcinė Priklausomybė: Esminiai skirtumai
Duomenų bazės valdymo sistema turi užtikrinti tikslų duomenų bazės veikimą, pašalinant atsiradusias kliūtis. Būna atvejų, kai duomenų bazėje atsiranda kelios duomenų kopijos, tai atsitinka nes kartais, norint panaudoti tuos pačius duomenis skirtingiems tikslams, prireikia juos dubliuoti. Šiuo atveju, toms kopijoms veltui eikvojama atmintis, prireikus modifikuoti duomenis, tenka kelis kartus naudoti tas pačias atnaujinimo proceso stadijas, o tai gali sukelti prieštaringos informacijos pateikimą. Todėl duomenų bazės valdymo sistema turi pasistengti atsikratyti atsiradusio duomenų dubliavimo, deja, dažniausiai visiškai užtikrinti duomenų nepertekliškumo tiesiog neįmanoma, šiuo atveju, duomenų perteklius yra minimizuojamas.
Kita duomenų bazės valdymo sistemos užduotis - užtikrinti veiksmingą duomenų bazės naudojimą. Duomenų baze naudojasi didelis vartotojų skaičius, ne paslaptis, kad atvėrus duomenų failą redagavimui, operacinė sistema neleidžia kitiems vartotojams ne tik į jį rašyti, bet ir skaityti iš jo tol, kol rašymo operacija bus baigta ir failas bus uždarytas. Duomenų bazė galės vadintis vientisa tik tuo atveju, jei ji atitiks tam tikras duomenų saugojimo sąlygas ir sugebės išlaikyti tas sąlygas atliekant įvairius pakeitimo veiksmus su duomenimis. Tik taip centralizuotai saugomi duomenys atitinka realaus pasaulio tam tikros - skirtos automatizuoti - dalies taikymo srities modelį.
Duomenų vientisumas - duomenų tikslumo ir neprieštaravimo vieni kitiems problema. Duomenų bazės valdymo sistemos užduotis - garantuoti duomenų bazės integralumą atliekant pakeitimus joje. Tam, kad užtikrinti duomenų vientisumą, dažniausiai yra naudojama slaptažodžių sistema bei duomenų dalijimas į atskiras dalis. Be to į duomenų žodynus įrašomos duomenų reikšmių sudėtis ir ribos. Duomenų bazės valdymo sistema privalo tikrinti, kad pakeitus duomenis duomenų bazėje nebūtų pažeistos nustatytos sąlygos, taip pat turi uždrausti ir įspėti vartotoją apie nesankcionuotą duomenų pakeitimą, kurį atlikus, nebus vykdoma kuri nors sąlyga. Kaip bebūtų, bet duomenų reikšmių sudėties apribojimas ir privalomi reikalavimai šiems duomenims yra silpnoji šiuolaikinių duomenų bazių valdymo sistemos dalis. Mes galime sugalvoti daug daugiau apribojimų negu juos gali realizuoti duomenų bazės valdymo sistemos. Todėl atsiranda būtinybė rašyti programas, kurios tikrintų, ar atitinka įvedami duomenys nustatytiems apribojimams.
Ne mažiau svarbi duomenų bazės valdymo sistemos funkcija - duomenų nepriklausomumo užtikrinimas. Kitaip tariant, duomenų bazės valdymo sistema turi pasirūpinti tuo, kad taikomosios duomenų apdorojimo programos nesikeistų modifikuojant duomenų saugojimo i organizavimo būdą. Svarbu tai, kad įmanomas kiek fizinis, tiek ir loginis duomenų organizavimas. Šiuo atveju, fizinis duomenų organizavimas nurodo skirtingus duomenų fizinio išdėstymo būdus kompiuterio atmintyje, o loginis - duomenų struktūros vaizdavimą, reikalingą vartotojams.
Organizacijos turimų duomenų sujungimo į vieningą, visiems prieinamą sistemą idėja turi tiek savo pranašumų, tiek trūkumų. Akivaizdus bendras duomenų bazės naudojimo privalumas rizikingas neteisingu duomenų bazės panaudojimu bei duomenų pakeitimu ar sugadinimu iš neatsakingų ir neturinčių įgaliojimų naudotis duomenų baze vartotojų pusės. Duomenų bazės administratorius ruošia duomenų bazės valdymo sistemos kontrolės priemones ir procedūras, kurios galės užkirsti galimybes neteisingai naudotis duomenimis, o be to, leis apibrėžti kiekvienam vartotojui ar jų grupei teises į duomenų vartojimą. Duomenų bazės valdymo sistema kontroliuoja priėjimo lygį bei fiksuoja duomenų panaudojimo arba papildymo statistiką. Duomenų bazės administratorius atsako už slaptažodžių bei nustatyto priėjimo lygio suteikimą. Tokiu būdu duomenų bazės administratorius sumažina galimybes ir riziką, kad viena vartotojų grupė gali sunaikinti kitos vartotojų grupės duomenis.
Taip pat skaitykite: Kas yra funkcinė priklausomybė?
Duomenų Modeliavimas ir SQL Kalba
Kaip vieną iš svarbiausių duomenų bazės valdymo sistemos funkcijų galima paminėti jos kaip savotiškos sąsajos tarp vartotojo ir duomenų bazės vaidmens atlikimas. Duomenų bazės valdymo sistema suteikia galimybę vartotojui kreiptis į duomenų bazę loginėmis sąvokomis, o ne fizinių veiksnių, tokių, kaip operacinė sistema ar bet kokia kita aparatūra, pagalba. Tų loginių sąvokų rinkinys sudaro duomenų bazės modelį. Duomenų modelis - tai ne kas kita kaip būdas struktūrizuoti duomenis. Svarbiausia loginio duomenų modelio paskirtis - sisteminti įvairiausių rūšių duomenis ir išryškinti jų savybes pagal tam tikrus požymius - dažniausiai pagal turinį, struktūrą, apimtį, ryšius ir dinamiką, be to, dėmesys turi būti skiriamas ir į tai, kad būtų tenkinami įvairių kategorijų vartotojų informaciniai poreikiai.
Loginio duomenų modelio kūrimo proceso metu, pirmiausia išaiškinami tam tikros dalykinės srities objektai, procesai, kurie gali būti reikalingi duomenų bazės vartotojui. Pavyzdžiui, tokiais objektais gali būti investoriai, indėlininkai, tiekėjai, pirkėjai, prekės ir pan. Šiuo atveju, kiekvienam objektui atrenkamas jį apibūdinančių savybių, tokių kaip rekvizitas, atributas ar laukas, rinkinys, pavyzdžiui, indėlininkui - pavardė, vardas, asmens kodas, adresas, indėlio tipas, indėlio suma ir kt. Svarstant, kokie duomenys turėtų sudaryti duomenų bazę, reikia atsižvelgti ne tik į dalykinę sritį, aptarnaujamų problemų ratą, bet ir į darbo su tam tikrais duomenimis intensyvumą, duomenų dinamiką, koregavimo dažnumą, duomenų tarpusavio ryšius bei sąveiką su kitais veiksniais. Praktiškai ne visi vartotojai gali būti suinteresuoti visu duomenų modeliu, o tik tam tikra jo dalimi.
Sąsajai tarp vartotojo ir duomenų bazės sudaryti vartojama tam tikra formalioji kalba skirta užklausoms pateikti. Vienas pagrindinių užklausų kalbos dialektų, naudojamas daugelyje duomenų bazių, yra SQL. SQL - tai instrumentas, skirtas duomenų, esančių kompiuterinėje duomenų bazėje nuskaitymui ir apdorojimui. Kitaip tariant, SQL (Structured Query Language) - tai struktūrizuota užklausų kalba. SQL kalba buvo sukurta 1970 - ųjų metų pabaigoje IBM korporacijos tyrimų centre.
SQL darbo esmė yra ta, kad vartotojas šios užklausų kalbos pagalba kreipiasi į duomenų bazės valdymo sistemą, kuri apdoroja užklausą, randa reikalingus duomenis ir galiausiai pateikia juos vartotojui. Kitaip ši procedūra vadinama duomenų bazės užklausa, iš čia ir kilęs ir pavadinimas - struktūrizuota užklausų kalba. SQL pagalba galima keisti duomenų bazės turinį, t.y. priėjimo prie duomenų valdymas, kolektyvinis darbas su duomenų baze, duomenų bazės apsauga. Iš esmės SQL kalba vartojama reliacinėms operacijoms aprašyti. Šioje kalboje išskiriamos trys sakinių grupės: duomenų apibrėžimo sakiniai, kitaip dar vadinami duomenų apibrėžimo kalba DDL; duomenų apdorojimo sakiniai DML ir duomenų valdymo sakiniai DCL, taigi SQL = DDL+DML+DCL.
Reliacinis Duomenų Modelis ir Normalizavimas
Reliacinį, kitaip dar vadinamą sąryšinį, modelį 1970 metais pasiūlė E. F. Kodas (Codd). Visi iki to momento egzistavę priėjimai prie įrašų sujungimo iš skirtingų failų naudojo fizines rodykles arba adresus diske. Reliacinė DB yra tokia duomenų visuma, kurioje informacija (duomenys) saugoma vadinamosiose dvimatėse lentelėse. Lentelę sudaro eilutės ir stulpeliai, taigi lentelės forma yra įprasta ir suprantama vartotojui. Lentelės eilutės vadinamos įrašais, o stulpeliai - laukais. Laukams duodami vardai (pvz. „UŽSAKYMO NUMERIS”, „PIRKĖJO KODAS” ir pan.). Pažymėtina, kad 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.). Bet kurios eilutės ir bet kurio stulpelio susikirtime turi būti tik viena DE reikšmė, o ne tų reikšmių rinkinys.
Taip pat skaitykite: Simptomai ir gydymas: funkcinės nervų sistemos ligos
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. kiekvieno lauko reikšmės yra vieno tipo. Tačiau skirtinguose laukuose gali būti įvairių tipų duomenys; Lentelėje negali būti tuščių įrašų, taip pat identiškų įrašų, t. y. įrašų su pilnai 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, kuriuo ji saugoma kompiuterio išorinėje atmintyje (diske) kaip atskiras objektas. Lentelės vardas turėtų atspindėti atitinkamo realaus informacinio objekto pavadinimą, o laukų vardai - to objekto atributų pavadinimus. 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.
Labai dažnai naudojama 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. Laukų, įeinančių į pirminio rakto sudėtį, vardai pabraukiami. Toks užrašas vadinamas lentelės schema. Į 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. Taip susietų lentelių visuma ir apibrėžia reliacinį modelį.
Bet kurią duomenų struktūrą galima vaizduoti tiek rodykline, tiek lentelių forma. Kai DB sudaro daug lentelių, svarbu, kad būtų patenkinama vadinamoji duomenų pilnumo sąlyga - bet kurią antrinės lentelės siejančio lauko reikšmę turi atitikti tokia pati reikšmė iš pagrindinės lentelės lauko. Bet kurią DB galėtų sudaryti tik viena lentelė. Tačiau jei būtų daug lentelės laukų ir gausu duomenų, atsirastų žymus duomenų pertekliškumas, dubliavimas, o apdorojant duomenis reikėtų sugaišti nemažai papildomo laiko. Norint to išvengti, tenka didelę, sudėtingos struktūros lentelę suskaidyti (dekomponuoti) į mažesnes, 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ę, 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). Taigi normalizuojamos lentelės pervedamos iš vienos NF į kitą. Pirmiausia apibrėšime terminą „funkcinė priklausomybė”.
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.
Pažymėtina, kad funkcinės priklausomybės atspindi duomenų vidinius, prasminius ryšius, tuo tarpu laukai - duomenų struktūrą. Jei neraktinis laukas funkcionaliai priklauso nuo sudėtinio rakto atskiros dalies, tai suprantama kaip šio lauko dalinė funkcinė priklausomybė nuo rakto. 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. 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.
Normalinės Formos (NF)
Dabar apibūdinsime tris pagrindines NF:
- Pirmoji normalinė forma (1NF): 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.
- Antroji normalinė forma (2NF): Lentelė yra antrosios normalinės formos (2NF), jeigu kiekvienas jos neraktinis laukas yra pilnoje funkcinėje priklausomybėje nuo bet kokio galimo tos lentelės rakto.
- Trečioji normalinė forma (3NF): Lentelė yra trečiosios normalinės formos (3NF), jeigu kiekvienas jos neraktinis laukas yra tiesioginėje pilnoje, bet ne tranzityvioje priklausomybėje nuo bet kokio galimo tos lentelės rakto.
Kaip 1NF lentelės pavyzdį galima pateikti lentelę, turinčią informaciją apie gaminių tiekimą. Č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.
1NF lentelių apdorojimui būdinga nemaža keblumų, vadinamų anomalijomis: Įvedimo anomalija. Negalima įvesti tam tikrų duomenų tol, kol neįvesta pilna rakto reikšmė.
tags: #sql #funkcine #priklausomybe