praktikum - efos · 2014-10-27 · atributi, vrste atributa, vrste podataka u sql-u primarni i...

62
Ekonomski fakultet u Osijeku Osijek, Gajev trg 7 Baze podataka i poslovni procesi PRAKTIKUM ZA ŠKOLSKU GODINU 2014/2015 Student:_____________________________ Indeks br.: ____________________________ Smjer: ____________________________ Predano: ____________________________

Upload: others

Post on 13-Feb-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

Ekonomski fakultet u Osijeku

Osijek, Gajev trg 7

Baze podataka i poslovni procesi

PRAKTIKUM ZA ŠKOLSKU GODINU 2014/2015

Student:_____________________________

Indeks br.: ____________________________

Smjer: ____________________________

Predano: ____________________________

Page 2: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

1

UPUTE ZA UPOTREBU PRAKTIKUMA

Ovaj je praktikum namijenjen studentima koji preferiraju postići:

osrednju razinu znanja iz područja modeliranja relacijskih baza podataka,

upoznati osnove logike i osnove relacijske algebre,

uvodno se upoznati sa sustavom za upravljanje bazama podataka SQLite, te

usvojiti osnove SQL-a.

Tko treba napraviti zadaće iz praktikuma? Primarno praktikum je namijenjen svim

studentima koji slušaju predmet „Baze podataka i poslovni procesi“. Rješenja zadataka iz

ovog praktikuma su dužni predati svi studenti. Na svaki list praktikuma, koji sadrži

rješenja zadataka, student se je dužan potpisati.

Kome i do kada treba predati praktikum? Praktikum treba predati u dogovorenom terminu

s predmetnim nastavnikom i asistenticom. Asistentica i demonstratorica će biti organizirane

da u dogovorenom terminu preuzmu sve praktikume.

Vrednovanje praktikuma: Bez predaje riješenog praktikuma nije moguće pristupiti ispitu.

Studentima koji na vrijeme predaju praktikum, imaju sve zadatke riješene, te nakon što se

pregledom utvrdi da imaju većinu (preko 50%) samostalno i točno riješenih zadataka,

praktikum se priznaje. Položene vježbe, te riješen i priznat praktikum su uz odgovarajući broj

dolazaka na nastavu (s obzirom na status studenta „redovni“ ili „izvanredni“), uvjet za upis

ocjene iz kolegija. Studenti koji su ispod-polovično uspješno riješili praktikum upućuju se na

ponovno rješavanje praktikuma.

Page 3: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

2

1. Uvod u modeliranje relacijskih baza podataka

Problemu modeliranja relacijske baze podataka moguće je pristupiti na više načina. Jedan od

načina je posredno, kreiranjem ER modela, te konverzijom ER modela u relacijski model

sukladno načelima pretvaranja ER modela u relacijski, odnosno R model. Ovaj postupak je

vrlo efikasan jer omogućava dobivanje relacijskog modela s niskom razinom nekontrolirane

redundancije, odnosno izgradnju relacijskog modela s visokom normalnom formom (NF).

Loša strana ovog postupka je to što zahtijeva dobro poznavanje ER modeliranja, te dobro

poznavanje pravila transformacije ER u R model. Nadalje, ovaj pristup zahtijeva više

vremena, a s obzirom da se ER model obično crta manualno, nedostatak je i potreba kreiranja

modela na papiru. U praksi se danas rijetko koristi ovaj pristup modeliranju relacijskih baza

podataka.

Drugi način kreiranja modela relacijske baze podataka kreće od komponiranih atributa u

početnu integralnu tablicu iz koje se postupkom vertikalne dekompozicije u okviru postupka

normalizacije kreira konačan normaliziran relacijski model baze podataka. U ovom se

postupku iz početne tablice dekompozicijom formiraju njoj slijedne tablice bez gubitka

zavisnosti i bez gubitka informacija. Postupak se dekompozicije ponavlja sve dok se ne dobiju

relacije u željenoj normalnoj formi. Obično se kod relacija s jednostavnim ključem

normalizacija dekompozicijom obavlja do treće normalne forme, jer dekompozicija u treću

normalnu formu podrazumijeva automatski i dekompoziciju u najvišu petu normalnu formu.

Kod složenih ključeva dekompozicija bi se trebala nastaviti kroz BCNF, te 4NF i 5NF, no u

praksi uobičajeno to se ne čini. Nakon postizavanja odgovarajuće normalne forme,

reverzibilnim postupkom, odnosno postupkom prirodnog pridruživanja potrebno je provjeriti

mogući gubitak informacije, odnosno pouzdanost provedene dekompozicije. Radi se o

zahtjevnom postupku koji objedinjava veći broj koraka, stoga se i ovaj postupak obično ne

koristi u pragmatičnim uvjetima.

Treći način je postupak vertikalne normalizacije sintezom. Ova metoda polazi od temeljnog

svojstva relacijskog modela, a to je da je relacijski model atributski model i da se među

atributima, odnosno entitetima koji nastaju kompozicijom i agregacijom uspostavljaju

funkcijske veze. Temeljem poznavanja algoritama za provođenje kreiranja relacijskog modela

baze podataka u odgovarajućoj normalnoj formi, moguće je pristupiti kreiranju

normaliziranog modela relacijske baze podataka u odgovarajućoj normalnoj formi. Iako je

ova metoda modeliranja vrlo popularna kod onih koji se bave modeliranjem relacijskih baza

podataka, ona zahtijeva dobro poznavanje relacijskog modela, te veliko iskustvo u

modeliranju baza podataka, stoga nije primjenjiva na početničkoj razini.

U praksi se najčešće pristupa intuitivno modeliranju jednostavnijih modela baza podataka,

posebno kada to rade programeri za potrebe razvoja manje složenih programskih rješenja.

Ovaj oblik modeliranja sadrži neke elemente relacijskog modeliranja baze podataka sintezom,

te neke elemente vertikalne normalizacije dekompozicijom. Praksa je mnoge sustave

Page 4: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

3

evidencije podataka iskustveno organizirala po načelima relacijskog modeliranja, stoga se

modeliranje takvih sustava svodi na korektnu transformaciju manualno ustrojene evidencije u

odgovarajući relacijski model baze podataka. Većina evidencija koje se vode u tabličnom

obliku, može se jednostavno transformirati u odgovarajući relacijski model. Eventualne

uočene anomalije u tako dobivenom modelu potrebno je postupkom dekompozicije

eliminirati, te se na taj način dobiva model relacijske baze podataka u željenoj normalnoj

formi. S obzirom da je ovaj oblik modeliranja najrasprostranjeniji, posebice među

početnicima, te s obzirom da ga je najlakše svladati, on će biti u ovom praktikumu ukratko

objašnjen. Treba imati na umu da je ovo uvod u modeliranje relacijskih baza podataka, stoga

za ozbiljan pristup modeliranju složenih baza podataka, u perspektivi treba savladati jedan od

prethodno navedenih postupaka modeliranja relacijskih baza podataka.

1.1. Intuitivan pristup modeliranju relacijskih baza podataka

Prije početka modeliranja potrebno je minimalno poznavati sljedeće pojmove:

Tablica-relacija-entitet

Atributi, vrste atributa, vrste podataka u SQL-u

Primarni i vanjski ključ

Osnove SQL-a.

Često u praksi ne postoje gotova normalizirana tablična rješenja u evidentiranju objekata

realnog svijeta, stoga je prije početka implementacije modela relacijske baze podataka kroz

sustav za upravljanje relacijskim bazama podataka (npr. MySQL, SQLite) potrebno načiniti

pripremne radnje. Te pripremne radnje obuhvaćaju sljedeće korake:

1. Dobro se upoznati s objektom realnog svijeta za koji se kreira model. Da bi se to

postiglo dobro je pokušati načiniti tablice na papiru s kojima bi se ručno vodila

evidencija o objektu realnog svijeta i događajima koji su vezani za taj objekt. Također

korisno je i pokušati unijeti nekoliko elemenata strukture objekta, te nekoliko

događaja vezanih za objekt u tablice na papiru kako bi se utvrdilo jesu li potrebni

podaci obuhvaćeni uspostavljenom ručnom evidencijom. Model u vidu tablica treba

iterativno popravljati dok se ne dobije zadovoljavajuće rješenje.

2. Tako dobivene tablice predstavljaju entitete, a njihova zaglavlja atribute. No, sljedeći

korak je analizirati atribute, te utvrditi jesu li takvi atributi prihvatljivi za direktnu

transformaciju u virtualni model baze podataka objekta realnog svijeta. Ako nisu,

potrebno je načiniti odgovarajuću transformaciju atributa njihovim razdjeljivanjem ili

objedinjavanjem. Npr. ako u jednoj koloni stoji naziv kolone: JMBG ili OIB, tu

kolonu treba razdijeliti u dvije kolone, ako pak postoje posebne kolone za mjesec, dan

i godinu, onda te tri kolone treba objediniti u jednu kolonu i slično. Također sve

istovjetne atribute u različitim tablicama ako su suvišni treba izbaciti iz modela, a ako

čine osnovu za kasnija međusobna povezivanja tablica, dobro je preimenovati, tako da

imaju u svim tablicama iste nazive (npr. RADNIK vs. DJELATNIK). Kolone

(atribute) u načelu treba prilagoditi tipovima podataka koji se koriste u SQL-u.

Page 5: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

4

3. Pokušati, ako postoji potreba, razdijeliti tablice na one koje opisuju strukturu od onih

koji opisuju događaje, odnosno po potrebi izdvojiti u nove tablice atribute koji tijekom

vremena rijetko mijenjaju svoju vrijednost (a ako ih i mijenjaju prethodno stanje ne

treba ostati zabilježeno), od tablica s atributima koji poprimaju više vrijednosti jedne

pojave tijekom vremena. Ova druga skupina atributa, odnosno njihove tablice, obično

se veže uz protok vremena stoga se u njima bilježi protok vremena (datum, eventualno

točno vrijeme). Zato u takvim tablicama obično egzistira vremenski atribut, a takve

tablice se nazivaju dnevnicima. Radi očuvanja veza tablica strukture s tablicama

dnevnika, tablice opisa strukture dobivaju šifre za elemente strukture, a u tablicama

dnevnika se stupci koji su opisivali strukturu zamjenjuju odgovarajućim šiframa

elemenata strukture.

4. Sagledati sve na papiru kreirane tablice i vidjeti u tablicama postoji li mogućnost

šifriranja pojedinih atributa. Svaki podatak koji se često pri unosu ponavlja ili ga je

moguće pojednostavljeno unijeti putem šifre, potrebno je zamijeniti šifrom. To se čini

na način da se u izvornoj tablici izvorni opisni atribut zamjeni atributom koji će

predstavljati šifru, te se kreira pomoćna tablica koja će sadržavati popis šifri i popisu

dodijeljen opis šifri. Unos putem šifri je pouzdaniji, brži i jednostavniji. Primjer

potrebe šifriranja je atribut „MJESTO“. U ovom slučaju izvorni atribut MJESTO u

izvornoj tablici biti će zamijenjen atributom „POŠTANSKI BROJ“, a u nova tablica -

pomoćna tablica – šifarnik – pod nazivom MJESTO sadržavati će atribute

POŠTANSKI BROJ i NAZIV MJESTA. Mjesto će se temeljem ovako formiranog

šifarnika unositi brže, manja će biti mogućnost pogreške, kao i mogućnost

nedosljednosti u unosu podataka. Prilikom ručnog unosa u jednoj situaciji se može

unijeti podatak za prvotni atribut MJESTO: „Slavonski brod“, a drugi put „S. Brod“.

Ovakav nekonzistentan unos onemogućit će npr. da se jednostavno, pomoću upita

dozna koje su osobe iz Slavonskog Broda. Često tablice šifarnika odgovaraju

tablicama strukture objekta. Tada treba objediniti u zajedničku tablicu šifarnik i opis

strukture objekta realnog svijeta. Primjer za takav slučaj je tablica OSNOVNO

SREDSTVO.

5. Kada su kreirane sve tablice - entiteti, te odgovarajući stupci – atributi, potrebno je u

tablicama definirati primarne ključeve. Treba analizirati koji bi atributi mogli poslužiti

kao primarni ključevi u pojedinim tablicama - relacijama. Idealno je sa stajališta

relacijskog modeliranja baze podataka koristiti, gdje god je to moguće, jedan atribut za

primarni ključ. Takav pristup pojednostavljuje obradu podataka sustavu za upravljanje

bazama podataka, ali i pojednostavljuje problem vertikalne normalizacije u relacijskoj

bazi podataka. Ako se radi o tablicama koje opisuju strukturu, kao primarni ključ

koristi se atribut koji posjeduje nepromjenjivo jedinstveno svojstvo. Ako se radi npr. o

polaznicima vozačkog tečaja, tada ime i prezime osobe nije dovoljno unikatno

svojstvo, pa se za identifikaciju, odnosno kao primarni ključ koriste šifre kao što su

JMBG ili OIB. Šifra kao primarni ključ koristi se i kod tablica šifarnika. Nešto

drugačija je situacija kod tablica dnevnika. S obzirom da se u takvim tablicama često

pojavljuje problem izbora odgovarajućeg primarnog ključa, ovaj problem se u praksi

često rješava uvođenjem dodatnog atributa AUTOBROJ koji broji događaje i kao

takav je unikatan za svaku promjenu stanja, te predstavlja idealni primarni ključ u

Page 6: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

5

tablicama dnevnika. Dodavanjem primarnih ključeva tablice se u potpunosti

transformiraju u relacije buduće relacijske baze podataka.

6. Nakon što su definirane sve tablice – entiteti, te njima pripadajući atributi (stupci), kao

i nakon definiranja svih primarnih ključeva, potrebno je uspostaviti veze između

tablica. Idealan je za razumijevanje mogućeg načina povezivanja tablica (relacija)

model zvijezde, koji kod relacijskog modela baze podataka podrazumijeva da se u

središte postavi tablica (tablice) dnevnika. Oko njih se poslažu tablice šifarnika, te

tablice strukture. Tablice se postavljaju u međusobno hijerarhijski odnos, odnosno u

odnos nadređeni i podređeni. U načelu jedna je ishodišna (početna – root) tablica, a

sve druge se prema njoj postavljaju kao podređene na jednoj ili više razina

podređenosti. Nakon toga se traže moguće veze između tablica, odnosno relacija.

Relacije šifarnika, odnosno atributi šifri se povezuju s odgovarajućim šiframa u

središnjoj tablici. Tada se između šifre u tablici šifri i šifre u središnjoj tablici

uspostavlja odnos 1:više, odnosno šifra se u tablici šifri zbog primarnog ključa

pojavljuje samo jedanput, dok se ta ista šifra u središnjoj tablici može pojaviti niti

jedanput, jedanput ili više puta. Ovakva veza je hijerarhijska i ako je model dobro

osmišljen u pravilu će uglavnom sve veze biti hijerarhijske. Treba uočiti kako

povezivanje koje se ostvaruje na ovaj način podržava kontroliranu redundanciju jer se

ista šifra može kontrolirano naći na više mjesta. Ostale, odnosno nekontrolirane

redundancije nisu poželjne u modelu relacijske baze podataka. Kako bi veza bila jasna

potrebno je linijom povezati atribute koji se vezom povezuju u centralnoj i vanjskim

tablicama. Ispravan model će imati uspostavljene veze među svim tablicama, s tim da

se između dvije tablice uspostavlja samo jedna veza. To ne znači i da će svaka tablica

biti povezana sa svakom, već će se vezama, kako je već navedeno, u pravilu

uspostaviti hijerarhija tablica. Već je od prije šifra u tablici šifri označena kao primarni

ključ i uz takav ključ, s obzirom na sudjelovanje u vezi, treba staviti oznaku 1. Šifra u

središnjoj (izvorišnoj) tablici postaje vanjski ključ i uz nju treba staviti oznaku za više

(M - eng. Many). Na istim načelima treba uspostaviti veze između središnje tablice

(relacije) i tablica (relacija) strukture, kao i između tablica (relacija) strukture i tablica

(relacija) šifri. Kada se uspostave i definiraju sve veze zaokružene su radnje na

kreiranju modela relacijske baze podataka za određeni segment realnog svijeta,

odnosno za određeni objekt realnog svijeta.

7. Nakon definiranja relacija i atributa, potrebno je definirati tipove atributa. U

primjerima koristit će se sljedeći tipovi podataka:

VARCHAR(n) – znakovna varijabla (n – broj znakova),

TEXT – znakovna varijabla,

INTEGER – cjelobrojne vrijednosti – koristi se i za auto-broj,

TIMESTAMP – datumska/vremenska varijabla i

NUMERIC(n,m) – numerička varijabla (n – broj znamenki, m – od toga

decimalnih mjesta).

Pored navedenih u SQL-u se koriste i drugi tipovi podataka, no zbog pojednostavljenja

oni u primjerima neće biti korišteni. Navedeni se tipovi podataka najčešće koriste u

praksi.

Page 7: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

6

8. Sljedeći korak u kreiranju modela baze podataka je zapisivanje samog modela baze

podataka prema sintaksi za zapisivanje relacijske sheme. U relacijskoj shemi baze

podataka entiteti se zapisuju velikim slovima. Prema tome, potrebno je imenovati

definirane relacije modela, a ta imena u biti su nazivi entiteta modela. Entiteti se

zapisuju u obliku imenice u jednini. Toj imenici se eventualno pridodaje pridjev koji

pomaže objasniti imenicu (npr. entitet BROD dobiva pridjev i nastaje entitet

PUTNIČKI BROD). Nakon entiteta u zagradi se navode velikim slovima zapisani

atributi koji su međusobno odvojeni velikim slovima. Ako se atribut sastoji od više

riječi, tada je korisno umjesto razmaknice između riječi koristiti donju crticu (npr.

PREZIME I IME zapisati PREZIME_I_IME). Na isti, prethodno opisan način može se

formirati i složeni naziv entiteta. Atribut odabran za primarni ključ se podvlači.

Entiteti koji su vanjski ključevi zapisuju se u obliku:

POVEZANI_ENTITET.ATRIBUT

Moguće je kroz relacijsku shemu zapisati i tipove atributa. Tipovi se od naziva atributa

odvajaju dvotočkom (npr. ŠIFRA_ZANIMANJA:Integer).

.

Primjer kreiranja relacijskog modela baze podataka za evidenciju radnog vremena radnika

Pretpostavka da je potrebno načiniti jednostavnu bazu podataka kao temelj za izgradnju

jednostavne poslovne programske aplikacije koja će bilježiti dolazak radnika na posao i

odlazak radnika s posla. Prema uputama prvotno je skicirana na papiru evidencija koja bi se u

ovom slučaju vodila manualno, na papiru.

1. Korak. Prikaz evidencije na papiru.

Prezime i ime Datum Vrijeme dolaska

Vrijeme odlaska

Razlog izlaska

Kovač Petar 1.7.2011 7:00 15:00

Žderić Mirko 1.7.2011 7:00 11:00 Sastanak

Vekić Anka 1.7.2011 7:00 15:00

Butko Želimir 1.7.2011 7:00 15:00

Žderić Mirko 1.7.2011 12:20 15:00

Kovač Petar 2.7.2011 7:00 15:00

Žderić Mirko 2.7.2011 7:00 11:00

Vekić Anka 2.7.2011 7:00 15:00

Za evidenciju dolaska na posao i odlaska s posla načinjena je tablica koja ima pet stupaca,

odnosno pet atributa. Kako bi se testirala ispravnost modela upisano je osam redova, odnosno

n-torki u početnu tablicu.

Page 8: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

7

2. Korak. Priprema i prilagodba atributa relacijskom modelu podataka

PREZIME I IME DOLAZAK ODLAZAK RAZLOG ODLASKA

Kovač Petar 2011.7.1 7:00:00 2011.7.1 15:00:00

Žderić Mirko 2011.7.1 7:00:00 2011.7.1 11:00:00 Sastanak

Vekić Anka 2011.7.1 7:00:00 2011.7.1 15:00:00

Butko Želimir 2011.7.1 7:00:00 2011.7.1 15:00:00

Žderić Mirko 2011.7.1 12:20:00 2011.7.1 15:00:00

Kovač Petar 2011.7.1 7:00:00 2011.7.1 15:00:00

Žderić Mirko 2011.7.1 7:00:00 2011.7.1 11:00:00

Vekić Anka 2011.7.1 7:00:00 2011.7.1 15:00:00

S obzirom da se u relacijskom modelu koristi zajednička varijabla za datum i vrijeme,

rekonstruirana je početna tablica na način da su stupci Datum i Vrijeme dolaska spojeni u

atribut DOLAZAK, te stupci Datum i Vrijeme odlaska u atribut ODLAZAK.

3. Korak. Razdjeljivanje početne tablice i izdvajanje tablica strukture u posebne tablice

DJELATNIK DOLAZAK ODLAZAK RAZLOG ODLASKA

100 2011.7.1 7:00:00 2011.7.1 15:00:00

120 2011.7.1 7:00:00 2011.7.1 11:00:00 Sastanak

130 2011.7.1 7:00:00 2011.7.1 15:00:00

144 2011.7.1 7:00:00 2011.7.1 15:00:00

120 2011.7.1 12:20:00 2011.7.1 15:00:00

100 2011.7.1 7:00:00 2011.7.1 15:00:00

120 2011.7.1 7:00:00 2011.7.1 11:00:00

130 2011.7.1 7:00:00 2011.7.1 15:00:00

DJELATNIK PREZIME I IME

100 Kovač Petar

120 Žderić Mirko

130 Vekić Anka

144 Butko Želimir

Djelatnici predstavljaju elemente strukture, stoga ih je zgodno izdvojiti u posebnu tablicu.

Kako je iz prethodnog prikaza vidljivo, uvedene su šifre za elemente strukture koje čine

poveznicu između dvije tablice. Ovo izdvajanje se inače čini i kod postupka normalizacije

dekompozicijom.

Page 9: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

8

4. Korak. Izdvajanje stupaca koji se mogu šifrirati (šifarnika) iz tablice dnevnika

DJELATNIK DOLAZAK ODLAZAK ŠIFRA RAZLOGA

100 2011.7.1 7:00:00 2011.7.1 15:00:00

120 2011.7.1 7:00:00 2011.7.1 11:00:00 1

130 2011.7.1 7:00:00 2011.7.1 15:00:00

144 2011.7.1 7:00:00 2011.7.1 15:00:00

120 2011.7.1 12:20:00 2011.7.1 15:00:00

100 2011.7.1 7:00:00 2011.7.1 15:00:00

120 2011.7.1 7:00:00 2011.7.1 11:00:00

130 2011.7.1 7:00:00 2011.7.1 15:00:00

ŠIFRA RAZLOGA RAZLOG ODLASKA

1 Sastanak

2 Pauza

3 Bolest

4 Osobni razlozi

Stupac pogodan za šifriranje u ovom primjeru je Razlog odlaska s posla. Naime, u

eksploataciji dnevnika (tablica evidencije dolazaka na posao) ove buduće relacijske baze

podataka moguće su nekonzistentnosti u unosu podataka o razlozima odlaska s posla. Npr.

moguće je jednom upisati za razlog Pauza, a drugi puta Stanka. Takvi slučajevi potencijalno

umanjuju analitičku vrijednost baze podataka. Uvođenjem se šifre u tablici dnevnika za

Razlog odlaska s posla i tablice šifarnika razloga odlaska s posla uvodi konzistentnost

informacije o razlozima odlaska s posla. Kroz tablicu se šifarnika razloga odlaska s posla

definira domena, odnosno skup svih vrijednosti koje u ovom slučaju razlog odlaska može

poprimiti. Time podaci u tablici dnevnika postaju konzistentni.

DJELATNIK PREZIME I IME

100 Kovač Petar

120 Žderić Mirko

130 Vekić Anka

144 Butko Želimir

Page 10: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

9

5. Korak. Definiranje primarnih ključeva

AUTOBROJ DJELATNIK DOLAZAK ODLAZAK ŠIFRA RAZLOGA

1 100 2011.7.1 7:00:00 2011.7.1 15:00:00

2 120 2011.7.1 7:00:00 2011.7.1 11:00:00 1

3 130 2011.7.1 7:00:00 2011.7.1 15:00:00

4 144 2011.7.1 7:00:00 2011.7.1 15:00:00

5 120 2011.7.1 12:20:00 2011.7.1 15:00:00

6 100 2011.7.1 7:00:00 2011.7.1 15:00:00

7 120 2011.7.1 7:00:00 2011.7.1 11:00:00

8 130 2011.7.1 7:00:00 2011.7.1 15:00:00

ŠIFRA RAZLOGA RAZLOG ODLASKA

1 Sastanak

2 Pauza

3 Bolest

4 Osobni razlozi

U tablicama za primarne ključeve izabrani su i podvučeni atributi koji su unikatni i

jednoznačni a u tablicama s njima povezane atribute. Izbornom primarnog ključa, praktično

su tablice transformirane u relacije. Kod tablice dnevnika nije postojao izdvojen atribut koji je

mogao unikatno i jednoznačno odrediti svaki događaj, stoga je uveden novi atribut koji je

nazvan AUTOBROJ. Ovaj atribut osigurava konzistentnost zapisa u tablici i osigurava

transformaciju tablice dnevnika u relaciju.

DJELATNIK PREZIME I IME

100 Kovač Petar

120 Žderić Mirko

130 Vekić Anka

144 Butko Želimir

Page 11: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

10

6. Korak. Uspostavljanje veza između relacija

1

M M

1

Kao što je slikom prikazano, u središta je postavljena, sukladno modelu zvijezde, relacija

dnevnika, a oko nje ostale relacije. Među vanjskim i primarnim ključevima (šiframa)

uspostavljena je hijerarhijska veza. S obzirom da se radi o jednostavnom modelu ovdje je

prikazana hijerarhija na dvije razine (1:M).

7. Korak. Definiranje tipova atributa.

AUTOBROJ – Integer (cjelobrojna vrijednost)

DJELATNIK – Integer (cjelobrojna vrijednost)

DOLAZAK – TimeStamp (datumska-vremenska vrijednost)

ODLAZAK – TimeStamp (datumska-vremenska vrijednost)

ŠIFRA RAZLOGA – Integer (cjelobrojna vrijednost)

PREZIME I IME – VarChar(35) (tekstualni sadržaj)

RAZLOG ODLASKA – VarChar(15) (tekstualni sadržaj)

Prethodnim popisom definirani su tipovi atributa. Cjelobrojna vrijednost se obvezno koristi za

primarne ključeve koji imaju svojstvo samo-uvećavanja – eng. AutoNumber. Takav primarni

ključ je i atribut AUTOBROJ u tablici dnevnika. U ovom primjeru je odabrana cjelobrojna

DJELATNIK PREZIME I IME

100 Kovač Petar

120 Žderić Mirko

130 Vekić Anka

144 Butko Želimir

AUTOBROJ DJELATNIK DOLAZAK ODLAZAK ŠIFRA RAZLOGA

1 100 2011.7.1 7:00:00 2011.7.1 15:00:00

2 120 2011.7.1 7:00:00 2011.7.1 11:00:00 1

3 130 2011.7.1 7:00:00 2011.7.1 15:00:00

4 144 2011.7.1 7:00:00 2011.7.1 15:00:00

5 120 2011.7.1 12:20:00 2011.7.1 15:00:00

6 100 2011.7.1 7:00:00 2011.7.1 15:00:00

7 120 2011.7.1 7:00:00 2011.7.1 11:00:00

8 130 2011.7.1 7:00:00 2011.7.1 15:00:00

ŠIFRA RAZLOGA

RAZLOG ODLASKA

1 Sastanak

2 Pauza

3 Bolest

4 Osobni razlozi

Page 12: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

11

vrijednost i za atribute obiju šifara. U praksi se zbog mogućih vodećih nula (npr. 001205) za

šifre koristi i VarChar tip podataka atributa. Pretpostavka je da u ovim šiframa neće biti

vodećih nula, stoga je Integer, odnosno cjelobrojna vrijednost, optimalan izbor. Kod VarChar

tipova vrijednosti atributa, odnosno tekstualnih sadržaja, potrebno je definirati maksimalan

broj mjesta koji sadržaj jednog polja relacije može poprimiti. Iskustveno se pokazalo da je za

prezimena i imena domicilnog stanovništva u Republici Hrvatskoj dovoljno 35 mjesta. Kod

razloga odlaska procijenjena je potreba za 15 mjesta (znakova).

8. Korak. Zapisivanje modela u vidu relacijskih shema

RADNO_VRIJEME ( AUTOBROJ, DJELATNIK.DJELATNIK, DOLAZAK,

ODLAZAK, ODLAZAK.ŠIFRA_RAZLOGA)

DJELATNIK ( DJELATNIK, PREZIME_I_IME)

ODLAZAK (ŠIFRA_RAZLOGA, RAZLOG_ODLASKA)

ili

RADNO_VRIJEME ( AUTOBROJ: Integer, DJELATNIK.DJELATNIK: Integer,

DOLAZAK: TimeStamp, ODLAZAK: TimeStamp,

ODLAZAK.ŠIFRA_RAZLOGA: Integer)

DJELATNIK ( DJELATNIK:Integer, PREZIME_I_IME:VarChar(35))

ODLAZAK (ŠIFRA_RAZLOGA:Integer, RAZLOG_ODLASKA:VarChar(15))

Rezultat modeliranja je relacijski model baze podataka zapisan uz pomoć relacijske sheme.

Kako je razvidno iz modela, njega čine tri međusobno povezane relacije kojima su pridruženi

odgovarajući entiteti.

Zadaci za vježbu:

1. U članku 8 Pravilnika o obliku i načinu vođenja popisa robe u trgovini na malo stoji:

„Podaci u knjigu popisa upisuju se na sljedeći način:

– u stupac 1.: redni broj

– u stupac 2.: datum upisa dokumenta o zaduženju robe, odnosno

razduženiju robe,

– u stupac 3.: naziv i broj dokumenta o zaduženju, odnosno razduženiju robe i

o drugim promjenama koje se odnose na ukupno zaduženje

odnosno razduženije robe (vraćanje robe, otpis robe ili dr.) ili na

promjenu cijene robe (neovisno o razlogu: promjene stope

poreza, marže ili dr.).

– u stupac 4.: ukupna vrijednost zaduženja robe.“

Temeljem ovih informacija načinite model relacijske baze za vođenje Knjige popisa.

2. Potrebno je napraviti model baze podataka koja će biti u funkciji evidentiranja

poslovnih promjena putem financijskog računovodstva. Za unos podataka koristi se

temeljnicom.

Page 13: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

12

Pomoć u rješavanju zadatka 2.:

Temeljnica za knjiženje u financijskom računovodstvu

TEMELJNICA ZA KNJIŽENJE br.

KONTO OPIS DUGUJE POTRAŽUJESTRANA

DNEVNIKA

Datum

NALOG ZAKNJIŽENJE

DIREKTOR VODITELJ RAČUNOVODSTVA

U ovom primjeru se obrađuje čest slučaj u modeliranju poslovne evidencije, a to je slučaj u

kojem se fizički dokument treba razdijeliti na dvije dnevničke tablice – relacije. Na

prethodnoj su slici zaokruženi dijelovi temeljnice koju treba predstaviti relacijskim modelom

Page 14: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

13

baze podataka. Zbog specifičnog značenja pojma „temeljnica“ u financijskom računovodstvu,

digitalni dnevnički dokument – tablica - nazvat ćemo Upisnik. S obzirom da se u opisu

knjiženja obično evidentira dokument temeljem kojega se obavlja knjiženje, opis u temeljnici

biti će rastavljen na stavke (atribute):

Opis knjiženja

Dokument tip

Dokument broj i

Dokument datum

Također da bi se onemogućio istodobni unos na dugovnu i potražnu stranu neke vrijednosti, u

modelu se stavke zaglavlja temeljnice Duguje i Potražuje zamjenjuju stavkama (atributima):

Identifikator knjiženja

Iznos

Osim navedenih stavki tablice, potrebno je rasporediti i sljedeće stavke (atribute):

Temeljnica broj

Datum temeljnice i

Konto

Temeljem navedenih stavki (atributa) iz fizičkog dokumenta Temeljnica formiraju se dvije

dnevničke tablice (entiteti):

Upisnik zaglavlje i

Upisnik stavke

Potrebno je formirati i tablice strukture/šifara koje se vežu uz tablicu Upisnik stavke, a u

funkciji su pojašnjenja značenja atributa Konto i Dokument tip. To su tablice (entiteti):

Konto i

Dokument.

Iz prethodno prikupljenih informacija načinite relacijski model baze podataka i prikažite ga

relacijskom shemom (tijek izrade prikažite na papiru i priložite zadatku).

Page 15: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

14

3. Temeljem prikazanog računa-otpremnice, načinite normalizirani relacijski model baze

podataka i iskažite ga uz pomoć relacijske sheme (tijek izrade prikažite na papiru i

priložite zadatku).

RAČUN-OTPREMNICA br.

NAZIV

od

Preuzeo:

Kupac:

ŠIFRAJEDINICAMJERE

Konto - skladište

Narudžbenica br.: od

Količina Cijena Vrijednost

Kontrolirao: Primio: Likvidirao:

PDV

Page 16: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

15

2. Osnove relacijske algebre

Relacijska algebra sastavni je dio relacijskog upitnog jezika. Operacije relacijske algebre

izvode se nad relacijama, a rezultat djelovanja operacija relacijske algebre je relacija ili

tablica. Relacijsku algebru čini niz operacija koje imaju relacije za parametre. Te operacije se

dijele u dvije skupine:

1. Operacije preuzete iz teorije skupova (unija, razlika, presjek i Kartezijev produkt) i

2. Operacije svojstvene teoriji oblikovanja i upravljanja relacijskim bazama podataka

(selekcija, projekcija, pridruživanje i dijeljenje).

Pridruživanje i dijeljenje u ovom praktikumu neće biti obrađeni. Prije upoznavanja s

relacijskom algebrom potrebno je poznavati osnove matematičke logike, kao i pojam unijske

kompatibilnosti. Uz narednom dijelu uz praktične primjere dani su zadaci za samostalno

rješavanje.

2.1. Osnovne operacije matematičke logike

Kod algebarske operacije selekcije kriterij (uvjet) selekcije može biti jednostavan ili složen.

Složen je uvjet sastavljen od više jednostavnih uvjeta koji nastaju povezivanjem jednostavnih

uvjeta logičkim operatorima i, ili i ne ( ˄, ˅, i ˥ ). O svakom logičkom uvjetu može se donijeti

sud, odnosno svaki logički uvjet može biti zadovoljen – istinit (npr. ako je rješenje jednadžbe

x=5 točno onda je ovaj iskaz istinit) ili nezadovoljen – neistinit (npr. ako rješenje jednadžbe

x=5 nije točno onda je ovaj iskaz lažan). Istinite tvrdnje biti će označene s T (eng. True), a

neistinite s F (eng. False)

Konjunkcija ( i , &, ˄ )

Sud F T

F F F

T F T

Disjunkcija (ili, |, ˅ )

Sud F T

F F T

T T T

Negacija (ne, ˥ )

Sud

F T

T F

Temeljem prethodnih tablica istinitosti binarnih sudova moguće je sagledati istinitost

višestruko složenih sudova. Taj postupak se naziva ispitivanje toka vrijednosti istinitosti

sudova.

Page 17: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

16

Primjer ispitivanja toka vrijednosti istinitosti sudova:

x y z x ili y z ili x ( x ili y ) i ( z ili x )

T T T T T T

T T F T T T

T F T T T T

T F F T T T

F T T T T T

F T F T F F

F F T F T F

F F F F F F

Ispitajte tok vrijednost istinitosti sudova za sljedeće slučajeve:

1. x ˄ (y ˅ x)

2. (x ˄ y) ˅ z

3. (x ˄ y) ˅ (z ˅ x)

4. (x ˄ y) ˅ ˥ z

5. (x ˄ ˥ y) ˅ ( ˥ z ˅ x)

6. ˥ (x ˄ y) ˅ (z ˄ k)

7. ˥ ((x ˄ y) ˅ z ˅ x))

Page 18: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

17

2.2. Problem unijske kompatibilnosti

Binarne operacije relacijske algebre unije, presjeka i razlike moguće je izvesti jedino na

unijski kompatibilnim relacijama. Relacije r(R) i s(S) su unijski kompatibilne:

1. ako te relacije imaju isti broj atributa (stupaca) i

2. ako odgovarajući stupci imaju iste domene.

Domene (DOM) predstavljaju skupove svih vrijednosti koje pojedini atributi relacija mogu

poprimiti. Ako atributi relacija imaju iste domene a različite nazive potrebno je načiniti

ujednačavanje naziva tako da bude R = S.

Primjer unijski kompatibilnih relacija:

a (ŠIFRA,BILJKA,KOLIČINA,PDV) - Početna relacija

ŠIFRA BILJKA KOLIČINA PDV

301 Trešnja 21 25

303 Jabuka 7 25

324 Kruška 43 25

421 Breskva 6 25

b (PDV, KOLIČINA, BILJKA, ŠIFRA) - Unijski kompatibilna relacija

PDV KOLIČINA BILJKA ŠIFRA

25 13 Višnja 301

25 21 Mandarina 303

25 7 Borovnica 324

c (OZNAKA, NAZIV, BROJ KOMADA, PDV) - Unijski kompatibilna relacija

OZNAKA NAZIV BROJ KOMADA

PDV

333 Orah 19 25

352 Šljiva 6 25

372 Kajsija 4 25

Relacija a i relacija b su unijski kompatibilne jer imaju isti broj atributa, te sadrže iste

atribute. Redoslijed atributa (stupaca) u relaciji, kao i redoslijed n-torki (redova) u relaciji nije

bitan. Relaciju b je moguće prilagoditi relaciji a zamjenom redoslijeda atributa u relaciji b.

Nakon prilagodbe redoslijeda atributa u relaciji b dobiva se relaciji a unijski kompatibilna

relacija d.

d (ŠIFRA,BILJKA,KOLIČINA,PDV) - Unijski kompatibilna relacija izvedena iz relacije b

ŠIFRA BILJKA KOLIČINA PDV

301 Višnja 13 25

303 Mandarina 21 25

Page 19: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

18

324 Borovnica 7 25

Relacija a i relacija c su unijski kompatibilne jer imaju isti broj atributa, iako nemaju iste

nazive atributa, atributi imaju iste domene. Prije provođenja algebarskih operacija unije,

presjeka i razlike između relacije a i relacije c potrebno je načiniti izmjene naziva atributa u

relaciji c sukladno nazivima u relaciji a. Nakon prilagodbe relacije c dobiva se relaciji a

unijski kompatibilna relacija e.

e (ŠIFRA,BILJKA,KOLIČINA,PDV) - Unijski kompatibilna relacija izvedena iz relacije c

ŠIFRA BILJKA KOLIČINA PDV

333 Orah 19 25

352 Šljiva 6 25

372 Kajsija 4 25

Provjerite unijsku kompatibilnost sljedećih parova relacija:

Primjer 1.

A V Z A V Z X

1 s 4 2 w 3 a

4 f 2 3 g 5 a

5 a 4 7 f 1 d

Jesu li ove dvije relacije unijski kompatibilne? ____________

Zašto? _____________________________________________________________________

Primjer 2.

A V Z V A Z

1 s 4 w 2 3

4 f 2 g 3 5

5 a 4 f 7 1

Jesu li ove dvije relacije unijski kompatibilne? ____________

Zašto? _____________________________________________________________________

Page 20: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

19

Primjer 3.

A V Z X S T Q R

2 w 3 a 1 s 4 d

3 g 5 a 4 f 2 a

5 a 4 a

7 f 1 d

Jesu li ove dvije relacije unijski kompatibilne? ____________

Zašto? _____________________________________________________________________

Načinite nekoliko primjera parova unijski kompatibilnih relacija:

Page 21: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

20

2.3. Temeljne algebarske operacije

Unija

Unija se izvodi na unijski kompatibilnim relacijama. Unija relacija r (R) i s (S) označava se s

r U s. Rezultat operacije unije ove dvije relacije je skup n-torki koji sadrži sve n-torke iz

relacije r i sve n-torke iz relacije s. Izuzimaju se samo n-torke relacije s koje su sadržane u

relaciji r, odnosno one n-torke relacije s čiji je primarni ključ već sadržan u relaciji r.

Primjer unije unijski kompatibilnih relacija:

Relacija r

ŠIFRA IME I PREZIME SPOL

3210 Marina Jurić Ž

3240 Vedrana Cota Ž

3381 Dino Rožić M

3445 Antonio Grgić M

Relacija s

ŠIFRA IME I PREZIME SPOL

3822 Milan Malin M

3940 Ema Skot Ž

3981 Lana Prpić Ž

Relacija r U s

ŠIFRA IME I PREZIME SPOL

3210 Marina Jurić Ž

3240 Vedrana Cota Ž

3381 Dino Rožić M

3445 Antonio Grgić M

3822 Milan Malin M

3940 Ema Skot Ž

3981 Lana Prpić Ž

Uopćeni primjeri riješenih zadataka unije dvaju unijski kompatibilnih relacija:

Zadatak 1.: Načinite uniju sljedećih relacija:

A B C A B C

1 R 5 5 D 3

2 T 2 6 E 2

3 D 4

4 S 1

Page 22: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

21

Rješenje: S obzirom da su početne relacije unijski kompatibilne relacije, rješenje zadatka je

relacija koja sadrži skup n-torki iz obje početne relacije. S obzirom da je atribut A relacija

primarni ključ, n-torke u novokreiranoj relaciji će biti složene prema primarnom ključu

relacije.

A B C

1 R 5

2 T 2

3 D 4

4 S 1

5 D 3

6 E 2

Zadatak 2.: Načinite uniju sljedećih relacija:

X F Q X F Q

3 t s 7 v X

2 a b 3 t s

9 g h

Rješenje: S obzirom da su početne relacije unijski kompatibilne relacije, rješenje zadatka je

relacija koja sadrži skup n-torki iz obje početne relacije. Kako se pojavljuju istovjetne n-torke

u obje relacije, n-torke iz druge relacije neće biti sadržane u konačnom rješenju. Stoga se

kreiranje rješenja obavlja u dva koraka:

1. korak – kreiranje skupa svih n-torki iz prve i druge početne relacije

X F Q

3 t s

2 a b

7 v X

3 t s

9 g h

2. korak – konačno rješenje se dobiva eliminiranjem ponavljajućih n-torki i sortiranjem n-

torki prema primarnom ključu relacije

X F Q

2 a b

3 t s

7 v X

9 g h

Page 23: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

22

Načinite tri unijski kompatibilne relacije r, s, t s po četiri proizvoljna atributa i pet n-torki

proizvoljnog sadržaja, te dokažite da vrijedi:

1. r U s = s U r

2. r U s U t = ( r U s ) U t

3. ( r U s ) U t = r U ( s U t )

Page 24: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

23

Razlika

Razlika se izvodi na unijski kompatibilnim relacijama. Razlika se relacija r (R) i s (S)

označava se s r - s. Rezultat operacije presjeka ove dvije relacije je skup n-torki koji sadrži

sve n-torke iz relacije r koje se ne nalaze u relaciji s.

Primjeri razlike unijski kompatibilnih relacija:

Relacija r.

ŠIFRA NAZIV ZEMLJA

4 Audi G

12 Ford USA

17 Mercedes G

19 Fiat I

Relacija s.

ŠIFRA NAZIV ZEMLJA

14 Peugeot F

17 Mercedes G

19 Fiat I

Relacija r – s.

ŠIFRA NAZIV ZEMLJA

4 Audi G

12 Ford USA

Relacija s – r.

ŠIFRA NAZIV ZEMLJA

14 Peugeot F

Uopćeni primjeri riješenih zadataka unije dvaju unijski kompatibilnih relacija:

Zadatak 1.: Načinite razliku sljedećih relacija:

A B C A B C

1 R 5 5 D 3

2 T 2 2 T 2

3 D 4 6 E 2

4 S 1

Page 25: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

24

Rješenje:

A B C

1 R 5

3 D 4

4 S 1

Zadatak 2.: Načinite razliku sljedećih relacija:

A B C A B C

5 D 3 1 R 5

2 T 2 2 T 2

6 E 2 3 D 4

4 S 1

Rješenje:

A B C

5 D 3

6 E 2

Načinite tri unijski kompatibilne relacije r, s, t s po četiri proizvoljna atributa i pet n-torki

proizvoljnog sadržaja, te provjerite vrijedi li:

1. r - s = s - r

2. r – ( s – t ) = ( r U s ) U t

3. ( r - s ) - t = r - ( s U t )

Page 26: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

25

Presjek

Presjek se izvodi na unijski kompatibilnim relacijama. Presjek relacija r (R) i s (S) označava

se s r ∩ s. Rezultat operacije presjeka ove dvije relacije je skup n-torki koji sadrži sve one n-

torke koje se nalaze i u relaciji r i u relaciji s.

Presjek je složena algebarska relacija koja se može dobiti djelovanjem algebarskih operacija

unije i presjeka:

r ∩ s = r – ( r – s )

Primjeri presjeka unijski kompatibilnih relacija:

Relacija r.

ŠIFRA NAZIV ZEMLJA

4 Audi G

12 Ford USA

17 Mercedes G

19 Fiat I

Relacija s.

ŠIFRA NAZIV ZEMLJA

14 Peugeot F

17 Mercedes G

19 Fiat I

Relacija r ∩ s.

ŠIFRA NAZIV ZEMLJA

12 Ford USA

17 Mercedes G

Uopćeni primjeri riješenih zadataka unije dvaju unijski kompatibilnih relacija:

Zadatak 1.: Načinite presjek sljedećih relacija:

A B C A B C

1 R 5 5 D 3

2 T 2 2 T 2

3 D 4 6 E 2

4 S 1

Page 27: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

26

Rješenje:

A B C

2 T 2

Zadatak 2.: Načinite presjek sljedećih relacija:

X F Q X F Q

2 a b 3 t s

3 t s 7 v X

9 g h 9 g h

Rješenje:

X F Q

3 t s

9 g h

Načinite tri unijski kompatibilne relacije r, s, t s po četiri proizvoljna atributa i pet n-torki

proizvoljnog sadržaja, te dokažite da vrijedi:

1. r ∩ s = s ∩ r

2. r ∩ s ∩ t = ( r ∩ s ) ∩ t

3. ( r ∩ s ) ∩ t = r ∩ ( s ∩ t )

Page 28: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

27

Kartezijev produkt

Kartezijev produkt je, poput unije, presjeka i razlike, minimalno binarna operacija jer se

izvodi na parovima relacija. Kartezijev se produkt relacija r (R) i s (S) označava s r X s.

Rezultat operacije Kartezijevog produkta ove dvije relacije je skup n-toriki kod kojega su

svakoj n-torki iz relacije r pridružene sve n-torke iz relacije s.

Primjer Kartezijevog produkta relacija:

Relacija r.

MATIČNI BROJ

PREZIME I IME

3521 Ribar Petar

3592 Grgić Franc

3604 Horvat Mirjana

Relacija s.

ŠIFRA PREDMET ECTS

11 Informatika 6

17 Statistika 6

Relacija r X s.

MATIČNI BROJ

PREZIME I IME ŠIFRA PREDMET ECTS

3521 Ribar Petar 11 Informatika 6

3521 Ribar Petar 17 Statistika 6

3592 Grgić Franc 11 Informatika 6

3592 Grgić Franc 17 Statistika 6

3604 Horvat Mirjana 11 Informatika 6

3604 Horvat Mirjana 17 Statistika 6

Ako je relacija definirana relacijskom shemom, a relacijsku shemu R čini konačan skup

različitih naziva atributa, odnosno atributa, tada je rezultat Kartezijevog produkta relacije r i

relacije s relacija, onda i samo onda ako relacija r i relacija s nemaju zajedničkih atributa (R ∩

S = 0). U protivnom, ako postoji barem jedan zajednički atribut (R ∩ S ≠ 0), tada je rezultat

Kartezijevog produkta relacije r i relacije s tablica. S obzirom na uvjet primarnog ključa

nužnog za egzistenciju relacije, da bi u slučaju kada R ∩ S = 0 rezultat Kartezijevog produkta

r X s bila relacija nužno je da nad takvom relacijom bude definiran složeni primarni ključ ili u

protivnom moguće je održanje relacije i uz jednostavan ključ uz uvjet da relacija s sadrži

samo jednu n-torku.

Page 29: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

28

Uopćeni primjeri riješenih zadataka Kartezijevog produkta dvaju relacija:

Zadatak 1.: Načinite Kartezijev produkt sljedećih relacija:

A B C D E F

1 R 5 a S 2

2 T 2 h T 1

3 D 4 m X 5

4 S 1

Rješenje:

A B C D E F

1 R 5 a S 2

1 R 5 h T 1

1 R 5 m X 5

2 T 2 a S 2

2 T 2 h T 1

2 T 2 m X 5

3 D 4 a S 2

3 D 4 h T 1

3 D 4 m X 5

4 S 1 a S 2

4 S 1 h T 1

4 S 1 m X 5

Jeli u ovom slučaju tablica ujedno i relacija? _____________________

Zadatak 2.: Načinite Kartezijev produkt sljedećih relacija:

X F F G T

2 a a 5 s

3 t s 7 X

g 9 h

Rješenje:

X F F G T

2 a a 5 s

2 a s 7 X

2 a g 9 h

3 t a 5 s

3 t s 7 X

3 t g 9 h

Jeli u ovom slučaju tablica ujedno i relacija? _____________________

Page 30: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

29

Zadatak 3.: Načinite Kartezijev produkt sljedećih relacija:

X F Q Z T

3 t s 1 s

9 g h

Rješenje:

X F Q Z T

3 t s 1 s

9 g h 1 s

Jeli u ovom slučaju tablica ujedno i relacija? _____________________

Načinite tri unijski kompatibilne relacije r, s, t s po četiri proizvoljna atributa i pet n-torki

proizvoljnog sadržaja, te dokažite da vrijedi:

1. r X s = s X r

2. r X ( s X t ) = ( r X s ) X t

Page 31: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

30

Projekcija

Projekcija je unarna operacija, odnosno operacija koja se izvodi nad jednom relacijom.

Projekcija je relacije r (R), gdje R konačan i ne prazan skup atributa:

R = {R1, R2, R3, …Rn}

relacija ili tablica koja sadrži iz skupa atributa R izdvojen ne prazan i konačan podskup

atributa s pripadajućim vrijednostima n-torki. Jednostavno rečeno, projekcijom se iz relacije

izdvajaju željeni stupci. Projekcija relacije r (R) kojom će se izdvojit drugi i treći stupac

relacije napisat će se na sljedeći način: ЛR1R2 ( r )

Primjer projekcije relacija:

Relacija r.

ŠIFRA PREDMET ECTS PREDAVANJA SEMINARI VJEŽBE

11 Informatika 6 2 1 1

17 Statistika 6 2 1 1

20 Matematika 6 3 0 1

23 Engleski jezik 5 1 0 1

24 Njemački jezik 5 1 0 1

Relacija : ЛŠIFRA, PREDMET ( r )

ŠIFRA PREDMET

11 Informatika

17 Statistika

20 Matematika

23 Engleski jezik

24 Njemački jezik

Uopćeni primjeri riješenih zadataka projekcije relacije:

Zadatak 1.: Načinite projekciju sljedeće relacije, tako da iz relacije izdvojite atribut T:

A S T

1 R 5

2 T 2

3 D 4

4 S 1

Page 32: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

31

Rješenje:

T

5

2

4

1

Jeli u ovom slučaju tablica ujedno i relacija? _____________________

Zadatak 2.: Načinite projekciju sljedeće relacije x uz uvjet ЛFFT ( x ):

F G T

a 5 s

s 7 X

g 9 h

Rješenje:

F F T

a a s

s s X

g g h

Zadatak 3.: Načinite projekciju sljedeće relacije x uz uvjet ЛAC ( x ):

A B C D E F

1 R 5 9 a m

2 T 2 7 f m

3 D 4 3 a m

4 S 1 5 a m

6 D 2 1 d g

8 W 6 1 t h

Rješenje:

A C

1 5

2 2

3 4

4 1

6 2

8 6

Jeli u ovom slučaju tablica ujedno i relacija? _____________________

Page 33: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

32

Načinite tri relacije r, s, t sa po četiri proizvoljna atributa i pet n-torki proizvoljnog sadržaja,

te od svake načinite proizvoljnu projekciju:

Page 34: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

33

Selekcija (restrikcija)

Selekcija je unarna operacija, odnosno operacija koja se izvodi nad jednom relacijom.

Selekcija iz relacije r izvodi se na način da se iz relacije r izdvajaju one n-torke koje

zadovoljavaju postavljeni uvjet. Ako se uvjet selekcije označi s K, onda se selekcija zapisuje

na sljedeći način: σ K ( r )

Kriterij (uvjet) selekcije može biti jednostavan ili složen, odnosno sastavljen od više

jednostavnih kriterija. Jednostavni kriterij nastaje usporedbom atributa relacije s drugim

atributima i/ili konstantama. Operatori usporedbe mogu biti: =, >, <, ≥, ≤, ≠. Složeni kriteriji

nastaju povezivanjem jednostavnih kriterija logičkim operatorima i, ili i ne ( ˅, ˄ i ˥ ).

Primjeri selekcije relacije:

Relacija r.

ŠIFRA PREDMET ECTS PREDAVANJA SEMINARI VJEŽBE

11 Informatika 6 2 1 1

17 Statistika 6 2 1 1

20 Matematika 6 3 0 1

23 Engleski jezik 5 1 0 1

24 Njemački jezik 5 1 0 1

Relacija σ ECTS=5 ( r )

ŠIFRA PREDMET ECTS PREDAVANJA SEMINARI VJEŽBE

23 Engleski jezik 5 1 0 1

24 Njemački jezik 5 1 0 1

Relacija σ SEMINATI>0 ( r )

ŠIFRA PREDMET ECTS PREDAVANJA SEMINARI VJEŽBE

11 Informatika 6 2 1 1

17 Statistika 6 2 1 1

Relacija σ PREDAVANJA≠VEŽBE ( r )

ŠIFRA PREDMET ECTS PREDAVANJA SEMINARI VJEŽBE

11 Informatika 6 2 1 1

17 Statistika 6 2 1 1

20 Matematika 6 3 0 1

Relacija σ ŠIFRA<17 ˅ ŠIFRA>23 ( r )

ŠIFRA PREDMET ECTS PREDAVANJA SEMINARI VJEŽBE

11 Informatika 6 2 1 1

24 Njemački jezik 5 1 0 1

Page 35: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

34

Relacija σ ŠIFRA≥17 ˄ ŠIFRA≤23 ( r )

ŠIFRA PREDMET ECTS PREDAVANJA SEMINARI VJEŽBE

17 Statistika 6 2 1 1

20 Matematika 6 3 0 1

23 Engleski jezik 5 1 0 1

Uopćeni primjeri riješenih zadataka selekcije relacije:

Zadatak 1.: Načinite selekciju u sljedećoj relaciji, tako da iz relacije izdvojite n-torke kod

kojih je vrijednost atributa S = „T“:

A S T

1 R 5

2 T 2

3 D 4

4 S 1

Rješenje:

A S T

2 T 2

Zadatak 2.: Načinite selekciju u sljedećoj relaciji, tako da iz relacije izdvojite n-torke kod

kojih je vrijednost atributa: S = 1 ili C = 1 ili D = 1:

A B C D E F

1 R 5 9 a m

2 T 2 7 f m

3 D 4 3 a m

4 S 1 5 a m

6 D 2 1 d g

8 W 6 1 t h

Rješenje:

A B C D E F

1 R 5 9 a m

4 S 1 5 a m

6 D 2 1 d g

8 W 6 1 t h

Page 36: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

35

Zadatak 3.: Načinite selekciju u sljedećoj relaciji, tako da iz relacije izdvojite n-torke kod

kojih je vrijednost atributa: A = 4 i C = 4:

A C

1 5

2 2

3 4

4 1

6 2

8 6

Rješenje:

A C

Zadatak 4.: Načinite selekciju u sljedećoj relaciji, tako da iz relacije izdvojite n-torke kod

kojih je vrijednost atributa G > X:

F G T X

a 5 s 4

s 7 X 7

g 9 h 5

Rješenje:

F G T X

a 5 s 4

g 9 h 5

Zadatak 5.: Načinite selekciju u sljedećoj relaciji, tako da iz relacije izdvojite n-torke kod

kojih je vrijednost atributa: F < „d“ i Q < „d“:

X F Q

2 a b

3 t s

9 g h

Rješenje:

X F Q

2 a b

Page 37: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

36

Načinite pet relacija i, k, r, s, t sa po četiri proizvoljna atributa i pet n-torki proizvoljnog

sadržaja, te od svake načinite proizvoljnu selekciju, s tim da barem dva uvjeta selekcije budu

složeni uvjeti:

Page 38: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

37

3. Uvod u SQLite

SQLite je iznimno mali sustav za upravljanje bazama podataka koji koristi za svoj rad veći

dio standardnih SQL instrukcija prema ANSI standardu SQL-92. Za razliku od većine drugih

popularnih složenijih sustava za upravljanje bazama ovaj sustav ne mora raditi u klijent-

serverskom obliku rada, te ga je moguće koristiti na vlastitom računalu bez posebne

instalacije i prilagođavanja pokretanjem izvršne datoteke koja se na vlastito lokalno računalo

može skinuti s Interneta. To podrazumijeva da nema potrebe za instalacijom Web servera na

vlastito računalo ili otvaranje korisničkog računa na nekom udaljenom računalu - Web

orijentiranom serveru.

Iako za SQLite postoje grafička sučelja koja olakšavaju rad i omogućavaju upotrebu SQL

instrukcija uz pomoć sustava izbornika bez poznavanja SQL jezika, upravo zbog intencije da

studenti nauče temelje SQL jezika, ovdje se inzistira na vježbanju u tzv. komandnom načinu

rada, gdje korisnik mora ručno upisivati instrukcije SQL-a kako bi ih savladao. Prema tome

za daljnje izvođenje vježbe nema potrebe tražiti i instalirati grafičko sučelje za rad u SQLite-

u.

SQLite je licenciran kao javno dobro, te ga se kao takvog bez ograničenja može skinuti s

interneta i koristiti na vlastitom računalu. Osim poznavanja SQL instrukcija potrebno je

vezano za SQLite poznavati par internih instrukcija koje će se koristiti za prilagodbu ispisa

podataka, te za pokretanje i napuštanje programa.

3.1. Preuzimanje programa s Interneta i pokretanje programa SQLite

Program na standardan način možete pronaći i skinuti na Web adresi:

http://www.sqlite.org/download.html

Otvaranjem navedene poveznice dobiva se sljedeća Web stranica:

Page 39: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

38

Zaokruženi dio, odnosno poveznica: sqlite-shell-win32-x86-3071000.zip (251.64 KB) je

mjesto koje treba izabrati, te kopirati na vlastito računalo. Preporuča se preuzimanje aktualne

verzije programa SQLite, a ona je 3.7.10. Pošto je izvršna datoteka komprimirana u Zip

formatu, potrebno ju je dekomprimirati. Korisno bi bilo dekomprimiranu datoteku postaviti na

desktop u novokreiranu mapu. Sljedeća slika prikazuje otvorenu mapu na desktopu koja je

nazvana „BP vježbe“ i u kojoj se nalazi datoteka:

sqlite3

Izgled takve mape prikazuje sljedeća slika:

-

Page 40: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

39

SQLite je izvorno napravljen za Linux-ove korisnike koji se najčešće koriste instrukcijskim

načinom rada (upisivanje instrukcija umjesto niza izbornika kao kod Windows-a), stoga se

prilikom starta SQLite-a potrebno služiti komandnom (DOS) linijom za upis instrukcija.

Naime, sam SQLite je moguće pokrenuti dvoklikom na njegovu ikonu, no takvo pokretanje ne

pruža mogućnost kreiranja baze podataka, jer se baza podataka kreira dodavanjem naziva

baze podatka kao parametra sqlite3 komandnoj instrukciji. S obzirom da je rad s komandnom

(DOS) linijom prilično složen za one koji ne poznaju rad u DOS-u, potrebno je ovo

ograničenje zaobići malim trikom. To će se učiniti kreiranjem tzv. batch datoteke koja će

sadržavati komandnu instrukciju za pokretanje sqlite3 izvršne datoteke te naziv baze podataka

koja se kreira. Pretpostavimo da će se baza podataka za vježbanje nazvati: BPvjezbe, tada

instrukcija za pokretanje SQLite-a i kreiranje/otvaranje baze podataka BPvjezbe treba

izgledati:

sqlite3 BPvjezbe

Ovu instrukciju potrebno je upisati u Notepadu i snimiti u istu mapu u kojoj se nalazi datoteka

sqlite3 (mapa: BP vježbe) pod nazivom: BPvjezbe.bat

Obratite pozornost da je prije snimanja datoteke u Notepadu potrebno promijeniti oblik

spremanja datoteke iz „Tekstualni dokumenti (*.txt)“ u „Sve datoteke“. Sljedeće tri slike

prikazuju postupak kreiranja batch datoteke:

Page 41: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

40

Posljednja slika prikazuje kako se u mapi nakon snimanja pojavila još jedna ikona, a to je

ikona pod nazivom: BPvjezbe. Dvoklikom na ovu ikonu otvorit će se sqlite3 program koji će

otvoriti bazu podataka BPvjezbe.

Nakon dvoklika dobiva se sljedeći prozor s pokrenutim sqlite3 programom:

Page 42: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

41

Na ekvivalentan način, kreiranjem batch datoteka moguće je formirati ikone za pokretanje

sqlite3 programskog sustava u kombinaciji s drugim nazivima baza podataka.

3.2. Radu u SQLite-u

Nakon pokretanja SQLite-a prema prethodno opisanom modelu dobiva se prozor u kojem se

SQLite javlja korisniku s odazivom (promptom):

sqlite>

Iza ovog odaziva moguće je upisivati:

Instrukcije SQLite-a - počinju s znakom točka („.“) ili

Instrukcije SQL-a – počinju s SQL ključnom riječi.

Osnovne instrukcije SQLite-a koje će trebati za izvođenje vježbi su:

.databases – prikazuje koja je baza podataka otvorena

.exit – završetak rada u SQLite-u

.headers ON - uključuje prikazivanje atributa u ispisu

.headers OFF – isključuje prikazivanje atributa u ispisu

.help – prikazuje sve instrukcije SQLite-a s kratkim objašnjenjima

.mode columns – prikazivanje relacija u obliku tablica

.output ime_datoteke.txt – rezultate izvođenja SQL instrukcija upisuje u datoteku

(potrebno je navesti ime datoteke, npr. rezultat.txt)

.output stdout – rezultate izvođenja SQL instrukcija prikazuje na ekranu

.read ime_datoteke.sql – učitavanje SQL skriptne datoteke (instrukcije SQL-a)

Page 43: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

42

.shema ime_tablice – prikazuje relacijsku shemu za navedenu relaciju

.tables – prikazuje listu kreiranih tablica (relacija).

Primjeri upotrebe instrukcija SQLite-a:

1. Otvoren je SQLite, no pitanje je koja je baza podataka otvorena. Provjera koja je baza

podataka otvorena načinit će se upisom instrukcije .databases i pritiskom na tipku

Enter:

sqlite> .databases

Rezultat izvođenja ove instrukcije je tablica u kojoj se nalazi na prvom mjestu

datoteka otvorene baze podataka.

2. Provjera koje su sve tablice otvorene čini se na sljedeći način:

sqlite> .tables

Rezultat izvođenja ove instrukcije je popis kreiranih tablica.

3. Provjera relacijske sheme pojedine tablice obavlja se na sljedeći način (pretpostavka

da postoji kreirana tablica „student“):

sqlite> .shema student

Rezultat izvođenja ove instrukcije je relacijska shema za tablicu student.

4. Uz pomoć SQL instrukcije SELECT potrebno je ispisati sadržaj tablice „student“.

Ispis je potrebno načiniti u datoteku kako bi se rezultati ispisa mogli otiskati i priložiti

uz ovaj praktikum. Datoteka se treba zvati: student_vjezba.txt

sqlite> .headers ON

sqlite> .mode columns

sqlite> .output student_vjezba.txt

sqlite> select * from student;

sqlite> .output stdout

Prvom se instrukcijom uključuje prikazivanje zaglavlja, odnosno atributa relacije.

Druga definira prikazivanje relacije kao tablice. Treća definira ispis rezultata SQL

instrukcije SELECT u datoteku: student_vježba.txt. Četvrta instrukcija je instrukcija

SQL-a, dok peta instrukcija vraća iz moda ispisa rezultata rada SQL instrukcija u

datoteku na ispis rezultata rada SQL instrukcija na ekran.

Rezultat rada ovog niza instrukcija je nastanak datoteke: student_vjezba.txt u mapi

u kojoj se nalazi i ikona programa SQLite (u ovom slučaju: sqlite3). Da bi se

ispisani rezultati u datoteci vidjeli potrebno je otvoriti datoteku student_vjezba.txt

uz pomoć MS Worda. Naime, drugi programi neće korektno interpretirati prikaz

tablice jer SQLite formira ispis prilagođen Linux-u, tako da za skok u novi red

koristi samo FormFeed (FF) umjesto Carriage return (CR) + FormFeed (FF) kao što

je to slučaj kod Windows-a. MS Word će posao interpretacije korektno obaviti, no

može se desiti da zbog veličine fonta tablica bude razvučena u više redova. Tada se

Page 44: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

43

treba kompletan sadržaj u MS Wordu označiti i smanjiti veličina fonta bez

promjene tipa fonta. Promjena tipa fonta ugrozila bi formatiranje tablice.

5. Napuštanje SQLite-a:

sqlite> .exit

Rezultat ove instrukcije je zatvaranje prozora SQLite-a i prelazak u Windows

okruženje.

Prethodni primjeri rada u SQLite-u će se isprobati prilikom izvršavanja zadataka vezanih za

SQL. Treba uočiti da svaka instrukcija SQL-a mora završiti sa znakom točka-zarez („;“).

Instrukcije SQL-a mogu se protegnuti i kroz više redova. U novi red se prelazi pritiskom na

tipku Enter. Da je otvoren novi red u kojem se nastavlja upis SQL instrukcije prikazuje

odaziv:

. . . >

Dovršetkom SQL instrukcije i stavljanjem znaka točka-zarez, te pritiskom na tipku Enter

predaje se sadržaj SQL instrukcije na interpretaciju. Prema tome za izvođenje SQL instrukcija

nije potrebna nikakva dodatna procedura, već će se izvođenje instrukcije obaviti nakon

upisivanja znaka točka-zarez i pritiska tipke Enter.

Eventualne greške u sintaksi SQLite će prijaviti. U slučaju pojave greške, bilo kod upisivanja

instrukcije SQLite-a ili SQL-a, tekst greške treba pažljivo pročitati, te ponovno načiniti upis

instrukcije sukladno pravilima sintakse.

Page 45: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

44

4. Uvod u SQL

SQL je složen upitni jezik za rad s relacijskim bazama podataka s velikim brojem instrukcija,

bogatom sintaksom i velikim mogućnostima. Savladavanje SQL-a podrazumijeva dobro

poznavanje relacijskog modela podataka, relacijske algebre, te bogato iskustvo koje je

proporcionalno vremenu provedenom u radu s SQL-om. Intencija ovog praktikuma nije

osposobljavanje vrhunskih eksperata za SQL, već otvaranje vrata početnicima za

razumijevanje principa rada SQL-a prilikom baratanja relacijskim bazama podataka. U vezi s

tim u praktikumu će biti prikazani jednostavni zadaci koji se odnose na rad s SQL

instrukcijama. Nakon prikazanih zadataka primjera, biti će zadani zadaci za samostalni rad

studenata u SQL-u.

Početnička razina poznavanja SQL-a podrazumijeva poznavanje osnovnih instrukcija iz:

Jezika za oblikovanje baza podataka (Data Definition Language) i

Jezika za manipulaciju s podacima (Data Manipulation Language)

U okviru DDL-a biti će elementarno obrađene sljedeće instrukcije:

CREATE TABLE – kreira tablicu (relaciju)

ALTER TABLE – mijenja relacijsku shemu pojedine tablice (relacije)

DROP TABLE – briše tablicu (relaciju)

U okviru DML-a biti će obrađene sljedeće instrukcije:

INSERT - umeće n-torke u relaciju

UPDATE – mijenja sadržaj relacije

DELETE – briše n-torke relacije

SELECT – omogućava postavljanje upita nad tablicom.

SQL kao jezik nije osjetljiv na velika i mala slova, no treba obratiti pozornost na tip

operacijskog sustava, odnosno programskog jezika s kojim se baza podataka kombinira, jer

ako je operacijski sustav, odnosno programski jezik osjetljiv na velika i mala slova, to može

uzrokovati probleme u radu s nazivima baza podataka, tablica (relacija), atributa i slično. U

primjerima SQL instrukcije biti će pisane velikim slovima a parametri malim. Svaku SQL

instrukciju moguće je zapisati kroz više redova, kraj SQL instrukcije označava znak točka-

zarez (;).

4.1. SQL Instrukcije DDL-a

Rezultati djelovanja DDL instrukcija su kreiranje, izmjena i brisanje tablica, pogleda i

indeksa. Na polaznoj razini dovoljno je poznavati instrukcije za rad s tablicama (relacijama),

stoga će se u ovom praktikumu tim instrukcijama posvetiti pozornost:

Kreiranje tablica (relacija)

Temeljem definirane relacijske sheme relacijske baze podataka pristupa se kreiranju tablice

(relacije). Ključni elementi za kreiranje tablice (relacije), osim naziva tablice (entitet) su

njezini atributi. Atributi čine kolone tablice i o njima je potrebno znati i definirati sljedeće:

Page 46: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

45

Naziv atributa

Tip atributa (izdvojeni su za početničku razinu znanja sljedeći atributi:

VARCHAR(n), TEXT, INTEGER, TIMESTAMP NUMERIC(n,m)

sa širinom ili preciznosti ili razmjerom (za numeričke necjelobrojne vrijednosti)

Null vrijednost (može li se atributu dodjeliti ili ne NULL vrijednost)

Primarni ključ

Vanjski ključ/ključevi

Jedinstvenost (Unique) odnosno ne mogućnost pridruživanja više istovjetnih

vrijednosti atributu (koloni)

Predefinirana vrijednost (Default Value) – vrijednost koja će biti dodjeljena atributu

umjesto NULL vrijednosti

Opći oblik instrukcije za kreiranje tablice (relacije) ako je:

naziv prvog atributa primarni ključ,

nazivi trećeg i četvrtog atributa vanjski ključevi,

naziv drugog atributa mora biti unikatan,

naziv sedmog atributa mora biti unesen (ne smije biti NULL) i

vrijednost naziv n-tog atributa je predefinirana,

je sljedeći:

CREATE TABLE ime_tablice (

Naziv_atributa1 Tip_atributa PRIMARY KEY

Naziv_atributa2 Tip_atributa UNIQUE,

Naziv_atributa3 Tip_atributa,

Naziv_atributa4 Tip_atributa,

…..

Naziv_atributa7 Tip_atributa NOT NULL,

Naziv_atributa8 Tip_atributa,

….

Naziv_atributaN Tip_atributa DEFAULT početna_vrijednost,

FOREIGN KEY (Naziv_atributa3) REFERENCES

ime_1_povezne_tablice(naziv_atributa)

ON DELETE CASCADE ON UPDATE CASCADE,

FOREIGN KEY (Naziv_atributa4) REFERENCES

ime_2_povezne_tablice(naziv_atributa)

ON DELETE CASCADE ON UPDATE CASCADE);

Isti rezultat može se dobiti i drugačijom organizacijom parametara CREATE instrukcije, no

druge izvedbe CREATE instrukcije prelaze okvire početničkih znanja.

Ako primarni ključ treba biti broj koji se samostalno – automatski povećava, tada se primarni

ključ za tzv. brojač (auto-broj) definira na sljedeći način:

CREATE TABLE ime_tablice (Naziv_atributa INTEGER

PRIMARY KEY AUTOINCREMENT);

Upotrebu vanjskog ključa potrebno je prije upotrebe instrukcije CREATE, odnosno nakon

starta SQLite-a, aktivirati. To se čini uz pomoć instrukcije:

PRAGMA foreign_keys = ON;

Page 47: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

46

Kod definicije vanjskog ključa, prvo treba kreirati nadređene tablice (relacije), odnosno

relacije na koje se vanjski ključ referencira, odnosno tzv. roditeljske tablice, te potom tablice

koje sadrže reference na te vanjske tablice (to su podređene tablice ili tablice djece).

Prilikom kreiranja tablice (relacije) korisno je napraviti ispitivanje postoji li već relacija pod

navedenim imenom. To se čini upotrebom ključnih riječi IF NOT EXIST. Primjer može biti

sljedeći:

CRATE TABLE IF NOT EXIST ime_tablice (Naziv_atributa INTEGER PRIMARY KEY)

Uz SQL instrukcije, osim parametara mogu se naći i funkcije. Funkcije se razlikuju od

parametara po tome što uz ključnu riječ stoji zagrada. U zagradi obično stoji argument

funkcije ili više argumenata funkcije. Funkcija koja se često koristi uz instrukciju CREATE je

funkcija koja dodjeljuje kao default-nu vrijednost trenutnog datuma i vremena, odnosno

funkcija DATETIME. Vrijednost trenutnog datuma i vremena se kao predefinirana vrijednost

u model relacija dodjeljuje na sljedeći način:

CREATE TABLE vrijeme (a INTEGER PRIMARY KEY AUTOINCRIMENT,

b TIMESTAMP DEFAULT DATETIME('now'));

Kako je iz primjera vidljivo, vremenskoj varijabli prilikom umetanja novog reda, ako

drugačije nije definirano, dodjeljuje se vrijednost trenutnog datuma i vremena na računalu.

Primjer kreiranja baze podataka:

Zadatak je načiniti bazu podataka koja će sadržavati relaciju s popisom osnovnih sredstava i

datumom njihove nabavke:

1. Kreiranje relacijske sheme:

OSNOVNO_SREDSTVO (ŠIFRA:Integer, NAZIV:VarChar(50),

DATUM_NABAVE:TimeStamp)

2. Kreiranje baze podataka

U ovom je koraku potrebno načiniti batch proceduru za kreiranje datoteke OS.BAT u

mapi gdje se nalazi program SQLite uz pomoć NotePada koja će sadržavati instrukciju

za pokretanje SQLite-a i naziv baze podataka (vidjeti točku 3.1.) koja će se zvati

proba2:

sqlite3 proba2

Dvoklikom na novonastalu ikonu pokreće se SQLite i formira se nova baza podataka.

3. Kreiranje tablice (relacije)

Tablica (relacija) će se formirati upisivanjem sljedeće instrukcije:

CREATE TABLE osnovno_sredstvo (sifra INTEGER PRIMARY KEY,

naziv VARCHAR(50), datum_nabave TIMESTAMP);

Page 48: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

47

Izgled ekrana nakon obavljenog zadatka je sljedeći:

Zadaci:

1. U SQLite-u kreirajte bazu podataka pod nazivom: proba, te načinite tablice za sljedeći

relacijski model baze podataka:

PRVA(A1:Integer, DRUGA.A2:Integer, A3:Numeric(9,2))

DRUGA(B1:Integer, B2:VarChar(30))

Za potrebe realizacije ovog zadatka potrebno je načiniti batch proceduru za pokretanje

SQLite-a i otvaranje/kreiranje baze podataka (vidjeti točku 3.1.). Postupak kreiranja

tablica moguće je učiniti kroz dvije instrukcije SQL-a u SQLite-u. Da bi načinili dokaz

o obavljenom zadatku, kopirajte ekranski sadržaj s prozorom SQLite-a u MS Word ili

sličan program za obradu teksta (Ctrl + PrtScreen – kopiranje ekranskog sadržaja u

privremenu memoriju, Ctrl + V – prenošenje sadržaja privremene memorije u MS

Word ili njemu sličan program), ispišite ekranski sadržaj i priložite ga u ovaj

praktikum. Nije potrebno iz slike ekranskog sadržaja izdvajati prozor SQLite-a nekim

programskim alatom za obradu slike jer diferencirani vidljivi sadržaj desktop-a

predstavlja dokaz o samostalnoj izradi zadatka.

2. Za relacijski model namijenjen evidenciji radnog vremena iz točke 1.1. kreirajte bazu

podataka pod proizvoljnim imenom u SQLite-u, te tablice prema definiranoj

relacijskoj shemi baze podataka. Priložite slikovne dokaze o obavljenom zadatku.

3. Kreirajte vlastitu relacijsku shemu kao model segmenta realnog svijeta, prema njoj

načinite bazu podataka, te priložite slikovni dokaz o izvršenom zadatku.

Izmjena strukture tablice (relacije)

Za izmjenu strukture tablice (relacije) koristi se instrukcija ALTER TABLE. Za razliku od

standardne inačice SQL-a gdje postoji mogućnost brisanja kolone u tablici, SQLite tu

mogućnost ne podržava. Prema tome uz pomoć instrukcije ALTER TABLE u SQLite-u

moguće je:

Page 49: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

48

Preimenovati tablicu (relaciju)

Dodati novu kolonu (atribut) u tablicu (relaciju)

Preimenovanje tablice (relacije) obavlja se na sljedeći način:

ALTER TABLE ime_tablice RENAME TO novo_ime_tablice

Promjenu imena, ako se radi o relaciji koja je referencirana kao tablica (relacije) roditelj je

moguća jer će SQLite sam načiniti izmjene u definiciji vanjskog ključa u podređenoj,

odnosno podređenim relacijama (relacija dijete).

Promjena strukture tablice odnosno dodavanje kolona obavlja se slično ako kod CREATE

TABLE instrukcije. Opći oblik ALTER TABLE instrukcije koja dodaje novu kolonu (atribut)

u tablicu (relaciju) je:

ALETR TABLE ime_tablice ADD COLUMN naziv_novog_atributa Tip_atributa

ili

ALETR TABLE ime_tablice ADD naziv_novog_atributa Tip_atributa

Ključna riječ COLUMN je prema tome opciona. Prilikom upotrebe ALTER TABLE

instrukcije u ovom obliku treba imati na umu:

1. Nije moguće dodati kolonu (atribut) primarnog ključa u definiciji novog atributa

(kolone) jer dodavanjem primarnog ključa mijenja se struktura cijele relacijske sheme.

2. Predefinirana vrijednost kolone (atributa) ne može se definirati funkcijom (npr.

DEFAULT DATETIME('now'))

3. Nije moguće koristiti ograničenje sadržaja null vrijednosti atributa u tablici (NOT

NULL) niti koristi izraz UNIQUE jer relacija može sadržavati redove, prema tome

nova kolona mora moći imati null vrijednosti, pa prema tome i sadržavati ponovljive

vrijednosti.

4. Također nije moguće dodati kolonu (atribut) koji će biti referenciran kao vanjski ključ

na drugu tablicu (relaciju), s izuzetkom ako se radi o obje prazne tablice, odnosno

predefiniranoj null vrijednosti atributa u obje tablice.

Primjer izmjene strukture baze podataka:

Ako se u tablicu (relaciju) osnovno_sredstvo koja ima sljedeću relacijsku shemu:

osnovno_sredstvo (sifra INTEGER PRIMARY KEY,

naziv VARCHAR(50),

datum_nabave TIMESTAMP)

treba dodati kolonu s vrijednosti osnovnog sredstva, to će se postići sljedećom instrukcijom:

ALTER TABLE osnovno_sredstvo ADD COLUMN vrijednost NUMERIC(10,2);

Rezultat izvođenja prethodne instrukcije provjerite uz pomoć instrukcije:

. shema osnovno_sredstvo

Page 50: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

49

Ako je sve obavljeno kako treba rezultat obavljanja instrukcije ALTER TABLE je sljedeći:

Zadaci:

U SQLite-u kreirajte bazu podataka pod nazivom: proba1, te načinite tablice za sljedeći

relacijski model baze podataka:

PRVA(A1:Integer, DRUGA.A2:Integer, A3:Numeric(9,2))

DRUGA(B1:Integer, B2:VarChar(30))

1. Dodajte u prvu relaciju datumsko-vremenski atribut, te prikažite shemu prve relacije.

Priložite slikovne dokaze o obavljenom zadatku.

2. Preimenujte drugu relaciju iz naziva DRUGA u naziv TREĆA. Načinite popis

kreiranih relacija. Priložite slikovne dokaze o obavljenom zadatku.

3. Dodajte u treću tablicu alfanumeričko polje varijabilne dužine od 50 znakova, te

prikažite shemu treće relacije. Priložite slikovne dokaze o obavljenom zadatku.

Brisanje postojeće relacije (tablice)

Brisanje postojeće tablice (relacije) izvodi se instrukcijom DROP TABLE. Treba razlikovati

instrukciju DROP od instrukcije DELETE FROM. Instrukcija DROP briše tablicu zajedno s

njezinim sadržajem i svim vezama iz ukupne sheme baze podataka, dok instrukcija DELETE

FROM briše sadržaj tablice, no čuva njezinu definiciju. Opći izgled instrukcije DROP table

je:

DROP TABLE ime_tablice

Moguće je i brisanje uz prethodnu provjeru postojanja tablice. Ova provjera sprječava

prijavljivanje greške u izvođenju DROP TABLE instrukcije, ako tablica ne postoji, a njezin

oblik je:

DROP TABLE IF EXIST ime_tablice

Page 51: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

50

DROP TABLE instrukcija može prouzrokovati inkonzistenciju baze podataka, stoga se ovu

instrukciju treba koristiti s posebnim oprezom ako je uključeno referenciranje preko vanjskog

i primarnog ključa u tablicama. Stoga je preporučljivo, ako je uključen relacijski integritet,

prije brisanja određene tablice, obrisati sve n-torke iz tablica koje mogu narušiti relacijski

integritet.

Primjer izmjene strukture baze podataka:

U primjeru prikazanom na slici, koji se nadovezuje na prethodne primjere, načinjena je

provjera postojanja tablica u otvorenoj bazi podataka instrukcijom:

. tables

te brisanje instrukcijom DROP TABLE postojeće tablice osnovno_sredstvo.

DROP TABLE osnovno_sredstvo;

Konačno, načinjena je provjera jeli tablica osnovnih sredstava stvarno i obrisana.

Zadatak:

1. Kreirajte bazu podataka pod nazivom zadatak3, te u njoj formirajte dvije relacije

prema sljedećoj relacijskoj shemi:

PRVA(A1:Integer, DRUGA.A2:Integer, A3:Numeric(9,2))

DRUGA(B1:Integer, B2:VarChar(30))

Provjerite jesu li te tablice kreirane, potom obrišite tablice suprotnim redoslijedom od

redoslijeda kreiranja. Priložite slikovni dokaz o obavljenom zadatku.

Page 52: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

51

4.2. SQL Instrukcije DML-a

Rezultati djelovanja DML instrukcija su:

umetanje redova – n-torki (vrijednost atributa entiteta) u relaciju (tablicu),

izmjena redova – n-torki (vrijednost atributa entiteta) u relaciji (tablici),

brisanje redova – n-torki (vrijednost atributa entiteta) u relaciji (tablici) i

izdvajanje redova (n-torki) i stupaca (atributa) iz tablice prema definiranim kriterijima.

Instrukcije koje to omogućavaju su:

INSERT

UPDATE

DELETE

SELECT

Na polaznoj razini poznavanja SQL-a dovoljno je i osnovno poznavanje prethodno navedenih

instrukcija za rad s n-torkama tablica (relacija), stoga će se u ovom praktikumu tim

instrukcijama posvetiti pozornost samo u pogledu njihove elementarne upotrebe. Treba

napomenuti da se posljednja od instrukcija koja će se obraditi, instrukcija SELECT često

svrstava u poseban podjezik SQL-a, u tzv. DQL (Data Query Language), no nerijetko se

svrstava i u DML.

Umetanje redaka (n-torki) u tablicu (relaciju)

Unos novog reda (n-torke) u tablicu obavlja se uz pomoć instrukcije INSERT.

Najjednostavniji oblik upotrebe INSERT instrukcije je sljedeći:

INSERT INTO ime_tablice VALUES (vrijednost1, vrijednost2,..., vrijednostN);

Prilikom unosa vrijednosti u zagradama, redoslijed vrijednosti mora odgovarati redoslijedu

atributa u shemi relacije. Ako je redoslijed atributa nepoznat, moguće ga je saznati pomoću

SQLite instrukcije:

. shema ime_tablice

Prilikom unosa n-torke na navedeni način potrebno je unijeti vrijednosti za sve atribute. Ako

neka vrijednost atributa u n-torki nije poznata ili se radi o primarnom ključu definiranom kao

cjelobrojna vrijednost (integer) koja se automatski uvećava (autoincrement), tada se unosi null

vrijednost. Primjera radi, ako je shema relacije:

PRIMJER(a INTEGER PRIMARY KEY AUTOINCREMENT,

b VARCHAR(5), c INTEGER, d TEXT,

e NUMERIC(5,2), f TIMESTAMP)

tada unos vrijednosti za n-torku može biti:

INSERT INTO primjer VALUES (null, “pet“, 10, “ovo je tekst“, 999.99, “2011-12-23“);

Page 53: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

52

Treba uočiti:

Autoincrement atribut se unosi kao null vrijednost

VarChar atribut se unosi kao alfanumerički sadržaj pod navodnicima, isto kao i tekst

Cijelo-brojčana vrijednost se unosi kao cijeli broj

Brojčana vrijednost se unosi s decimalnom točkom

Vremenska vrijednost se unosi pod navodnicima u američkom obliku zapisivanja

datuma i vremena: GGGG-MM-DD SS:MM

Ako se podaci unose u više relacija, a relacije su međusobno povezane relacijskim

integritetom, prvo se podaci unose u relacije roditelje (nadređene relacije odnosno relacije

koje u vezi sudjeluju s 1), a potom u relacije djecu (podređene relacije, odnosno relacije koje

u vezi sudjeluju s M).

Ukoliko se podatke ne želi unositi redoslijedom kojim su poredani atributi u relacijskoj shemi

relacije (tablice), moguće ih je unijeti željenim redoslijedom, s tim da se prije toga moraju

navesti unutar instrukcije INSERT nazivi atributa. Opći oblik za takav oblik unošenja n-torke

je sljedeći:

INSERT INTO ime_tablice (naziv_atributa1, naziv_atributa2, ..., naziv_atributaN)

VALUES (vrijednost1, vrijednost2, ..., vrijednostN);

Prilikom ovakvog unosa podataka moguće je unijeti samo vrijednost primarnog ključa n-torke

i n-torka će biti formirana sa sadržajem predefiniranih ili null vrijednosti. Također je moguć

unos proizvoljnog broja vrijednosti atributa uz primarni ključ jedne n-torke, što znači da se ne

moraju unijeti svi atributi od jednom.

Primjeri unosa podataka u relaciju:

Formirana je jednostavna relacija (tablica) sljedećom shemom podataka:

INSERT_TEST(A:Integer, B:Innteger, C:text)

U tablicu (relaciju) su uneseni podaci (n-torke) prema oba navedena sustava unosa podataka,

što prikazuje sljedeća slika:

Page 54: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

53

Treba uočiti kako je prilikom unosa prve n-torke načinjena greška u pisanju INSERT

instrukcije (syntax error) jer je izostavljena jedna od ključnih riječi, a to je riječ VALUES.

Potom su unesena dva reda (n-torke) bez upisa atributa kojima se vrijednosti dodjeljuju. Te n-

torke unesene su sukladno redoslijedu atributa u shemi relacije. Potom je pokušan unos reda

bez jedne vrijednosti atributa n-torke što je rezultiralo greškom u unosu. Sljedeća tri unosa su

primjeri mogućih unosa n-torki uz navođenje atributa. Posljednja u nizu instrukcija je SQL

instrukcija SELECT uz pomoć koje su ispisane unesene n-torke.

Zadatak:

1. Kreirajte bazu podataka i u njoj relaciju sljedeće relacijske sheme:

TEST(T1:TEXT, T2:TIMESTAMP, T3:INTEGER, T4:NUMERIC(8,2))

Upišite u relaciju 10 n-torki kombinirajući različite oblike upisa podataka. Priložite

slikovni dokaz o obavljenom zadatku.

2. Kreirajte u bazi podataka relacije prema sljedećoj relacijsko shemi:

PRVA(A1:Integer, DRUGA.A2:Integer, A3:Numeric(9,2))

DRUGA(B1:Integer, B2:VarChar(30))

Unesite u nadređenu relaciju pet n-torki, a u podređenu deset n-torki. Prije kreiranja

relacija uključite instrukcijom PRAGMA relacijski integritet, a kroz vanjski ključ

definirajte kaskadno brisanje i ispravljanje. Priložite slikovni dokaz o obavljenom

zadatku.

Izmjena vrijednosti redaka (n-torke) u tablici (relaciji)

Izmjena vrijednost retka (n-torke) u relaciji obavlja se pomoću instrukcije UPDATE. Radi se

o instrukciji koja može poprimiti vrlo složene oblike, no na početničkoj razini poznavanja

SQL-a dovoljno je znati načiniti zamjenu:

Page 55: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

54

svih vrijednosti nekog ili više atributa u tablici i

određenih vrijednosti nekog ili više atributa u tablici.

Opći oblik UPDATE instrukcije za zamjenu svih vrijednosti više atributa u tablici je:

UPDATE ime_tablice SET naziv_atributa1=vrijednost1,

naziv_atributa2=vrijednost2, …, naziv_atributaN=vrijednostN;

Ovu instrukciju nije moguće primijeniti za atribute koji su definirani kao primarni ključ, niti

atribute koji su definirani kao UNIQUE. Također ovom instrukcijom nije moguće unijeti u

NOT NULL atribute vrijednost null.

Primjer zamjene svih vrijednosti nekog atributa instrukcijom UPDATE

Sljedeća slika prikazuje zamjenu svih vrijednosti atributa B u tablici s novom vrijednosti:

Kod zamjene određenih vrijednosti nekog ili više atributa u tablici (relaciji) potrebno je

definirati uvjet koji će odrediti na kojim mjestima treba zamjena biti učinjena. Uvjet se

definira unutar iskaza koji započinje ključnom riječi WHERE unutar instrukcije UPDATE.

Opći oblik UPDATE instrukcije za zamjenu određenih vrijednosti nekog ili više atributa u

tablici je:

UPDATE ime_tablice SET naziv_atributa1=vrijednost1,

naziv_atributa2=vrijednost2, …, naziv_atributaN=vrijednostN

WHERE naziv_atributaX=postojeća_vrijednostX;

Gdje X može poprimiti vrijednost od 1 do N

U prethodno prikazanom općem izrazu instrukcije UPDATE, s kojom se obavlja uvjetna

zamjena vrijednosti u tablici, prikazana je upotreba jednostavnog logičkog izraza. Uz znak

jednakosti SQLite u jednostavnim izrazima koristi i sljedeće operatore <, <=, >, >=, !=.

Složeni se uvjeti kreiraju kombinacijom jednostavnih uvjeta prema načelima trovalentne

Page 56: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

55

logike opisane u točki 2.1. Kao logički operatori povezivanja koriste se logički operatori AND

i OR. Primjer jednog složenog logičkog izraza u UPDATE instrukciji može biti:

UPDATE ime_tablice SET naziv_atributa2=vrijednost WHERE

naziv_atributa3 > 100 and naziv_atributa3<1000;

U ovom slučaju zamijenit će se vrijednosti drugog atributa novom vrijednosti, svagdje gdje je

treći atribut veći od 100 i manji od 1000.

Načelo izgradnje složenih uvjeta primjenjivat će se istovjetno i kod instrukcija DELETE i

SELECT.

Primjer složenog uvjeta za zamjenu vrijednosti atributa instrukcijom UPDATE

Na slici je prikazan slučaj kada se vrijednost atributa B mijenja u novu vrijednost ako je

vrijednost atributa A=3 ili vrijednost atributa C= „Peti red“:

Zadaci:

1. Načinite izmjenu vrijednosti jednog atributa u tablici (relaciji) TEST koja je kreirana u

okviru prethodne skupine zadataka. Priložite slikovni dokaz o obavljenom zadatku.

2. Načinite pet proizvoljnih izmjena vrijednosti atributa u tablici (relaciji) PRVA koja je

kreirana u okviru prethodne skupine zadataka, tako da načinite dva složena upita, te

kombinirate barem četiri različita znaka usporedbe. Priložite slikovni dokaz o

obavljenom zadatku.

Brisanje vrijednosti redaka (n-torke) u tablici (relaciji)

Brisanje vrijednost retka (n-torke) u relaciji obavlja se pomoću instrukcije DELETE. Radi se

o još jednoj instrukciji koja zbog uvjeta WHERE može poprimiti vrlo složene oblike, ali i

zbog drugih razloga, npr. zbog uvjetnog brisanja s povezanim tablicama, no na početničkoj

razini poznavanja SQL-a dovoljno je znati načiniti brisanje:

Page 57: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

56

n-torki koje zadovoljavaju određeni uvjet i

brisanje svih n-torki iz tablice (relacije).

Opći oblik instrukcije za uvjetno brisanje n-torki iz tablice s jednostavnim uvjetom je:

DELETE FROM ime_tablice WHERE naziv_atributaX=postojeća_vrijednostX;

gdje X može poprimiti vrijednost od 1 do N.

Primjer brisanja odabranih redaka (n-torki) it tablice (relacije)

Sljedeća slika prikazuje brisanje redova (n-torki) u tablici (relaciji) insert_test gdje je

vrijednost atributa B <> 10:

Kako je iz prethodne slike vidljivo, iz relacije su izbrisani svi redovi u kojima je vrijednost

atributa B bila različita od 10, a to su oni redovi u kojima je vrijednost atributa B bila 5.

Brisanje cjelokupnog sadržaja tablice (relacije), odnosno brisanje svih redova (n-torki) u

tablici (relaciji) obavlja se sljedećom instrukcijom:

DELETE FROM ime_tablice;

Primjer brisanja svih redova (n-torki) iz tablice (relacije)

Način brisanja svih n-torki iz relacije insert_test prikazan je na sljedećoj slici:

Page 58: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

57

Zadaci:

1. Izbrišite sve redove (n-torke) u tablici (relaciji) TEST koja je kreirana u okviru

prethodne skupine zadataka. Priložite slikovni dokaz o obavljenom zadatku.

2. Načinite pet proizvoljnih brisanja n-torki u tablici (relaciji) PRVA koja je kreirana u

okviru prethodne skupine zadataka, tako da načinite dva složena upita za brisanje, te

kombinirate barem četiri različita znaka usporedbe. Priložite slikovni dokaz o

obavljenom zadatku.

Prikaz vrijednosti iz tablice (relacije)

Instrukcija SQL-a koja omogućava prikaz sadržaja cjelokupne tablice je instrukcija SELECT.

Ovo je jedna od najsloženijih instrukcija SQL-a i zahtjeva dobro poznavanje algebarskih

operacija, posebice selekciju, projekciju i pridruživanje. Od početnika se očekuju elementarna

znanja vezana za upotrebu SELECT instrukcije a to su znanja vezana za rad s jednom

tablicom i to:

prikaz svih redova i stupaca iz tablice (relacije),

izdvajanje odabranih stupaca i svih redova iz tablice (relacije),

izdvajanje odabranih redova i svih stupaca iz tablice (relacije) i

izdvajanje odabranih redova i odabranih stupaca iz tablice (relacije)

Opći oblik SELECT instrukcije koja omogućava izdvajanje svih redova i stupaca iz tablice

(relacije) je:

SELECT * FROM ime_tablice;

Oznaka zvjezdice („*“) je tzv. joker i on zamjenjuje nazive svih stupaca relacije. U SQLite-u

je zgodno prije izvođenja instrukcije SELECT načiniti prilagodbu prikaza tablice uz pomoć

instrukcija SQLite-a:

sqlite> .headers ON

sqlite> .mode columns

Page 59: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

58

Primjer prikaza svih redova i stupaca iz tablice (relacije)

Na slici koja slijedi prikazan je rezultat izvođenja SELECT instrukcije. Njome su iz relacije

test ispisane sve n-torke (redovi) relacije (tablice). S obzirom da su prije toga zadane

instrukcije SQLite-a za prikaz zaglavlja tablice i formiranje kolonskog ispisa, rezultat

izvođenja ove operacije je prikazan u obliku tablice. Umjesto na ekran moguće je izvesti ispis

rezultata u datoteku. To se čini instrukcijom SQLitea:

sqlite> .output ime_datoteke.txt

Da bi se vratio ispis rezultata na ekran potrebno je nakon izvođenja SELECT instrukcije

uključiti ekranski prikaz SQLite instrukcijom:

sqlite> .output stdout

Opći oblik SELECT instrukcije koja omogućava izdvajanje svih redova i odabranih stupaca, u

ovom slučaju prvog i trećeg stupca (atributa) iz tablice (relacije) je:

SELECT naziv_atributa1, naziv_atributa3 FROM ime_tablice;

Redoslijed atributa kod navođenja atributa, kao i broj atributa (minimalno jedan a maksimalno

onoliko koliko atributa ima) nije bitan.

Primjer prikaza svih redova i odabranih stupaca iz tablice (relacije)

Na sljedećoj slici prikazana je projekcija relacije test kojom su izdvojeni prvi i teći stupac

(atribut) tablice relacije, te prikazane sve n-torke:

Page 60: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

59

Opći oblik SELECT instrukcije koja omogućava izdvajanje svih stupaca (atributa) i odabranih

redova (n-torki) iz tablice (relacije) je:

SELECT * FROM ime_tablice WHERE naziv_atributaX=postojeća_vrijednostX;

gdje X može poprimiti vrijednost od 1 do N.

Uočite da se u ovom slučaju radi o jednostavnom uvjetu izdvajanja redova (n-torki) iz tablice

(relacije). Prema pravilima objašnjenim uz instrukciju UPDATE, moguće je, obično i

potrebno za izdvajanje redaka, odnosno selekciju relacije, koristiti složene uvjete.

Primjer izdvajanja odabranih redova i svih stupaca iz tablice (relacije)

Na slici koja slijedi prikazana je mogućnost izdvajanja redaka (n-torki) iz tablice upotrebom

uvjeta izdvajanja. U primjeru su izdvojene sve n-torke kod kojih je atribut B<=5.

Page 61: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

60

Projekcija i selekcija se nad tablicom (relacijom) izvodi temeljem SELECT instrukcije koja

ima sljedeći opći oblik za jednostavni upit:

SELECT nazivi_atributa WHERE naziv_atributa=postojeća_vrijednost;

Kako je iz uopćene forme upita vidljivo, upit je kombinacija SELECT instrukcije za

projekciju i SELECT instrukcije za selekciju.

Primjer izdvajanja željenih redova(n-torki) i željenih stupaca (atributa) iz tablice (relacije)

Na slici je prikazano izdvajanje trećeg i drugog stupca (atributa) iz tablice (relacije) test, gdje

je vrijednost atributa C=“Prvi Red“ ili je vrijednost atributa B>5.

Page 62: PRAKTIKUM - EFOS · 2014-10-27 · Atributi, vrste atributa, vrste podataka u SQL-u Primarni i vanjski ključ Osnove SQL-a. Često u praksi ne postoje gotova normalizirana tablična

61

Zadaci:

Kreirajte bazu podataka i u njoj relaciju sljedeće relacijske sheme:

TEST(T1:TEXT, T2:TIMESTAMP, T3:INTEGER, T4:NUMERIC(8,2))

Upišite u relaciju 20 n-torki kombinirajući različite oblike upisa podataka. Pripremite tablični

ispisa zaglavljem rezultata u datoteku koja će se zvati: select.txt. Nakon izvođenja sva četiri

zadatka preuzmite sadržaj datoteke select.txt u MS Word ili njemu sličan program, te ispišite

rezultate i priložite ih kao dokaz o izvođenju ove vježbe. Također priložite slikovni dokaz

(ekranski prikaz SQLite-a) obavljanja zadataka.

1. Ispišite kompletan sadržaj relacije test u datoteku.

2. Načinite dvije projekcije relacije test u datoteku, s tim da prvi ispis sadrži atribute T3 i

T1, a drugi ispis atribute T2, T2, T3 i T4.

3. Izdvojite iz relacije test one atribute koji zadovoljavaju jedan složen proizvoljan uvjet.

4. Izdvojite iz relacije test atribute T1 i T4 za one atribute koji zadovoljavaju jedan

jednostavan proizvoljan uvjet.