GIS pagrindai

Download Report

Transcript GIS pagrindai

GIS pagrindai (IV)
duomenų bazės
Albertas Šermokas
[email protected]
DB ir DBVS
 Duomenų bazė - apibrėžimas,
 DB – pagrindinės sąvokos,
 DB – sąryšiai,
 Duomenų bazių valdymo sistema – DBVS,
 DBVS – funkcijos,
 DBVS – SQL kalbos operacijos
Esybė, savybė, ryšys
 Esybė – tai savarankiškas, atskiriamas nuo kitų objektas,
apie kurį norime turėti informaciją
 esybė yra ne konkretus objektas, bet objekto sąvoka, abstrakcija,
pavyzdžiui, ežeras, kuriam nurodytas savybių (atributų) rinkinys, o
konkretus ežeras pvz. Balsio, yra tos esybės egzempliorius, t.y., objektas
su konkrečiomis visų jo atributų reikšmėmis
 savybė - priklausoma sąvoka, išreiškianti kokio nors
objekto ypatybę (atributas – tai apibrėžta esybės savybė)
 ryšys – sąsaja tarp esybių ar jų savybių (ryšys – tai turinti
pavadinimą asociacija tarp dviejų esybių)
Duomenų bazė - apibrėžimas
 Duomenų bazė (DB) – tai informacijos (duomenų) apie
esybes rinkinių ir sąryšių visuma:
 Duomenų bazė (DB) – tai rinkinys tarpusavyje susijusių
duomenų, kuriems apdoroti naudojamos programos
Duomenų bazių valdymo sistema
 Duomenų bazių valdymo sistema (DBVS) – tai programinė
įranga DB valdyti ir aukšto lygio kalbos (naudotojas nurodo
ką daryti, o ne kaip daryti) interpretatorius, kurie sudaro
kompiuterizuotą įrašų saugojimo sistemą.
 DBVS pateikia priemones, kurios užtikrina vartotojo sąsaja su
DB, pvz SQL kalbą.
Duomenų bazių modelis
 DBVS suteikia vartotojui galimybę naudoti logines sąvokas
DB aprašyti ir naudoti. Toks sąvokų rinkinys ir jų naudojimo
taisyklės sudaro DB modelį.
 DB, kurios apibrėžiamos naudojant reliacinį modelį (RM)
vadinamos reliacinėmis duomenų bazėmis (RDB)
valdančios duomenų bazių valdymo sistemos
vadinamos reliacinėmis duomenų bazių valdymo
sistemomis (RDBVS)
 RDB
RM pagrindiniai principai
 Duomenys organizuojami lentelėmis ir niekaip kitaip, tad DB
čia suprantama kaip lentelių (susijusių) rinkinys.
 Pateikiamos priemonės (operatoriai), leidžiančios iš esamų
lentelių gauti naujas.
Pagrindinės RM sąvokos

Lentelė (table) – eilučių ir stulpelių rinkinys (turintis pavadinimą)

Eilutė (row) – esybės konkretaus objekto savybių rinkinys

Stulpelis (column) – esybės savybė, apibrėžiama pavadinimu,
duomenų tipais ir jų apimtimi

Eilutės ir stulpelio sankirta – konkretaus objekto konkrečios
savybės reikšmė.
Stulpelio duomenų tipai

Skaitiniai

Simboliniai (tekstiniai) duomenys

Datos ir laiko
 Dvejetainiai duomenys
Skaitiniai

SMALLINT (short integer) – sveikieji skaičiai nusakomi 2 baitais
(-32768; 32767)

INTEGER (long integer) – sveikieji skaičiai nusakomi 4 baitais (-
2147483648; 2147483647)

REAL – realūs skaičiai slankiuoju kableliu, nusakomi 4 baitais,
pvz. 2.43E+5, -5E-6

DOUBLE (float) – dvigubo tikslumo realūs skaičiai nusakomi 8
baitais
Simboliniai duomenų tipai

CHAR (character, text) – simbolių eilutė iki 254 baitų

VARCHAR – kintama simbolių eilutė iki 4000 baitų

LONG VARCHAR – kintama simbolių eilutė iki 32700 baitų
Datos ir laiko duomenų tipai

DATE – datos duomenys, pvz. “YYYYMMDD” (nusakoma 4
baitais)

TIME – laiko duomenys, pvz. “12:00:00” (nusakoma 3 baitais)

TIMESTAMP – datos ir laiko duomenys kartu
Dvejetainis duomenų tipas

BLOB – dvejetainis duomenų rinkinys iki 2 GB, skirtas
paveiksliukams, ir įvairaus tipo failams saugoti.

NULL – reikšmė skirta visiems duomenų tipams .
Duomenų tipų nusakymas

Duomenų ilgis

Duomenų tikslumas

NULL – reikšmė visiems tipams, kai konkreti reikšmė nežinoma ar
nepriskirta
Lentelės raktai

Atributų (stulpelių) rinkinys vienareikšmiškai apibrėžiantis
kiekvieną lentelės eilutę vadinamas raktu (viršrakčiu)

Vienas iš raktų vadinamas pirminiu raktu, t.y. stulpelis ar jų
derinys toks, kad jokiu momentu negali atsirasti dviejų
lentelės eilučių, kuriose būtų vienodos to stulpelio (ar derinio)
reikšmės, t.y. tai unikalus objektų identifikatorius lentelėje
 Išorinis raktas - stulpelis ar jų derinys toks, kuris turi
atitikmenį kitoje lentelėje ir tas atitikmuo yra pirminis raktas.
Sąryšiai
 "vienas su vienu“ – vieną eilutę vienoje lentelėje atitinka
viena eilutė kitoje lentelėje (retas)
 “vienas su daug“ – vieną eilutę vienoje lentelėje atitinka
daug eilučių kitoje lentelėje (naudojamas dažniausiai)
 "daug su daug" – daug eilučių vienoje lentelėje atitinka daug
eilučių kitoje lentelėje (dažniausiai suvedamas prie kelių
santykių “vienas su daug”).
Visi ryšiai nusakomi per pirminių ir išorinių raktų santykį
DBVS funkcijos
Duomenų organizavimas. DBVS privalo užtikrinti
priemones duomenų organizavimui, organizavimo
pakeitimams, ir įvairių duomenų apribojimų ir taisyklių
nusakymui bei užtikrinimui.
 Manipuliavimas duomenimis. DBVS užtikrina visus
būtinus veiksmus su duomenimis, kad juos būtų galima
įrašyti, keisti, pašalinti, surasti.
 Duomenų slaptumas. DBVS užtikrina priemones skirtas
prieigai prie duomenų valdyti, kad kiekvienas vartotojas
turėtų teise pasiekti tik jam skirtus duomenis ir atlikti tik
jam leistus veiksmus.

DBVS funkcijos
Duomenų pertekliaus minimizavimas. DBVS privalo
minimizuoti duomenų perteklių, o esant galimybei jį
eliminuoti.
 Efektyvus bendras DB vartojimas. DB yra skiriama
plačiam vartotojų ratui, todėl turi užtikrinti efektyvų
bendrų DB vartojimą.
 DB vientisumas. DB yra vadinama vientisa (integrali), jei
ji tenkina tam tikrus apribojimus (sąlygas) duomenims ir
išsaugo tuos apribojimus modifikuojant (keičiant, šalinant,
terpiant) duomenis.

DBVS funkcijos
DB neprieštaringumas. DB vadinama neprieštaringa, jei
bet kuriuo laiko momentu, į visų vartotojų užklausas
reaguojama vienodai.
 Duomenų saugumas. DB duomenų apsauga, nuo tyčinio
ar netyčinio duomenų sunaikinimo (pašalinimo), pakeitimo
ar peržiūros.
 Efektyvus užklausų vykdymas. DBVS keliamas
uždavinys dideliuose duomenų masyvuose efektyviai
atlikti ne tik planuotas užklausas (pagal iš anksto
numatytus kriterijus), bet ir neplanuotas užklausas.

Populiariausios RDBVS

Oracle.
 IBM DB2.
 Microsoft SQL Server.



SYBASE
MySQL
PosgreSQL
SQL kalba

Skirta vartotojo sąsajai su duomenimis realizuoti.
Naudojama reliacinėse sistemose. SQL – struktūrizuota
užklausų kalba (Structured Query Language). Sukurta apie
1970 metus IBM tyrimų centre ir greit tapo Amerikos
nacionaliniu (ANSI) ir tarptautiniu (ISO) standartu.
 SQL – 92 (SQL2). International Standard Database
Language SQL, 1992.
 SQL – 99 (SQL3).
SQL kalbos sakinių grupės

DDL - duomenų apibrėžimo sakiniai
skirti DB ir lentelių kūrimui


CREATE DATABASE, DROP DATABASE, CREATE TABLE,
ALTER TABLE, …
DML – manipuliavimo duomenimis sakiniai (Data Manipulation
Language), skirti duomenų suradimui, įrašymui, šalinimui


(Data Definition Language),
SELECT, INSERT, UPDATE, DELETE, …
DCL – duomenų valdymo sakiniai (Data Control Language), skirti
vartotojų darbo su duomenimis valdymui

CONNECT, GRANT, REVOKE, …
Pagrindiniai DML sakiniai

SELECT – duomenų išrinkimas pagal užduotas taisykles

INSERT – duomenų įrašymas pagal užduotas taisykles

UPDATE – duomenų pakeitimas pagal užduotas taisykles

DELETE – duomenų šalinimas pagal užduotas taisykles
DB pavyzdys
HIDRO_L
FID
GKODAS
GRAKTAS
VARDAS
…
MARSRUTAI
mars_id
mars_vard
up_graktas
KELIONES
asm_id
mars_id
pr_data
pab_data
KELIAUTOJAI
asm_id
vardas
SELECT (apibrėžimas)
SELECT [DISTINCT] <stulpelių vardai>
FROM <lentelių vardai>
WHERE <paieškos sąlyga>
[GROUP BY <stulpelių vardai>
[ORDER BY <stulpelių vardai | išraiška – ASC/DESC>]
Operacijos

>, <, >=, <=, =, <> - palyginimo

AND, OR, NOT – loginės operacijos

_ - praleisti simboliai tam tikroje pozicijoje

%, * - praleisti simboliai dalimi iki (arba po) ieškomos dalies

LIKE – palyginimas dalimi bet kurioje pozicijoje

() – nusako operacijų eiliškumą
Loginės operacijos
p
q
p AND q
p OR q
NOT p
0
0
0
0
1
0
1
0
1
1
1
0
0
1
0
1
1
1
1
0
SELECT (išrinkimas su sąlyga)

SELECT * FROM hidro_l

SELECT * FROM hidro_l WHERE shape_len > 50000

SELECT graktas, vardas, shape_len FROM hidro_l

SELECT graktas, vardas, shape_len FROM hidro_l
WHERE shape_len < 10000

SELECT graktas, vardas, shape_len FROM hidro_l
WHERE vardas = ‘NEMUNAS’
SELECT (rūšiavimas, grupavimas)

SELECT * FROM hidro_l ORDER BY vardas

SELECT * FROM hidro_l WHERE shape_len > 50000
ORDER BY shape_len

SELECT graktas, vardas, SUM(shape_len) FROM hidro_l
WHERE vardas = ‘NEMUNAS’ OR vardas = ‘NERIS’
GROUP BY vardas

SELECT graktas, COUNT(graktas), vardas, AVG(shape_len),
SUM(shape_len)/1000 FROM hidro_l GROUP BY graktas
Sudėtingesni SELECT sakiniai

SELECT * FROM marsrutai, hidro_l

SELECT marsrutai.marsr_id, hidro_l.graktas, hidro_l.vardas
FROM marsrutai, hidro_l

SELECT marsrutai.marsr_id, hidro_l.graktas, hidro_l.vardas
FROM marsrutai, hidro_l WHERE marsrutai.up_graktas =
hidro_l.graktas

SELECT
keliautojai.vardas,
keliones.marsr_id,
marsrutai.mars_vardas FROM keliautojai, keliones, marsrutai
WHERE keliautojai.asm_id = keliones.asm_id AND
keliones.marsr_id = marsrutai.marsr_id
Sudėtingesni SELECT sakiniai

SELECT
keliautojai.vardas,
keliones.mars_vardas,
keliones.pab_data - keliones.pr_data FROM keliautojai,
keliones WHERE keliautojai.asm_id = keliones.asm_id AND
keliones.pab_data <= “2007.08.31”

SELECT keliautojai.vardas, SUM(keliones.pab_data keliones.pr_data) FROM keliautojai, keliones WHERE
keliautojai.asm_id
=
keliones.asm_id
GROUP BY
keliones.asm_id

SELECT vardas FROM hidro_l WHERE (SELECT
SUM(shape_len) FROM hidro_l GROUP BY graktas) >
50000
Kiti SQL sakiniai (UPDATE)

UPDATE <lentelės vardas> SET <stulpelio vardas =
reiškinys, [stulpelio vardas = reiškinys]> WHERE <paieškos
sąlyga>

UPDATE plotai SET info = ‘up.’ WHERE gkodas = ‘hd1’

UPDATE hidro_l SET ilgis = shape_len/1000
Kiti SQL sakiniai (DELETE)

DELETE <lentelės vardas> WHERE <paieškos sąlyga>

DELETE plotai WHERE gkodas = NULL

DELETE hidro_l WHERE vardas = “NEMUNAS”
Kiti SQL sakiniai (INSERT)

INSERT INTO <lentelės vardas> [<stulpelio vardas>, …]
VALUES (<reikšmė>, …)

INSERT INTO plotai VALUES (1, ‘Polygon’, ‘hd3’,
NULL, ‘Druskonis’, ‘ež.’, 1, NULL, NULL)

INSERT INTO plotai (gkodas, vardas, info, shape_area,
shape_len) VALUES (‘hd3’, ‘Druskonis’, ‘ež.’, 6000,
3400)
Indeksai

Indeksai – surūšiuota reikšmių ir nuorodų į reikšmes
atitinkamose lentelės eilutėse aibė

Indeksas yra apibrėžiamas vienam ar keliems lentelės
stulpeliams

Indeksas nėra lentelės duomenų dalis, tai atskiras DB
objektas

Duomenų paieška išrūšiuotame masyve yra efektyvesnė
RDBVS užtikrinami reikalavimai

Reikšmių būtinumas (NOT NULL)

Reikalavimai reikšmėms.

Lentelės raktų vientisumas.

Nuorodų vientisumas

Duomenų neprieštaringumas