81
SEMINARSKA NALOGA PODATKOVNE BAZE 2 NEPREMIČNINE Datum: 29. marec 2017 Avtorja: Matic Božič Nejc Martinjak

SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA PODATKOVNE BAZE 2

NEPREMIČNINE

Datum: 29. marec 2017 Avtorja:

Matic Božič

Nejc Martinjak

Page 2: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

I | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Kazalo 1 PODROBEN OPIS TEME 1 2 E-R DIAGRAM ZA RAZLIČNE POGLEDE 2 2.1 E-R DIAGRAM ZA POGLED POVPRAŠEVANJA IN OGLEDI 2 2.2 E-R DIAGRAM ZA POGLED POGODBE IN LASTNIŠTVA 3 3 POSTOPEK ZDRUŽITVE POGLEDOV (E-R DIAGRAMOV) IN KONČNI E-R DIAGRAM 4 3.1 ZDRUŽENI E-R DIAGRAM ZA PODATKOVNO BAZO NEPREMIČNINE 5 4 VLOGE IN FUNKCIJE 6 4.1 VLOGE IN FUNKCIJE – AVTOR MATIC BOŽIČ 6 4.2 VLOGE IN FUNKCIJE – AVTOR NEJC MARTINJAK 6 5 STREŽNIŠKE FUNKCIJE ZA DODAJANJE, SPREMINJANJE IN BRISANJE PODATKOV 7 5.1 STREŽNIŠKE FUNKCIJE – AVTOR MATIC BOŽIČ 7 5.1.1 ENTITETA OBCINE 7 5.1.2 ENTITETA REGIJE 8 5.1.3 ENTITETA KRAJI 9 5.1.4 ENTITETA POSLOVNIPARTNERJI 10 5.1.5 ENTITETA KATEGORIJE 11 5.1.6 ENTITETA NEPREMICNINE 13 5.1.7 ENTITETA OSEBE 14 5.1.8 ENTITETA OSEBELASTNISTVA 15 5.1.9 ENTITETA POSLOVNIPARTNERJILASTNISTVA 16 5.1.10 ENTITETA SLIKE 17 5.1.11 ENTITETA OGLASI 18 5.1.12 ENTITETA AGENTI 19 5.1.13 ENTITETA NEPREMICNINEAGENTI 20 5.1.14 ENTITETA OGLEDI 21 5.1.15 ENTITETA POVPRASEVANJA 22 5.2 STREŽNIŠKE FUNKCIJE – AVTOR NEJC MARTINJAK 23 5.2.1 ENTITETA NOTARJI 23 5.2.2 ENTITETA PLACILA 25 5.2.3 ENTITETA VRSTEPLACIL 26 5.2.4 ENTITETA POGODBE 28 5.2.5 ENTITETA POGODBEPRODAJALCI 30 5.2.6 ENTITETA OSEBE 31 5.2.7 ENTITETA OSEBELASTNISTVA 32 5.2.8 ENTITETA POGODBENEPREMICNINE 33 5.2.9 ENTITETA KRAJI 34 6 STREŽNIŠKE FUNKCIJE ZA OBDELAVE IN IZRAČUN STATISTIKE 35 6.1 STATISTIČNE FUNKCIJE – AVTOR MATIC BOŽIČ 35 6.1.1 FUNKCIJA VSENEPREMICNINE 35 6.1.2 FUNKCIJA CENIKNEPREMICNIN 36 6.1.2.1 Tip tCenikNpr 36 6.1.3 FUNKCIJA SEZNAMOGLASOV 37 6.1.3.1 Tip tOglasiNpr 37 6.1.4 FUNKCIJA URNIKOGLEDOV 38 6.1.4.1 Tip tUrnikOgledi 39 6.1.5 FUNKCIJA SEZNAMLASTNIKOV 40 6.1.5.1 Tip tLastnistva 40 6.2 STATISTIČNE FUNKCIJE – AVTOR NEJC MARTINJAK 41 6.2.1 FUNKCIJA SEZNAMPOGODBNEPREMICNIN 41 6.2.1.1 Tip tPogodbeNepremicnine 41 6.2.2 FUNKCIJA SEZNAMPLACIL 42 6.2.2.1 Tip tPlacila 42 6.2.3 FUNKCIJA SEZNAMPOGODB 43 6.2.3.1 Tip tPogodbe 43 6.2.4 FUNKCIJA SEZNAMNOTARJEV 44 6.2.4.1 Tip tNotarji 44

Page 3: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

II | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

7 ZAPISOVANJE DOGODKOV OZ. LOGIRANJE 45 7.1 USTVARJANJE TABEL ZA LOGIRANJE – AVTOR MATIC BOŽIČ 45 7.2 FUNKCIJE ZA BELEŽENJE SPREMEMB V BAZI – AVTOR MATIC BOŽIČ 46 7.3 USTVARJANJE TABEL ZA LOGIRANJE – AVTOR NEJC MARTINJAK 55 7.4 FUNKCIJE ZA BELEŽENJE SPREMEMB V BAZI – AVTOR NEJC MARTINJAK 56 8 DOLOČITEV VLOG IN UPORABNIKOV 60 8.1 DOLOČITEV VLOG IN UPORABNIKOV – AVTOR MATIC BOŽIČ 60 8.2 DOLOČITEV VLOG IN UPORABNIKOV – AVTOR NEJC MARTINJAK 60 9 DOLOČITEV AVTORIZACIJSKIH PRAVIC UPORABNIKOM IN VLOGAM 61 9.1 DOLOČITEV PRAVIC – AVTOR MATIC BOŽIČ 61 9.2 DOLOČITEV PRAVIC – AVTOR NEJC MARTINJAK 61 10 TESTNO POLNJENJE PODATKOVNE BAZE 62 10.1 TESTNO POLNJENJE PODATKOVNE BAZE – AVTOR MATIC BOŽIČ 62 10.2 TESTNO POLNJENJE PODATKOVNE BAZE – AVTOR NEJC MARTINJAK 66 11 TESTNO POSODABLJANJE PODATKOVNE BAZE 68 11.1 TESTNO POSODABLJANJE PODATKOVNE BAZE – AVTOR MATIC BOŽIČ 68 11.2 TESTNO POSODABLJANJE PODATKOVNE BAZE – AVTOR NEJC MARTINJAK 69 12 BRISANJE IZ PODATKOVNE BAZE 70 12.1 BRISANJE IZ PODATKOVNE BAZE – AVTOR MATIC BOŽIČ 70 12.2 BRISANJE IZ PODATKOVNE BAZE – AVTOR NEJC MARTINJAK 71 13 REZULTATI POIZVEDB STATISTIČNIH FUNKCIJ 72 13.1 REZULTATI STATISTIKA – AVTOR MATIC BOŽIČ 72 13.1.1 FUNKCIJA VSENEPREMICNINE 72 13.1.2 FUNKCIJA CENIKNEPREMICNIN 72 13.1.3 FUNKCIJA SEZNAMOGLASOV 72 13.1.4 FUNKCIJA URNIKOGLEDOV 73 13.1.5 FUNKCIJA LASTNIKINEPREMICNIN 73 13.2 REZULTATI STATISTIKA – AVTOR NEJC MARTINJAK 74 13.2.1 FUNKCIJA SEZNAMNOTARJEV 74 13.2.2 FUNKCIJA SEZNAMPOGODB 75 13.2.3 FUNKCIJA SEZNAMPLACIL 76 14 ZAKLJUČEK 77 15 IZJAVA O SAMOSTOJNEM DELU 78

Page 4: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

1 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

1 Podroben opis teme Storitve, ki jih podjetje z nepremičninami opravlja, vključuje oglaševanje nepremičnin, organizacijo ogledov

posameznih nepremičnin in beleženje strank in njihovih nepremičnin. Ko je nepremičnina oddana, za njo

prevzame odgovornost podjetje.

Podjetje vse potrebne podatke beleži v podatkovni bazi. To vključuje vse od strank in lastnikov do nepremičnin

in ogledov. Hranijo tudi podatke o svojih oglasih, ter agentih, ki dobijo dostop do aplikacij s katerimi lahko

vnašajo podatke v bazo, ter spreminjajo nekatere podatke, se pravi ne vseh.

Vidiki:

▪ Povpraševanja in ogledi

▪ Pogodbe in lastništva

Page 5: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

2 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

2 E-R Diagram za različne poglede

2.1 E-R Diagram za pogled Povpraševanja in ogledi

Page 6: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

3 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

2.2 E-R Diagram za pogled Pogodbe in lastništva

Page 7: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

4 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

3 Postopek združitve pogledov (E-R diagramov) in končni E-R diagram Ker sva pri izdelavi entitet za vidike že pred združitvijo precej sodelovala, ni bilo potrebno veliko spreminjati.

Postopek združitve je potekal tako, da sva vsak v svojem urejevalniku entitet ustvarila E-R diagram, nato pa

sva ustvarila novo datoteko za diagrame in ustvarila oba vidika. V vsak vidik sva kopirala svoje tabele in nato

dodala eno novo vmesno entiteto, ter zbrisala eno izmed tistih, ki so se pojavile dvakrat.

Naziv entitete Spremembe

Osebe Iz enega vidika sva jo zbrisala nato pa ponovno vključila iz drugega vidika

Kraji Iz enega vidika sva jo zbrisala nato pa ponovno vključila iz drugega vidika

Nepremicnine Iz enega vidika sva jo zbrisala nato pa ponovno vključila iz drugega vidika

OsebeLastnistva Iz vidika za oglede in povpraševanja sva jo vključila v vidik za pogodbe in lastništva

PovprasevanjaKategorije Dodala sva jo v glavni pogled

Ostale entitete Poenotenje poimenovanj

Page 8: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

5 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

3.1 Združeni E-R diagram za podatkovno bazo nepremičnine

Page 9: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

4 Vloge in funkcije

4.1 Vloge in funkcije – avtor Matic Božič Vloge Funkcije

Agents Lahko prebira, dodaja ali spreminja zapise za tabele, ki vsebujejo informacije, katere omogočajo nemoteno in organizirano delo

Customers Lahko prebira informacije o oglasih

4.2 Vloge in funkcije – avtor Nejc Martinjak

Vloge Funkcije

Administrators Lahko upravlja z podatki oseb, lastništev in pogodb na splošno

Notary Lahko upravlja z podatki kot so pogodbe

Page 10: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

7 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5 Strežniške funkcije za dodajanje, spreminjanje in brisanje podatkov

5.1 Strežniške funkcije – avtor Matic Božič

5.1.1 Entiteta obcine INSERT oz. UPDATE CREATE OR REPLACE FUNCTION obcineInsertUpdate (i$idObcine INTEGER, i$obcina VARCHAR) RETURNS INTEGER AS $body$ DECLARE

kljuc INTEGER = i$idObcine; BEGIN

IF i$idObcine IS NULL THEN BEGIN

kljuc = nextval('obcine_idobcine_seq'); INSERT INTO obcine (idobcine, obcina) VALUES (kljuc, i$obcina);

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE obcine SET obcina = i$obcina WHERE idobcine = i$idObcine;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql'; DELETE CREATE OR REPLACE FUNCTION obcineDelete (i$obcina VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM obcine WHERE idObcine = (SELECT idObcine FROM obcine WHERE obcina = i$obcina); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 11: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

8 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.2 Entiteta regije INSERT oz. UPDATE CREATE OR REPLACE FUNCTION regijeInsertUpdate(i$idRegije INTEGER, i$regija VARCHAR) RETURNS INTEGER AS $body$ DECLARE

kljuc INTEGER = i$idRegije; BEGIN

IF i$idRegije IS NULL THEN BEGIN

kljuc = nextval('regije_idregije_seq'); INSERT INTO regije (idregije, regija) VALUES (kljuc, i$regija);

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE regije SET regija = i$regija WHERE idregije = i$idRegije;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION regijeDelete (i$regija VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM regije WHERE idRegije = (SELECT idRegije FROM regije WHERE regija = i$regija); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 12: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

9 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.3 Entiteta kraji INSERT oz. UPDATE CREATE OR REPLACE FUNCTION krajiInsertUpdate (i$idKraji INTEGER, i$kraj VARCHAR, i$postnastevilka VARCHAR, i$obcina VARCHAR, i$regija VARCHAR) RETURNS INTEGER AS $body$ DECLARE

kljuc INTEGER = i$idKraji; BEGIN

IF i$idKraji IS NULL THEN BEGIN

kljuc = nextval('kraji_idkraji_seq'); INSERT INTO kraji (idkraji, kraj, postnastevilka, idObcine , idRegije) VALUES (kljuc, i$kraj, i$postnastevilka, (SELECT idObcine FROM obcine WHERE obcina = i$obcina), (SELECT idRegije FROM regije WHERE regija = i$regija));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE kraji SET kraj = i$kraj, postnastevilka = i$postnastevilka, idObcine = (SELECT idObcine FROM obcine WHERE obcina = i$obcina), idRegije = (SELECT idRegije FROM regije WHERE regija = i$regija) WHERE idkraji = i$idKraji;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql'; DELETE CREATE OR REPLACE FUNCTION krajiDelete (i$kraj VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM kraji WHERE idKraji = (SELECT idKraji FROM kraji WHERE kraj = i$kraj); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 13: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

10 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.4 Entiteta poslovnipartnerji INSERT oz. UPDATE CREATE OR REPLACE FUNCTION poslovnipartnerjiInsertUpdate(i$idPoslovniPartnerji INTEGER, i$poslovniPartner VARCHAR, i$kratica VARCHAR, i$naslov VARCHAR, i$davcnaStevilka VARCHAR, i$kraj VARCHAR) RETURNS INTEGER AS $body$ DECLARE

kljuc INTEGER = i$idPoslovniPartnerji; BEGIN

IF i$idPoslovniPartnerji IS NULL THEN BEGIN

kljuc = nextval('poslovnipartnerji_idposlovnipartnerji_seq'); INSERT INTO poslovnipartnerji (idposlovnipartnerji, poslovniPartner, kratica, naslov, davcnastevilka , idKraji) VALUES (kljuc, i$poslovniPartner, i$kratica, i$naslov, i$davcnaStevilka, (SELECT idKraji FROM kraji WHERE kraj = i$kraj));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE poslovnipartnerji SET poslovnipartner = i$poslovniPartner, kratica = i$kratica, naslov = i$naslov, davcnastevilka = i$davcnaStevilka, idKraji = (SELECT idKraji FROM kraji WHERE kraj = i$kraj) WHERE idPoslovniPartnerji = i$idPoslovniPartnerji;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql'; DELETE CREATE OR REPLACE FUNCTION poslovniPartnerjiDelete (i$poslovniPartner VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; --stevilo izbrisanih vrstic BEGIN

BEGIN DELETE FROM poslovnipartnerji WHERE idPoslovniPartnerji = (SELECT idPoslovniPartnerji FROM poslovnipartnerji WHERE poslovnipartner = i$poslovniPartner); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 14: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

11 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.5 Entiteta kategorije INSERT oz. UPDATE CREATE OR REPLACE FUNCTION kategorijeInsertUpdate(i$idKategorije INTEGER, i$kategorija VARCHAR, i$opis VARCHAR, $nadrejenaKategorija VARCHAR) RETURNS INTEGER AS $body$ DECLARE

kljuc INTEGER = i$idKategorije; BEGIN

IF i$idKategorije IS NULL THEN IF i$nadrejenaKategorija IS NULL THEN

BEGIN kljuc = nextval('kategorije_idkategorije_seq'); INSERT INTO kategorije (idkategorije, kategorija, opis) VALUES (kljuc, i$kategorija, i$opis);

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

kljuc = nextval('kategorije_idkategorije_seq'); INSERT INTO kategorije (idkategorije, kategorija, opis, idkategorijenadrejeni) VALUES (kljuc, i$kategorija, i$opis, (SELECT idKategorije FROM kategorije WHERE kategorija = i$nadrejenaKategorija));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; ELSE

BEGIN UPDATE public.kategorije SET idkategorijenadrejeni = (SELECT idkategorije FROM kategorije WHERE kategorija = i$nadrejenaKategorija), kategorija = i$kategorija, opis = i$opis WHERE idkategorije = i$idkategorije;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql';

Page 15: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

12 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

DELETE CREATE OR REPLACE FUNCTION kategorijeDelete (i$kategorija VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM kategorije WHERE idKategorije = (SELECT idKategorije FROM kategorije WHERE kategorija = i$kategorija); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 16: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

13 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.6 Entiteta nepremicnine INSERT oz. UPDATE CREATE OR REPLACE FUNCTION nepremicnineInsertUpdate(i$idNepremicnine INTEGER, i$stevilka VARCHAR, i$kvadratura NUMERIC, $steviloSob NUMERIC, i$opis text, i$cena NUMERIC, i$dosegljivost BOOLEAN, i$naslov VARCHAR, i$kategorija VARCHAR, i$kraj VARCHAR) RETURNS INTEGER AS $body$

DECLARE kljuc INTEGER = i$idNepremicnine;

BEGIN IF i$idNepremicnine IS NULL THEN

BEGIN kljuc = nextval('nepremicnine_idnepremicnine_seq'); INSERT INTO nepremicnine (idnepremicnine, stevilka, kvadratura, stevilosob, opis, cena, dosegljivost, naslov, idKategorije, idKraji) VALUES (kljuc, i$stevilka, i$kvadratura, i$steviloSob, i$opis, i$cena, i$dosegljivost, i$naslov, (SELECT idKategorije FROM kategorije WHERE kategorija = i$kategorija), (SELECT idKraji FROM kraji WHERE kraj = i$kraj));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE nepremicnine SET kvadratura = i$kvadratura, stevilosob = i$stevilosob, opis = i$opis, cena = i$cena, dosegljivost = i$dosegljivost, naslov = i$naslov, idKraji = (SELECT idKraji FROM kraji WHERE kraj = i$kraj), idKategorije = (SELECT idKategorije FROM kategorije WHERE kategorija = i$kategorija) WHERE idNepremicnine = i$idNepremicnine;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc; END; $body$

LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION nepremicnineDelete (i$stevilkaNepremicnine VARCHAR) RETURNS INTEGER AS $body$

DECLARE izbrisaneVrstice INTEGER;

BEGIN BEGIN

DELETE FROM nepremicnine WHERE idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = stevilkaNepremicnine);

GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT; EXCEPTION

WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.';

WHEN others THEN RAISE EXCEPTION 'Napaka.';

END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 17: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

14 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.7 Entiteta osebe INSERT oz. UPDATE CREATE OR REPLACE FUNCTION osebeInsertUpdate(i$idosebe integer, i$ime varchar, i$priimek varchar, i$naslov varchar, i$telefon varchar, i$email varchar, i$spol varchar, i$emso varchar, i$davcnastevilka varchar, i$kraj varchar) RETURNS integer AS $body$ DECLARE

kljuc integer = i$idosebe; BEGIN

IF i$idosebe IS NULL THEN BEGIN

kljuc = nextval('osebe_idosebe_seq'); INSERT INTO osebe (idosebe, ime, priimek, naslov , telefon, email, spol, emso, davcnastevilka, idkraji) VALUES (kljuc, i$ime, i$priimek, i$naslov , i$telefon, i$email, i$spol, i$emso, i$davcnastevilka, (SELECT idkraji FROM kraji WHERE kraj = i$kraj));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE -- update stavek BEGIN

UPDATE osebe SET ime = i$ime, priimek = i$priimek, naslov = i$naslov, telefon = i$telefon, email = i$email, spol = i$spol, emso = i$emso, davcnastevilka = i$davcnastevilka, idkraji = (SELECT idkraji FROM kraji WHERE kraj = i$kraj) WHERE idosebe = i$idosebe;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION osebeDelete (i$ime VARCHAR, i$priimek VARCHAR, i$emso VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM osebe WHERE idOsebe = (SELECT idOsebe FROM osebe WHERE ime = i$ime AND priimek = i$priimek AND emso = i$emso); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 18: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

15 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.8 Entiteta osebelastnistva INSERT oz. UPDATE CREATE OR REPLACE FUNCTION osebeLastnistvaInsertUpdate (i$idOsebeLastnistva INTEGER, i$odstotek NUMERIC, i$lastnikOd date, i$lastnikDo date, i$imeLastnika VARCHAR, i$priimekLastnika VARCHAR, i$emsoLastnika VARCHAR, i$stevilkaNepremicnine VARCHAR) RETURNS INTEGER AS $body$ DECLARE

kljuc INTEGER = i$idOsebeLastnistva; BEGIN

IF i$idOsebeLastnistva IS NULL THEN BEGIN

kljuc = nextval('osebelastnistva_idosebelastnistva_seq'); INSERT INTO osebelastnistva (idOsebeLastnistva, odstotek, lastnikOd, lastnikDo, idOsebe, idNepremicnine) VALUES (kljuc, i$odstotek, i$lastnikOd, i$lastnikDo, (SELECT idOsebe FROM osebe WHERE ime = i$imeLastnika AND priimek = i$priimekLastnika AND emso = i$emsoLastnika), (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE osebelastnistva SET odstotek = i$odstotek, lastnikOd = i$lastnikOd, lastnikDo = i$LastnikDo, idOsebe = (SELECT idOsebe FROM osebe WHERE ime = i$imeLastnika AND priimek = i$priimekLastnika AND emso = i$emsoLastnika), idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine) WHERE idOsebeLastnistva = i$idOsebeLastnistva;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION osebeLastnistvaDelete (i$idOsebeLastnistva INTEGER) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN -- izjeme DELETE FROM osebeLastnistva WHERE idOsebeLastnistva =i$idOsebeLastnistva; GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 19: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

16 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.9 Entiteta poslovnipartnerjilastnistva INSERT oz. UPDATE CREATE OR REPLACE FUNCTION poslovniPartnerjiLastnistvaInsertUpdate (i$idPoslovniPartnerjiLastnistva INTEGER, i$odstotek NUMERIC,i$poslovniPartner VARCHAR, i$stevilkaNepremicnine VARCHAR) RETURNS INTEGER AS $body$ DECLARE

kljuc INTEGER = i$idPoslovniPartnerjiLastnistva; BEGIN

IF i$idPoslovniPartnerjiLastnistva IS NULL THEN BEGIN

kljuc = nextval('poslovnipartnerjilastnistva_idposlovnipartnerjilastnistva_seq'); INSERT INTO poslovnipartnerjilastnistva (idPoslovniPartnerjiLastnistva, odstotek, idPoslovniPartnerji, idNepremicnine) VALUES (kljuc, i$odstotek, (SELECT idPoslovniPartnerji FROM poslovniPartnerji WHERE poslovniPartner = i$poslovniPartner), (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE poslovnipartnerjilastnistva SET odstotek = i$odstotek, idPoslovniPartnerji = (SELECT idPoslovniPartnerji FROM poslovnipartnerji WHERE poslovniPartner = i$poslovniPartner), idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine) WHERE idPoslovniPartnerjiLastnistva = i$idPoslovniPartnerjiLastnistva;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION poslovniPartnerjiLastnistvaDelete (i$idPoslovniPartnerjiLastnistva INTEGER) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; --stevilo izbrisanih vrstic BEGIN

BEGIN DELETE FROM poslovniPartnerjiLastnistva WHERE idPoslovniPartnerjiLastnistva = i$idPoslovniPartnerjiLastnistva; GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 20: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

17 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.10 Entiteta slike INSERT oz. UPDATE CREATE OR REPLACE FUNCTION slikeInsertUpdate (i$idSlike INTEGER, i$imeSlike VARCHAR,i$url text, i$stevilkaNepremicnine VARCHAR) RETURNS INTEGER AS $body$ DECLARE

kljuc INTEGER = i$idSlike; BEGIN

IF i$idSlike IS NULL THEN BEGIN

kljuc = nextval('slike_idslike_seq'); INSERT INTO slike (idSlike, imeSlike, url, idNepremicnine) VALUES (kljuc, i$imeSlike, i$url, (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE slike SET imeSlike = i$imeSlike, url = i$url, idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine) WHERE idSlike = i$idSlike;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION slikeDelete (i$imeSlike VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM slike WHERE idSlike = (SELECT idSlike FROM slike WHERE imeSLike = i$imeSlike); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 21: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

18 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.11 Entiteta oglasi INSERT oz. UPDATE

CREATE OR REPLACE FUNCTION oglasiInsertUpdate (i$idOglasi INTEGER, i$imeOglasa VARCHAR,i$datum date, i$aktivenDo date, i$stevilkaNepremicnine VARCHAR, i$oglasevalec VARCHAR) RETURNS INTEGER AS $body$ DECLARE

kljuc INTEGER = i$idOglasi; BEGIN

IF i$idOglasi IS NULL THEN BEGIN

kljuc = nextval('oglasi_idoglasi_seq'); INSERT INTO oglasi (idOglasi, imeOglasa, datum, aktivenDo, idNepremicnine, idPPOglasevalci) VALUES (kljuc, i$imeOglasa, i$datum, i$aktivenDo, (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine), (SELECT idPoslovniPartnerji FROM poslovniPartnerji WHERE poslovniPartner = i$oglasevalec));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE oglasi SET imeOglasa = i$imeOglasa, datum = i$datum, aktivenDo = i$aktivenDo, idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine), idPPOglasevalci = (SELECT idPoslovniPartnerji FROM poslovnipartnerji WHERE poslovniPartner = i$oglasevalec) WHERE idOglasi = i$idOglasi;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql';

DELETE

CREATE OR REPLACE FUNCTION oglasiDelete (i$imeOglasa VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; --stevilo izbrisanih vrstic BEGIN

BEGIN -- izjeme DELETE FROM oglasi WHERE idOglasi = (SELECT idOglasi FROM oglasi WHERE imeOglasa = i$imeOglasa); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 22: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

19 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.12 Entiteta agenti INSERT oz. UPDATE CREATE OR REPLACE FUNCTION agentiInsertUpdate (i$idAgenti INTEGER, i$uporabniskoIme VARCHAR,i$geslo VARCHAR, i$provizija NUMERIC, i$telefon VARCHAR, i$email VARCHAR, i$ime VARCHAR,i$priimek VARCHAR, i$emso VARCHAR) RETURNS INTEGER AS $body$ DECLARE

kljuc INTEGER = i$idAgenti; BEGIN

IF i$idAgenti IS NULL THEN BEGIN

kljuc = nextval('agenti_idagenti_seq'); INSERT INTO agenti (idAgenti, uporabniskoIme, geslo, provizija, telefon, email, idOsebe) VALUES (kljuc, i$uporabniskoIme, i$geslo, i$provizija, i$telefon, i$email, (SELECT idOsebe FROM osebe WHERE ime = i$ime AND priimek = i$priimek AND emso = i$emso));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE agenti SET uporabniskoIme = i$uporabniskoIme, geslo = i$geslo, provizija = i$provizija, telefon = i$telefon, email = i$email, idOsebe = (SELECT idOsebe FROM osebe WHERE ime = i$ime AND priimek = i$priimek AND emso = i$emso) WHERE idAgenti = i$idAgenti;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION agentiDelete (i$uporabniskoImeAgenta VARCHAR) RETURNS INTEGER AS $body$ DECLARE izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM agenti WHERE idAgenti = (SELECT idAgenti FROM agenti WHERE uporabniskoIme = i$uporabniskoImeAgenta); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 23: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

20 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.13 Entiteta nepremicnineagenti INSERT oz. UPDATE CREATE OR REPLACE FUNCTION nepremicnineAgentiInsertUpdate (i$idNepremicnineAgenti INTEGER, i$stevilkaNepremicnine VARCHAR, i$uporabniskoImeAgenta VARCHAR) RETURNS INTEGER AS $body$ DECLARE kljuc INTEGER = i$idNepremicnineAgenti; BEGIN

IF i$idNepremicnineAgenti IS NULL THEN BEGIN

kljuc = nextval('nepremicnineagenti_idnepremicnineagenti_seq'); INSERT INTO nepremicnineagenti (idNepremicnineAgenti, idAgenti, idNepremicnine) VALUES (kljuc, (SELECT idAgenti FROM agenti WHERE uporabniskoIme = i$uporabniskoImeAgenta), (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE nepremicnineagenti SET idAgenti = (SELECT idAgenti FROM agenti WHERE uporabniskoIme = i$uporabniskoImeAgenta), idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine) WHERE idNepremicnineAgenti = i$idNepremicnineAgenti;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION nepremicnineAgentiDelete (i$uporabniskoImeAgenta VARCHAR, i$stevilkaNepremicnine VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM nepremicnineAgenti WHERE idNepremicnineAgenti = (SELECT idNepremicnineAgenti FROM nepremicnineAgenti WHERE idAgenti = (SELECT idAgenti FROM agenti WHERE uporabniskoIme = i$uporabniskoImeAgenta) AND idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine)); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 24: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

21 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.14 Entiteta ogledi INSERT oz. UPDATE CREATE OR REPLACE FUNCTION oglediInsertUpdate (i$idOgledi INTEGER, i$casOgleda timestamp, i$opravljen BOOLEAN, i$mnenje VARCHAR, i$uporabniskoImeAgenta VARCHAR, i$stevilkaNepremicnine VARCHAR, i$povprasevalecIme VARCHAR, i$povprasevalecPriimek VARCHAR, i$povprasevalecEmso VARCHAR) RETURNS INTEGER AS $body$

DECLARE kljuc INTEGER = i$idOgledi;

BEGIN IF i$idOgledi IS NULL THEN

BEGIN kljuc = nextval('ogledi_idogledi_seq'); INSERT INTO ogledi (idOgledi, casOgleda, opravljen, mnenje, idAgenti, idPovprasevanja, idNepremicnine) VALUES (kljuc, I$casOgleda, i$opravljen, i$mnenje, (SELECT idAgenti FROM agenti WHERE uporabniskoIme = i$uporabniskoImeAgenta), (SELECT idPovprasevanja FROM povprasevanja WHERE idOsebe = (SELECT idOsebe FROM osebe WHERE ime = i$povprasevalecIme AND priimek = i$povprasevalecPriimek AND emso = i$povprasevalecEmso)), (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine));

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

ELSE BEGIN

UPDATE ogledi SET casOgleda = i$casOgleda, opravljen = i$opravljen, mnenje = i$mnenje, idAgenti = (SELECT idAgenti FROM agenti WHERE uporabniskoIme = i$uporabniskoImeAgenta), idPovprasevanja = (SELECT idPovprasevanja FROM povprasevanja WHERE idOsebe = (SELECT idOsebe FROM osebe WHERE ime = i$povprasevalecIme AND priimek = i$povprasevalecPriimek AND emso = i$povprasevalecEmso)), idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine) WHERE idOgledi = i$idOgledi;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$

LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION oglediDelete (i$casOgleda timestamp, i$uporabniskoImeAgenta VARCHAR) RETURNS INTEGER AS $body$

DECLARE izbrisaneVrstice INTEGER;

BEGIN BEGIN

DELETE FROM ogledi WHERE idOgledi = (SELECT idOgledi FROM ogledi WHERE casOgleda = i$casOgleda AND idAgenti = (SELECT idAgenti FROM agenti WHERE uporabniskoIme = i$uporabniskoImeAgenta)); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$

LANGUAGE 'plpgsql';

Page 25: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

22 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.1.15 Entiteta povprasevanja INSERT oz. UPDATE CREATE OR REPLACE FUNCTION povprasevanjaInsertUpdate (i$idPovprasevanja INTEGER, i$kraj VARCHAR, i$regija VARCHAR i$povprasevalecIme VARCHAR, i$povprasevalecPriimek VARCHAR, i$povprasevalecEmso VARCHAR, i$opis VARCHAR) RETURNS INTEGER AS $body$ DECLARE

kljuc INTEGER = i$idPovprasevanja; BEGIN

IF i$idPovprasevanja IS NULL THEN BEGIN

kljuc = nextval('povprasevanja_idpovprasevanja_seq'); INSERT INTO povprasevanja (idPovprasevanja, idKraji, idRegije, idOsebe, opis) VALUES (kljuc, (SELECT idKraji FROM kraji WHERE kraj = i$kraj), (SELECT idRegije FROM regije WHERE regija = i$regija), (SELECT idOsebe FROM osebe WHERE ime = i$povprasevalecIme AND priimek = i$povprasevalecPriimek AND emso = i$povprasevalecEmso), i$opis);

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; ELSE

BEGIN UPDATE povprasevanja SET idKraji = (SELECT idKraji FROM kraji WHERE kraj = i$kraj), idRegije = (SELECT idRegije FROM regije WHERE regija = i$regija), idOsebe = (SELECT idOsebe FROM osebe WHERE ime = i$povprasevalecIme AND priimek = i$povprasevalecPriimek AND emso = i$povprasevalecEmso), opis = i$opis WHERE idPovprasevanja = i$idPovprasevanja;

EXCEPTION WHEN check_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

END IF; RETURN kljuc;

END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION povprasevanjaDelete (i$imePovprasevalca VARCHAR, i$priimekPovprasevalca VARCHAR, i$emsoPovprasevalca VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM povprasevanja WHERE idPovprasevanja = (SELECT idPovprasevanja FROM povprasevanja WHERE idOsebe = (SELECT idOsebe FROM osebe WHEREime = i$imePovprasevalca AND priimek = i$priimekPovprasevalca AND emso = i$emsoPovprasevalca)); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 26: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

23 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.2 Strežniške funkcije – avtor Nejc Martinjak

5.2.1 Entiteta notarji INSERT oz. UPDATE

CREATE OR REPLACE FUNCTION notarjiinsertupdate (i$idnotarji integer,i$cenastoritve numeric ,i$telefonsluzba varchar,i$emailsluzba varchar,i$ime varchar, i$priimek varchar, i$emso varchar) RETURNS integer AS $ body$ DECLARE kljuc integer = i$idnotarji; BEGIN IF i$idnotarji IS NULL THEN BEGIN kljuc = nextval('notarji_idnotarji_seq'); INSERT INTO notarji (idnotarji, cenastoritve, telefonsluzba, emailsluzba, idosebe) VALUES (kljuc, i$cenastoritve, i$telefonsluzba, i$emailsluzba, (SELECT idosebe FROM osebe WHERE ime = i$ime AND priimek = i$priimek AND emso = i$emso)); EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; ELSE BEGIN UPDATE notarji SET cenastoritve = i$cenastoritve, telefonsluzba = i$telefonsluzba, emailsluzba = i$emailsluzba, idosebe = (SELECT idosebe FROM osebe WHERE ime = i$ime AND priimek = i$priimek AND emso = i$emso) WHERE idnotarji = i$idnotarji; EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; END IF; RETURN kljuc; END; $body$ LANGUAGE 'plpgsql';

Page 27: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

24 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

DELETE CREATE OR REPLACE FUNCTION notarjiDelete (i$emso VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM notarji WHERE idNotarji = (SELECT idNotarji FROM notarji WHERE idosebe =(SELECT idosebe FROM osebe WHERE emso = i$emso)); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

RETURN izbrisaneVrstice; END; $body$ LANGUAGE 'plpgsql';

Page 28: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

25 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.2.2 Entiteta placila INSERT oz. UPDATE CREATE OR REPLACE FUNCTION placilainsertupdate (i$idplacila integer,i$znesekplacila numeric, i$datumplacila date, i$vrstaplacila varchar,i$stevilkapogodbe integer) RETURNS integer AS $body$ DECLARE kljuc integer = i$idplacila; BEGIN IF i$idplacila IS NULL THEN BEGIN kljuc = nextval('placila_idplacila_seq'); INSERT INTO placila(idplacila,znesekPlacila,datumPlacila,idVrstePlacil,idPogodbe)VALUES(kljuc,i$znesekPlacila,i$datumPlacila, (SELECT idVrstePlacil FROM vrsteplacil WHERE vrstaplacila= i$vrstaPlacila),(SELECT idPogodbe from pogodbe WHERE stevilkapogodbe = i$stevilkapogodbe)); EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; ELSE BEGIN UPDATE placila SET znesekPlacila = i$znesekPlacila, datumPlacila = i$datumPlacila, idVrstePlacil = (SELECT idVrstePlacil FROM vrsteplacil WHERE vrstaplacila= i$vrstaPlacila), idPogodbe = (SELECT idPogodbe from pogodbe WHERE stevilkapogodbe = i$stevilkapogodbe) WHERE idplacila = i$idplacila; EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; END IF; RETURN kljuc; END; $body$ LANGUAGE 'plpgsql'

DELETE CREATE OR REPLACE FUNCTION placilaDelete (i$stevilkaPogodbePlacila INTEGER) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM placila WHERE idPlacila = (SELECT idPlacila FROM placila WHERE idpogodbe =(SELECT idpogodbe FROM pogodbe WHERE stevilkapogodbe = i$stevilkaPogodbePlacila)); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 29: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

26 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.2.3 Entiteta vrsteplacil INSERT oz. UPDATE CREATE OR REPLACE FUNCTION public.vrsteplacilinsertupdate ( i$idvrsteplacil integer,i$vrstaplacila varchar,i$nadrejenevrsteplacil varchar) RETURNS integer AS $body$ DECLARE kljuc integer = i$idvrsteplacil; BEGIN IF i$idvrsteplacil IS NULL THEN IF i$nadrejenevrsteplacil IS NULL THEN BEGIN kljuc = nextval('vrsteplacil_idvrsteplacil_seq'); INSERT INTO vrsteplacil (idvrsteplacil,vrstaPlacila) VALUES (kljuc, i$vrstaPlacila); EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; ELSE BEGIN kljuc = nextval('vrsteplacil_idvrsteplacil_seq'); INSERT INTO vrsteplacil(idvrsteplacil,vrstaPlacila,idnadrejenevrsteplacil) VALUES(kljuc,i$vrstaPlacila,(SELECT idvrsteplacil FROM vrsteplacil WHERE vrstaPlacila = i$idnadrejenevrsteplacil)); EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni podatki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni podatki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; END IF; ELSE BEGIN UPDATE vrsteplacil SET vrstaplacila = i$vrstaplacila, idnadrejenevrsteplacil = (SELECT idvrsteplacil FROM vrsteplacil WHERE vrstaplacila = i$nadrejenevrsteplacil) WHERE idvrsteplacil = i$idvrsteplacil; EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; END IF; RETURN kljuc; END; $body$ LANGUAGE 'plpgsql';

Page 30: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

27 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

DELETE CREATE OR REPLACE FUNCTION vrstePlacilDelete (i$vrstaPlacila VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM vrsteplacil WHERE idvrsteplacil = (SELECT idvrsteplacil FROM vrsteplacil WHERE vrstaplacila = i$vrstaPlacila); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END;

RETURN izbrisaneVrstice; END; $body$ LANGUAGE 'plpgsql';

Page 31: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

28 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.2.4 Entiteta pogodbe INSERT oz. UPDATE CREATE OR REPLACE FUNCTION pogodbeinsertupdate ( i$idpogodbe integer, i$stevilkapogodbe integer, i$opis text, i$datum date, i$podpis varchar, i$dokumentpogodbe varchar, i$status varchar, i$telefonsluzba varchar, i$emailsluzba varchar ) RETURNS integer AS $body$ DECLARE kljuc integer = i$idpogodbe; BEGIN IF i$idpogodbe IS NULL THEN BEGIN kljuc = nextval('pogodbe_idpogodbe_seq'); INSERT INTO pogodbe (idpogodbe, stevilkapogodbe, opis, datum, podpis, dokumentpogodbe, status, idnotarji) VALUES (kljuc, i$stevilkapogodbe, i$opis, i$datum, i$podpis, i$dokumentpogodbe, i$status, (SELECT idnotarji FROM notarji WHERE telefonsluzba = i$telefonsluzba AND emailsluzba = i$emailsluzba)); EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; ELSE BEGIN UPDATE pogodbe SET stevilkapogodbe = i$stevilkapogodbe, opis = i$opis, datum = i$datum, podpis = i$podpis, dokumentpogodbe = i$dokumentpogodbe, status = i$status, idnotarji = (SELECT idnotarji FROM notarji WHERE telefonsluzba = i$telefonsluzba AND emailsluzba = i$emailsluzba) WHERE idpogodbe = i$idpogodbe; EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; END IF; RETURN kljuc; END; $body$ LANGUAGE 'plpgsql';

Page 32: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

29 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

DELETE CREATE OR REPLACE FUNCTION pogodbeDelete (i$stevilkaPogodbe INTEGER) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM pogodbe WHERE idpogodbe = (SELECT idpogodbe FROM pogodbe WHERE stevilkapogodbe = i$stevilkaPogodbe); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 33: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

30 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.2.5 Entiteta pogodbeprodajalci INSERT oz. UPDATE CREATE OR REPLACE FUNCTION pogodbeprodajalciinsertupdate ( i$idpogodbeprodajalci integer, i$odstotek numeric, i$stevilkapogodbe integer, i$ime varchar,i$priimek varchar,i$emso varchar) RETURNS integer AS $body$ DECLARE kljuc integer = i$idpogodbeprodajalci; BEGIN IF i$idpogodbeprodajalci IS NULL THEN BEGIN kljuc = nextval('pogodbeprodajalci_idpogodbeprodajalci_seq'); INSERT INTO pogodbeprodajalci (idpogodbeprodajalci, odstotek, idPogodbe, idOsebe) VALUES (kljuc, i$odstotek, (SELECT idpogodbe FROM pogodbe WHERE stevilkapogodbe = i$stevilkapogodbe ), (SELECT idosebe FROM osebe WHERE ime = i$ime AND priimek = i$priimek AND emso = i$emso)); EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; ELSE BEGIN UPDATE pogodbeprodajalci SET odstotek = i$odstotek, idpogodbe = (SELECT idpogodbe FROM pogodbe WHERE stevilkapogodbe = i$stevilkapogodbe), idosebe = (SELECT idosebe FROM osebe WHERE ime = i$ime AND priimek = i$priimek AND emso = i$emso) WHERE idpogodbeprodajalci = i$idpogodbeprodajalci; EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; END IF; RETURN kljuc; END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION pogodbeProdajalciDelete (i$stevilkaPogodbe INTEGER,i$emso VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM pogodbeProdajalci WHERE idpogodbeprodajalci =(SELECT idpogodbeprodajalci FROM pogodbeProdajalci WHERE idpogodbe = (SELECT idpogodbe FROM pogodbe WHERE stevilkapogodbe = i$stevilkaPogodbe) AND idosebe = (SELECT idosebe FROM osebe WHERE emso = i$emso)); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 34: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

31 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.2.6 Entiteta osebe INSERT oz. UPDATE CREATE OR REPLACE FUNCTION osebeinsertupdate (i$idosebe integer,i$ime varchar,i$priimek varchar,i$naslov varchar,i$telefon varchar, i$email varchar,i$spol varchar,i$emso varchar,i$davcnastevilka varchar,i$kraj varchar)RETURNS integer AS $body$ DECLARE kljuc integer = i$idosebe; BEGIN IF i$idosebe IS NULL THEN BEGIN kljuc = nextval('osebe_idosebe_seq'); INSERT INTO osebe (idosebe, ime, priimek, naslov , telefon, email, spol, emso, davcnastevilka, idkraji) VALUES (kljuc, i$ime, i$priimek, i$naslov , i$telefon, i$email, i$spol, i$emso, i$davcnastevilka, (SELECT idkraji FROM kraji WHERE kraj = i$kraj)); EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; ELSE BEGIN UPDATE osebe SET ime = i$ime, priimek = i$priimek,naslov = i$naslov, telefon = i$telefon, email = i$email,spol = i$spol, emso = i$emso, davcnastevilka = i$davcnastevilka, idkraji = (SELECT idkraji FROM kraji WHERE kraj = i$kraj) WHERE idosebe = i$idosebe; EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; END IF; RETURN kljuc; END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION osebeDelete (i$emso VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM osebe WHERE idosebe =(SELECT idosebe FROM osebe WHERE emso = i$emso); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 35: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

32 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.2.7 Entiteta osebelastnistva INSERT oz. UPDATE CREATE OR REPLACE FUNCTION osebelastnistvainsertupdate (i$idosebelastnistva integer, i$odstotek numeric,i$lastnikod date, i$lastnikdo date, i$ime varchar,i$priimek varchar, i$emso varchar, i$stevilka varchar,i$naslov varchar)RETURNS integer AS $body$ DECLARE kljuc integer = i$idOsebeLastnistva; BEGIN IF i$idOsebeLastnistva IS NULL THEN BEGIN kljuc = nextval('osebeLastnistva_idOsebeLastnistva_seq'); INSERT INTO osebeLastnistva(idOsebeLastnistva,odstotek,lastnikOd,lastnikDo,idOsebe, idNepremicnine) VALUES(kljuc,i$odstotek,i$lastnikOd,i$lastnikDo,(SELECT idOsebe FROM osebe WHERE ime = i$ime AND priimek = i$priimek AND emso = i$emso), (SELECT idNepremicnine from nepremicnine WHERE stevilka = i$stevilka AND naslov = i$naslov)); EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; ELSE BEGIN UPDATE osebeLastnistva SET odstotek = i$odstotek, lastnikOd = i$lastnikOd, lastnikDo = i$lastnikDo, idOsebe = (SELECT idOsebe FROM osebe WHERE ime = i$ime AND priimek = i$priimek AND emso = i$emso), idNepremicnine = (SELECT idNepremicnine from nepremicnine WHERE stevilka = i$stevilka AND naslov = i$naslov) WHERE idOsebeLastnistva = i$idOsebeLastnistva; EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; END IF; RETURN kljuc; END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION osebeLastnistva (i$emso VARCHAR,i$stevilka VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM osebeLastnistva WHERE idosebelastnistva =(SELECT idosebelastnistva FROM osebeLastnistva WHERE idosebe =(SELECT idosebe FROM osebe WHERE emso = i$emso) AND idnepremicnine =(SELECT idnepremicnine FROM nepremicnine WHERE stevilka = i$stevilka)); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 36: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

33 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.2.8 Entiteta pogodbenepremicnine INSERT oz. UPDATE CREATE OR REPLACE FUNCTION pogodbenepremicnineinsertupdate (i$idPogodbeNepremicnine integer,i$stevilkaPogodbe integer,i$stevilkaNepremicnine varchar) RETURNS integer AS $body$ DECLARE kljuc integer = i$idPogodbeNepremicnine; BEGIN IF i$idPogodbeNepremicnine IS NULL THEN BEGIN kljuc = nextval('pogodbeNepremicnine_idPogodbeNepremicnine_seq'); INSERT INTO pogodbenepremicnine(idPogodbeNepremicnine,idpogodbe,idnepremicnine) VALUES(kljuc,(SELECT idpogodbe FROM pogodbe WHERE stevilkapogodbe = i$StevilkaPogodbe), (SELECT idNepremicnine from nepremicnine WHERE stevilka = i$stevilkaNepremicnine)); EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; ELSE BEGIN UPDATE pogodbenepremicnine SET idpogodbe = (SELECT idpogodbe FROM pogodbe WHERE stevilkapogodbe = i$StevilkaPogodbe), idNepremicnine = (SELECT idNepremicnine from nepremicnine WHERE stevilka = i$stevilkaNepremicnine) WHERE idpogodbenepremicnine = i$idPogodbeNepremicnine; EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; END IF; RETURN kljuc; END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION pogodbeNepremicnineDelete (i$stevilkaPogodbe INTEGER,i$stevilkaNepremicnine VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM pogodbenepremicnine WHERE idpogodbenepremicnine =(SELECT idpogodbenepremicnine FROM pogodbeNepremicnine WHERE idpogodbe =(SELECT idpogodbe FROM pogodbe WHERE stevilkapogodbe = i$stevilkaPogodbe) AND idnepremicnine =(SELECT idnepremicnine FROM nepremicnine WHERE stevilka = i$stevilkaNepremicnine)); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 37: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

34 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

5.2.9 Entiteta kraji INSERT oz. UPDATE CREATE OR REPLACE FUNCTION krajiinsertupdate ( i$idkraji integer,i$kraj varchar,i$postnastevilka varchar, i$obcina varchar, i$regija varchar) RETURNS integer AS $body$ DECLARE kljuc INTEGER = i$idKraji; BEGIN IF i$idKraji IS NULL THEN BEGIN kljuc = nextval('kraji_idkraji_seq'); INSERT INTO kraji (idkraji, kraj, postnastevilka, idObcine , idRegije) VALUES (kljuc, i$kraj, i$postnastevilka, (SELECT idObcine FROM obcine WHERE obcina = i$obcina), (SELECT idRegije FROM regije WHERE regija = i$regija)); EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; ELSE BEGIN UPDATE kraji SET kraj = i$kraj, postnatevilka = i$postnastevilka, idObcine = (SELECT idObcine FROM obcine WHERE obcina = i$obcina), idRegije = (SELECT idRegije FROM regije WHERE regija = i$regija) WHERE idkraji = i$idKraji; EXCEPTION WHEN check_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, veljavnostno pravilo.'; WHEN foreign_key_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, povezovalno polje.'; WHEN not_null_violation THEN RAISE EXCEPTION 'Napaka, neustrezni poadtki, zahtevano polje nima vrednosti.'; WHEN others THEN RAISE EXCEPTION 'Napaka.'; END; END IF; RETURN kljuc; END; $body$ LANGUAGE 'plpgsql';

DELETE CREATE OR REPLACE FUNCTION krajiDelete (i$kraj VARCHAR) RETURNS INTEGER AS $body$ DECLARE

izbrisaneVrstice INTEGER; BEGIN

BEGIN DELETE FROM kraji WHERE idkraji =(SELECT idkraji FROM kraji WHERE kraj = i$kraj); GET DIAGNOSTICS izbrisaneVrstice = ROW_COUNT;

EXCEPTION WHEN foreign_key_violation THEN

RAISE EXCEPTION 'Napaka, neustrezni podatki, povezovalno polje.'; WHEN others THEN

RAISE EXCEPTION 'Napaka.'; END; RETURN izbrisaneVrstice;

END; $body$ LANGUAGE 'plpgsql';

Page 38: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

35 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

6 Strežniške funkcije za obdelave in izračun statistike

6.1 Statistične funkcije – avtor Matic Božič

6.1.1 Funkcija vseNepremicnine Prešteje vse nepremičnine, glede na vrednost parametra v funkciji. Parameter pove ali naj prešteje vse

nepremičnine, samo dosegljive ali pa nedosegljive. Če parameter nima ustrezne vrednosti, funkcija vrne

izjemo z navodili.

DLL CREATE OR REPLACE FUNCTION vseNepremicnine(i$Dosegljivost VARCHAR) RETURNS VARCHAR AS $body$ DECLARE

dosegljiveNpr INTEGER; stDosegljivih VARCHAR := 'Število dosegljivih nepremičnin je: '; stNedosegljivih VARCHAR := 'Število nedosegljivih nepremičnin je: '; stVseh VARCHAR := 'Število vseh nepremičnin je: '; result VARCHAR;

BEGIN IF UPPER(i$Dosegljivost) IN ('DOSEGLJIV', 'DOSEGLJIVO', 'DOSEGLJIVA', 'DOSEGLJIVE', 'NA VOLJO', 'TRUE') AND UPPER(i$Dosegljivost) IS NOT NULL THEN

SELECT COUNT(idNepremicnine) INTO dosegljiveNpr FROM nepremicnine WHERE dosegljivost = true; stDosegljivih := stDosegljivih || dosegljiveNpr::text; result = stDosegljivih;

END IF; IF UPPER(i$Dosegljivost) IN ('NEDOSEGLJIV', 'NEDOSEGLJIVO', 'NEDOSEGLJIVA', 'NEDOSEGLJIVE', 'NI NA VOLJO', 'FALSE') AND UPPER(i$Dosegljivost) IS NOT NULL THEN

SELECT COUNT(idNepremicnine)INTO dosegljiveNpr FROM nepremicnine WHERE dosegljivost = false; stNedosegljivih := stNedosegljivih || dosegljiveNpr::text; result = stNedosegljivih;

END IF; IF UPPER(i$Dosegljivost) IN ('VSE', '', 'KARKOLI', 'NEDEFINIRANO', ' ') AND UPPER(i$Dosegljivost) IS NOT NULL THEN

SELECT COUNT(idNepremicnine) INTO dosegljiveNpr FROM nepremicnine; stVseh := stVseh || dosegljiveNpr::text; result = stVseh;

END IF; IF UPPER(i$Dosegljivost) NOT IN ('DOSEGLJIV', 'DOSEGLJIVO', 'DOSEGLJIVA', 'DOSEGLJIVE', 'NA VOLJO', 'TRUE', 'NEDOSEGLJIV', 'NEDOSEGLJIVO', 'NEDOSEGLJIVA', 'NEDOSEGLJIVE', 'NI NA VOLJO', 'FALSE', 'VSE', '', 'KARKOLI', 'NEDEFINIRANO', ' ') OR UPPER(i$Dosegljivost) IS NULL THEN

RAISE EXCEPTION E'Napaka. Za prikaz rezultata morate vnesti ustrezne parametre. Veljavni parametri so: Za dosegljive nepremičnine: Dosegljiv, dosegljivo, dosegljiva, dosegljive, na voljo, true. Za nedosegljive nepremičnine: Nedosegljive, nedosegljivo, nedosegljiva, nedosegljive, ni na voljo, false. Za vse: vse, karkoli, nedefinirano. Velja tudi prazen text';

END IF; RETURN result;

END; $body$ LANGUAGE 'plpgsql';

Page 39: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

36 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

6.1.2 Funkcija cenikNepremicnin Izpiše informacije za vsako nepremičnino s ceno in kontaktom. Za izpisovanje uporablja uporabniško definiran

tip tCenikNpr.

DLL CREATE OR REPLACE FUNCTION cenikNepremicnin() RETURNS SETOF tCenikNpr AS $body$ DECLARE

tNepremicnine nepremicnine%ROWTYPE; tmpCenikNpr tCenikNpr;

BEGIN FOR tNepremicnine IN SELECT * FROM nepremicnine WHERE dosegljivost = TRUE

LOOP SELECT INTO tmpCenikNpr.naslov naslov FROM (SELECT postnastevilka, kraj FROM kraji WHERE idKraji = (SELECT idKraji FROM nepremicnine WHERE stevilka = tNepremicnine.stevilka)) AS naslov; tmpCenikNpr.naslov := tmpCenikNpr.naslov || ', ' || tNepremicnine.naslov; tmpCenikNpr.opis = tNepremicnine.opis; tmpCenikNpr.cena = tNepremicnine.cena; tmpCenikNpr.kvadratura = tNepremicnine.kvadratura; tmpCenikNpr.steviloSob = tNepremicnine.steviloSob; SELECT INTO tmpCenikNpr.kontakt kontakt FROM (SELECT email, telefon FROM agenti WHERE idAgenti = (SELECT idAgenti FROM nepremicnineAgenti WHERE idNepremicnine = tNepremicnine.idNepremicnine)) AS kontakt;

RETURN NEXT tmpCenikNpr; END LOOP;

END; $body$ LANGUAGE 'plpgsql';

6.1.2.1 Tip tCenikNpr

DLL CREATE TYPE tCenikNpr AS (

naslov VARCHAR, opis text, cena NUMERIC(8,2), kvadratura NUMERIC(8,2), steviloSob NUMERIC(7,1), kontakt text

);

Page 40: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

37 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

6.1.3 Funkcija seznamOglasov Izpiše vse oglase in preveri njihovo aktivnost. Za izpis uporablja uporabniško definiran tip tOglasiNpr.

DLL CREATE OR REPLACE FUNCTION seznamOglasov() RETURNS SETOF tOglasiNpr AS $body$ DECLARE

tOglasi oglasi%ROWTYPE; tmpOglasiNpr tOglasiNpr;

BEGIN FOR tOglasi IN SELECT * FROM oglasi

LOOP tmpOglasiNpr.ime = tOglasi.imeOglasa; tmpOglasiNpr.aktivenOd = tOglasi.datum; tmpOglasiNpr.aktivenDo = tOglasi.aktivenDo; SELECT INTO tmpOglasiNpr.nepremicnina nepremicnina FROM (SELECT stevilka, naslov, kraj FROM nepremicnine INNER JOIN kraji USING(idKraji) WHERE idNepremicnine = (SELECT idNepremicnine FROM oglasi WHERE idOglasi = tOglasi.idOglasi)) AS nepremicnina; SELECT INTO tmpOglasiNpr.opisNpr opisNpr FROM (SELECT opis, kvadratura, steviloSob, cena FROM nepremicnine WHERE idNepremicnine = (SELECT idNepremicnine FROM oglasi WHERE idOglasi = tOglasi.idOglasi)) AS opisNpr; IF tOglasi.aktivendo > CURRENT_TIMESTAMP THEN

tmpOglasiNpr.aktivnost = TRUE; ELSE

tmpOglasiNpr.aktivnost = FALSE; END IF;

RETURN NEXT tmpOglasiNpr; END LOOP;

END; $body$ LANGUAGE 'plpgsql';

6.1.3.1 Tip tOglasiNpr

DLL CREATE TYPE tOglasiNpr AS (

ime VARCHAR, aktivenOd TIMESTAMP, aktivenDo TIMESTAMP, nepremicnina text, opisNpr text, aktivnost BOOLEAN

);

Page 41: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

38 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

6.1.4 Funkcija urnikOgledov Preverja urnike ogledov za agente. Izpiše vse informacije o ogledu in stranki. Lahko izpiše urnike za vse, lahko

pa izpiše urnike samo za specifičnega agenta. Prav tako preverja, če je ogled že bil opravljen. Za izpis uporablja

uporabniško definiran tip tUrnikOgledi.

DLL – PRVI POGOJ CREATE OR REPLACE FUNCTION urnikOgledov(i$Agent varchar, i$Opravljen varchar) RETURNS SETOF tUrnikOgledi AS $body$ DECLARE

tOgledi ogledi%ROWTYPE; tmpUrnikiOgledi tUrnikOgledi;

BEGIN IF i$Agent IS NOT NULL THEN

IF upper(i$Opravljen) = 'DA' THEN FOR tOgledi IN SELECT * FROM ogledi WHERE idAgenti = (SELECT idAgenti FROM agenti WHERE uporabniskoIme = i$Agent) AND opravljen = TRUE

LOOP tmpUrnikiOgledi.casOgleda = tOgledi.casOgleda; SELECT INTO tmpUrnikiOgledi.nepremicnina nepremicnina FROM (SELECT stevilka, naslov, kraj FROM nepremicnine INNER JOIN kraji USING(idKraji) WHERE idNepremicnine = tOgledi.idNepremicnine) AS nepremicnina; SELECT INTO tmpUrnikiOgledi.stranka stranka FROM (SELECT ime, priimek, telefon FROM osebe WHERE idOsebe = (SELECT idOsebe FROM povprasevanja WHERE idPovprasevanja = tOgledi.idPovprasevanja)) AS stranka; SELECT INTO tmpUrnikiOgledi.agent agent FROM (SELECT ime, priimek FROM osebe WHERE idOsebe = (SELECT idOsebe FROM agenti WHERE idAgenti = tOgledi.idAgenti)) AS agent; IF tOgledi.mnenje IS NULL THEN

tmpUrnikiOgledi.mnenje = 'Mnenje še ni bilo zapisano.'; ELSE

tmpUrnikiOgledi.mnenje = tOgledi.mnenje; END IF;

RETURN NEXT tmpUrnikiOgledi; END LOOP;

END IF; IF upper(i$Opravljen) = 'NE' THEN

FOR tOgledi IN SELECT * FROM ogledi WHERE idAgenti = (SELECT idAgenti FROM agenti WHERE uporabniskoIme = i$Agent) AND opravljen = FALSE

LOOP tmpUrnikiOgledi.casOgleda = tOgledi.casOgleda; SELECT INTO tmpUrnikiOgledi.nepremicnina nepremicnina FROM (SELECT stevilka, naslov, kraj FROM nepremicnine INNER JOIN kraji USING(idKraji) WHERE idNepremicnine = tOgledi.idNepremicnine) AS nepremicnina; SELECT INTO tmpUrnikiOgledi.stranka stranka FROM (SELECT ime, priimek, telefon FROM osebe WHERE idOsebe = (SELECT idOsebe FROM povprasevanja WHERE idPovprasevanja = tOgledi.idPovprasevanja)) AS stranka; SELECT INTO tmpUrnikiOgledi.agent agent FROM (SELECT ime, priimek FROM osebe WHERE idOsebe = (SELECT idOsebe FROM agenti WHERE idAgenti = tOgledi.idAgenti)) AS agent; IF tOgledi.mnenje IS NULL THEN

tmpUrnikiOgledi.mnenje = 'Mnenje še ni bilo zapisano.'; ELSE

tmpUrnikiOgledi.mnenje = tOgledi.mnenje; END IF;

RETURN NEXT tmpUrnikiOgledi; END LOOP;

END IF; END IF;

Page 42: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

39 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

DLL – DRUGI POGOJ IF i$Agent IS NULL THEN

IF upper(i$Opravljen) = 'DA' THEN FOR tOgledi IN SELECT * FROM ogledi WHERE opravljen = TRUE

LOOP tmpUrnikiOgledi.casOgleda = tOgledi.casOgleda; SELECT INTO tmpUrnikiOgledi.nepremicnina nepremicnina FROM (SELECT stevilka, naslov, kraj FROM nepremicnine INNER JOIN kraji USING(idKraji) WHERE idNepremicnine = tOgledi.idNepremicnine) AS nepremicnina; SELECT INTO tmpUrnikiOgledi.stranka stranka FROM (SELECT ime, priimek, telefon FROM osebe WHERE idOsebe = (SELECT idOsebe FROM povprasevanja WHERE idPovprasevanja = tOgledi.idPovprasevanja)) AS stranka; SELECT INTO tmpUrnikiOgledi.agent agent FROM (SELECT ime, priimek FROM osebe WHERE idOsebe = (SELECT idOsebe FROM agenti WHERE idAgenti = tOgledi.idAgenti)) AS agent; IF tOgledi.mnenje IS NULL THEN

tmpUrnikiOgledi.mnenje = 'Mnenje še ni bilo zapisano.'; ELSE

tmpUrnikiOgledi.mnenje = tOgledi.mnenje; END IF;

RETURN NEXT tmpUrnikiOgledi; END LOOP;

END IF; IF upper(i$Opravljen) = 'NE' THEN

FOR tOgledi IN SELECT * FROM ogledi WHERE opravljen = FALSE LOOP

tmpUrnikiOgledi.casOgleda = tOgledi.casOgleda; SELECT INTO tmpUrnikiOgledi.nepremicnina nepremicnina FROM (SELECT stevilka, naslov, kraj FROM nepremicnine INNER JOIN kraji USING(idKraji) WHERE idNepremicnine = tOgledi.idNepremicnine) AS nepremicnina; SELECT INTO tmpUrnikiOgledi.stranka stranka FROM (SELECT ime, priimek, telefon FROM osebe WHERE idOsebe = (SELECT idOsebe FROM povprasevanja WHERE idPovprasevanja = tOgledi.idPovprasevanja)) AS stranka; SELECT INTO tmpUrnikiOgledi.agent agent FROM (SELECT ime, priimek FROM osebe WHERE idOsebe = (SELECT idOsebe FROM agenti WHERE idAgenti = tOgledi.idAgenti)) AS agent; IF tOgledi.mnenje IS NULL THEN tmpUrnikiOgledi.mnenje = 'Mnenje še ni bilo zapisano.'; ELSE

tmpUrnikiOgledi.mnenje = tOgledi.mnenje; END IF;

RETURN NEXT tmpUrnikiOgledi; END LOOP;

END IF; END IF;

END; $body$ LANGUAGE 'plpgsql';

6.1.4.1 Tip tUrnikOgledi

DLL CREATE TYPE tUrnikOgledi AS (

casOgleda TIMESTAMP, nepremicnina text, stranka text, agent text, mnenje text

);

Page 43: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

40 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

6.1.5 Funkcija seznamLastnikov Izpiše vse nepremičnine in njihove lastnike, ter delež, ki si ga lastijo. Za izpis uporablja uporabniško definiran

tip tLastnistva. Izpiše čisto vse lastnike, tudi pretekle.

DLL CREATE OR REPLACE FUNCTION lastnikiNepremicnin() RETURNS SETOF tLastnistva AS $body$ DECLARE

tPPLastniki poslovnipartnerjilastnistva%ROWTYPE; tOLastniki osebelastnistva%ROWTYPE; tmpLastnistva tLastnistva;

BEGIN FOR tPPLastniki IN SELECT * FROM poslovnipartnerjilastnistva

LOOP SELECT INTO tmpLastnistva.lastnik lastnik FROM (SELECT poslovnipartner FROM poslovnipartnerji WHERE idPoslovniPartnerji = tPPLastniki.idPoslovniPartnerji) AS lastnik; tmpLastnistva.delez = concat(tPPLastniki.odstotek, chr(37)); SELECT INTO tmpLastnistva.nepremicnina nepremicnina FROM (SELECT stevilka, naslov, kraj FROM nepremicnine INNER JOIN kraji USING(idKraji) WHERE idNepremicnine = tPPLastniki.idNepremicnine) AS nepremicnina;

RETURN NEXT tmpLastnistva; END LOOP; FOR tOLastniki IN SELECT * FROM osebelastnistva

LOOP SELECT INTO tmpLastnistva.lastnik lastnik FROM (SELECT ime, priimek, naslov, kraj FROM osebe INNER JOIN kraji USING(idKraji) WHERE idOsebe = tOLastniki.idOsebe) AS lastnik; tmpLastnistva.delez = concat(tOLastniki.odstotek, chr(37)); SELECT INTO tmpLastnistva.nepremicnina nepremicnina FROM (SELECT stevilka, naslov, kraj FROM nepremicnine INNER JOIN kraji USING(idKraji) WHERE idNepremicnine = tOLastniki.idNepremicnine) AS nepremicnina;

RETURN NEXT tmpLastnistva; END LOOP;

END; $body$ LANGUAGE 'plpgsql';

6.1.5.1 Tip tLastnistva

DLL CREATE TYPE tLastnistva AS (

lastnik VARCHAR, delez VARCHAR, nepremicnina VARCHAR

);

Page 44: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

41 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

6.2 Statistične funkcije – avtor Nejc Martinjak

6.2.1 Funkcija seznamPogodbNepremicnin Za vsako aktivno pogodbo izpiše številko pogodbe, številko nepremicnine, ceno in naslov.

DLL CREATE OR REPLACE FUNCTION seznamPogodbNepremicnin() RETURNS SETOF tPogodbeNepremicnine AS $body$ DECLARE tPogodbeNepremicnine pogodbenepremicnine%ROWTYPE; tmpPogodbeNepremicnine tPogodbeNepremicnine; BEGIN FOR tpogodbenepremicnine IN SELECT * FROM pogodbe WHERE status = 'aktivna' LOOP SELECT INTO tmpPogodbeNepremicnine.stevilkaPogodbe stevilkapogodbe FROM(SELECT stevilkapogodbe FROM pogodbe WHERE idpogodbe = tPlacila.idpogodbe) AS stevilkapogodbe; SELECT INTO tmpPogodbeNepremicnine.stevilkaNepremicnine stevilkaNepremicnine FROM(SELECT stevilkanepremicnine from nepremicnine WHERE idnepremicnine = tPogodbeNepremicnine.idnepremicnine) AS stevilkaNepremicnine; SELECT INTO tmpPogodbeNepremicnine.cena cena FROM(SELECT cena from nepremicnine WHERE idnepremicnine = tPogodbeNepremicnine.idnepremicnine) AS cena; SELECT INTO tmpPogodbeNepremicnine.naslov naslov FROM(SELECT naslov from nepremicnine WHERE idnepremicnine = tPogodbeNepremicnine.idnepremicnine) AS naslov; RETURN NEXT tmpPogodbeNepremicnine; END LOOP; END; $body$ LANGUAGE 'plpgsql';

6.2.1.1 Tip tPogodbeNepremicnine

DLL Create TYPE tPogodbeNepremicnine AS ( stevilkaPogodbe INTEGER, stevilkaNepremicnine VARCHAR, cena NUMERIC, naslov VARCHAR);

Page 45: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

42 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

6.2.2 Funkcija seznamPlacil Izpiše vsa opravljena plačila ter pogodbo za vrsto plačila gotovina.

DLL CREATE OR REPLACE FUNCTION seznamPlacil() RETURNS SETOF tPlacila AS $body$ DECLARE tPlacila placila%ROWTYPE; tmpPlacila tPlacila; BEGIN FOR TPlacila IN SELECT * FROM placila WHERE idvrsteplacil=(SELECT idvrsteplacil FROM vrsteplacil WHERE vrstaplacila = 'Gotovina) LOOP tmpPlacila.znesekPlacila = tPlacila.znesekPlacila; SELECT INTO tmpPlacila.stevilkaPogodbe stevilkapogodbe FROM(SELECT stevilkapogodbe FROM pogodbe WHERE idpogodbe = tPlacila.idpogodbe) AS stevilkapogodbe; SELECT INTO tmpPlacila.opis opis FROM(SELECT opis FROM pogodbe WHERE idpogodbe = tPlacila.idpogodbe) AS opis; RETURN NEXT tmpPlacila; END LOOP; END; $body$ LANGUAGE 'plpgsql';

6.2.2.1 Tip tPlacila

DLL CREATE TYPE tPlacila AS ( znesekPlacila NUMERIC, stevilkaPogodbe INTEGER, opis TEXT );

Page 46: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

43 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

6.2.3 Funkcija seznamPogodb Izpiše vse aktivne pogodbe

DLL CREATE OR REPLACE FUNCTION seznamPogodb() RETURNS SETOF tPogodbe AS $body$ DECLARE tPogodbe pogodbe%ROWTYPE; tmpPogodbe tPogodbe; BEGIN FOR tPogodbe IN SELECT * FROM pogodbe WHERE status = 'aktivna' LOOP tmpPogodbe.stevilkaPogodbe = tPogodbe.stevilkaPogodbe; tmpPogodbe.opis = tPogodbe.opis; tmpPogodbe.datum = tPogodbe.datum; RETURN NEXT tmpPogodbe; END LOOP; END; $body$ LANGUAGE 'plpgsql';

6.2.3.1 Tip tPogodbe

DLL CREATE TYPE tPogodbe AS ( stevilkaPogodbe INTEGER, opis TEXT, datum DATE );

Page 47: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

44 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

6.2.4 Funkcija seznamNotarjev DLL CREATE OR REPLACE FUNCTION seznamNotarjev() RETURNS SETOF tNotarji AS $body$ DECLARE tNotarji notarji%ROWTYPE; tmpNotarji tNotarji; BEGIN FOR tNotarji IN SELECT * FROM notarji LOOP SELECT INTO tmpNotarji.imePriimek imePriimek FROM( SELECT ime,priimek FROM osebe WHERE idOsebe = tNotarji.idnotarji) AS imePriimek; tmpNotarji.cenaStoritve = tNotarji.cenastoritve; tmpNotarji.TelefonskaStevilka = tNotarji.telefonsluzba; tmpNotarji.email = tNotarji.emailsluzba; RETURN NEXT tmpNotarji; END LOOP; END; $body$ LANGUAGE 'plpgsql';

6.2.4.1 Tip tNotarji

DLL CREATE TYPE tNotarji AS ( imePriimek VARCHAR, cenaStoritve NUMERIC, TelefonskaStevilka VARCHAR, email VARCHAR );

Page 48: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

45 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

7 Zapisovanje dogodkov oz. logiranje

7.1 Ustvarjanje tabel za logiranje – avtor Matic Božič Eniteta logRegije Entiteta logObcine Entiteta logKraji

CREATE TABLE logRegije( idLogRegije INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

CREATE TABLE logObcine( idLogObcine INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

CREATE TABLE logKraji( idLogKraji INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

Entiteta logKategorije Entieta logPoslovniPartnerji Entieta logNepremicine

CREATE TABLE logKategorije( idLogKategorije INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

CREATE TABLE logPoslovniPartnerji( idLogPoslovniPartnerji INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

CREATE TABLE logNepremicnine( idLogNepremicnine INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

Entieta logOsebe Entieta logPoslovniPartnerjiLastnistva Entieta logOsebeLastnistva

CREATE TABLE logOsebe( idLogOsebe INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

CREATE TABLE logPoslovniPartnerjiLastnistva( idLogPoslovniPartnerjiLastnistva INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

CREATE TABLE logOsebeLastnistva( idLogOsebeLastnistva INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

Entieta logAgenti Entieta logNepremicineAgenti Entieta logOglasi

CREATE TABLE logAgenti( idLogAgenti INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

CREATE TABLE logNepremicnineAgenti( idLogNepremicnineAgenti INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

CREATE TABLE logOglasi( idLogOglasi INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

Entieta logOgledi Entieta logSlike Entieta logPovprasevanja

CREATE TABLE logOgledi( idLogOgledi INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

CREATE TABLE logSlike( idLogSlike INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

CREATE TABLE logPovprasevanja( idLogPovprasevanja INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT

);

Page 49: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

46 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

7.2 Funkcije za beleženje sprememb v bazi – avtor Matic Božič Funkcija regijeTG CREATE OR REPLACE FUNCTION regijeTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logregije (idlogregije, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logregije'), now(), current_user, TG_OP, OLD.idregije, OLD.regija || '=> ' || NEW.regija);

END IF; IF UPPER(TG_OP) = 'DELETE' THEN

INSERT INTO logregije (idlogregije, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logregije'), now(), current_user, TG_OP, OLD.idregije, OLD.regija);

END IF; IF UPPER(TG_OP) = 'INSERT' THEN

INSERT INTO logregije (idlogregije, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logregije'), now(), current_user, TG_OP, NEW.idregije, NEW.regija);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec regijetrigger CREATE TRIGGER regijetrigger AFTER INSERT OR UPDATE OR DELETE ON regije FOR EACH ROW EXECUTE PROCEDURE regijeTG();

Funkcija obcineTG CREATE OR REPLACE FUNCTION obcineTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logobcine (idlogobcine, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logobcine'), now(), current_user, TG_OP, OLD.idobcine, OLD.obcina || '=> ' || NEW.obcina);

END IF; IF UPPER(TG_OP) = 'DELETE' THEN

INSERT INTO logobcine (idlogobcine, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logobcine'), now(), current_user, TG_OP, OLD.idobcine, OLD.obcina);

END IF; IF UPPER(TG_OP) = 'INSERT' THEN

INSERT INTO logobcine (idlogobcine, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logobcine'), now(), current_user, TG_OP, NEW.idobcine, NEW.obcina);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec obcinetrigger CREATE TRIGGER obcinetrigger AFTER INSERT OR UPDATE OR DELETE ON obcine FOR EACH ROW EXECUTE PROCEDURE obcineTG();

Page 50: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

47 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Funkcija krajiTG CREATE OR REPLACE FUNCTION krajiTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logkraji (idlogkraji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logkraji'), now(), current_user, TG_OP, OLD.idkraji, OLD.kraj || ' => ' || NEW.kraj || ', ' || OLD.postnastevilka || ' => ' || NEW.postnastevilka);

END IF; IF UPPER(TG_OP) = 'DELETE' THEN

INSERT INTO logkraji (idlogkraji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logkraji'), now(), current_user, TG_OP, OLD.idkraji, OLD.kraj || ', ' || OLD.postnastevilka);

END IF; IF UPPER(TG_OP) = 'INSERT' THEN

INSERT INTO logkraji (idlogkraji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logkraji'), now(), current_user, TG_OP, NEW.idkraji, NEW.kraj || ', ' || NEW.postnastevilka);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec krajitrigger CREATE TRIGGER krajitrigger AFTER INSERT OR UPDATE OR DELETE ON kraji FOR EACH ROW EXECUTE PROCEDURE krajiTG();

Funkcija kategorijeTG CREATE OR REPLACE FUNCTION kategorijeTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logkategorije (idlogkategorije, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logkategorije'), now(), current_user, TG_OP, OLD.idkategorije, OLD.kategorija || ' => ' || NEW.kategorija || ', ' || OLD.opis || ' => ' || NEW.opis);

END IF; IF UPPER(TG_OP) = 'DELETE' THEN

INSERT INTO logkategorije (idlogkategorije, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logkategorije'), now(), current_user, TG_OP, OLD.idkategorije, OLD.kategorija || ', ' || OLD.opis);

END IF; IF UPPER(TG_OP) = 'INSERT' THEN INSERT INTO logkategorije (idlogkategorije, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logkategorije'), now(),current_user, TG_OP, NEW.idkategorije, NEW.kategorija || ', ' || NEW.opis);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec kategorijetrigger CREATE TRIGGER kategorijetrigger AFTER INSERT OR UPDATE OR DELETE ON kategorije FOR EACH ROW EXECUTE PROCEDURE kategorijeTG();

Page 51: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

48 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Funkcija poslovniPartnerjiTG CREATE OR REPLACE FUNCTION poslovniPartnerjiTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logposlovnipartnerji (idlogposlovnipartnerji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logposlovnipartnerji'), now(), current_user, TG_OP, OLD.idposlovnipartnerji, OLD.poslovnipartner || ' => ' || NEW.poslovnipartner || ', ' || OLD.kratica || ' => ' || NEW.kratica || ', ' || OLD.naslov || ' => ' || NEW.naslov || ', ' || OLD.davcnastevilka || ' => ' || NEW.davcnastevilka || ', ' || OLD.idKraji || ' => ' || NEW.idKraji);

END IF; IF UPPER(TG_OP) = 'DELETE' THEN

INSERT INTO logposlovnipartnerji (idlogposlovnipartnerji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logposlovnipartnerji'), now(), current_user, TG_OP, OLD.idposlovnipartnerji, OLD.poslovnipartner || ', ' || OLD.kratica || ', ' || OLD.naslov || ', ' || OLD.davcnastevilka || ', ' || OLD.idKraji );

END IF; IF UPPER(TG_OP) = 'INSERT' THEN

INSERT INTO logposlovnipartnerji (idlogposlovnipartnerji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logposlovnipartnerji'), now(), current_user, TG_OP, NEW.idposlovnipartnerji, NEW.poslovnipartner || ', ' || NEW.kratica || ', ' || NEW.naslov || ', ' || NEW.davcnastevilka || ', ' || NEW.idKraji );

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec poslovnipartnerjitrigger CREATE TRIGGER poslovnipartnerjitrigger AFTER INSERT OR UPDATE OR DELETE ON poslovnipartnerji FOR EACH ROW EXECUTE PROCEDURE poslovniPartnerjiTG();

Funkcija nepremicnineTG CREATE OR REPLACE FUNCTION nepremicnineTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO lognepremicnine (idlognepremicnine, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_lognepremicnine'), now(), current_user, TG_OP, OLD.idnepremicnine, OLD.stevilka || ' => ' || NEW.stevilka || ', ' || OLD.kvadratura || ' => ' || NEW.kvadratura || ', ' || OLD.stevilosob || ' => ' || NEW.stevilosob || ', ' || OLD.opis || ' => ' || NEW.opis || ', ' || OLD.cena || ' => ' || NEW.cena || ', ' || OLD.dosegljivost || ' => ' || NEW.dosegljivost || ', ' || OLD.naslov || ' => ' || NEW.naslov || ', ' || OLD.idKraji || ' => ' || NEW.idKraji || ', ' || OLD.idKategorije || ' => ' || NEW.idKategorije);

END IF; IF UPPER(TG_OP) = 'DELETE' THEN

INSERT INTO lognepremicnine (idlognepremicnine, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_lognepremicnine'), now(), current_user, TG_OP, OLD.idnepremicnine, OLD.stevilka || ', ' || OLD.kvadratura || ', ' || OLD.stevilosob || ', ' || OLD.opis || ', ' || OLD.cena || ', ' || OLD.dosegljivost || ', ' || OLD.naslov || ', ' || OLD.idKraji || ', ' || OLD.idKategorije);

END IF; IF UPPER(TG_OP) = 'INSERT' THEN

INSERT INTO lognepremicnine (idlognepremicnine, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_lognepremicnine'), now(), current_user, TG_OP, NEW.idnepremicnine, NEW.stevilka || ', ' || NEW.kvadratura || ', ' || NEW.stevilosob || ', ' || NEW.opis || ', ' || NEW.cena || ', ' || NEW.dosegljivost || ', ' || NEW.naslov || ', ' || NEW.idKraji || ', ' || NEW.idKategorije);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec nepremicninetrigger CREATE TRIGGER nepremicninetrigger AFTER INSERT OR UPDATE OR DELETE ON nepremicnine FOR EACH ROW EXECUTE PROCEDURE nepremicnineTG();

Page 52: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

49 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Funkcija osebeTG CREATE OR REPLACE FUNCTION osebeTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logosebe (idlogosebe, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logosebe'), now(), current_user, TG_OP, OLD.idosebe, OLD.ime || ' => ' || NEW.ime || ', ' || OLD.priimek || ' => ' || NEW.priimek || ', ' || OLD.naslov || ' => ' || NEW.naslov || ', ' || OLD.telefon || ' => ' || NEW.telefon || ', ' || OLD.email || ' => ' || NEW.email || ', ' || OLD.spol || ' => ' || NEW.spol || ', ' || OLD.davcnastevilka || ' => ' || NEW.davcnastevilka || ', ' || OLD.emso || ' => ' || NEW.emso || ', ' || OLD.idKraji || ' => ' || NEW.idKraji);

END IF; IF UPPER(TG_OP) = 'DELETE' THEN

INSERT INTO logosebe (idlogosebe, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logosebe'), now(), current_user, TG_OP, OLD.idosebe, OLD.ime || ', ' || OLD.priimek || ', ' || OLD.naslov || ', ' || OLD.telefon || ', ' || OLD.email || ', ' || OLD.spol || ', ' || OLD.davcnastevilka || ', ' || OLD.emso || ', ' || OLD.idKraji);

END IF; IF UPPER(TG_OP) = 'INSERT' THEN

INSERT INTO logosebe (idlogosebe, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logosebe'), now(), current_user, TG_OP, NEW.idosebe, NEW.ime || ', ' || NEW.priimek || ', ' || NEW.naslov || ', ' || NEW.telefon || ', ' || NEW.email || ', ' || NEW.spol || ', ' || NEW.davcnastevilka || ', ' || NEW.emso || ', ' || NEW.idKraji);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec osebetrigger CREATE TRIGGER osebetrigger AFTER INSERT OR UPDATE OR DELETE ON osebe FOR EACH ROW EXECUTE PROCEDURE osebeTG();

Funkcija poslovniPartnerjiLastnistvaTG CREATE OR REPLACE FUNCTION poslovniPartnerjiLastnistvaTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logposlovnipartnerjilastnistva (idlogposlovnipartnerjilastnistva, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logposlovnipartnerjilastnistva'), now(), current_user, TG_OP, .idposlovnipartnerjilastnistva, OLD.odstotek || ' => ' || NEW.odstotek || ', ' || OLD.idPoslovniPartnerji || ' => ' || NEW.idPoslovniPartnerji || ', ' || OLD.idNepremicnine || ' => ' || NEW.idNepremicnine);

END IF; IF UPPER(TG_OP) = 'DELETE' THEN

INSERT INTO logposlovnipartnerjilastnistva (idlogposlovnipartnerjilastnistva, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logposlovnipartnerjilastnistva'), now(), current_user, TG_OP,OLD.idposlovnipartnerjilastnistva, OLD.odstotek || ', ' || OLD.idPoslovniPartnerji || ', ' || OLD.idNepremicnine);

END IF; IF UPPER(TG_OP) = 'INSERT' THEN

INSERT INTO logposlovnipartnerjilastnistva (idlogposlovnipartnerjilastnistva, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logposlovnipartnerjilastnistva'), now(), current_user, TG_OP, NEW.idposlovnipartnerjilastnistva, NEW.odstotek || ', ' || NEW.idPoslovniPartnerji || ', ' || NEW.idNepremicnine);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec poslovnipartnerjilastnistvatrigger CREATE TRIGGER poslovnipartnerjilastnistvatrigger AFTER INSERT OR UPDATE OR DELETE ON poslovnipartnerjilastnistva FOR EACH ROW EXECUTE PROCEDURE poslovniPartnerjiLastnistvaTG();

Page 53: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

50 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Funkcija osebeLastnistvaTG CREATE OR REPLACE FUNCTION osebeLastnistvaTG() RETURNS TRIGGER AS $body$ DECLARE

oldDO VARCHAR; newDo VARCHAR;

BEGIN IF UPPER(TG_OP) = 'UPDATE' then

BEGIN IF OLD.lastnikDo IS NULL THEN

oldDo = ''; ELSE

oldDo = to_char(OLD.lastnikDo, 'YYYY-MM-DD'); END IF; IF NEW.lastnikDo IS NULL THEN

newDo = ''; ELSE

newDo = to_char(NEW.lastnikDo, 'YYYY-MM-DD'); END IF;

END; INSERT INTO logosebelastnistva (idlogosebelastnistva, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logosebelastnistva'), now(), current_user, TG_OP, OLD.idosebelastnistva, OLD.odstotek || ' => ' || NEW.odstotek || ', ' || OLD.idOsebe || ' => ' || NEW.idOsebe || ', ' || OLD.idNepremicnine || ' => ' || NEW.idNepremicnine || ', ' || OLD.lastnikOd || ' => ' || NEW.lastnikOd || ', ' || oldDo || ' => ' || newDo);

END IF; IF UPPER(TG_OP) = 'DELETE' then

BEGIN IF OLD.lastnikDo IS NULL THEN

oldDo = ''; ELSE

oldDo = to_char(OLD.lastnikDo, 'YYYY-MM-DD'); END IF;

END; INSERT INTO logosebelastnistva (idlogosebelastnistva, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logosebelastnistva'), now(), current_user, TG_OP, OLD.idosebelastnistva, OLD.odstotek || ', ' || OLD.idOsebe || ', ' || OLD.idNepremicnine || ', ' || OLD.lastnikOd || ', ' || oldDo);

END IF; IF UPPER(TG_OP) = 'INSERT' then

BEGIN IF NEW.lastnikDo IS NULL THEN

newDo = ''; ELSE

newDo = to_char(NEW.lastnikDo, 'YYYY-MM-DD'); END IF;

END; INSERT INTO logosebelastnistva (idlogosebelastnistva, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logosebelastnistva'), now(), current_user, TG_OP, NEW.idosebelastnistva, NEW.odstotek || ', ' || NEW.idOsebe || ', ' || NEW.idNepremicnine || ', ' || NEW.lastnikOd || ', ' || newDo);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec osebelastnistvatrigger CREATE TRIGGER osebelastnistvatrigger AFTER INSERT OR UPDATE OR DELETE ON osebelastnistva FOR EACH ROW EXECUTE PROCEDURE osebeLastnistvaTG();

Page 54: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

51 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Funkcija agentiTG CREATE OR REPLACE FUNCTION agentiTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' then INSERT INTO logagenti (idlogagenti, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logagenti'), now(), current_user, TG_OP, OLD.idagenti, OLD.uporabniskoIme || ' => ' || NEW.uporabniskoIme || ', ' || OLD.geslo || ' => ' || NEW.geslo || ', ' || OLD.provizija || ' => ' || NEW.provizija || ', ' || OLD.telefon || ' => ' || NEW.telefon || ', ' || OLD.email || ' => ' || NEW.email || ', ' || OLD.idOsebe || ' => ' || NEW.idOsebe);

END IF; IF UPPER(TG_OP) = 'DELETE' then

INSERT INTO logagenti (idlogagenti, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logagenti'), now(), current_user, TG_OP, OLD.idagenti, OLD.uporabniskoIme || ', ' || OLD.geslo || ', ' || OLD.provizija || ', ' || OLD.telefon || ', ' || OLD.email || ', ' || OLD.idOsebe);

END IF; IF UPPER(TG_OP) = 'INSERT' then

INSERT INTO logagenti (idlogagenti, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logagenti'), now(), current_user, TG_OP, NEW.idagenti, NEW.uporabniskoIme || ', ' || NEW.geslo || ', ' || NEW.provizija || ', ' || NEW.telefon || ', ' || NEW.email || ', ' || NEW.idOsebe);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec agentitrigger CREATE TRIGGER agentitrigger AFTER INSERT OR UPDATE OR DELETE ON agenti FOR EACH ROW EXECUTE PROCEDURE agentiTG();

Funkcija nepremicnineagentiTG CREATE OR REPLACE FUNCTION nepremicnineAgentiTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' then INSERT INTO logNepremicnineAgenti (idLogNepremicnineAgenti, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logNepremicnineAgenti'), now(), current_user, TG_OP, OLD.idNepremicnineAgenti, OLD.idNepremicnine || ' => ' || NEW.idNepremicnine || ', ' || OLD.idAgenti || ' => ' || NEW.idAgenti);

END IF; IF UPPER(TG_OP) = 'DELETE' then

INSERT INTO logNepremicnineAgenti (idLogNepremicnineAgenti, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logNepremicnineAgenti'), now(), current_user, TG_OP, OLD.idNepremicnineAgenti, OLD.idNepremicnine || ', ' || OLD.idAgenti);

END IF; IF UPPER(TG_OP) = 'INSERT' then

INSERT INTO logNepremicnineAgenti (idLogNepremicnineAgenti, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logNepremicnineAgenti'), now(), current_user, TG_OP, NEW.idNepremicnineAgenti, NEW.idNepremicnine || ', ' || NEW.idAgenti);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec nepremicnineagentitrigger CREATE TRIGGER nepremicnineagentitrigger AFTER INSERT OR UPDATE OR DELETE ON nepremicnineagenti FOR EACH ROW EXECUTE PROCEDURE nepremicnineAgentiTG();

Page 55: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

52 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Funkcija oglasiTG CREATE OR REPLACE FUNCTION oglasiTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' then INSERT INTO logoglasi (idlogoglasi, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logoglasi'), now(), current_user, TG_OP, OLD.idoglasi, OLD.imeOglasa || ' => ' || NEW.imeOglasa || ', ' || OLD.datum || ' => ' || NEW.datum || ', ' || OLD.aktivenDo || ' => ' || NEW.aktivenDo || ', ' || OLD.idNepremicnine || ' => ' || NEW.idNepremicnine || ', ' || OLD.idPPOglasevalci || ' => ' || NEW.idPPOglasevalci);

END IF; IF UPPER(TG_OP) = 'DELETE' then

INSERT INTO logoglasi (idlogoglasi, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logoglasi'), now(), current_user, TG_OP, OLD.idoglasi, OLD.imeOglasa || ', ' || OLD.datum || ', ' || OLD.aktivenDo || ', ' || OLD.idNepremicnine || ', ' || OLD.idPPOglasevalci);

END IF; IF UPPER(TG_OP) = 'INSERT' then

INSERT INTO logoglasi (idlogoglasi, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logoglasi'), now(), current_user, TG_OP, NEW.idoglasi, NEW.imeOglasa || ', ' || NEW.datum || ', ' || NEW.aktivenDo || ', ' || NEW.idNepremicnine || ', ' || NEW.idPPOglasevalci);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec oglasiitrigger CREATE TRIGGER oglasitrigger AFTER INSERT OR UPDATE OR DELETE ON oglasi FOR EACH ROW EXECUTE PROCEDURE oglasiTG();

Funkcija slikeTG CREATE OR REPLACE FUNCTION slikeTG() RETURNS TRIGGER AS $body$ BEGIN

IF UPPER(TG_OP) = 'UPDATE' then INSERT INTO logslike (idlogslike, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logslike'), now(), current_user, TG_OP, OLD.idslike, OLD.imeSlike || ' => ' || NEW.imeSlike || ', ' || OLD.url || ' => ' || NEW.url || ', ' || OLD.idNepremicnine || ' => ' || NEW.idNepremicnine);

END IF; IF UPPER(TG_OP) = 'DELETE' then

INSERT INTO logslike (idlogslike, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logslike'), now(), current_user, TG_OP, OLD.idslike, OLD.imeSlike || ', ' || OLD.url || ', ' || OLD.idNepremicnine);

END IF; IF UPPER(TG_OP) = 'INSERT' then

INSERT INTO logslike (idlogslike, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logslike'), now(), current_user, TG_OP, NEW.idslike, NEW.imeSlike || ', ' || NEW.url || ', ' || NEW.idNepremicnine);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec sliketrigger CREATE TRIGGER sliketrigger AFTER INSERT OR UPDATE OR DELETE ON slike FOR EACH ROW EXECUTE PROCEDURE slikeTG();

Page 56: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

53 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Funkcija oglediTG CREATE OR REPLACE FUNCTION oglediTG() RETURNS TRIGGER AS $body$ DECLARE

oldMnenje VARCHAR; newMnenje VARCHAR;

BEGIN IF UPPER(TG_OP) = 'UPDATE' then

BEGIN IF OLD.mnenje IS NULL THEN

oldMnenje = 'NULL'; ELSE

oldMnenje = OLD.mnenje::text; END IF; IF NEW.mnenje IS NULL THEN

newMnenje = 'NULL'; ELSE

newMnenje = NEW.mnenje::text; END IF;

END; INSERT INTO logogledi (idlogogledi, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logogledi'), now(), current_user, TG_OP, OLD.idogledi, OLD.casOgleda || ' => ' || NEW.casOgleda || ', ' || OLD.opravljen || ' => ' || NEW.opravljen || ', ' || oldMnenje || ' => ' || newMnenje || ', ' || OLD.idAgenti || ' => ' || NEW.idAgenti || ', ' || OLD.idPovprasevanja || ' => ' || NEW.idPovprasevanja || ', ' || OLD.idNepremicnine || ' => ' || NEW.idNepremicnine);

END IF; IF UPPER(TG_OP) = 'DELETE' then

BEGIN IF OLD.mnenje IS NULL THEN

oldMnenje = 'NULL'; ELSE

oldMnenje = OLD.mnenje::text; END IF;

END; INSERT INTO logogledi (idlogogledi, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logogledi'), now(), current_user, TG_OP, OLD.idogledi, OLD.casOgleda || ', ' || OLD.opravljen || ', ' || oldMnenje || ', ' || OLD.idAgenti || ', ' || OLD.idPovprasevanja || ', ' || OLD.idNepremicnine);

END IF; IF UPPER(TG_OP) = 'INSERT' then

BEGIN IF NEW.mnenje IS NULL THEN

newMnenje = 'NULL'; ELSE

newMnenje = NEW.mnenje::text; END IF;

END; INSERT INTO logogledi (idlogogledi, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logogledi'), now(), current_user, TG_OP, NEW.idogledi, NEW.casOgleda || ', ' || NEW.opravljen || ', ' || newMnenje || ', ' || NEW.idAgenti || ', ' || NEW.idPovprasevanja || ', ' || NEW.idNepremicnine);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec ogleditrigger CREATE TRIGGER ogleditrigger AFTER INSERT OR UPDATE OR DELETE ON ogledi FOR EACH ROW EXECUTE PROCEDURE oglediTG();

Page 57: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

54 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Funkcija povprasevanjaTG CREATE OR REPLACE FUNCTION povprasevanjaTG() RETURNS TRIGGER AS $body$ DECLARE

oldIdKraji VARCHAR; newIdKraji VARCHAR;

BEGIN IF UPPER(TG_OP) = 'UPDATE' then

BEGIN IF OLD.idKraji IS NULL THEN

oldIdKraji = 'NULL'; ELSE

oldIdKraji = OLD.idKraji::text; END IF; IF NEW.idKraji IS NULL THEN

newIdKraji = 'NULL'; ELSE

newIdKraji = NEW.idKraji::text; END IF;

END; INSERT INTO logpovprasevanja (idlogpovprasevanja, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logpovprasevanja'), now(), current_user, TG_OP, OLD.idpovprasevanja, oldIdKraji || ' => ' || newIdKraji || ', ' || OLD.idRegije || ' => ' || NEW.idRegije || ', ' || OLD.idOsebe || ' => ' || NEW.idOsebe || ', ' || OLD.opis || ' => ' || NEW.opis);

END IF; IF UPPER(TG_OP) = 'DELETE' then

BEGIN IF OLD.idKraji IS NULL THEN

oldIdKraji = 'NULL'; ELSE

oldIdKraji = OLD.idKraji::text; END IF;

END; INSERT INTO logpovprasevanja (idlogpovprasevanja, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logpovprasevanja'), now(), current_user, TG_OP, OLD.idpovprasevanja, oldIdKraji || ', ' || OLD.idRegije || ', ' || OLD.idOsebe || ', ' || OLD.opis);

END IF; IF UPPER(TG_OP) = 'INSERT' then

BEGIN IF NEW.idKraji IS NULL THEN

newIdKraji = 'NULL'; ELSE

newIdKraji = NEW.idKraji::text; END IF;

END; INSERT INTO logpovprasevanja (idlogpovprasevanja, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logpovprasevanja'), now(), current_user, TG_OP, NEW.idpovprasevanja, newIdKraji || ', ' || NEW.idRegije || ', ' || NEW.idOsebe || ', ' || NEW.opis);

END IF; RETURN NULL;

END; $body$ LANGUAGE 'plpgsql';

Prožilec povprasevanjatrigger CREATE TRIGGER popvprasevanjatrigger AFTER INSERT OR UPDATE OR DELETE ON povprasevanja FOR EACH ROW EXECUTE PROCEDURE povprasevanjaTG();

Page 58: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

55 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

7.3 Ustvarjanje tabel za logiranje – avtor Nejc Martinjak Eniteta logNotarji Entiteta logPlacila Entiteta logVrstePlacil

CREATE TABLE logNotarji( idLogNotarji INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT );

CREATE TABLE logPlacila( idLogPlacila INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT );

CREATE TABLE logVrstePlacil( idLogVrstePlacil INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT );

Eniteta logPogodbe Entiteta logPogodbeProdajalci Entiteta logOsebe

CREATE TABLE logPogodbe( idLogPogodbe INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT );

CREATE TABLE logPogodbeProdajalci( idLogPogodbeProdajalci INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT );

CREATE TABLE logOsebe( idLogOsebe INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT );

Eniteta logOsebeLastnistva Entiteta logPogodbeNepremicnine Entiteta logKraji

CREATE TABLE logOsebeLastnistva( idLogOsebeLastnistva INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT );

CREATE TABLE logPogodbeNepremicnine( idLogPogodbeNepremicnine INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT );

CREATE TABLE logKraji( idLogKraji INTEGER NOT NULL PRIMARY KEY, datumSpremembe date, uporabnik VARCHAR(60), operacija VARCHAR(60), kljuc INTEGER, opis TEXT );

Page 59: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

56 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

7.4 Funkcije za beleženje sprememb v bazi – avtor Nejc Martinjak

Funkcija NotarjiTG CREATE OR REPLACE FUNCTION NotarjiTG() RETURNS TRIGGER AS $body$ BEGIN IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logNotarji (idLogNotarji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logNotarji'), now(), current_user, TG_OP, OLD.idnotarji, OLD.cenastoritve || '=> ' || NEW.cenastoritve || ', ' || OLD.telefonsluzba || '=> ' || NEW.telefonsluzba || ', ' || OLD.emailsluzba || '=> ' || NEW.emailsluzba || ', ' || OLD.idosebe || '=> ' || NEW.idosebe); END IF; IF UPPER(TG_OP) = 'DELETE' THEN INSERT INTO logNotarji (idLogNotarji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logNotarji'), now(), current_user, TG_OP, OLD.idnotarji, OLD.cenastoritve || ', ' || OLD.telefonsluzba || ', ' || OLD.emailsluzba || ', ' || OLD.idosebe); END IF; IF UPPER(TG_OP) = 'INSERT' THEN INSERT INTO logNotarji (idLogNotarji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logNotarji'), now(), current_user, TG_OP, NEW.idnotarji, NEW.cenastoritve || ', ' || NEW.telefonsluzba || ', ' || NEW.emailsluzba || ', ' || NEW.idosebe); END IF; RETURN NULL; END; $body$ LANGUAGE 'plpgsql';

Prožilec notarjiTrigger CREATE TRIGGER notarjiTrigger AFTER INSERT OR UPDATE OR DELETE ON notarji FOR EACH ROW EXECUTE PROCEDURE NotarjiTG();

Funkcija OsebeTG CREATE OR REPLACE FUNCTION osebeTG() RETURNS TRIGGER AS $body$ BEGIN IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logOsebe (idLogOsebe, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_Logosebe'), now(), current_user, TG_OP, OLD.idosebe, OLD.ime || ' => ' || NEW.ime || ', ' || OLD.priimek || ' => ' || NEW.priimek || ', ' || OLD.naslov || ' => ' || NEW.naslov || ', ' || OLD.telefon || ' => ' || NEW.telefon || ', ' || OLD.email || ' => ' || NEW.email || ', ' || OLD.spol || ' => ' || NEW.spol || ', ' || OLD.davcnastevilka || ' => ' || NEW.davcnastevilka || ', ' || OLD.emso || ' => ' || NEW.emso || ', ' || OLD.idKraji || ' => ' || NEW.idKraji); END IF; IF UPPER(TG_OP) = 'DELETE' THEN INSERT INTO logOsebe (idLogOsebe, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_Logosebe'), now(), current_user, TG_OP, OLD.idosebe, OLD.ime || ', ' || OLD.priimek || ', ' || OLD.naslov || ', ' || OLD.telefon || ', ' || OLD.email || ', ' || OLD.spol || ', ' || OLD.davcnastevilka || ', ' || OLD.emso || ', ' || OLD.idKraji); END IF; IF UPPER(TG_OP) = 'INSERT' THEN INSERT INTO logOsebe (idLogOsebe, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_Logosebe'), now(), current_user, TG_OP, NEW.idosebe, NEW.ime || ', ' || NEW.priimek || ', ' || NEW.naslov || ', ' || NEW.telefon || ', ' || NEW.email || ', ' || NEW.spol || ', ' || NEW.davcnastevilka || ', ' || NEW.emso || ', ' || NEW.idKraji); END IF; RETURN NULL; END; $body$ LANGUAGE 'plpgsql';

Prožilec osebeTrigger CREATE TRIGGER osebeTrigger AFTER INSERT OR UPDATE OR DELETE ON osebe FOR EACH ROW EXECUTE PROCEDURE osebeTG();

Page 60: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

57 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Funkcija PlacilaTG CREATE OR REPLACE FUNCTION PlacilaTG() RETURNS TRIGGER AS $body$ BEGIN IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logPlacila (idLogPlacila, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPlacila'), now(), current_user, TG_OP, OLD.idplacila, OLD.znesekplacila || '=> ' || NEW.znesekplacila || ', ' || OLD.idvrsteplacil || '=> ' || NEW.idvrsteplacil || ', ' || OLD.idpogodbe || '=> ' || NEW.idpogodbe || ', ' || OLD.datumplacila || '=> ' || NEW.datumplacila); END IF; IF UPPER(TG_OP) = 'DELETE' THEN INSERT INTO logPlacila (idLogPlacila, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPlacila'), now(), current_user, TG_OP, OLD.idplacila, OLD.znesekplacila || ', ' || OLD.idvrsteplacil || ', ' || OLD.idpogodbe || ', ' || OLD.datumplacila); END IF; IF UPPER(TG_OP) = 'INSERT' THEN INSERT INTO logPlacila (idLogPlacila, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPlacila'), now(), current_user, TG_OP, NEW.idplacila, NEW.znesekplacila || ', ' || NEW.idvrsteplacil || ', ' || NEW.idpogodbe || ', ' || NEW.datumplacila); END IF; RETURN NULL; END; $body$ LANGUAGE 'plpgsql';

Prožilec placilaTrigger CREATE TRIGGER placilaTrigger AFTER INSERT OR UPDATE OR DELETE ON placila FOR EACH ROW EXECUTE PROCEDURE PlacilaTG();

Funkcija VrstePlacilTG CREATE OR REPLACE FUNCTION VrstePlacilTG() RETURNS TRIGGER AS $body$ BEGIN IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logVrstePlacil (idLogVrstePlacil, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logVrstePlacil'), now(), current_user, TG_OP, OLD.idvrsteplacil, OLD.idnadrejenevrsteplacil || '=> ' || NEW.idnadrejenevrsteplacil || ', ' || OLD.vrstaplacila || '=> ' || NEW.vrstaplacila); END IF; IF UPPER(TG_OP) = 'DELETE' THEN INSERT INTO logVrstePlacil (idLogVrstePlacil, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logVrstePlacil'), now(), current_user, TG_OP, OLD.idvrsteplacil, OLD.idnadrejenevrsteplacil || ', ' || OLD.vrstaplacila); END IF; IF UPPER(TG_OP) = 'INSERT' THEN INSERT INTO logVrstePlacil (idLogVrstePlacil, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logVrstePlacil'), now(), current_user, TG_OP, NEW.idvrsteplacil, NEW.idnadrejenevrsteplacil|| ', ' || NEW.vrstaplacila); END IF; RETURN NULL; END; $body$ LANGUAGE 'plpgsql';

Prožilec vrstePlacilTrigger CREATE TRIGGER vrstePlacilTrigger AFTER INSERT OR UPDATE OR DELETE ON vrsteplacil FOR EACH ROW EXECUTE PROCEDURE VrstePlacilTG();

Page 61: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

58 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Funkcija PogodbeTG CREATE OR REPLACE FUNCTION PogodbeTG() RETURNS TRIGGER AS $body$ BEGIN IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logPogodbe (idLogPogodbe, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPogodbe'), now(), current_user, TG_OP, OLD.idpogodbe, OLD.stevilkapogodbe || '=> ' || NEW.stevilkapogodbe || ', ' || OLD.opis || '=> ' || NEW.opis || ', ' || OLD.datum || '=> ' || NEW.datum || ', ' || OLD.podpis || '=> ' || NEW.podpis || ', ' || OLD.dokumentpogodbe || '=> ' || NEW.dokumentpogodbe || ', ' || OLD.status || '=> ' || NEW.status || ', ' || OLD.idnotarji || '=> ' || NEW.idnotarji); END IF; IF UPPER(TG_OP) = 'DELETE' THEN INSERT INTO logPogodbe (idLogPogodbe, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPogodbe'), now(), current_user, TG_OP, OLD.idpogodbe, OLD.stevilkapogodbe || ', ' || OLD.opis || ', ' || OLD.datum || ', ' || OLD.podpis || ', ' || OLD.dokumentpogodbe || ', ' || OLD.status || ', ' || OLD.idnotarji); END IF; IF UPPER(TG_OP) = 'INSERT' THEN INSERT INTO logPogodbe (idLogPogodbe, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPogodbe'), now(), current_user, TG_OP, NEW.idpogodbe, NEW.stevilkapogodbe|| ', ' || NEW.opis || ', ' || NEW.datum || ', ' || NEW.podpis || ', ' || NEW.dokumentpogodbe || ', ' || NEW.status || ', ' || NEW.idnotarji); END IF; RETURN NULL; END; $body$ LANGUAGE 'plpgsql';

Prožilec pogodbeTrigger CREATE TRIGGER pogodbeTrigger AFTER INSERT OR UPDATE OR DELETE ON pogodbe FOR EACH ROW EXECUTE PROCEDURE PogodbeTG();

Funkcija PogodbeProdajalciTG CREATE OR REPLACE FUNCTION PogodbeProdajalciTG() RETURNS TRIGGER AS $body$ BEGIN IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logPogodbeProdajalci (idLogPogodbeProdajalci, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPogodbeProdajalci'), now(), current_user, TG_OP, OLD.idpogodbeprodajalci, OLD.idpogodbe || '=> ' || NEW.idpogodbe || ', ' || OLD.odstotek || '=> ' || NEW.odstotek || ', ' || OLD.idosebe || '=> ' || NEW.idosebe); END IF; IF UPPER(TG_OP) = 'DELETE' THEN INSERT INTO logPogodbeProdajalci (idLogPogodbeProdajalci, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPogodbeProdajalci'), now(), current_user, TG_OP, OLD.idpogodbeprodajalci, OLD.idpogodbe || ', ' || OLD.odstotek || ', ' || OLD.idosebe); END IF; IF UPPER(TG_OP) = 'INSERT' THEN INSERT INTO logPogodbeProdajalci (idLogPogodbeProdajalci, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPogodbeProdajalci'), now(), current_user, TG_OP, NEW.idpogodbeprodajalci, NEW.idpogodbe|| ', ' || NEW.odstotek || ', ' || NEW.idosebe ); END IF; RETURN NULL; END; $body$ LANGUAGE 'plpgsql';

Prožilec PogodbeProdajalciTrigger CREATE TRIGGER PogodbeProdajalciTrigger AFTER INSERT OR UPDATE OR DELETE ON pogodbeprodajalci FOR EACH ROW EXECUTE PROCEDURE PogodbeProdajalciTG();

Page 62: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

59 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Funkcija PogodbeNepremicnineTG CREATE OR REPLACE FUNCTION PogodbeNepremicnineTG() RETURNS TRIGGER AS $body$ BEGIN IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logPogodbeNepremicnine (idLogPogodbeNepremicnine, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPogodbeNepremicnine'), now(), current_user, TG_OP, OLD.idpogodbenepremicnine, OLD.idpogodbe || '=> ' || NEW.idpogodbe || ', ' || OLD.idnepremicnine || '=> ' || NEW.idnepremicnine); END IF; IF UPPER(TG_OP) = 'DELETE' THEN INSERT INTO logPogodbeNepremicnine (idLogPogodbeNepremicnine, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPogodbeNepremicnine'), now(), current_user, TG_OP, OLD.idpogodbenepremicnine, OLD.idpogodbe || ', ' || OLD.idnepremicnine); END IF; IF UPPER(TG_OP) = 'INSERT' THEN INSERT INTO logPogodbeNepremicnine (idLogPogodbeNepremicnine, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logPogodbeNepremicnine'), now(), current_user, TG_OP, NEW.idpogodbenepremicnine, NEW.idpogodbe|| ', ' || NEW.idnepremicnine); END IF; RETURN NULL; END; $body$ LANGUAGE 'plpgsql';

Prožilec PogodbeNepremicnineTrigger CREATE TRIGGER pogodbeNepremicnineTrigger AFTER INSERT OR UPDATE OR DELETE ON pogodbenepremicnine FOR EACH ROW EXECUTE PROCEDURE VrstePlacilTG();

Funkcija KrajiTG CREATE OR REPLACE FUNCTION KrajiTG() RETURNS TRIGGER AS $body$ BEGIN IF UPPER(TG_OP) = 'UPDATE' THEN INSERT INTO logKraji (idLogKraji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logKraji'), now(), current_user, TG_OP, OLD.idkraji, OLD.kraj || ' => ' || NEW.kraj || ', ' || OLD.postnastevilka || ' => ' || NEW.postnastevilka || ', ' || OLD.idobcine || ' => ' || NEW.idobcine || ', ' || OLD.idregije || ' => ' || NEW.idregije); END IF; IF UPPER(TG_OP) = 'DELETE' THEN INSERT INTO logKraji (idLogKraji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logKraji'), now(), current_user, TG_OP, OLD.idkraji, OLD.kraj || ', ' || OLD.postnastevilka || ', ' || OLD.idobcine || ', ' || OLD.idregije); END IF; IF UPPER(TG_OP) = 'INSERT' THEN INSERT INTO logKraji (idLogKraji, datumspremembe, uporabnik, operacija, kljuc, opis) VALUES (nextval('seq_logKraji'), now(), current_user, TG_OP, NEW.idkraji, NEW.kraj || ', ' || NEW.postnastevilka || ', ' || NEW.idobcine || ', ' || NEW.idregije); END IF; RETURN NULL; END; $body$ LANGUAGE 'plpgsql';

Prožilec krajiTrigger CREATE TRIGGER krajiTrigger AFTER INSERT OR UPDATE OR DELETE ON kraji FOR EACH ROW EXECUTE PROCEDURE KrajiTG();

Page 63: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

60 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

8 Določitev vlog in uporabnikov

8.1 Določitev vlog in uporabnikov – avtor Matic Božič Uporabnik Vloga DDL

AGENT1 AGENTS CREATE ROLE agents; GRANT agents TO agent1;

CUSTOMERS CREATE ROLE customers;

8.2 Določitev vlog in uporabnikov – avtor Nejc Martinjak Uporabnik Vloga DDL

ADMIN1 ADMINISTRATORS CREATE ROLE administrators; GRANT administrators TO admin1;

NOTARY CREATE ROLE notary;

Page 64: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

61 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

9 Določitev avtorizacijskih pravic uporabnikom in vlogam

9.1 Določitev pravic – avtor Matic Božič GRANT SELECT, INSERT, UPDATE ON

osebe, agenti, ogledi, povprasevanja, kategorije, osebelastnistva, nepremicnineagenti,

obcine, nepremicnine, slike, regije, kraji, poslovnipartnerji, poslovnipartnerjilastnistva,

oglasi

TO agents;

GRANT SELECT, INSERT, UPDATE ON

osebe, agenti, ogledi, povprasevanja, kategorije, osebelastnistva, nepremicnineagenti,

obcine, nepremicnine, slike, regije, kraji, poslovnipartnerji, poslovnipartnerjilastnistva,

oglasi

TO agent1;

9.2 Določitev pravic – avtor Nejc Martinjak

GRANT SELECT, INSERT, UPDATE ON

osebe, notarji, placila, vrsteplacil, pogodbe, pogodbeprodajalci, osebelastnistva,

nepremicnine

TO administrators;

GRANT SELECT, INSERT, UPDATE ON

osebe, notarji, placila, vrsteplacil, pogodbe, pogodbeprodajalci, osebelastnistva,

nepremicnine

TO admin1;

GRANT SELECT, INSERT, UPDATE ON

osebe, notarji, placila, pogodbe, pogodbeprodajalci

TO notary;

Page 65: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

62 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

10 Testno polnjenje podatkovne baze

10.1 Testno polnjenje podatkovne baze – avtor Matic Božič Entiteta regije SELECT * FROM public.regijeinsertupdate(NULL, 'Pomurska'); SELECT * FROM public.regijeinsertupdate(NULL, 'Podravska'); SELECT * FROM public.regijeinsertupdate(NULL, 'Savinjska'); SELECT * FROM public.regijeinsertupdate(NULL, 'Koroška'); SELECT * FROM public.regijeinsertupdate(NULL, 'Zasavje'); SELECT * FROM public.regijeinsertupdate(NULL, 'Gorenjska'); SELECT * FROM public.regijeinsertupdate(NULL, 'Osrednjeslovenska'); SELECT * FROM public.regijeinsertupdate(NULL, 'Kraška'); SELECT * FROM public.regijeinsertupdate(NULL, 'Goriška'); SELECT * FROM public.regijeinsertupdate(NULL, 'Jugovzhodna'); SELECT * FROM public.regijeinsertupdate(NULL, 'Test');

Entiteta obcine SELECT * FROM public.obcineinsertupdate(NULL, 'Maribor'); SELECT * FROM public.obcineinsertupdate(NULL, 'Ljubljana'); SELECT * FROM public.obcineinsertupdate(NULL, 'Celje'); SELECT * FROM public.obcineinsertupdate(NULL, 'Velenje'); SELECT * FROM public.obcineinsertupdate(NULL, 'Žalec'); SELECT * FROM public.obcineinsertupdate(NULL, 'Kranj'); SELECT * FROM public.obcineinsertupdate(NULL, 'Koper'); SELECT * FROM public.obcineinsertupdate(NULL, 'Novo Mesto'); SELECT * FROM public.obcineinsertupdate(NULL, 'Trbovlje'); SELECT * FROM public.obcineinsertupdate(NULL, 'Murska Sobota'); SELECT * FROM public.obcineinsertupdate(NULL, 'Test');

Entiteta kraji SELECT * FROM public.krajiinsertupdate (NULL, 'Maribor', '2000', 'Maribor', 'Podravska'); SELECT * FROM public.krajiinsertupdate (NULL, 'Celje', '3000', 'Celje', 'Savinjska'); SELECT * FROM public.krajiinsertupdate (NULL, 'Velenje', '3320', 'Velenje', 'Savinjska'); SELECT * FROM public.krajiinsertupdate (NULL, 'Koper', '6000', 'Koper', 'Kraška'); SELECT * FROM public.krajiinsertupdate (NULL, 'Brezje', '8321', 'Novo Mesto', 'Jugovzhodna'); SELECT * FROM public.krajiinsertupdate (NULL, 'Novo Mesto', '8000', 'Novo Mesto', 'Jugovzhodna'); SELECT * FROM public.krajiinsertupdate (NULL, 'Žalec', '3310', 'Žalec', 'Savinjska'); SELECT * FROM public.krajiinsertupdate (NULL, 'Petrovče', '3301', 'Žalec', 'Savinjska'); SELECT * FROM public.krajiinsertupdate (NULL, 'Kranj', '4000', 'Kranj', 'Gorenjska'); SELECT * FROM public.krajiinsertupdate (NULL, 'Gotovlje', '3310', 'Žalec', 'Podravska'); SELECT * FROM public.krajiinsertupdate (NULL, 'Ljubljana', '1000', 'Ljubljana', 'Osrednjeslovenska'); SELECT * FROM public.krajiinsertupdate (NULL, 'Test', 'Test', 'Test', 'Test');

Entiteta poslovnipartnerji SELECT * FROM public.poslovnipartnerjiinsertupdate (NULL, 'Krik Desna', 'KD', 'Gošljvea 5', '45678910', 'Novo Mesto'); SELECT * FROM public.poslovnipartnerjiinsertupdate (NULL, 'Letak d.o.o.', 'Letak', 'Bevkova 32', '12345643', 'Žalec'); SELECT * FROM public.poslovnipartnerjiinsertupdate (NULL, 'Recenzus Celje d.o.o.', 'RE CE', 'Ulica frankolovskih žrtev 12', '43278690', 'Celje'); SELECT * FROM public.poslovnipartnerjiinsertupdate (NULL, 'Mehaniko Meh d.o.o.', 'Meh', 'Sestavljena cesta 3', '45512940', 'Kranj'); SELECT * FROM public.poslovnipartnerjiinsertupdate (NULL, 'Cinkarna Celje d.d.', 'CC', 'Leva pot 6', '66678777', 'Celje'); SELECT * FROM public.poslovnipartnerjiinsertupdate (NULL, 'Delo d.o.o.', 'Delo', 'Cankarjeva 15', '5557616', 'Ljubljana'); SELECT * FROM public.poslovnipartnerjiinsertupdate (NULL, 'Kreka d.d.', 'Kreka', 'Kresna pot 9', '9876543', 'Novo Mesto'); SELECT * FROM public.poslovnipartnerjiinsertupdate (NULL, 'Meja d.n.o.', 'Meja', 'Zehova 3', '2221432', 'Maribor'); SELECT * FROM public.poslovnipartnerjiinsertupdate (NULL, 'Cajtung d.o.o.', 'CJTNG', 'Repulkovo 25', '25638610', 'Žalec'); SELECT * FROM public.poslovnipartnerjiinsertupdate (NULL, 'LevoGor', 'LGor', 'Ulica vrnitve 5', '43278730', 'Koper');

Page 66: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

63 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Entiteta osebe SELECT * FROM public.osebeinsertupdate (NULL, 'Jože', 'Deveti', 'Krekova 29', '031921876', '[email protected]', 'moški', '230200092123', '25521632', 'Koper'); SELECT * FROM public.osebeinsertupdate (NULL, 'Marko', 'Skače', 'Polhova 3', '051333444', '[email protected]', 'moški', '230200088873', '24456789', 'Žalec'); SELECT * FROM public.osebeinsertupdate (NULL, 'Lea', 'Polh', 'Dominkova 12', '070923843', '[email protected]', 'ženski', '190800078123', '25421999', 'Celje'); SELECT * FROM public.osebeinsertupdate (NULL, 'Jana', 'Smrk', 'Smrekova 129', '041976876', '[email protected]', 'ženski', '040500077123', '25645623', 'Novo Mesto'); SELECT * FROM public.osebeinsertupdate (NULL, 'Luka', 'Šmorn', 'Aljaževa 53', '080921123', '[email protected]', 'moški', '141200082124', '23523432', 'Ljubljana'); SELECT * FROM public.osebeinsertupdate (NULL, 'Janko', 'Kos', 'Kosobrinova 259', '090921234', '[email protected]', 'moški', '211100068283', '25888832', 'Velenje'); SELECT * FROM public.osebeinsertupdate (NULL, 'Živa', 'Vilič', 'Kloskova 11', '070953734', '[email protected]', 'ženski', '240600079233', '23841832', 'Kranj'); SELECT * FROM public.osebeinsertupdate (NULL, 'Ivan', 'Pug', 'Puhova vas 3', '030376234', '[email protected]', 'moški', '270100058993', '15877732', 'Petrovče'); SELECT * FROM public.osebeinsertupdate (NULL, 'Štefan', 'Cena', 'Nevidna cesta 22', '060321556', '[email protected]', 'moški', '200300077234', '21234832', 'Kranj'); SELECT * FROM public.osebeinsertupdate (NULL, 'Andrej', 'Novak', 'Cankrajeva 33', '050923434', '[email protected]', 'moški', '050500083267', '35831832', 'Velenje'); SELECT * FROM public.osebeinsertupdate (NULL, 'Jožica', 'Novak', 'Cankrajeva 33', '070913434', '[email protected]', 'ženski', '031200083467', '15833453', 'Velenje'); SELECT * FROM public.osebeinsertupdate (NULL, 'Jožica', 'Grk', 'Slepa cesta 33', '030915634', '[email protected]', 'ženski', '041100084327', '15867453', 'Brezje'); SELECT * FROM public.osebeinsertupdate (NULL, 'Polde', 'Vrkovnik', 'Žarkova 123a', '050909764', '[email protected]', 'moški', '020500321467', '15123453', 'Novo Mesto'); SELECT * FROM public.osebeinsertupdate (NULL, 'Barbara', 'Grozd', 'Gozdna pot 15', '070923234', '[email protected]', 'ženski', '161000084817', '95123453', 'Novo Mesto'); SELECT * FROM public.osebeinsertupdate (NULL, 'Valentina', 'Prekk', 'Šentejeva 41', '020913324', '[email protected]', 'ženski', '260600043267', '19184453', 'Žalec'); SELECT * FROM public.osebeinsertupdate (NULL, 'Matjaž', 'Sedmi', 'Gotovlje 12a', '050935123', '[email protected]', 'moški', '030900084217', '15867000', 'Gotovlje'); SELECT * FROM public.osebeinsertupdate (NULL, 'Jan', 'Žmak', 'Mariborksa cesta 39', '051123987', '[email protected]', 'moški', '050500532437', '15198763', 'Maribor'); SELECT * FROM public.osebeinsertupdate (NULL, 'Benjamin', 'Čen', 'Mestna ulica 45', '071944231', '[email protected]', 'moški', '18040084327', '95432153', 'Novo Mesto'); SELECT * FROM public.osebeinsertupdate (NULL, 'Timotej', 'Dvanajstnik', 'Trikotna ulica 41', '031912344', '[email protected]', 'moški', '230800043123', '19111157', 'Žalec'); SELECT * FROM public.osebeinsertupdate (NULL, 'Janko', 'Dvanajstnik', 'Trikotna ulica 41', '051942344', '[email protected]', 'moški', '2308000435435', '19122257', 'Žalec');

Entiteta kategorije SELECT * FROM public.kategorijeinsertupdate(NULL, 'Hiša', 'Samostojni objekt v mestu ali na vasi', NULL); SELECT * FROM public.kategorijeinsertupdate(NULL, 'Stanovanje', 'Del večje zgradbe', NULL); SELECT * FROM public.kategorijeinsertupdate(NULL, 'Garsonjera', 'Manjše enosobno stanovanje', 'Stanovanje'); SELECT * FROM public.kategorijeinsertupdate(NULL, 'Vrstna hiša', 'Hiša, ki je del vrste večih hiš', 'Hiša'); SELECT * FROM public.kategorijeinsertupdate(NULL, 'Dvojček', 'Identični del dvodelne hiše', 'Hiša'); SELECT * FROM public.kategorijeinsertupdate(NULL, 'Poslovni objekt', 'Objekt za poslovne namene', NULL); SELECT * FROM public.kategorijeinsertupdate(NULL, 'Trgovina', 'Objekt namenjen za trgovine', 'Poslovni objekt'); SELECT * FROM public.kategorijeinsertupdate(NULL, 'Dupleks', 'Stanovanje z dvema etažama', 'Stanovanje'); SELECT * FROM public.kategorijeinsertupdate(NULL, 'Počitniški objekt', 'Objekt za preživljanje dopusta', NULL); SELECT * FROM public.kategorijeinsertupdate(NULL, 'Apartma', 'Stanovanje v počitniškem objektu', 'Počitniški objekt'); SELECT * FROM public.kategorijeinsertupdate(NULL, 'Tripleks', 'Trinadstropno stanovanje', 'Stanovanje');

Entiteta nepremicnine SELECT * FROM public.nepremicnineinsertupdate(NULL, 'H23456789V12345', 145.00, 7.0, 'Velika, nova hiša. Prostorno dobro urejena.', 163000.00, TRUE, 'Siničeva 3', 'Hiša', 'Celje'); SELECT * FROM public.nepremicnineinsertupdate(NULL, 'S23443789D15545', 73.00, 3.5, 'Tri in pol sobno stanovanje v mirni okolici. Renovirano.', 90000.00, TRUE, 'Grkova 10', 'Stanovanje', 'Maribor'); SELECT * FROM public.nepremicnineinsertupdate(NULL, 'G23451234V98765', 49.00, 1.0, 'Garsonjera, dobro ohranjena.', 75000.00, TRUE, 'Mehova 9', 'Garsonjera', 'Žalec'); SELECT * FROM public.nepremicnineinsertupdate(NULL, 'A23123789S14235', 80.00, 4.0, 'Apartma v hotelu Zvezda. V odličnem stanju, dobro opremljen.', 99900.00, TRUE, 'Zvezdna pot 12', 'Apartma', 'Celje'); SELECT * FROM public.nepremicnineinsertupdate(NULL, 'D23498789D09845', 130.00, 5.5, 'Dobro ohranjeno dupleks stanovanje. Zamenjana okna in vrata.', 123000.00, TRUE, 'Gradova cesta 33', 'Dupleks', 'Ljubljana'); SELECT * FROM public.nepremicnineinsertupdate(NULL, 'D12312315D98765', 122.00, 5.0, 'Starejše, vendar dobro ohranjeno dupleks stanovanje. V centru mesta', 110000.00, TRUE, 'Mestna ulica 22', 'Dupleks', 'Novo Mesto'); SELECT * FROM public.nepremicnineinsertupdate(NULL, 'DV3454489DV2345', 133.00, 6.0, 'Velika, nova hiša na vasi. Mirna okolica, prijetna narava. Dvojček', 150000.00, TRUE, 'Gotovlje 20', 'Dvojček', 'Žalec'); SELECT * FROM public.nepremicnineinsertupdate(NULL, 'P23435589Z87645', 170.00, 8.0, 'Poslovni objekt v centru mesta. Dobro ohranjen. Primeren za pisarne.', 179450.00, TRUE, 'Velkova 44', 'Poslovni objekt', 'Velenje'); SELECT * FROM public.nepremicnineinsertupdate(NULL, 'A23938789S22245', 75.00, 2.5, 'Dvo in pol sobni apartma v hotelu Mirna Pot. Dobro ohranjen. Hotel se nahaja v mirnem naselju blizu Kranja.', 80800.00, TRUE, 'Mirna pot 12', 'Apartma', 'Kranj'); SELECT * FROM public.nepremicnineinsertupdate(NULL, 'P23236789P12645', 135.00, 6.0, 'Počitniški objekt blizu Kopra. Je dobro ohranjen in v mirni okolici.', 150000.00, TRUE, 'Mezgova cesta 23', 'Počitniški objekt', 'Koper'); SELECT * FROM public.nepremicnineinsertupdate(NULL, 'P23231234P12645', 165.00, 6.0, 'Počitniški objekt v Celju. Je dobro ohranjen in malo izven mesta', 170000.00, TRUE, 'Domača cesta 11', 'Počitniški objekt', 'Celje');

Page 67: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

64 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Entiteta osebeLastnistva SELECT * FROM public.osebelastnistvainsertupdate(NULL, 100.00, '11.01.2002', '24.03.2012', 'Jože', 'Deveti', '230200092123', 'H23456789V12345'); SELECT * FROM public.osebelastnistvainsertupdate(NULL, 100.00, '24.03.2012', '22.01.2017', 'Marko', 'Skače', '230200088873', 'H23456789V12345'); SELECT * FROM public.osebelastnistvainsertupdate(NULL, 100.00, '24.03.2012', NULL, 'Jože', 'Deveti', '230200092123', 'D23498789D09845'); SELECT * FROM public.osebelastnistvainsertupdate(NULL, 100.00, '01.03.2008', '24.03.2012', 'Lea', 'Polh', '190800078123', 'D23498789D09845'); SELECT * FROM public.osebelastnistvainsertupdate(NULL, 100.00, '25.09.2008', '12.12.2015', 'Luka', 'Šmorn', '141200082124', 'S23443789D15545'); SELECT * FROM public.osebelastnistvainsertupdate(NULL, 100.00, '12.12.2015', NULL, 'Ivan', 'Pug', '270100058993', 'S23443789D15545'); SELECT * FROM public.osebelastnistvainsertupdate(NULL, 100.00, '15.04.2007', '17.06.2013', 'Jana', 'Smrk', '040500077123', 'D12312315D98765'); SELECT * FROM public.osebelastnistvainsertupdate(NULL, 100.00, '17.06.2013', NULL, 'Janko', 'Kos', '211100068283', 'D12312315D98765'); SELECT * FROM public.osebelastnistvainsertupdate(NULL, 50.00, '21.07.2003', NULL, 'Andrej', 'Novak', '050500083267', 'DV3454489DV2345'); SELECT * FROM public.osebelastnistvainsertupdate(NULL, 50.00, '21.07.2003', NULL, 'Jožica', 'Novak', '031200083467', 'DV3454489DV2345');

Entiteta poslovnipartnerjilastnistva SELECT * FROM public.poslovnipartnerjilastnistvainsertupdate(NULL, 25.00, 'Letak d.o.o.', 'P23236789P12645'); SELECT * FROM public.poslovnipartnerjilastnistvainsertupdate(NULL, 25.00, 'Recenzus Celje d.o.o.', 'P23236789P12645'); SELECT * FROM public.poslovnipartnerjilastnistvainsertupdate(NULL, 25.00, 'Krik Desna', 'P23236789P12645'); SELECT * FROM public.poslovnipartnerjilastnistvainsertupdate(NULL, 25.00, 'Cajtung d.o.o.', 'P23236789P12645'); SELECT * FROM public.poslovnipartnerjilastnistvainsertupdate(NULL, 25.00, 'Letak d.o.o.', 'P23435589Z87645'); SELECT * FROM public.poslovnipartnerjilastnistvainsertupdate(NULL, 25.00, 'Recenzus Celje d.o.o.', 'P23435589Z87645'); SELECT * FROM public.poslovnipartnerjilastnistvainsertupdate(NULL, 25.00, 'Krik Desna', 'P23435589Z87645'); SELECT * FROM public.poslovnipartnerjilastnistvainsertupdate(NULL, 25.00, 'Cajtung d.o.o.', 'P23435589Z87645'); SELECT * FROM public.poslovnipartnerjilastnistvainsertupdate(NULL, 50.00, 'Cinkarna Celje d.d.', 'A23938789S22245'); SELECT * FROM public.poslovnipartnerjilastnistvainsertupdate(NULL, 50.00, 'Delo d.o.o.', 'A23938789S22245');

Entiteta slike SELECT * FROM public.slikeinsertupdate(NULL, 'Velika Hiša Siničeva 3', '/slike_nepremicnine/velikahisasiniceva3.jpg', 'H23456789V12345'); SELECT * FROM public.slikeinsertupdate(NULL, 'Stanovanje Grkova 10', '/slike_nepremicnine/stanovanjegrkova10.jpg', 'S23443789D15545'); SELECT * FROM public.slikeinsertupdate(NULL, 'Garsonjera Mehova 9', '/slike_nepremicnine/garsonjeramehova9.jpg', 'G23451234V98765'); SELECT * FROM public.slikeinsertupdate(NULL, 'Apartma Zvezdna Pot 12', '/slike_nepremicnine/apartmazvezdnapot12.jpg', 'A23123789S14235'); SELECT * FROM public.slikeinsertupdate(NULL, 'Dupleks Gradova 33', '/slike_nepremicnine/dupleksgradova33.jpg', 'D23498789D09845'); SELECT * FROM public.slikeinsertupdate(NULL, 'Dupleks Mestna 22', '/slike_nepremicnine/dupleksmestna22.jpg', 'D12312315D98765'); SELECT * FROM public.slikeinsertupdate(NULL, 'Dvojcek Gotovlje 20', '/slike_nepremicnine/dvojcekgotovlje20.jpg', 'DV3454489DV2345'); SELECT * FROM public.slikeinsertupdate(NULL, 'Poslovni objekt Velkova 44', '/slike_nepremicnine/velkova44.jpg', 'P23435589Z87645'); SELECT * FROM public.slikeinsertupdate(NULL, 'Apartma Mirna Pot 12', '/slike_nepremicnine/apartmamirna12.jpg', 'A23938789S22245'); SELECT * FROM public.slikeinsertupdate(NULL, 'Počitniški objekt Mezgova 23', '/slike_nepremicnine/pocitniskimezgova23.jpg', 'P23236789P12645');

Entiteta oglasi SELECT * FROM public.oglasiinsertupdate(NULL, 'Velika hiša', '03.01.2017', '03.02.2017', 'H23456789V12345', 'Delo d.o.o.'); SELECT * FROM public.oglasiinsertupdate(NULL, 'Lepo stanovanje', '26.12.2016', '27.01.2017', 'S23443789D15545', 'Delo d.o.o.'); SELECT * FROM public.oglasiinsertupdate(NULL, 'Ugodna garsonjera', '10.01.2017', '10.02.2017', 'G23451234V98765', 'Delo d.o.o.'); SELECT * FROM public.oglasiinsertupdate(NULL, 'Apartma Hotel Zvezda', '12.11.2016', '13.02.2017', 'A23123789S14235', 'Delo d.o.o.'); SELECT * FROM public.oglasiinsertupdate(NULL, 'Dupleks na Gradovi', '05.09.2016', '05.03.2017', 'D23498789D09845', 'Cajtung d.o.o.'); SELECT * FROM public.oglasiinsertupdate(NULL, 'Dupleks na Mestni', '05.01.2017', '06.05.2017', 'D12312315D98765', 'Cajtung d.o.o.'); SELECT * FROM public.oglasiinsertupdate(NULL, 'Dvojček v gotovljah', '23.12.2015', '25.02.2017', 'DV3454489DV2345', 'Cajtung d.o.o.'); SELECT * FROM public.oglasiinsertupdate(NULL, 'Poslovni objekt Velkova 44', '22.01.2016', '24.02.2017', 'P23435589Z87645', 'Cajtung d.o.o.'); SELECT * FROM public.oglasiinsertupdate(NULL, 'Apartma na mirni poti', '03.06.2014', '03.06.2017', 'A23938789S22245', 'Cajtung d.o.o.'); SELECT * FROM public.oglasiinsertupdate(NULL, 'Počitniški objekt blizu Kopra', '08.03.2015', '08.02.2016', 'P23236789P12645', 'Delo d.o.o.');

Entiteta agenti SELECT * FROM public.agentiinsertupdate(NULL, 'zivavilic', 'vl1zv32', 3.5, '080 212 200', '[email protected]', 'Živa', 'Vilič', '240600079233'); SELECT * FROM public.agentiinsertupdate(NULL, 'stefancena', 'st2222st', 3.5, '080 212 201', '[email protected]', 'Štefan', 'Cena', '200300077234'); SELECT * FROM public.agentiinsertupdate(NULL, 'leapolh', 'herro2h', 2.5, '080 212 202', '[email protected]', 'Lea', 'Polh', '190800078123'); SELECT * FROM public.agentiinsertupdate(NULL, 'jozicagrk', 'v432v32', 3.0, '080 212 203', '[email protected]', 'Jožica', 'Grk', '041100084327'); SELECT * FROM public.agentiinsertupdate(NULL, 'poldevrkovnik', 'zbnj123', 3.5, '080 212 204', '[email protected]', 'Polde', 'Vrkovnik', '020500321467'); SELECT * FROM public.agentiinsertupdate(NULL, 'barbaragrozd', 'gfdgsd23', 3.5, '080 212 205', '[email protected]', 'Barbara', 'Grozd', '161000084817'); SELECT * FROM public.agentiinsertupdate(NULL, 'valentinaprekk', 'hfdcvxada12', 3.5, '080 212 206', '[email protected]', 'Valentina', 'Prekk', '260600043267'); SELECT * FROM public.agentiinsertupdate(NULL, 'matjazsedmi', 'sedfgt34', 3.2, '080 212 207', '[email protected]', 'Matjaž', 'Sedmi', '030900084217'); SELECT * FROM public.agentiinsertupdate(NULL, 'janzmak', 'v543252v32', 2.8, '080 212 208', '[email protected]', 'Jan', 'Žmak', '050500532437'); SELECT * FROM public.agentiinsertupdate(NULL, 'benjamin.cen', 'vl412324', 2.94, '080 212 209', '[email protected]', 'Benjamin', 'Čen', '18040084327'); SELECT * FROM public.agentiinsertupdate(NULL, 'timotejdvan', 'grgrgrg23', 2.98, '080 212 210', '[email protected]', 'Timotej', 'Dvanajstnik', '230800043123');

Page 68: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

65 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Entiteta nepremicnineagent SELECT * FROM public.nepremicnineagentiinsertupdate(NULL, 'P23236789P12645', 'timotejdvan'); SELECT * FROM public.nepremicnineagentiinsertupdate(NULL, 'A23938789S22245', 'benjamin.cen'); SELECT * FROM public.nepremicnineagentiinsertupdate(NULL, 'P23435589Z87645', 'janzmak'); SELECT * FROM public.nepremicnineagentiinsertupdate(NULL, 'DV3454489DV2345', 'timotejdvan'); SELECT * FROM public.nepremicnineagentiinsertupdate(NULL, 'D12312315D98765', 'valentinaprekk'); SELECT * FROM public.nepremicnineagentiinsertupdate(NULL, 'D23498789D09845', 'jozicagrk'); SELECT * FROM public.nepremicnineagentiinsertupdate(NULL, 'A23123789S14235', 'barbaragrozd'); SELECT * FROM public.nepremicnineagentiinsertupdate(NULL, 'G23451234V98765', 'matjazsedmi'); SELECT * FROM public.nepremicnineagentiinsertupdate(NULL, 'S23443789D15545', 'matjazsedmi'); SELECT * FROM public.nepremicnineagentiinsertupdate(NULL, 'H23456789V12345', 'poldevrkovnik');

Entiteta povprasevanja SELECT * FROM public.povprasevanjainsertupdate(NULL, 'Celje', 'Savinjska', 'Jana', 'Smrk', '040500077123', 'Manjše stanovanje za eno osebo.'); SELECT * FROM public.povprasevanjainsertupdate(NULL, NULL, 'Kraška', 'Jože', 'Deveti', '230200092123', 'Družinska hiša, v kraški regiji.'); SELECT * FROM public.povprasevanjainsertupdate(NULL, NULL, 'Koroška', 'Jožica', 'Novak', '031200083467', 'Stanovanje za dve osebi.'); SELECT * FROM public.povprasevanjainsertupdate(NULL, NULL, 'Savinjska', 'Ivan', 'Pug', '270100058993', 'Trinadstropna hiša.'); SELECT * FROM public.povprasevanjainsertupdate(NULL, 'Žalec', 'Savinjska', 'Lea', 'Polh', '190800078123', 'Manjše stanovanje za dve osebi.'); SELECT * FROM public.povprasevanjainsertupdate(NULL, NULL, 'Osrednjeslovenska', 'Štefan', 'Cena', '200300077234', 'Stanovanje ali hiša'); SELECT * FROM public.povprasevanjainsertupdate(NULL, NULL, 'Koroška', 'Luka', 'Šmorn', '141200082124', 'Stanovanje ali hiša na vasi.'); SELECT * FROM public.povprasevanjainsertupdate(NULL, 'Celje', 'Savinjska', 'Živa', 'Vilič', '240600079233', 'Manjše stanovanje za eno osebo.'); SELECT * FROM public.povprasevanjainsertupdate(NULL, 'Celje', 'Savinjska', 'Marko', 'Skače', '230200088873', 'Garsonjera v centru mesta'); SELECT * FROM public.povprasevanjainsertupdate(NULL, NULL, 'Koroška', 'Andrej', 'Novak', '050500083267', 'Stanovanje za dve osebi.');

Entiteta ogledi SELECT * FROM public.oglediinsertupdate(NULL, '23.03.2017 13:00:00', FALSE, NULL, 'timotejdvan', 'DV3454489DV2345', 'Jože', 'Deveti', '230200092123'); SELECT * FROM public.oglediinsertupdate(NULL, '22.02.2017 15:00:00', FALSE, NULL, 'matjazsedmi', 'G23451234V98765','Marko', 'Skače', '230200088873'); SELECT * FROM public.oglediinsertupdate(NULL, '12.03.2017 11:00:00', FALSE, NULL, 'poldevrkovnik', 'H23456789V12345', 'Štefan', 'Cena', '200300077234'); SELECT * FROM public.oglediinsertupdate(NULL, '11.03.2017 10:00:00', FALSE, NULL, 'matjazsedmi', 'S23443789D15545', 'Andrej', 'Novak', '050500083267'); SELECT * FROM public.oglediinsertupdate(NULL, '11.03.2017 10:00:00', FALSE, NULL, 'matjazsedmi', 'S23443789D15545', 'Jožica', 'Novak', '031200083467'); SELECT * FROM public.oglediinsertupdate(NULL, '24.01.2017 13:40:00', FALSE, NULL, 'matjazsedmi', 'G23451234V98765', 'Jana', 'Smrk', '040500077123'); SELECT * FROM public.oglediinsertupdate(NULL, '26.01.2017 12:15:00', FALSE, NULL, 'matjazsedmi', 'G23451234V98765', 'Ivan', 'Pug', '270100058993'); SELECT * FROM public.oglediinsertupdate(NULL, '21.02.2017 15:30:00', FALSE, NULL, 'matjazsedmi', 'S23443789D15545', 'Živa', 'Vilič', '240600079233'); SELECT * FROM public.oglediinsertupdate(NULL, '23.03.2017 13:00:00', FALSE, NULL, 'poldevrkovnik', 'H23456789V12345', 'Luka', 'Šmorn', '141200082124'); SELECT * FROM public.oglediinsertupdate(NULL, '23.03.2017 13:00:00', FALSE, NULL, 'valentinaprekk', 'D12312315D98765', 'Lea', 'Polh', '190800078123');

Page 69: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

66 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

10.2 Testno polnjenje podatkovne baze – avtor Nejc Martinjak Entiteta kraji SELECT * FROM public.krajiinsertupdate(NULL,'Maribor', '2000', 'Maribor', 'Podravska'); SELECT * FROM public.krajiinsertupdate(NULL, 'Ajdovščina', '5270', 'Ajdovščina', 'Goriška'); SELECT * FROM public.krajiinsertupdate(NULL, 'Ankaran', '6280', 'Ankaran', 'Obalno-Kraška'); SELECT * FROM public.krajiinsertupdate(NULL, 'Bled', '4260', 'Bled', 'Gorenjska'); SELECT * FROM public.krajiinsertupdate(NULL, 'Kamnje', '4264', 'Bohinj', 'Gorenjska'); SELECT * FROM public.krajiinsertupdate(NULL, 'Lava', '3000', 'Celje', 'Savinjska'); SELECT * FROM public.krajiinsertupdate(NULL, 'Bezovica', '6275', 'Koper', 'Obalno-Kraška'); SELECT * FROM public.krajiinsertupdate(NULL, 'Lipe', '1000', 'Ljubljana', 'Osrednjeslovenska'); SELECT * FROM public.krajiinsertupdate(NULL, 'Podvinci', '2250', 'Ptuj', 'Podravska');

Entiteta osebe SELECT * FROM public.osebeinsertupdate(NULL, 'Janez', 'Novak', 'Lava 12', '042-375-67', '[email protected]', 'moški', '123456789123', '124534589','Lava'); SELECT * FROM public.osebeinsertupdate(NULL, 'Jure', 'Medved', 'Kamnje 4', '012-395-68', '[email protected]', 'moški', '123456789125', '123467849','Kamnje'); SELECT * FROM public.osebeinsertupdate(NULL, 'Nejc', 'Breznik', 'Bezovica 98', '013-125-67', '[email protected]', 'moški', '123456789551', '123126789','Bezovica'); SELECT * FROM public.osebeinsertupdate(NULL, 'Matic', 'Kos', 'Javornik 3', '012-375-67', '[email protected]', 'moški', '123456789335', '323445678','Javornik'); SELECT * FROM public.osebeinsertupdate(NULL, 'Igor', 'Hrovat', 'Lipe 125', '012-385-78', '[email protected]', 'moški', '123456789166', '523456789','Lipe'); SELECT * FROM public.osebeinsertupdate(NULL, 'Ana', 'Pirc', 'Lava 22', '012-312-67', '[email protected]', 'ženski', '123456789121', '234568789','Lava'); SELECT * FROM public.osebeinsertupdate(NULL, 'Matej', 'Kuhar', 'Maribor 15', '012-348-67', '[email protected]', 'moški', '123456789111', '235456789','Maribor'); SELECT * FROM public.osebeinsertupdate(NULL, 'Irena', 'Lah', 'Maribor 15', '011-342-61', '[email protected]', 'ženski', '123456789163', '325567899','Maribor'); SELECT * FROM public.osebeinsertupdate(NULL, 'Simon', 'Novak', 'Ankaran 5', '014-315-53', '[email protected]', 'moški', '123456789662', '235456789','Ankaran'); SELECT * FROM public.osebeinsertupdate(NULL, 'Janja', 'Novak', 'Ajdovščina 3', '013-361-43', '[email protected]', 'ženski', '123456789153', '662456789','Ajdovščina');

Entiteta notarji SELECT * FROM public.notarjiinsertupdate(NULL,100.00,'031-255-124','[email protected]', 'Jure','Medved','123456789123'); SELECT * FROM public.notarjiinsertupdate(NULL,130.50,'031-125-111','[email protected]', 'Ana','Pirc','123456789121'); SELECT * FROM public.notarjiinsertupdate(NULL,120.00,'041-133-522','[email protected]', 'Simon','Novak','123456789662'); SELECT * FROM public.notarjiinsertupdate(NULL,100.00,'041-377-432','[email protected]', 'Janja','Novak','123456789153'); SELECT * FROM public.notarjiinsertupdate(NULL,115.00,'031-555-311','[email protected]', 'Igor','Hrovat','123456789166');

Entiteta pogodbe SELECT * FROM public.pogodbeinsertupdate(NULL,115,'Velika, nova hiša. Prostorno dobro urejena', '05.03.2017','podpis1', 'Velika, nova hiša,Siničeva3,Jure Medved,163000.00EUR','Aktivna','012395683','[email protected]'); SELECT * FROM public.pogodbeinsertupdate(NULL,116,'Tri in pol sobno stanovanje v mirni okolici. Renovirano', '12.04.2017','podpis2', 'Tri in pol sobno stanovanje,Grkova10,Jure Medved,90000.00EUR','Aktivna','012395683','[email protected]'); SELECT * FROM public.pogodbeinsertupdate(NULL,117,'Garsonjera, dobro ohranjena', '03.01.2016','podpis3', 'Garsonjera, dobro ohranjena,Mehova9,Igor Hrovat,75000.00UR','Potekla','031-555-311','[email protected]'); SELECT * FROM public.pogodbeinsertupdate(NULL,118,'Apartma v hotelu Zvezda. V odličnem stanju, dobro opremljen.', '07.04.2017','podpis4', 'Apartma,Zvezdna pot 12,Igor Hrovat,99900.00EUR','Aktivna','012385781','[email protected]'); SELECT * FROM public.pogodbeinsertupdate(NULL,130,'Velika, nova hiša na vasi. Mirna okolica, prijetna narava. Dvojček', '14.08.2016','podpis7', 'Hiša,Gotovlje 20,Jure Medved,150000EUR','Aktivna','012395683','[email protected]'); SELECT * FROM public.pogodbeinsertupdate(NULL,122,'Poslovni objekt v centru mesta. Dobro ohranjen. Primeren za pisarne.', '16.02.2012','podpis8', 'Poslovni objekt,Velkova44,Jure Medved,179450EUR','Aktivna','012395683','[email protected]'); SELECT * FROM public.pogodbeinsertupdate(NULL,123,'Dvo in pol sobni apartma v hotelu Mirna Pot. Dobro ohranjen. Hotel se nahaja v mirnem naselju blizu Kranja.', '19.05.2010','podpis9', 'Apartma,Mirna Pot12,Ana Pirc,80800EUR','Potekla','012312677','[email protected]'); SELECT * FROM public.pogodbeinsertupdate(NULL,127,'Dobro ohranjeno dupleks stanovanje.Zamenjana okna in vrata.','03.02.2016','podpis5','Gradova cesta33,Janja Novak,123000EUR','Aktivna','013361255','[email protected]'); SELECT * FROM public.pogodbeinsertupdate(NULL,120,'Starejše, vendar dobro ohranjeno dupleks stanovanje. V centru mesta', '12.12.2016','podpis6', 'Dupleks,Mestna Ulica 22,Janja Novak,110000EUR','Aktivna','013361255','[email protected]');

Page 70: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

67 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

Entiteta vrstePlacil SELECT * FROM public.vrsteplacilinsertupdate(NULL,'Visa',NULL); SELECT * FROM public.vrsteplacilinsertupdate(NULL,'Mastercard',NULL); SELECT * FROM public.vrsteplacilinsertupdate(NULL,'Gotovina',NULL); SELECT * FROM public.vrsteplacilinsertupdate(NULL,'Bančno nakazilo',NULL); SELECT * FROM public.vrsteplacilinsertupdate(NULL,'Obročno plačilo',NULL);

Entiteta placila SELECT * FROM public.placilainsertupdate(NULL,163000,'05.03.2017','Gotovina',115); SELECT * FROM public.placilainsertupdate(NULL,90000,'12.04.2017','Gotovina',116); SELECT * FROM public.placilainsertupdate(NULL,75000,'03.01.2017','Visa',117); SELECT * FROM public.placilainsertupdate(NULL,99900,'07.04.2017','Mastercard',118); SELECT * FROM public.placilainsertupdate(NULL,123000,'03.02.2016','Obročno plačilo',127); SELECT * FROM public.placilainsertupdate(NULL,110000,'12.12.2016','Bančno nakazilo',120); SELECT * FROM public.placilainsertupdate(NULL,150000,'14.08.2016','Visa',130); SELECT * FROM public.placilainsertupdate(NULL,179450,'16.02.2012','Visa',122); SELECT * FROM public.placilainsertupdate(NULL,80800,'19.05.2010','Obročno plačilo',123); SELECT * FROM public.placilainsertupdate(NULL,2000,'05.06.2010','Gotovina',124);

Entiteta pogodbeProdajalci SELECT * FROM public.pogodbeprodajalciinsertupdate(NULL,5,115,'Janez','Novak','123456789123'); SELECT * FROM public.pogodbeprodajalciinsertupdate(NULL,15,116,'Nejc','Breznik','123456789551'); SELECT * FROM public.pogodbeprodajalciinsertupdate(NULL,12,117,'Irena','Lah','123456789163'); SELECT * FROM public.pogodbeprodajalciinsertupdate(NULL,12,118,'Irena','Lah','123456789163'); SELECT * FROM public.pogodbeprodajalciinsertupdate(NULL,5,127,'Janez','Novak','123456789123'); SELECT * FROM public.pogodbeprodajalciinsertupdate(NULL,15,120,'Nejc','Breznik','123456789551'); SELECT * FROM public.pogodbeprodajalciinsertupdate(NULL,15,130,'Nejc','Breznik','123456789551'); SELECT * FROM public.pogodbeprodajalciinsertupdate(NULL,12,122,'Irena','Lah','123456789163'); SELECT * FROM public.pogodbeprodajalciinsertupdate(NULL,5,123,'Janez','Novak','123456789123'); SELECT * FROM public.pogodbeprodajalciinsertupdate(NULL,5,124,'Janez','Novak','123456789123');

Entiteta pogodbeNepremicnine SELECT * FROM public.pogodbenepremicnineinsertupdate(NULL,115,'H23456789V12345'); SELECT * FROM public.pogodbenepremicnineinsertupdate(NULL,116,'S23443789D15545'); SELECT * FROM public.pogodbenepremicnineinsertupdate(NULL,117,'G23451234V9876'); SELECT * FROM public.pogodbenepremicnineinsertupdate(NULL,118,'A23123789S1423'); SELECT * FROM public.pogodbenepremicnineinsertupdate(NULL,127,'D23498789D09845'); SELECT * FROM public.pogodbenepremicnineinsertupdate(NULL,120,'D12312315D98765'); SELECT * FROM public.pogodbenepremicnineinsertupdate(NULL,130,'DV3454489DV2345'); SELECT * FROM public.pogodbenepremicnineinsertupdate(NULL,122,'P23435589Z87645'); SELECT * FROM public.pogodbenepremicnineinsertupdate(NULL,123,'A23938789S22245'); SELECT * FROM public.pogodbenepremicnineinsertupdate(NULL,124,'LASDFS523423423S2');

Page 71: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

68 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

11 Testno posodabljanje podatkovne baze

11.1 Testno posodabljanje podatkovne baze – avtor Matic Božič

Vse entitete SELECT * FROM public.regijeinsertupdate((SELECT idRegije FROM regije WHERE regija = 'Test'), upper('Test')); SELECT * FROM public.obcineinsertupdate((SELECT idObcine FROM obcine WHERE obcina = 'Test'), upper('Test')); SELECT * FROM public.krajiinsertupdate ((SELECT idKraji FROM kraji WHERE kraj = 'Test'), 'Murska Sobota', '9000', 'Murska Sobota', 'Pomurska'); SELECT * FROM public.poslovnipartnerjiinsertupdate ((SELECT idPoslovniPartnerji FROM poslovniPartnerji WHERE poslovniPartner = 'Mehaniko Meh d.o.o.'), 'Mehaniko Meh d.o.o.', upper('Meh'), 'Sestavljena cesta 3', '45512940', 'Kranj'); --spremenjen email in naslov SELECT * FROM public.osebeinsertupdate ((SELECT idOsebe FROM osebe WHERE emso = '230800043123'), 'Timotej', 'Dvanajstnik', 'Zvezdna cesta 37', '031912344', '[email protected]', 'moški', '230800043123', '19111157', 'Žalec'); SELECT * FROM public.kategorijeinsertupdate((SELECT idKategorije FROM kategorije WHERE kategorija = 'Tripleks'), 'Tripleks', upper('Trinadstropno stanovanje'), 'Stanovanje'); --spremenjen opis in cena SELECT * FROM public.nepremicnineinsertupdate((SELECT idNepremicnine FROM nepremicnine WHERE stevilka = 'A23123789S14235'), 'A23123789S14235', 80.00, 4.0, 'Apartma v hotelu Zvezda. V odličnem stanju, dobro opremljen. Prenovljen.', 99500.00, TRUE, 'Zvezdna pot 12', 'Apartma', 'Celje'); --spremenjen delez in lastnikDo SELECT * FROM public.osebelastnistvainsertupdate((SELECT idOsebeLastnistva FROM osebelastnistva WHERE idOsebe = (SELECT idOsebe FROM osebe WHERE ime = 'Janko' AND priimek = 'Kos' AND emso = '211100068283' )), 85.00, '17.06.2013', '05.01.2017', 'Janko', 'Kos', '211100068283', 'D12312315D98765'); --spremenjen poslovnipartner (idPoslovniPartnerji) SELECT * FROM public.poslovnipartnerjilastnistvainsertupdate( (SELECT idPoslovniPartnerjiLastnistva FROM poslovnipartnerjilastnistva WHERE idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = 'P23236789P12645') AND idPoslovniPartnerji = (SELECT idPoslovniPartnerji FROM poslovnipartnerji WHERE poslovnipartner = 'Letak d.o.o.')), 25.00, 'Kreka d.d.', 'P23236789P12645'); --spremenjen url slike SELECT * FROM public.slikeinsertupdate( (SELECT idSlike FROM slike WHERE imeSlike = 'Počitniški objekt Mezgova 23' AND idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = 'P23236789P12645')), 'Počitniški objekt Mezgova 23', '/slike_nepremicnine/pocitniskimezgova23novaslika.jpg', 'P23236789P12645'); --spremenjeno imeOglasa in aktivenDo SELECT * FROM public.oglasiinsertupdate( (SELECT idOglasi FROM oglasi WHERE imeOglasa = 'Dvojček v gotovljah' AND idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = 'DV3454489DV2345')), 'Dvojček v Gotovljah', '23.12.2015', '25.04.2017', 'DV3454489DV2345', 'Cajtung d.o.o.'); --popravljeno uporabniskoIme SELECT * FROM public.agentiinsertupdate((SELECT idAgenti FROM agenti WHERE uporabniskoIme = 'benjamin.cen'), 'benjamincen', 'vl412324', 2.94, '080 212 209', '[email protected]', 'Benjamin', 'Čen', '18040084327'); --popravljen opis SELECT * FROM public.povprasevanjainsertupdate( (SELECT idPovprasevanja FROM povprasevanja WHERE idOsebe = (SELECT idOsebe FROM osebe WHERE ime = 'Jana' AND priimek = 'Smrk' AND emso = '040500077123') AND opis = 'Manjše stanovanje za eno osebo.'), 'Celje', 'Savinjska', 'Jana', 'Smrk', '040500077123', 'Manjše stanovanje za eno osebo. Lahko tudi za dve.'); --popravljen čas ogleda SELECT * FROM public.oglediinsertupdate((SELECT idOgledi FROM ogledi WHERE idAgenti = (SELECT idAgenti FROM agenti WHERE uporabniskoIme = 'poldevrkovnik') AND idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = 'H23456789V12345') AND idPovprasevanja = (SELECT idPovprasevanja FROM povprasevanja WHERE idOsebe = (SELECT idOsebe FROM osebe WHERE ime = 'Luka' AND priimek = 'Šmorn' AND emso = '141200082124') AND idNepremicnine = (SELECT idNepremicnine FROM nepremicnine WHERE stevilka = 'H23456789V12345'))), '25.03.2017 17:00:00', FALSE, NULL, 'poldevrkovnik', 'H23456789V12345', 'Luka', 'Šmorn', '141200082124');

Page 72: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

69 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

11.2 Testno posodabljanje podatkovne baze – avtor Nejc Martinjak

Vse entitete

SELECT * FROM public.osebeinsertupdate((SELECT idosebe FROM osebe WHERE emso = '123456789123'), 'Janez','Novak','Lava12','042375671','[email protected]','moški', '123456789123', '124534589','Lava'); SELECT * FROM public.osebeinsertupdate((SELECT idosebe FROM osebe WHERE emso = '123456789125'), 'Jure','Medved','Kamnje4','012395683','[email protected]','moški', '123456789125', '123467849','Kamnje'); SELECT * FROM public.osebeinsertupdate((SELECT idosebe FROM osebe WHERE emso = '123456789551'), 'Nejc','Breznik','Bezovica98','013125672','[email protected]','moški', '123456789551', '123126789','Bezovica'); SELECT * FROM public.osebeinsertupdate((SELECT idosebe FROM osebe WHERE emso = '123456789335'), 'Matic','Kos','Javornik3','012375675','[email protected]','moški', '123456789335', '323445678','Javornik'); SELECT * FROM public.osebeinsertupdate((SELECT idosebe FROM osebe WHERE emso = '123456789166'), 'Igor','Hrovat','Lipe125','012385781','[email protected]','moški', '123456789166', '523456789','Lipe'); SELECT * FROM public.osebeinsertupdate((SELECT idosebe FROM osebe WHERE emso = '123456789121'), 'Ana','Pirc','Lava22','012312677','[email protected]','ženski', '123456789121', '234568789','Lava'); SELECT * FROM public.osebeinsertupdate((SELECT idosebe FROM osebe WHERE emso = '123456789111'), 'Matej','Kuhar','Maribor 15','012348679','[email protected]','moški', '123456789111', '235456789','Maribor'); SELECT * FROM public.osebeinsertupdate((SELECT idosebe FROM osebe WHERE emso = '123456789163'), 'Irena','Lah','Maribor 15','011342615','[email protected]','ženski', '123456789163', '325567899','Maribor'); SELECT * FROM public.osebeinsertupdate((SELECT idosebe FROM osebe WHERE emso = '123456789662'), 'Simon','Novak','Ankaran5','014315533','[email protected]','moški', '123456789662', '235456789','Ankaran'); SELECT * FROM public.osebeinsertupdate((SELECT idosebe FROM osebe WHERE emso = '123456789153'), 'Janja','Novak','Ajdovščina3','013361255','[email protected]','ženski', '123456789153', '662456789','Ajdovščina'); SELECT * FROM public.placilainsertupdate((SELECT idplacila FROM placila WHERE znesekplacila = '163000'),163000,'02.03.2017','Gotovina',115) SELECT * FROM public.placilainsertupdate((SELECT idplacila FROM placila WHERE znesekplacila = '90000'),90000,'11.03.2017','Gotovina',116) SELECT * FROM public.placilainsertupdate((SELECT idplacila FROM placila WHERE znesekplacila = '123000'),123000,'09.03.2016','Obročno plačilo',127) SELECT * FROM public.placilainsertupdate((SELECT idplacila FROM placila WHERE znesekplacila = '80800'),80800,'01.04.2017','Obročno plačilo',123)

SELECT * FROM public.krajiinsertupdate(13, 'Ankaran', '6280', 'Ankaran', 'Obalno-Kraška'); SELECT * FROM public.krajiinsertupdate(17, 'Bezovica', '6275', 'Koper', 'Obalno-Kraška');

Page 73: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

70 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

12 Brisanje iz podatkovne baze

12.1 Brisanje iz podatkovne baze – avtor Matic Božič Vse entitete

SELECT * FROM public.regijedelete('TEST'); --brisanje obcine Murska Sobota

--prej brišemo kraje, ki so v občini Murska Sobota SELECT * FROM public.krajidelete('Murska Sobota');

SELECT * FROM public.obcinedelete('Murska Sobota'); --brisanje iz poslovnihpartnerjev SELECT * FROM public.poslovnipartnerjidelete('Mehaniko Meh d.o.o.'); --delete iz osebe SELECT * FROM public.osebedelete('Janko', 'Dvanajstnik', '2308000435435'); --delete iz kategorije SELECT * FROM public.kategorijedelete('Tripleks'); --delete iz nepremicnine SELECT * FROM public.nepremicninedelete('P23231234P12645'); --delete iz ogledi SELECT * FROM public.ogledidelete('24.01.2017 13:40:00', 'matjazsedmi'); --delete iz povprasevanja

--prej brisemo povprasevanja iz ogledov, ki se jih bo udeležila Živa Vilič SELECT * FROM public.ogledidelete((SELECT casOgleda FROM ogledi WHERE idPovprasevanja = (SELECT idPovprasevanja FROM povprasevanja WHERE idOsebe = (SELECT idOsebe FROM osebe WHERE ime = 'Živa' AND priimek = 'Vilič' AND emso = '240600079233'))), (SELECT uporabniskoIme FROM agenti WHERE idAgenti = (SELECT idAgenti FROM ogledi WHERE idPovprasevanja = (SELECT idPovprasevanja FROM povprasevanja WHERE idOsebe = (SELECT idOsebe FROM osebe WHERE ime = 'Živa' AND priimek = 'Vilič' AND emso = '240600079233')))));

SELECT * FROM public.povprasevanjadelete('Živa', 'Vilič', '240600079233');

Page 74: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

71 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

12.2 Brisanje iz podatkovne baze – avtor Nejc Martinjak

Vse entitete

--Brisanje iz entitete osebe SELECT * FROM public.osebedelete('Matej','Kuhar','123456789111'); --Brisanje iz entitete plačila da se bo potem lahko brisalo iz entitete vrsteplacil SELECT * FROM public.placiladelete(120); --Brisanje iz entitete vrsteplacil SELECT * FROM public.vrsteplacildelete('Bančno nakazilo'); --Brisanje iz entitete kraji SELECT * FROM public.krajidelete('Maribor') SELECT * FROM public.krajidelete('Ankaran') SELECT * FROM public.krajidelete('Bezovica')

Page 75: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

72 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

13 Rezultati poizvedb statističnih funkcij

13.1 Rezultati statistika – avtor Matic Božič

13.1.1 Funkcija vseNepremicnine SELECT * FROM public.vsenepremicnine('TRUE'); SELECT * FROM public.vsenepremicnine('DOSEGLJIVO'); Število dosegljivih nepremičnin je: 10 SELECT * FROM public.vsenepremicnine('FALSE'); SELECT * FROM public.vsenepremicnine('NEDOSEGLJIV'); Število nedosegljivih nepremičnin je: 0 SELECT * FROM public.vsenepremicnine(' '); SELECT * FROM public.vsenepremicnine('VSE'); Število vseh nepremičnin je: 10

13.1.2 Funkcija cenikNepremicnin SELECT * FROM public.ceniknepremicnin(); Naslov Opis Cena Kvadratura SteviloSob Kontakt (3000,Celje), Siničeva 3

Velika, nova hiša. Prostorno dobro urejena.

163.000 145 7 ([email protected],"080 212 204")

(2000,Maribor), Grkova 10

Tri in pol sobno stanovanje v mirni okolici. Renovirano.

90.000 73 3,5 ([email protected],"080 212 207")

(3310,Žalec), Mehova 9

Garsonjera, dobro ohranjena. 75.000 49 1 ([email protected],"080 212 207")

(1000,Ljubljana), Gradova cesta 33

Dobro ohranjeno dupleks stanovanje. Zamenjana okna in vrata.

123.000 130 5,5 ([email protected],"080 212 203")

(8000,"Novo Mesto"), Mestna ulica 22

Starejše, vendar dobro ohranjeno dupleks stanovanje. V centru mesta

110.000 122 5 ([email protected],"080 212 206")

(3310,Žalec), Gotovlje 20

Velika, nova hiša na vasi. Mirna okolica, prijetna narava. Dvojček

150.000 133 6 ([email protected],"080 212 210")

(3320,Velenje), Velkova 44

Poslovni objekt v centru mesta. Dobro ohranjen. Primeren za pisarne.

179.450 170 8 ([email protected],"080 212 208")

(4000,Kranj), Mirna pot 12

Dvo in pol sobni apartma v hotelu Mirna Pot. Dobro ohranjen. Hotel se nahaja v mirnem naselju blizu Kranja.

80.800 75 2,5 ([email protected],"080 212 209")

(6000,Koper), Mezgova cesta 23

Počitniški objekt blizu Kopra. Je dobro ohranjen in v mirni okolici.

150.000 135 6 ([email protected],"080 212 210")

(3000,Celje), Zvezdna pot 12

Apartma v hotelu Zvezda. V odličnem stanju, dobro opremljen. Prenovljen.

99.500 80 4 ([email protected],"080 212 205")

13.1.3 Funkcija seznamOglasov SELECT * FROM public.seznamoglasov(); Ime Aktivenod Aktivendo Nepremicnina Opisnpr Aktivnost Velika hiša 3. 01. 2017 3. 02. 2017 (H23456789V12345,"Siničeva

3",Celje) ("Velika, nova hiša. Prostorno dobro urejena.",145.00,7.0,163000.00)

False

Lepo stanovanje 26. 12. 2016 27. 01. 2017 (S23443789D15545,"Grkova 10",Maribor)

("Tri in pol sobno stanovanje v mirni okolici..",73.00,3.5,90000.00)

False

Ugodna garsonjera 10. 01. 2017 10. 02. 2017 (G23451234V98765,"Mehova 9",Žalec)

("Garsonjera, dobro ohranjena.",49.00,1.0,75000.00)

False

Apartma Hotel Zvezda 12. 11. 2016 13. 02. 2017 (A23123789S14235,"Zvezdna pot 12",Celje)

("Apartma v hotelu Zvezda. V odličnem stanju, dobro opremljen. Prenovljen.",80.00,4.0,99500.00)

False

Dupleks na Gradovi 5. 09. 2016 5. 03. 2017 (D23498789D09845,"Gradova cesta 33",Ljubljana)

("Dobro ohranjeno dupleks stanovanje. Zamenjana okna in vrata.",130.00,5.5,123000.00)

False

Dupleks na Mestni 5. 01. 2017 6. 05. 2017 (D12312315D98765,"Mestna ulica 22","Novo Mesto")

("Starejše, vendar dobro ohranjeno dupleks stanovanje. V centru mesta",122.00,5.0,110000.00)

True

Poslovni objekt Velkova 44

22. 01. 2016 24. 02. 2017 (P23435589Z87645,"Velkova 44",Velenje)

("Poslovni objekt v centru mesta. Dobro ohranjen. Primeren za pisarne.",170.00,8.0,179450.00)

False

Apartma na mirni poti 3. 06. 2014 3. 06. 2017 (A23938789S22245,"Mirna pot 12",Kranj)

("Dvo in pol sobni apartma v hotelu Mirna Pot. Dobro ohranjen. Hotel se nahaja v mirnem naselju blizu Kranja.",75.00,2.5,80800.00)

True

Počitniški objekt blizu Kopra

8. 03. 2015 8. 02. 2016 (P23236789P12645,"Mezgova cesta 23",Koper)

("Počitniški objekt blizu Kopra. Je dobro ohranjen in v mirni okolici.",135.00,6.0,150000.00)

False

Dvojček v Gotovljah 23. 12. 2015 25. 04. 2017 (DV3454489DV2345,"Gotovlje 20",Žalec)

("Velika, nova hiša na vasi. Mirna okolica, prijetna narava. Dvojček",133.00,6.0,150000.00)

True

Page 76: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

73 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

13.1.4 Funkcija urnikOgledov SELECT * FROM public.urnikogledov('valentinaprekk', 'DA'); SELECT * FROM public.urnikogledov('matjazsedmi', 'DA'); No data to display

SELECT * FROM public.urnikogledov('valentinaprekk', 'NE'); Casogleda Nepremicnina Stranka Agent Mnenje 23. 03. 2017 13:00:00 (D12312315D98765,"Mestna ulica

22","Novo Mesto") (Lea,Polh,070923843) (Valentina,Prekk) Mnenje še ni bilo

zapisano.

SELECT * FROM public.urnikogledov('matjazsedmi', 'NE'); Casogleda Nepremicnina Stranka Agent Mnenje 26. 01. 2017 12:15:00

(G23451234V98765,"Mehova 9",Žalec) (Ivan,Pug,030376234) (Matjaž,Sedmi) Mnenje še ni bilo zapisano.

11. 03. 2017 10:00:00

(S23443789D15545,"Grkova 10",Maribor)

(Jožica,Novak,070913434) (Matjaž,Sedmi) Mnenje še ni bilo zapisano.

11. 03. 2017 10:00:00

(S23443789D15545,"Grkova 10",Maribor)

(Andrej,Novak,050923434) (Matjaž,Sedmi) Mnenje še ni bilo zapisano.

22. 02. 2017 15:00:00

(G23451234V98765,"Mehova 9",Žalec) (Marko,Skače,051333444) (Matjaž,Sedmi) Mnenje še ni bilo zapisano.

SELECT * FROM public.urnikogledov('stefancena', 'DA'); SELECT * FROM public.urnikogledov('stefancena', 'NE'); SELECT * FROM public.urnikogledov(NULL, 'DA'); No data to display SELECT * FROM public.urnikogledov(NULL, 'NE'); Casogleda Nepremicnina Stranka Agent Mnenje 23. 03. 2017 13:00:00

(DV3454489DV2345,"Gotovlje 20",Žalec) (Jože,Deveti,031921876) (Timotej,Dvanajstnik) Mnenje še ni bilo zapisano.

22. 02. 2017 15:00:00

(G23451234V98765,"Mehova 9",Žalec) (Marko,Skače,051333444) (Matjaž,Sedmi) Mnenje še ni bilo zapisano.

12. 03. 2017 11:00:00

(H23456789V12345,"Siničeva 3",Celje) ("Štefan",Cena,060321556) (Polde,Vrkovnik) Mnenje še ni bilo zapisano.

11. 03. 2017 10:00:00

(S23443789D15545,"Grkova 10",Maribor) (Andrej,Novak,050923434) (Matjaž,Sedmi) Mnenje še ni bilo zapisano.

11. 03. 2017 10:00:00

(S23443789D15545,"Grkova 10",Maribor) (Jožica,Novak,070913434) (Matjaž,Sedmi) Mnenje še ni bilo zapisano.

26. 01. 2017 12:15:00

(G23451234V98765,"Mehova 9",Žalec) (Ivan,Pug,030376234) (Matjaž,Sedmi) Mnenje še ni bilo zapisano.

23. 03. 2017 13:00:00

(D12312315D98765,"Mestna ulica 22","Novo Mesto")

(Lea,Polh,070923843) (Valentina,Prekk) Mnenje še ni bilo zapisano.

25. 03. 2017 17:00:00

(H23456789V12345,"Siničeva 3",Celje) (Luka,"Šmorn",080921123) (Polde,Vrkovnik) Mnenje še ni bilo zapisano.

13.1.5 Funkcija lastnikiNepremicnin SELECT * FROM public.lastnikinepremicnin(); Lastnik Delez Nepremicnina

("Recenzus Celje d.o.o.") 25.00% (P23236789P12645,"Mezgova cesta 23",Koper)

("Krik Desna") 25.00% (P23236789P12645,"Mezgova cesta 23",Koper)

("Cajtung d.o.o.") 25.00% (P23236789P12645,"Mezgova cesta 23",Koper)

("Letak d.o.o.") 25.00% (P23435589Z87645,"Velkova 44",Velenje)

("Recenzus Celje d.o.o.") 25.00% (P23435589Z87645,"Velkova 44",Velenje)

("Krik Desna") 25.00% (P23435589Z87645,"Velkova 44",Velenje)

("Cajtung d.o.o.") 25.00% (P23435589Z87645,"Velkova 44",Velenje)

("Cinkarna Celje d.d.") 50.00% (A23938789S22245,"Mirna pot 12",Kranj)

("Delo d.o.o.") 50.00% (A23938789S22245,"Mirna pot 12",Kranj)

("Kreka d.d.") 25.00% (P23236789P12645,"Mezgova cesta 23",Koper)

(Jože,Deveti,"Krekova 29",Koper) 100.00% (H23456789V12345,"Siničeva 3",Celje)

(Marko,Skače,"Polhova 3",Žalec) 100.00% (H23456789V12345,"Siničeva 3",Celje)

(Jože,Deveti,"Krekova 29",Koper) 100.00% (D23498789D09845,"Gradova cesta 33",Ljubljana)

(Lea,Polh,"Dominkova 12",Celje) 100.00% (D23498789D09845,"Gradova cesta 33",Ljubljana)

(Luka,"Šmorn","Aljaževa 53",Ljubljana) 100.00% (S23443789D15545,"Grkova 10",Maribor)

(Ivan,Pug,"Puhova vas 3",Petrovče) 100.00% (S23443789D15545,"Grkova 10",Maribor)

(Jana,Smrk,"Smrekova 129","Novo Mesto") 100.00% (D12312315D98765,"Mestna ulica 22","Novo Mesto")

(Andrej,Novak,"Cankrajeva 33",Velenje) 50.00% (DV3454489DV2345,"Gotovlje 20",Žalec)

(Jožica,Novak,"Cankrajeva 33",Velenje) 50.00% (DV3454489DV2345,"Gotovlje 20",Žalec)

(Janko,Kos,"Kosobrinova 259",Velenje) 85.00% (D12312315D98765,"Mestna ulica 22","Novo Mesto")

Page 77: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

74 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

13.2 Rezultati statistika – avtor Nejc Martinjak

13.2.1 Funkcija seznamNotarjev SELECT * FROM public.seznamnotarjev();

imepriimek Cenastoritve(eur) telefonskastevilka email

(Irena,Lah) 130,5 012312677 [email protected]

(Simon,Novak) 120 014315533 [email protected]

(Janja,Novak) 115 012385781 [email protected]

(Jure,Medved) 1000 012395683 [email protected]

Page 78: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

75 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

13.2.2 Funkcija seznamPogodb SELECT * FROM public.seznamPogodb(); stevilkapogodbe opis datum

115 Velika, nova hiša. Prostorno dobro urejena

5. 03. 2017

116 Tri in pol sobno stanovanje v mirni okolici. Renovirano

12. 04. 2017

118 Pogodba dvonadstropna hiša Ajdovščina 98

7. 04. 2017

118

Apartma v hotelu Zvezda. V odličnem stanju, dobro opremljen.

7. 04. 2017

130 Velika, nova hiša na vasi. Mirna okolica, prijetna narava. Dvojček

14. 08. 2016

122 Poslovni objekt v centru mesta. Dobro ohranjen. Primeren za pisarne.

16. 02. 2012

124 Počitniški objekt blizu Kopra. Je dobro ohranjen in v mirni okolici.

5. 06. 2010

127 Dobro ohranjeno dupleks stanovanje.Zamenjana okna in vrata.

3. 02. 2016

120 Starejše, vendar dobro ohranjeno dupleks stanovanje. V centru mesta

12. 12. 2016

Page 79: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

76 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

13.2.3 Funkcija seznamPlacil SELECT * FROM public.seznamplacil();

znesekplacila stevilkapogodbe opis

163000 115 Velika, nova hiša. Prostorno dobro urejena

90000 116 Tri in pol sobno stanovanje v mirni okolici. Renovirano

2000 124 Počitniški objekt blizu Kopra. Je dobro ohranjen in v mirni okolici.

Page 80: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

77 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

14 Zaključek Evidenca nepremičnin je prikaz računalniške obdelave nepremičnin, ki jih upravlja eno podjetje. Je osnova za

evidentiranje nepremičnin, vendar za resno uporabo potrebuje še nekaj sprememb. Najbolj bi bilo potrebno

dodati še kakšno funkcijo oz. dopolniti osnovne, da bi lahko ločili med različnimi enotami podjetja. Prav tako

bi bilo potrebno zgraditi aplikacijo, ki bi uporabljala to bazo.

Page 81: SEMINARSKA NALOGA - scv.si...SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017 6 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK 4 Vloge in funkcije 4.1 Vloge in funkcije – avtor

SEMINARSKA NALOGA | PODATKOVNE BAZE 2 29. marec 2017

78 | S t r a n MATIC BOŽIČ IN NEJC MARTINJAK

15 Izjava o samostojnem delu

Božič Matic, rojen 23.2.1992 izjavljam, da je seminarska naloga z naslovom "NEPREMIČNINE" plod mojega

lastnega dela in znanja, v sodelovanju s spodaj omenjenim Martinjak Nejc.

Žalec, 28. marec 2017

Martinjak Nejc, rojen 25.7.1994 izjavljam, da je seminarska naloga z naslovom "NEPREMIČNINE" plod mojega

lastnega dela in znanja, v sodelovanju z zgoraj omenjenim Božič Matic.

Velenje, 29. marec 2017