seminarska naloga - scv.si...seminarska naloga | podatkovne baze 2 29. marec 2017 6 | s t r a n...
TRANSCRIPT
SEMINARSKA NALOGA PODATKOVNE BAZE 2
NEPREMIČNINE
Datum: 29. marec 2017 Avtorja:
Matic Božič
Nejc Martinjak
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
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
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
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
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
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
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
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
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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';
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
);
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
);
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;
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
);
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
);
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);
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 );
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 );
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 );
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
);
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();
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();
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();
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();
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();
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();
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();
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();
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();
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 );
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();
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();
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();
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();
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;
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;
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');
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');
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');
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');
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]');
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');
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');
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');
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');
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')
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
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")
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]
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
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.
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.
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