Vilniaus Gedimino technikos universitetas
Verslo vadybos fakultetas
Referatas:
“Reliacinės duomenų bazės”
TURINYS
TURINYS 2
RELIACINIS DUOMENŲ MODELIS IR SISTEMŲ EVOLIUCIJA 3 RELIACINIS DUOMENŲ BAZĖS MODELIS: PAGRINDINĖS SĄVOKOS 3 Reliacinės lentelės 3 lentelė 1 4 lentelė 2 4 lentelė 3 4 lentelė 4 5 Tuščios reikšmės 5 Raktai 6 Išoriniai raktai 6 Apribojančios sąlygos, palaikančios vientisumą 7 Duomenų pertekliškumas 8 Pertekliškumo problema reliacinėse duomenų bazėse 8 Pertekliškumo problema tradicinėje failinėje sistemoje 11 paveikslėlis 1 11
RELIACINIS DUOMENŲ MODELIS IR SISTEMŲ EVOLIUCIJA
Įvadas
Žmonių požiūris į duomenų bazes pamažu pradėjo keistis po 1970 m. E.F. Kodo(Codd) publikacijos apie reliacinį modelį. Visi tuo momentu egzistavępriėjimai prie įrašų sujungimo iš skirtingų failų naudojo fizines rodyklesarba adresus diske. Pavyzdžiui, tarkim, kad vienoje iš tų senų sistemų mumsprireikė sujungti įrašą A su įrašu B. Tam mums reikės prie įrašo Aprijungti laukelį, kuriame bus patalpintas įrašo adresas diske. Taspridėtinis laukelis, arba fizinė rodyklė, visada rodys iš įrašo A į įrašąB. Kodas pademonstravo, kad tokios duomenų bazės apriboja mūsų galimybesmanipuliuoti duomenimis. Be to, jos labai jautrios pakeitimams fizinėjeaplinkoje. Kai į kompiuterinę sistemą buvo įdiegiamas naujas diskasukisarba keitėsi duomenų saugojimo adresai, buvo reikalingi ir papildomi failųpakeitimai. Jei prie įrašo formato faile buvo prijungiami nauji laukai, taifiziniai adresai visų failų įrašų keitėsi. Tokiu būdu programuotojų irvartotojų galimybės buvo labai apribotos dėl fizinių problemų ir nebuvogalima manipuliuoti duomenimis taip, kaip tai būtų leidusi loginėstruktūra.Reliacinis modelis, paremtas loginiu duomenų ryšiu, įveikė šias problemas.Tai leido vartotojui visiškai nesirūpinti fizine duomenų struktūra.Be to,Kodas įvedė dvi manipuliavimo duomenimis kalbas, kurios pasiūlė daugefektyvesnes priemones priėjimui prie duomenų ir jų apdorojimui. Tos kalbos
– tai reliacinė algebra ir reliaciniai skaičiavimai.RELIACINIS DUOMENŲ BAZĖS MODELIS: PAGRINDINĖS SĄVOKOS
Reliacinės lentelės
Reliacinis duomenų modelis apdoroja ir pateikia duomenis lentelių (arbareliacijų) pavidale.Reliacija – tai terminas, atėjęs iš matematikos ir reiškiantis dvimatęlentelę, susidedančią iš duomenų eilučių ir stulpelių.Žemiau yra pateiktas pavyzdys reliacinės duomenų bazės “lentelė 1”, kuriaremdamasi aš apibūdinsiu pagrindines reliacinės duomenų bazės sąvokas.
lentelė 1
|Darb-Nr |Pavardė |Specialybė|Vodovo-Nr ||1235 |AAA |Elektrikas|1311 ||1412 |BBB |Tinkuotoja|1520 || | |s | ||2920 |CCC |Pakrovėjas| ||2920 |DDD |Stalius | ||1520 |EEE |Tinkuotoja| || | |s | ||1311 |FFF |Elektrikas| ||3001 |GGG |Stalius |3231 |
lentelė 2
|Darb-Nr |Pastato-Nr|Darbo_Pradž|Dienų_skaičiu|| | |ia |s ||1235 |312 |10.10 |5 ||1412 |312 |01.10 |10 ||1235 |515 |17.10 |22 ||1412 |460 |08.12 |18 ||1412 |435 |15.10 |15 ||1412 |515 |05.11 |8 ||1311 |435 |08.10 |12 |
lentelė 3
|Pastato-Nr Pastato_adresas ||Tipas || 312 Klevų 10 || Ofisas || 435 Beržų 4 || Parduotuvė || 515 Liepų 3 || Gyvenamasis namas || 210 Eglių 2 || Ofisas || 111 Pušų 5 || Ofisas || 460 Gilių 8 || Sandėlys |
lentelė 4
|Specialybės_tipas Premijiniai Val_per_savaitę ||Tinkuotojas 30 Lt 35 ||Elektrikas 35 Lt 37 ||Pakrovėjas 50 Lt 40 ||Stalius 45 Lt 35 |
Kiekvienas reliacijos stulpelis – tai reliacijos atributas. Stulpeliopavadinimas – atributo vardas. Toliau naudosime terminus atributas iratributo vardas vietoj terminų stulpelis ir stulpelio pavadinimas.Mūsųpavyzdyje lentelės 1 atributų vardai: Darb-Nr, Pavardė, Specialybė, Vadovo-Nr.Reliacijos atributų skaičius vadinamas reliacijos laipsniu. Taigi,reliacijos laipsnis lentelės Darbuotojas lygus keturiems. Kadangivartotojui nesvarbi atributų eilės tvarka reliacijoje, tai ta tvarkalaikoma neesminė. Iš to seka, kad jokie du reliacijos atributai negaliturėti vienodų vardų.Reliacijos eilutės vadinamos kortežais. Laikoma, kad nėra nustatytoseilučių (kortežų) išdėstymo tvarkos, todėl jokie du kortežai negali turėtivienodų reikšmių rinkinių.Rinkinys visų galimų reikšmių, kurias gali turėti atributai, vadinamasatributo sritimi. Dvi atributų sritys sutampa tik tuo atveju, jeigu josturi tas pačias reikšmes. Pavyzdžiui, atributai Pavardė ir Specialybė išlentelės 1 turi skirtingas atributų sritis, nors kiekvieno jų reikšmės yrasimbolių eilutės. Du atributai su ta pačia sritimi nebūtinai turi turėti
vienodus vardus. Pavyzdžiui, atributai Vadovo-Nr ir Darb-Nr turi tą pačiąsritį, kurią sudaro numeriai, identifikuojantys darbuotojus.Tuščios reikšmės
Tarkime, kad kažkokiu konkrečiu atveju atributas nepanaudojamas.Pavyzdžiui, kai kurie darbininkai iš reliacinės lentelės 1 neturi vadovų.Tokiu atveju, atributo Vadovo-Nr reikšmė jiems neegzistuoja. Be to, kai mesįvedinėjame duomenis į reliacinės lentelės eilutę, mes galime ir nežinotivienos ar kelių tos eilutės atributų reikšmių. Abiem atvejais mes niekoneįvedinėjam ir eilutė į duomenų bazę įsirašo su tuščiomis tų atributųreikšmėmis. Tuščia reikšmė – tai ne tarpas ir ne nulis, ji paprasčiausiainežinoma (ar atributas nepanaudojamas) ir gali būti įvesta vėliau.
Raktai
Lentelės 1 eilutėje patalpinta visa informacija apie konkretų tarnautoją.Mes teigsime, kad kiekvienas tarnautojas pateiktas viena ir tik vienalentelės 1 eilute. Tokiu atveju, jei kuris nors atributas vienareikšmiškainusako darbuotoją, mes galime teigti, kad tas pats atributasvienareikšmiškai nusako ir lentelės 1 eilutes. Teigsime, kad atributas Darb-Nr vienareikšmiškai nusako kompanijos tarnautoją. Tada atributo reikšmėvienareikšmiškai nusako lentelės 1 eilutę, ir mes sakome, kad Darb-Nr yralentelės 1 raktas.Rinkinys atributų, vienareikšmiškai nusakantis kiekvieną reliacinėslentelės kortežą, vadinamas superraktu. Reliacijos raktas – tai minimalusatributų rinkinys; tai minimalus superraktas. Minimalumas suprantamas taip,kad nė vienas raktinių atributų aibės poaibis nenusako vienareikšmiškaireliacinės lentelės kortežų.Pavyzdžiui, lentelėje 1 atributų rinkinio {Darb-Nr, Pavardė} reikšmėsvienareikšmiškai nusako kiekvieną reliacijos kortežą – tai tos lentelėssuperraktas. Tačiau šis atributų rinkinys nėra minimalus, taigi, jis nėrair raktas. Šitame pavyzdyje atskiras paimtas atributas Darb-Nr yra raktas,kadangi kiekviena lentelės eilutė vienareikšmiškai nusakoma atributo Darb-
Nr reikšme. Abiejose iš duotų reliacinių lentelių gali būti daugiau nei vienas atributųrinkinys, kurį galime laikyti raktu.Šie atributų rinkiniai vadinamipotencialiais raktais. Pavyzdžiui, Atributas Pavardė gali būti potencialiulentelės 1 raktu. Tokiu atveju mes laikysime, kad pavardės niekadanesikartoja. Jeigu pavardės gali kartotis, tai Pavardė nėra potencialusraktas. Kai vienas iš potencialių raktų yra išrenkamas reliacijos raktu, jįgalime pavadinti pirminiu raktu. Paprastai pirminiu raktu išrenkamaspotencialus raktas, kuriuo lengviausia naudotis įvedinėjant duomenis.Išoriniai raktai
Išorinis raktas – tai atributų rinkinys vienoje lentelėje, kuris yra raktaskitoje lentelėje. Taigi, atributas Pastato-Nr yra lentelės 2 išorinisraktas ir raktas lentelėje Pastatas. Išoriniai raktai sudaro svarbiusryšius tarp lentelių. Jie naudojami tam, kad surišti duomenis vienoslentelės su kitos lentelės duomenimis.Išorinio rakto atributai nebūtinai turi turėti tuos pačius vardus kaip irrakto atributai, kuriuos jie atitinka. Pavyzdžiui, Darb-Nr ir Vadovo-Nrlentelės Darbuotojas turi skirtingus vardus, nors abu juos sudaro reikšmėsiš srities, kurioje yra darbuotojus identifikuojantys numeriai. Tokiu būdu,Vadovo-Nr yra reliacinės lentelės 1 išorinis raktas, nurodantis į savopačios lentelės raktą. Kiekvienam darbuotojui atributas Vadovo-Nr priskiriavadovą, kuris taip pat yra darbuotojas. Tokiu būdu, atributas Vadovo-Nrturi turėti reikšmę, kuri yra reikšmė rakto kažkokio kito kortežo išlentelės 1. Vadovo-Nr yra pavyzdys rekursinio išorinio rakto, t.y. išoriniorakto, nurodančio į savo paties reliacinę lentelę.Sąrašas, kuriame nurodomi reliacinių lentelių pavadinimai ir išvardinti jųatributai (raktai pabraukti) bei nurodyti išoriniai raktai, vadinamasreliacine duomenų bazės schema.Pvz.: 1 (Darb-Nr, Pavardė, Specialybė, Vadovo-Nr)Išoriniai raktai : Specialybė nurodo į lentelę Specialybė;Vadovo-Nr. nurodo į lentelę Darbuotojas.
Apribojančios sąlygos, palaikančios vientisumą
Apribojanti sąlyga- tai taisyklė, nustatanti galimas reikšmes duomenųbazėje.Apribojančios sąlygos suteikia loginį pagrindą teisingoms duomenų reikšmėmsduomenų bazėje nustatymui, perspėja apie klaidas, pasitaikančiasatnaujinant ir apdorojant duomenis. Tokios galimybės labai vertingos,kadangi pagrindinis duomenų bazės tikslas- teikti tikslią informaciją.Reliaciniame Kodo modulyje yra keletas apribojančių sąlygų, naudojamųduomenų tikrinimui duomenų bazėje. Svarbiausios iš jų: [pic] kategorijų vientisumas, [pic] nuorodų vientisumas, [pic] funkcinė priklausomybėKategorijų vientisumas. Reliacinės lentelės eilutės duomenų bazėje pateikiarealaus pasaulio objektus (arba kategorijas). Pavyzdžiui, lentelės 1 eilutėpateikia konkretų tarnautoją, lentelės Pastatas eilutė pateikia konkretųpastatą, o lentelės Paskyrimas eilutė pateikia konkretų darbuotojopaskyrimą į konkretų pastatą. Reliacinės lentelės raktas vienareikšmiškainustato kiekvieną eilutę, taigi, ir kiekvieną kategorijos elementą. Tokiubūdu, jeigu vartotojai nori manipuliuoti duomenimis iš konkrečios eilutės,jie turi žinoti tos eilutės rakto reikšmę. Todėl svarbu, kad elementasnebūtų įrašomas į duomenų bazę tol, kol nebus pilnutinai nustatytos joraktinių atributų reikšmės.Taigi, raktas ar rakto dalis negali turėtituščios reikšmės – tai ir yra kategorijų vientisumo taisyklė. Nuorodų vientisumas. Norint sujungti vienos lentelės eilutes su eilutėmisiš kitos lentelės, naudojami išoriniai raktai. Pavyzdžiui, atributasSpecialybė naudojamas lentelėje 1 tam, kad praneštų mums kiekvienodarbuotojo specialybę, jog būtų galima apskaičiuoti premijinių dydį. Todėllabai svarbu, kad kiekvienos eilutės atributo Specialybė reikšmės būtųlygios tam tikroms raktinio atributo Specialybės-tipas reikšmėms lentelėje4. Priešingu atveju, išorinis raktas Specialybė į nieką nenurodys. Iš čiair seka nuorodų vientisumo taisyklė – kiekviena netuščia išorinio raktoreikšmė turi bųti lygi vienai iš raktinių reikšmių kitoje lentelėje.
Funkcinė priklausomybė. Funkcinės priklausomybės sąvoka naudojamanormalizacijos procese. Ji suteikia reliaciniai schemai papildomųapribojimų. Pagrindinė jos idėja- vieno atributo reikšmė korteževienareikšmiškai nusako kito atributo reikšmę korteže. Pavyzdžiui Darb-Nrvienareikšmiškai nusako pavardę.Funkcinė priklausomybė užrašoma: Darb-Nr –> Pavardė.Pažymėjimas ,,–> “ reiškia ,,funkcionaliai nusako “.Formalesnės funkcinės priklausomybės apibrėžimas: jei A ir B lentelėje R,tai užrašas A –> B reiškia, kad jei du lentelės R kotežai turi vienodasatributo A reikšmes, tai jie turi turėti vienodas ir atributo B reikšmes.Atributas, kuris ,,funkcionaliai nusako “ kito atributo reikšmė, vadinamasdeterminantu (tai atributai esantys kairėje funkcionalinės priklausomybėsužrašo dalyle ir apsprendžiantys atributus, esančius to užrašo dešinėjepusėje) lentelės raktas- visuomet determinantas, nes jo reikšmėvienareikšmiškai nusako kiekvieno lentelės atributo reikšmę.Duomenų pertekliškumas
Pertekliškumo problema reliacinėse duomenų bazėse
Duomenų pertekliškumas – duomenų pasikartojimas duomenų bazėje.Panagrinėsime lentelę 5. Tarkim, jog ji buvo sudaryta ne iš koncepciniomodelio, bet buvo sukurta tiesiogiai iš turimos informacijos, gautos išpotencialių duomenų bazių vartotojų. Pažiūrėsime, kokios problemos galiiškilti dėl nerūpestingo duomenų bazės projektavimo ir kaip išvengtipanašių problemų, naudojant standartinius principus, kurie vadinaminormalizacija (reliacinės lentelės suvedimas į standartinę formą).
lentelė 5
|WORKER | | | | ||WORKER-|NAME |SKILL-T|SUPV-I|BLDG-I||ID | |YPE |D |D ||1235 |M. |Elektri|1311 |312 || |Faradėj|kas | | || |us | | | ||1235 |M. |Elektri|1311 |515 || |Faradėj|kas | | || |us | | | ||1412 |K. Nemo|Mūrinin| |312 || | |kas | | ||1412 |K. Nemo|Mūrinin| |460 || | |kas | | ||1412 |K. Nemo|Mūrinin| |435 || | |kas | | ||1412 |K. Nemo|Mūrinin| |515 || | |kas | | ||1311 |K. |Elektri| |435 || |Kolumbo|kas | | |
Truputi paanalizavus šią reliacinę lentelę aiškiai matosi, jog ji
suprojektuota truputi nevykusiai. Pavyzdžiui keturiuose kortežuose,atstovaujančiuose darbininką 1412, kartojasi vienas ir tas pats vardas irinformacija apie specialybės tipą. Tai duomenų pertekliškumo problema(duomenų prieštaravimas duomenų bazėje) arba tiesiog duomenųpasikartojimas. Ši problema kompiuterio atmintyje sukelia papildomos vietospraradimus; ji gali sukelti duomenų vientisumo pažeidimus (prieštaravimas)duomenų bazėje.Problema kyla dėl to, kad vienas ir tas pats darbininkas gali dirbtidaugiau nei viename pastate. Tarkim, jog K.Nemo specializacija buvonurodyta neteisingai, o pataisymas buvo įvestas tik pirmajame korteže. Tadatarp kortežų, talpinančių informaciją apie K.Nemo iškyla prieštaravimas,kurį sukelia atnaujinimo anomalija (duomenų prieštaravimas iškilęs dėlduomenų pertekliškumo ir dalinio atnaujinimo).Dabar tarkim, jog K.Nemo buvo tris mėnesius susirgęs ir visi pastatai įkuriuos jis buvo paskirtas, jau baigti. Jeigu priimamas sprendimas išlentelės ištrinti visas eilutes turinčias duomenis apie baigtus pastatus,tai informacija apie identifikatorių K.Nemo, jo vardą ir specialybę busprarasta. Tai vadinama pašalinimo anomalija (duomenų praradimas atsiradęsdėl kitų duomenų pašalinimo). Priešingas atvejis: mes galėjome pasamdytinaują darbininką pavarde Špandolfas, kurio dar nespėjome paskirti į kokįnors pastatą. Jei tuščios reikšmės yra draudžiamos, tai į duomenų bazęnegalėsime įvesti jokios informacijos. Tai vadinama įvedimo anomalija(draudimas įvesti į lentelę duomenis dėl kitų duomenų nebuvimo).Atnaujinimo anomalijos, pašalinimo ir įvedimo, savaime aišku yranepageidaujamos. Kaip išvengti arba bent jau iki minimumo sumažintipanašias problemas? Intuityvus sprendimas būtų lentelę 5 suskaidyti į dvilenteles 5 bei 6:lentelė 6
|WORKER | | | ||WORKER-ID|NAME |SKILL-TYP|SUPV-ID || | |E | ||1235 |M.Faradėj|Elektrika|1311 || |us |s | ||1412 |K.Nemo |Mūrininka| || | |s | ||1311 |K.Kolumba|Elektrika| || |s |s | |
lentelė 7
|ASSIGNMENT | | | ||WORKER-ID |BLDG-I|START-DATE |NUMBER-OF-D|| |D | |AYS ||1235 |312 |00 01 03 |20 ||1235 |515 |99 11 16 |18 ||1412 |312 |99 08 15 |35 ||1412 |460 |99 07 20 |15 ||1412 |435 |99 04 13 |14 ||1412 |515 |99 03 08 |23 ||1311 |435 |00 01 13 |7 |
Esant tokioms lentelėms anomalijos nekyla. Formalesnis metodas, vadinamas
padalijimu, juo pasiekiamas toks pat rezultatas. Padalijimas – tai lentelėspadalijimo į kelias lenteles, procesas, kurio tikslas išvengti anomalijų irišlaikyti duomenų vientisumą. Tam, kad tai atlikti naudojamos normalinėsformos arba lentelių struktūrizavimo taisyklės.Pertekliškumo problema tradicinėje failinėje sistemoje
Pagrindinis sunkumas yra tame, kad dauguma programų naudoja savo nuosavusduomenų failus. Tokiu būdu kai kurie duomenų vienetai pasikartojaskirtingose moduliuose. Pavyzdžiui, viena ir ta pati banko kliento pavardėsutinkama failuose turinčiuose informaciją apie einamąsias sąskaitas,taupomąsias sąskaitas ir paskolas:[pic]
paveikslėlis 1
Nors tai vienas ir tas pats kliento vardas, atitinkami laukai skirtinguosefailuose gali skirtingai vadintis. Taip laukas CNAME einamųjų sąskaitųfaile pavirsta į SNAME taupomųjų sąskaitų faile ir į INAME paskolų faile.Taip pat vienas ir tas pats laukas skirtinguose failuose gali turėtiskirtingą ilgį. Pavyzdžiui, laukas CNAME gali turėti iki 20 simbolių, olaukas NAME ir INAME leidžia maksimalų 15 simbolių ilgį. Toks duomenųpertekliškumas sukelia papildomas problemas palaikant ir saugant duomenis.Duomenų pertekliškumas taip pat sukelia prieštaravimo tarp skirtingųduomenų versijų grėsmę.Tarkim, jog klientas Kerol T.Džons pakeitė pavardę į Kerol T.Smit ir po topaėmė iš banko paskolą. Paskolų faile senoji pavardė bus pakeista į naują,o likusiuose failuose informacija liks neatnaujinta. Praėjus tam tikramlaiko tarpui, panašūs nesutapimai gali smarkiai sumažinti duomenų bazėjesaugomos informacijos kokybę. Toks duomenų nesuderinamumas galiatsispindėti ataskaitų tikslume. Tarkim, jog norime sudaryti ataskaitą,kurioje turi būti išvardinti visi klientai, turintys einamąsias arbataupomąsias sąskaitas ir paėmę iš banko paskolas. Kerol T.Smit buspraleista šitoje ataskaitoje, kadangi paskolų faile yra įrašyta jos naujojipavardė, o einamųjų bei taupomųjų sąskaitų failuose liko senoji.
Informacinės sistemos, naudojančios duomenų bazes, leidžia išvengti panašiųduomenų pertekliškumo problemų. Jose visi moduliai naudoja vieną ir tą patįduomenų rinkinį. Tokia informacija, kaip pavyzdžiui kliento vardas arbaadresas į duomenų bazę įrašomi tik vieną kartą. Tokiu būdu galime keistikliento adresą arba vardą tik vieną kartą ir žinoti, jog visi moduliainaudos suderintus duomenis.