Podatkovne bazePodatkovne baze
Biometrija & računalništvoUL, Biotehniška fakulteta, Oddelek za zootehniko
12.5.2005 Podatkove baze 2
Vsebina
• Relacijska algebra
• Jezik SQL
• Podatkovna integriteta
12.5.2005 Podatkove baze 3
Relacijska algebra
• Tabele oz. relacije so množice• Vrstice tabele ~ elementi množice
• Matematične operacije nad množicami lahko uporabimo tudi nad tabelami
• 8 relacijskih operacij
12.5.2005 Podatkove baze 4
Unija
• A ∪ B• Operacija nad dvema tabelama• Vrstice ene tabele pripnemo drugi tabeli in
s tem dobimo tretjo tabelo• Ni podvojenih vrstic• Tabeli morata biti kompatibilni
isto število stolpcev – prilastkovisti tip prilastkov
A B
12.5.2005 Podatkove baze 5
Unija (2)
A unija B
A B
12.5.2005 Podatkove baze 6
Razlika
• A – B oz. A \ B • Razlika dveh tabel je tretja, ki vsebuje
vrstice, ki so v prvi tabeli, pa jih v drugi ni• Tudi tu potrebno, da sta tabeli kompatibilni• Vrstni red enako pomemben kot pri
odštevanju• A – B ni isto kot B - A
A B
12.5.2005 Podatkove baze 7
Razlika (2)
A B
A - B B - A
12.5.2005 Podatkove baze 8
Presek
• A ∩ B• Presek dveh tabel je tretja tabela, ki
vsebuje skupne vrstice• Kompatibilni tabeli
A B
12.5.2005 Podatkove baze 9
Presek (2)
A B
A presek B
12.5.2005 Podatkove baze 10
Produkt
• A x B• Produkt dveh tabel – kartezijski produkt• Medsebojna spojitev vsake vrstice v eni
tabeli z vsako vrstico v drugi tabeli• Produkt tabel A (ima m vrstic) in B (ima n
vrstic) je tabela C (ima m x n vrstic)• Sam po sebi ni preveč uporaben, je pa
vmesni proces pri operaciji JOIN
12.5.2005 Podatkove baze 11
Produkt (2)
A B
A x B
12.5.2005 Podatkove baze 12
Projekcija
• Z operatorjem PROJECT izberemo niz stolpcev tabele
• Brez podvojenih vrstic
C project C
12.5.2005 Podatkove baze 13
Selekcija
• Operator SELECT izbere niz vrstic iz tabele na osnovi vrednosti v enem ali več stolpcih
• Ni isto kot SELECT v SQL!!• Analogen v SQL je WHERE
12.5.2005 Podatkove baze 14
JOIN
• Operator JOIN združuje produkt, selekcijo (in projekcijo)
• Horizontalno združi podatke iz vrstice ene tabele z vrsticami druge tabele po izrazu oz. kriteriju
• Primer kriterija:Enakost vrednosti določenega stolpca
12.5.2005 Podatkove baze 15
Join (2)
D E
Join
12.5.2005 Podatkove baze 16
Deljenje
• Operator deljenje izbere vrednosti stolpcev ene tabele, za katere obstajajo v drugi tabeli odgovarjajoči stolpci z odgovarjajočimi vrednostmi
F G (delitelj) Rezultat
12.5.2005 Podatkove baze 17
SQL
• Strukturirani povpraševalni jezik (Structured Query Language)
• Temelji na relacijski algebri• Jezik podatkovnih baz• Deklarativen, nepostopkoven jezik
Navedemo le, KAJ želimo, ni nam treba podati, KAKO naj to SQL stori
12.5.2005 Podatkove baze 18
SQL (2)
• Sestoji se iz:DDL – jezik za definicijo podatkov (datadefinition language)DML – jezik za rokovanje s podatki (datamanipulation languageNavidezne tabeleIntegritetaKontrola transakcijAvtorizacija
12.5.2005 Podatkove baze 19
DDL
• CREATE - ustvariTABLE – definiramo, ustvarimo tabelo, VIEW – navidezna tabela, INDEX – podatkovna struktura, omogoča hitrejši dostop do podatkov v tabeli
• DROP - izbriši• ALTER - spremeni
12.5.2005 Podatkove baze 20
CREATE TABLE• create table ime_tabele (
ime_stolpca1 format1,ime_stolpca2 format2,…ime_stolpcaN formatN);
• Primer:• create table svinja (
sow_id char(13), oce char(13), mati char(13), pasma char(2), dt_roj date);
12.5.2005 Podatkove baze 21
CREATE (2)• CREATE VIEW• create view svinja_iom as
select sow_id, oce, mati from svinja;
• CREATE INDEX• create index ind_id on svinja (sow_id);
• create index ind_ip on svinja (sow_id, pasma);
12.5.2005 Podatkove baze 22
DML
• Običajni ukazi jezika SQLSELECTINSERTDELETEUPDATECOMMITROLLBACK
12.5.2005 Podatkove baze 23
SELECT – FROM - WHERE
• Stavčni del SELECT določa stolpce rezultata
• Stavčni del FROM označuje tabele, iz katerih
• Stavčni del WHERE določa pogoje za stolpce tabel iz stavčnega dela FROM
12.5.2005 Podatkove baze 24
SELECT – FROM – WHERE (2)
• SELECT p1, p2, …, pnFROM r1, r2, …, rmWHERE c;
• Ekvivalentno relacijski algebri: projekcija: p1, p2, …, pnselekcija: cprodukt: r1, r2, …, rm
12.5.2005 Podatkove baze 25
SELECT (3)
• select sow_idfrom svinja;
• select distinct sow_idfrom svinja;
• select *from svinja;
• select sow_id, pasmafrom svinja;
12.5.2005 Podatkove baze 26
WHERE
• select sow_idfrom svinjawhere pasma=’11’;
• select sow_idfrom svinjawhere dt_roj>’20.1.2004’and pasma=’11’;
• Povezave: AND, OR, NOT, ( )• Primerjava: <, <=, >, >=, =, <>
12.5.2005 Podatkove baze 27
FROM
• select svinja.id, svinja.dt_roj, pripust.dt_pripustfrom svinja, pripustwhere svinja.id=pripust.id;
• select s.id, s.dt_roj, p.dt_pripustfrom svinja as s, pripust as pwhere s.id=p.id;
• V relacijski algebri: JOIN
12.5.2005 Podatkove baze 28
Ujemanje znakovnih nizov
• Nadomestni znak (wildcard):% - ustreza kateremkoli podnizu_ - ustreza kateremkoli znaku
• select idfrom svinjawhere oce like ‘04-1234-%’;
12.5.2005 Podatkove baze 29
Razvrstitev
• S pomočjo stavčnega dela ORDER BYASC - naraščajočeDESC – padajoče
• select pasma, sow_idfrom svinjawhere pasma asc, sow_id desc;
12.5.2005 Podatkove baze 30
DML - Unija
• select sow_id, oce, mati, pasmafrom svinja_farmaAwhere dt_roj > ’31.12.2003’unionselect sow_id, oce, mati, pasmafrom svinja_farmaBwhere dt_roj > ’31.12.2003’;
• A ∪ B A B
12.5.2005 Podatkove baze 31
DML - Presek
• select sow_id, oce, mati, pasmafrom svinja_farmaAwhere dt_roj > ’31.12.2003’intersectselect sow_id, oce, mati, pasmafrom svinja_farmaBwhere dt_roj > ’31.12.2003’;
• A ∩ B A B
12.5.2005 Podatkove baze 32
DML - Razlika
• select sow_id, oce, mati, pasmafrom svinja_farmaAwhere dt_roj > ’31.12.2003’exceptselect sow_id, oce, mati, pasmafrom svinja_farmaBwhere dt_roj > ’31.12.2003’;
• A \ B A B
12.5.2005 Podatkove baze 33
DML – vgrajene funkcije
• Preštej COUNT( ), vsota SUM( ), povprečje AVG( ), minimum MIN( ), maksimum ( ) …
• select count(*) from svinja;
• select pasma, min(dt_roj), max(dt_roj) from svinjawhere group by pasma;
12.5.2005 Podatkove baze 34
Vgnezdeni povpraševalni stavki
• select s. pasma, s.sow_idfrom svinja as swhere exists (
select ‘ t‘ from gnezdo as gwhere s.sow_id=g.sow_id);
• Kaj dobimo s tem povpraševalnim stavkom?
12.5.2005 Podatkove baze 35
INSERT, DELETE
• insert into svinja (sow_id, oce, mati, pasma, dt_roj) values(’31-123-13’, ’31-98-2’,’31-102-4’, 22, ‘2.4.2005’);
• delete from svinja where sow_id=’31-123-13’;
12.5.2005 Podatkove baze 36
UPDATE
• update ime_tabele setstolpec1=izraz1, stolpec2=izraz2, …where pogoj;
• update ime_tabele setstolpec1=sql-stavek …where pogoj;
• update svinja set oce= ’31-104-2’, pasma=11where sow_id=’31-123-13;
12.5.2005 Podatkove baze 37
Integriteta podatkov & pravila
• Integriteta ~ celost, popolnost• Shranjeni podatki morajo zadostiti
določenim pravilom, da so točni, pravilni & smiselni
• Poslovna pravila / omejitve• Vrste integritete:
EntitetnaReferenčnaPrilastkovna (omejitve domen)
12.5.2005 Podatkove baze 38
Omejitve domen
• Domena – množica veljavnih vrednosti za določen prilastek
• Da imajo ukazi INSERT in UPDATE smisel• Domene za PK:
Enolične vrednostiNOT NULL
• Domene za FK:Po tipu, dolžini, formatu ustrezati PK
12.5.2005 Podatkove baze 39
Informacije o domeni
• Opis prilastka v podatkovnem slovarju mora vsebovati:
Tip podatka (integer, float, char …)Dolžino (5 mest, 40 znakov, …)Razpon vrednosti – spodnja in zgornja mejaOmejitve – posebne omejitve na veljavnih vrednostihAli ima lahko vrednost NULLAli ima privzeto vrednost
12.5.2005 Podatkove baze 40
Entitetna integriteta
• Za vsako entiteto iz množice entitet mora obstajati prilastek ali skupina - primarni ključ, ki je enoličen, in ni brez vrednosti (ni NULL)
12.5.2005 Podatkove baze 41
Referenčne omejitve
• Omejitve vrednosti prilastkov entitet preko relacij med entitetami
• FK
• Npr.: prilastek SOW_ID v tabeli GNEZDO se nanaša na SOW_ID v tabeli SVINJA
12.5.2005 Podatkove baze 42
Primer
Ime tabele: GNEZDOPrimarni ključ: SOW_ID + PRAS_DT Tuji ključ: SOW_ID
Ime tabele: SVINJAPrimarni ključ: SOW_IDTuji ključ: /
FK
12.5.2005 Podatkove baze 43
Referenčne omejitve (2)
• V tabeli GNEZDO ne more obstajati zapis za svinjo XXXX, če ne obstaja zapis za to svinjo XXXX v tabeli SVINJA
• Lahko obstaja entiteta – svinja YYYY v tabeli SVINJA, brez, da bi za svinjo YYYY obstajal zapis v tabeli GNEZDO
• Nesmiselni zapisi v tabeli GNEZDO, če ne vemo, za kateto svinjo gre – manjka SOW_ID
12.5.2005 Podatkove baze 44
Poslovna pravila
• Medsebojna odvisnost entitet• Sosledje dogodkov v živinorejskih
produkcijskih sistemih• Primera:
Svinja z odbiro vstopa v čredo, jo pripustimo, prasi, jo odstavimo, ponovno pripustimo … vse do izločitveMerjasec vstopi v čredo, mu jemljemo seme ali ga pripuščamo na svinje … do izločitve
12.5.2005 Podatkove baze 45
Poslovna pravila (2)
med 0 in 25=zroj_p
med 0 in zroj_p=odst_p
dt_pras iste zap. prasitve>dt_odst
dt_insemin + 115 dni +- 5 dni=dt_pras
Tabela SVINJA
dt_roj pri starših>dt_roj
dt_vstopa>dt_izloc
dt_roj + 200 dni +- 30 dni=dt_vstopa
Tabela GNEZDO
12.5.2005 Podatkove baze 46
Naslednjič
• Podatkovne baze (DB) – zbirke podatkov
• Sistem za upravljanje podatkovnih baz (DBMS – database management system)
• Informacijski sistem v živinoreji