Reliacinis modelis

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Peršokti į: navigaciją, paiešką

Reliacinis modelis – duomenų aprašymo modelis, kuris remiasi predikatų logika bei aibių teorija. Modelį aprašė Edgaras Kodas (Edgar F. Codd) 1970 metais. Šio modelio pagrindinis elementas yra reliacinė lentelė.

Kiti, anksčiau naudoti, duomenų aprašymo modeliai – hierarchinis bei tinklinis, o naujausias naudojamas modelis – objektinis.

Reliacinis modelis buvo pirmas formaliai aprašytas modelis, anksčiau naudotieji modeliai buvo aprašyti tik po reliacinio modelio aprašymo.

Reliacinio modelio pagrindas – prielaida, jog visi duomenys gali būti pavaizduoti matematiniais ryšiais, tai yra kaip N aibių Dekarto sandaugos poaibis.

Reliacinė lentelė[taisyti | redaguoti kodą]

Pirma lentelė
Vardas Pavardė Svoris Moka plaukti
Jonas Petraitis 70 taip
Petras Jonaitis 75 ne
Vardenis Pavardenis 92 taip
Antra lentelė
Vardas Pavardė Mėgiamas skaičius
Jonas Petraitis 5
6
7
17
Vardenis Pavardenis 9

Reliacinė lentelė (angl. relational table) – turintį vardą, dviejų matavimų lentelė duomenims saugoti. Tokios lentelės stulpelių skaičius yra žinomas ir kiekvienas stulpelis turi vardą. Kiekviena eilutė yra duomenų bazės įrašas, kurio stulpeliai pateikia informaciją apie objektą. Eilučių skaičius iš anksto nežinomas ir gali būti bet koks (taip pat ir nulis).

Atributai[taisyti | redaguoti kodą]

Lentelės stulpeliai dar vadinami atributais. Atributai gali būti įvairaus tipo (tekstas, skaičiai, datos, loginiai (taip/ne), taip pat ir duomenų bazėje neapibrėžtos struktūros dvejetainės sekos (angl. blob – binary large object – didelis dvejetainis objektas). Kaip tokie objektai saugomi vaizdai, garsai ir pan.

Raktai[taisyti | redaguoti kodą]

Lentelės pirminis raktas (angl. primary key) yra stulpelis (ar kelių stulpelių derinys), kurį žinodami galime vienareikšmiškai pasakyti, iš kurios eilutės jis paimtas. Pateikiamame pavyzdyje vidutiniškai patikimu pirminiu raktu galėtų būti pavardės stulpelis. Raktas, kuris yra stulpelių derinys, vadinamas sudėtiniu raktu (angl. composite key). Pavyzdyje sudėtiniu raktu galėtų būti vardo ir pavardės stulpelių derinys. Tai patikimiau, nes didelėje duomenų bazėje pasitaiko žmonių vienodomis pavardėmis.

Jei lentelėje galimi keli pirminio rakto variantai, kitos alternatyvos vadinamos kandidatiniais raktais (angl. candidate key).

Normalizacija[taisyti | redaguoti kodą]

Jei lentelės stulpelis (atributas) turi keletą reikšmių tai pačiai eilutei, jis vadinamas daugiareikšmiu atributu (angl. multivalue attribute). Antroji lentelė turi daugiareikšmių atributų, ir jos tiesiogiai į daugelį duomenų bazių perkelti nepatartina ar išvis neįmanoma. Daugiareikšmių atributų galima atsikratyti tiesiog sukuriant papildomas likusių duomenų kopijas, po vieną kiekvienai atributo reikšmei.

Antra lentelė be daugiareikšmių atributų
Vardas Pavardė Mėgiamas skaičius
Jonas Petraitis 5
Jonas Petraitis 6
Jonas Petraitis 7
Jonas Petraitis 17
Vardenis Pavardenis 9

Tokia lentelė nebeturi daugiareikšmių atributų, tačiau ji turi vadinamų funkcinių priklausomybių – kai kurių gretimų lentelės stulpelių reikšmės priklauso viena nuo kitos. Šiame pavyzdyje vardas ir pavardė yra logiškai tarpusavyje susiję ir be reikalo kartojasi kiekvienai mėgiamo skaičiaus reikšmei. Norint tokią lentelę papildyti nauju Jono Petraičio mėgiamu skaičiumi, teks dar kartą iš naujo įvesti ir saugoti tuos pačius vardą ir pavardę. Tai nepatogu ir neekonomiška, todėl gerai padarytoje duomenų bazėje funkcinių priklausomybių turi nebūti.

Darbas, kurio metu lentelė keičiama keliomis tarpusavyje susijusiomis lentelėmis be funkcinių priklausomybių vadinamas duomenų bazės normalizacija.

Sudentų kodai
Vardas Pavardė Studento kodas
Jonas Petraitis 12456
Vardenis Pavardenis 12345
Mėgiami skaičiai
Studento kodas Mėgiamas skaičius
12456 5
12456 6
12456 7
12346 17
12345 9
Dviejų lentelių susiejimo diagrama (sukurta su Umbrello). „Šakutės“ ženklas reiškia „vienas su daug“

Normalizacijos metu šią lentelę reikia keisti dviem, iš kurių viena saugo kiekvienam studentui priskirtą kodą o kita – bet kokį kiekį kodo ir tą kodą turinčio studento mėgiamo skaičiaus įrašų. Kodas gali būti generuojamas iš vardo ir pavardės ar bet kuriuo kitu būdu. Svarbu jog jis kiekvienam studentui būtų unikalus ir jo gyvenime nesikeistų. Pavyzdžiui, paso numeris netinka kaip kodas nes keičiasi pakeitus pasą.

Vardų lentelėje studento kodas šiuo atveju gali būti pirminis raktas. Jis saugomas ir mėgiamų skaičių lentelėje. Stulpelis ar stulpelių derinys, kuri yra kitos lentelės pirminis raktas, vadinamas svetimuoju raktu (angl. foreign key).

Lentelių sukūrimui, jų susiejimui svetimaisiais raktais ir duomenų paieškoms yra sukurta speciali programavimo kalba (SQL). Tačiau kai kada tenka programuoti panašias duomenų struktūras ir kitokiomis programavimo kalbomis.

Taip pat skaitykite[taisyti | redaguoti kodą]