You are on page 1of 48

SVEUČILIŠTE U ZAGREBU

FAKULTET ORGANIZACIJE I INFORMATIKE

VARAŽDIN

Želimir Kemić

PRIMJER BAZE PODATAKA U SUSTAVU MYSQL


ZAVRŠNI RAD

Varaždin, 2013.
SVEUČILIŠTE U ZAGREBU

FAKULTET ORGANIZACIJE I INFORMATIKE

VARAŽDIN

Želimir Kemić

Izvanredni student

Broj indeksa: K-38018/09-I

Smjer: Primjena informacijske tehnologije u poslovanju

Stručni preddiplomski studij

PRIMJER BAZE PODATAKA U SUSTAVU MYSQL


ZAVRŠNI RAD

Mentor:

Doc. dr. sc. Markus Schatten

Varaždin, 2013.
Sadržaj
1. UVOD ...................................................................................................................................................... 1

2. RELACIJSKE BAZE PODATAKA .................................................................................................................. 2

2.1 SUSTAV ZA UPRAVLJANJE BAZOM PODATAKA ............................................................................................................. 3


2.2 SQL .................................................................................................................................................................. 4
2.2.1 Naredbe u SQL-u.................................................................................................................................... 5
2.2.2 Operatori u SQL-u .................................................................................................................................. 6
2.2.3 Matematičke funkcije u SQL-u............................................................................................................... 7

3. MYSQL .................................................................................................................................................... 8

3.1.1 Povijest tvrtke MySQL AB ...................................................................................................................... 8


3.1.2 MySQL Workbench ................................................................................................................................ 9

4. OPIS APLIKACIJSKE DOMENE ................................................................................................................. 10

4.1 ER MODEL........................................................................................................................................................ 10
4.1.1 Integritet baze podataka ..................................................................................................................... 10
4.1.2 Održavanje referencijalnog integriteta ............................................................................................... 11
4.2 BAZA PODATAKA „PRODAJA“ ............................................................................................................................... 12
4.2.1 Tablica „artikl“ .................................................................................................................................... 14
4.2.2 Tablica „kategorija“ ............................................................................................................................ 14
4.2.3 Tablica „poslovni_partner“ ................................................................................................................. 15
4.2.4 Tablica „radno_mjesto“ ...................................................................................................................... 15
4.2.5 Tablica „stopa_poreza“ ....................................................................................................................... 16
4.2.6 Tablica „tipovi_placanja“ .................................................................................................................... 16
4.2.7 Tablica „zaposlenik“ ............................................................................................................................ 17
4.2.8 Tablica „narudzba“ .............................................................................................................................. 17
4.2.9 Tablica „narudzba_stavke“ ................................................................................................................. 18
4.2.10 Tablica „primka“ ............................................................................................................................. 19
4.2.11 Tablica “primka_stavke“ ................................................................................................................ 19
4.2.12 Tablica „racun“ ............................................................................................................................... 20
4.2.13 Tablica „racun_stavke“................................................................................................................... 20
4.2.14 Tablica „partner_placanja“ ............................................................................................................ 21

5. APLIKACIJA „PRODAJA“ ......................................................................................................................... 22

5.1 IMPLEMENTACIJA APLIKACIJE ................................................................................................................................ 23


5.1.1 Otvaranje veze prema poslužitelju ...................................................................................................... 23

I
5.1.2 Korištenje SELECT upita ....................................................................................................................... 24
5.1.3 Korištenje UPDATE upita ..................................................................................................................... 25
5.1.4 Korištenje INSERT upita ....................................................................................................................... 26
5.1.5 Korištenje DELETE upita....................................................................................................................... 27
5.2 DEKOMPOZICIJSKI DIJAGRAM APLIKACIJE ................................................................................................................. 28
5.3 FORME APLIKACIJE ............................................................................................................................................. 29
5.3.1 Početna forma ..................................................................................................................................... 29
5.3.2 Artikli ................................................................................................................................................... 30
5.3.3 Zaposlenici ........................................................................................................................................... 32
5.3.4 Poslovni partneri ................................................................................................................................. 33
5.3.5 Radna mjesta ...................................................................................................................................... 33
5.3.6 Stopa poreza ....................................................................................................................................... 34
5.3.7 Kategorije ............................................................................................................................................ 34
5.3.8 Tipovi plaćanja .................................................................................................................................... 35
5.3.9 Računi pregled ..................................................................................................................................... 35
5.3.10 Narudžbe pregled ........................................................................................................................... 36
5.3.11 Primka pregled ............................................................................................................................... 36
5.3.12 Dugovanja po kupcima ................................................................................................................... 37
5.3.13 Računi ............................................................................................................................................. 38
5.3.14 Narudžbe ........................................................................................................................................ 40
5.3.15 Primka............................................................................................................................................. 41
5.3.16 Unos plaćanja ......................................................................................................................................... 41
5.3.17 Korisnički podaci ............................................................................................................................. 42

6. ZAKLJUČAK ................................................................................................................................................. 43

7. LITERATURA .......................................................................................................................................... 44

II
1. Uvod

Baze podataka su postale esencijalni dio modernog društva. Većina nas se svaki dan susreće s
nekoliko aktivnosti koje uključuju neku interakciju s bazama podataka. Na primjer, svaki put kad
odlazimo u banku podići novac, kada rezerviramo kartu za koncert, kupujemo nešto preko
Interneta, ili čak kod običnog odlaska u dućan mješovitom robom u susjedstvu velike su šanse da
aplikacija na računalu kojem se pristupa za obradu pohranjuje i ažurira podatke u neku vrstu baze
podataka. Ovo su većinom primjeri tako zvanih tradicionalnih baza podataka koje spremaju
informacije u tekstualni ili brojčani tip podataka. Međutim razvoj sustava za upravljanje baza
podataka nam danas omogućuje i pohranu slika, video i audio isječaka u digitalnom formatu, koji
su važan dio složenih multimedijskih baza podataka koje se koriste u pretraživačima Interneta,
geografskim informacijskim sustavima, skladištima podataka i sustavima za analitičko
odlučivanje.

Jedan od najraširenijih sustava za upravljanje relacijskim bazama podataka koji se danas koristi
je MySQL, sustav otvorenog koda koji se pokreće na poslužitelju, te pruža pristup višestrukom
broju korisnika i pohranu višestrukog broja baza podataka. Neke od najvećih svjetskih kompanija
poput Paypal-a, Twitter-a, Wikipedia-e, Adobe-a, te mnogih drugih koriste MySQL baze podataka
[1]. Kako bi pobliže opisao MySQL za potrebe ovog završnog rada razvio sam bazu podataka, te
aplikaciju programiranu u Visual Basic-u koja pristupa toj bazi podataka.

1
2. Relacijske baze podataka

Današnje relacijske baze podataka predstavljaju skup organiziranih podataka spremljen u računalu
na specifičan način. Podaci se spremaju u obliku dvodimenzionalnih tablica, gdje se svaka od njih
sastoji od redaka i stupaca [2:59]. Svaki redak u tablici označava entitet koji može predstavljati
neku stvar, osobu, ili pojavu, a stupci predstavljaju atribute tog entiteta koji ga opisuju. U tablici
2.1 možemo vidjeti navedene tri osobe koje predstavljaju entitete, a stupci sadrže atribute koji
opisuju osobe (id, prezime, ime, grad).

Tablica 2.1 „osobe“

ID Prezime Ime Grad

1 Perić Pero Zagreb

2 Markić Marko Zagreb

3 Ivić Ivo Varaždin

Atribut koji jedinstveno opisuje svaki od navedenih entiteta (može ih u iznimnim slučajevima biti
više) naziva se primarni ključ. On nam služi za povezivanje s drugim tablicama, te se spaja na
njihove vanjske ključeve. U našem primjeru je vidljivo da se atribut „Zagreb“ pojavljuje dva puta,
a kod velikog broja entiteta moguć je i velik broj ponavljanja. Stoga da bi se izbjegla redudancija
podataka prilikom modeliranja je potrebno napraviti tablicu s gradovima čiji primarni ključ (ID)
će se vezati na atribut „Grad“ koji postaje vanjski ključ tablice „osobe“. U tablicama 2.2 i 2.3
vidljivo je kako bi podaci izgledali upisani u te dvije tablice.

Tablica 2.2 „osobe“ Tablica 2.3 „gradovi“

ID Prezime Ime Grad ID Naziv grada

1 Perić Pero 1 1 Zagreb

2 Markić Marko 1 2 Varaždin

3 Ivić Ivo 2

Navedeni primjer predstavlja vezu između dvije tablice, odnosno relacije, a po tipu veze između
dva entiteta mogu biti [2:76-78]:

2
 1:1 - veza jedan prema jedan, što znači da je jedan zapis iz tablice vezan samo uz
jedan zapis u drugoj tablici. Rjeđe se koristi jer podaci mogu biti upisani u istoj
tablici.
 1:M - veza jedan prema više, najviše je u upotrebi, znači da na jedan zapis u prvoj
tablici može se odnositi jedan ili više zapisa u drugoj tablici (npr. jedan album se
sastoji od više pjesama).
 M:M- veza više prema više, slučaj kad jedan ili više entiteta iz jedne tablice može
biti povezano s jednim ili više entiteta u drugoj tablici (npr. na računu može biti
navedeno jedan ili više artikala, a svaki artikl može se nalaziti na više izdanih
računa ). Budući da ovo nije dopušteno u oblikovanju relacijskog modela, slučaj se
rješava uvođenjem treće tablice zvane tablica sjecište, koja je u vezi 1:M s ostale
dvije tablice.

2.1 Sustav za upravljanje bazom podataka

Sustav za upravljanje bazom podataka(SUBP) predstavlja programski sustav koji se koristi za


pristup, pohranu, te manipulaciju podacima u bazi podataka. Koristi se za interakciju korisnika i
baze podataka, a korisnik može sa SUBP imati direktnu interakciju, ili preko aplikacije
programirane u nekim od programskih jezika poput Jave, C++, Visual Basic-a [2:7].

Neophodni dijelovi svakog SUBP su jezici za upravljanje bazama podataka [2:221]:

 DDL(data description language) - jezik za definiciju ili deklaraciju objekata u


bazi podataka
 DML(data manipulation language) - jezik za manipulaciju objektima baze
podataka
 DCL(data control language) - jezik za postavljanje dozvola u bazi podataka
 TCL(transaction control language) - jezik za upravljanje transakcija

3
2.2 SQL

SQL je akronim za Structured Query Language, te je najpoznatiji računalni jezik korišten pri izradi
baza podataka, te manipulacijom podataka u bazi podataka. Napravljen je po uzoru na relacijski
model Edgar F. Codda predstavljen u njegovom radu "A Relational Model of Data for Large
Shared Data Banks" koji je objavio u časopisu „Association for Computing Machinery“ 1970.
godine. Razvila ga je američka tvrtka IBM, gdje je razvijena baza podataka pod nazivom „System
R“, a zadatak tada zvanog Structured English Query Language ("SEQUEL") je bio upravljanje
tom bazom podataka. Kratica SEQUEL je kasnije promijenjena u SQL, jer je tada naziv
„SEQUEL“ koristila jedna zrakoplovna tvrtka u Ujedinjenom Kraljevstvu. SQL je standardiziran
preko standarda ANSI1 1986. godine i ISO2 1987. godine, te je postao referentni jezik za relacijske
baze podataka [3].

SQL je lagan za upotrebu i ne zahtijeva veliko znanje korisnika za upotrebu. Glavna karakteristika
mu je deklarativnost što znači da korisnik određuje što SQL treba napraviti, ali ne i kako doći do
rezultata, te nema potrebe poznavati složene aktivnosti koje se događaju kad se unese SQL naredba
[2:222]. Iako je SQL standardiziran danas postoje male razlike u različitim SUBP koje možemo
nazvati i „narječja“ u SQL jeziku. Gotovo svaki od poznatijih SUBP poput MySQL-a, Micosoft
SQL Server-a, IBM-ova DB2, ima neke svojstvene karakteristike poput sintakse i tipova podataka
koje je poželjno proučiti prije njihove upotrebe. Osnovni tipovi podataka koje podržavaju svi
SUBP su sljedeći [2:223]:

 NUMBER - brojevni tip podatka (cijeli, negativni, decimalni)


 INTEGER - cijeli brojevi
 CHAR - niz podataka fiksne duljine
 VARCHAR - niz podataka varijabilne duljine
 DATE/TIME – tip podatka koji označava datum/vrijeme

1
ANSI - American National Standards Institute
2
ISO - International Organization for Standardization

4
2.2.1 Naredbe u SQL-u

Naredbe u SQL-u se mogu podijeliti u četiri kategorije[2:220]:

 DDL(data definition language) naredbe


 DML(data manipulation language) naredbe
 DCL(data control language) naredbe
 TCL(transaction control language) naredbe

DML naredbe se koriste kod kreiranja i brisanja tablica, indeksa i pogleda. Osnovne DML
naredbe koje se koriste u SQL-u su CREATE TABLE, CREATE INDEX, CREATE VIEW,
ALTER TABLE, DROP TABLE, DROP VIEW i DROP INDEX [2:221].

DML naredbe se koriste za dodavanje redaka, izmjenu i brisanje podataka u tablicama, te se


najviše koriste u radu s bazama podataka. U DML naredbe spadaju SELECT, INSERT, UPDATE
i DELETE [2:221].

SELECT naredba se koristi za dohvat podataka iz tablica u bazama podataka. Sintaksa joj je
sljedeća [2:238-39]:

SELECT naziv_atributa

FROM ime_tablice

[WHERE uvjet]

[GROUP BY naziv_atributa ]

[HAVING uvjet]

[ORDER BY naziv_atributa [ASC | DESC]]

INSERT naredba se koristi za dodavanje novih redaka u tablicu. Sintaksa INSERT naredbe izgleda
ovako [2:237]:

INSERT INTO ime_tablice VALUES (vrijednost_1, vrijednost_2...)

ili

5
INSERT INTO ime_tablice (atribut_1, atribut_2...) VALUES (vrijednost_1, vrijednost_2...)

UPDATE se koristi za izmjenu podataka u tablici. Sintaksa UPDATE naredbe je sljedeća [2:240]:

UPDATE ime_tablice SET atribut_1=vrijednost_1, atribut_2=vrijednost_2...

WHERE atribut_X=vrijednost_X

DELETE naredba se koristi za brisanje redaka iz tablice. Sintaksa DELETE naredbe je sljedeća
[2-241]:

DELETE FROM ime_tablice WHERE atribut_X=vrijednost_X

DCL naredbe se koristi kod dodjeljivanja dozvola za određene operacije nad bazom podataka. U
njih spadaju GRANT koja dodjeljuje pravo, te REVOKE koja oduzima pravo nad određenom
operacijom nad bazom podataka [2:221].

TCL naredbe se koriste kod upravljanja trensakcijama u SQL-u. Transakcija predstavlja skup
(obično DML) naredbi koje se izvršavaju u bazi podataka. U TCL naredbe spada COMMIT
naredba kojom se spremaju promjene u bazi podataka i ROLLBACK kojom se ukidaju sve
promjene od zadnje COMMIT naredbe [2:221].

2.2.2 Operatori u SQL-u

Aritmetički operatori se koriste u aritmetičkim operacijama u upitima (+, -, /, *, %) [2:222].

Operatori uspoređivanja se koriste kod uspoređivanja uvjeta u upitima (=, <>, <, >, <=, >=)
[2:222].

Logički operatori uspoređuju dva uvjeta istovremeno kako bi se utvrdilo da li redak može biti
dohvaćen. U njih spadaju[2:247]:

OR – barem jedan od uvjeta mora biti zadovoljen

6
AND – kako bi red bio izabran svi uvjeti moraju biti istiniti

NOT-- kako bi red bio izabran svi uvjeti moraju biti lažni

Specijalni operatori se koriste zajedno s WHERE uvjetom, te u njih spadaju sljedeći operatori
[2:249]:

BETWEEN – koristi se da bi se utvrdilo da li je vrijednost atributa unutar zadanih vrijednosti

IS NULL – koristi se da se utvrdi da li atribut ima vrijednost null

LIKE – koristi se da se utvrdi da li atribut ima isti uzorak znakova

IN – koristi se da se provjeri da li je atribut jednak nekoj od vrijednosti

EXISTS – koristi se da bi se provjerilo jel podupit vraća vrijednost

2.2.3 Matematičke funkcije u SQL-u

SQL ima razne agregirajuće ili grupovne funkcije koje mogu olakšati korisniku rad s brojevnim
podacima u bazi podataka. U njih spadaju [2:262]:

COUNT – zbroj redova koji sadrže određenu vrijednost

MIN – najmanja vrijednost od izabranog skupa atributa

MAX – najveća vrijednost od izabranog skupa atributa

SUM – zbroj svih vrijednosti za odabranu kolonu

AVG – srednja vrijednost od odabrane kolone

7
3. MySQL

MySQL je jedan od najraširenijih, relacijskih sustava otvorenog koda3 za upravljanje bazom


podataka. Pokreće se na poslužitelju, te podržava višekorisnički pristup bazama podataka.
Razvojni tim MySQL-a dostupio je pristup izvornom kodu MySQL-a pod GNU4 licencom.
MySQL je popularan izbor baza podataka za stvaranje web aplikacija, te je centralna komponenta
LAMP paketa za izradu web aplikacija. LAMP je akronim za Linux, Apache, MySQL,
Perl/PHP/Python, a njegove inačice (sa sufiksom AMP) se mogu naći za većinu današnjih
operacijskih sustava za računala [4].

3.1.1 Povijest tvrtke MySQL AB

MySQL je izradila švedska tvrtka MySQL AB 1995. godine, koja je osnovana iste godine.
Osnivači su joj Michael Widenius, David Axmark i Allan Larsson. Od 2000. godine MySQL
postaje software otvorenog koda, nakon čega već sljedeće godine broj aktivnih instalacija raste na
2 milijuna. Tvrtka se širi i na američko tržište, zapošljava oko 320 ljudi, te 2006. godine postiže
33% ukupnog svjetskog tržišta aktivnih instalacija i 0,2% ukupnih prihoda u tržištu baza podataka,
a za njih se počinje zanimati Oracle. Međutim, tvrtka je prodana Sun Microsystems-u za 1 bilijun
dolara 2008. godine. Dvije godine kasnije Oracle kupuje većinski paket dionica Sun
Microsystems-a te postaje jedna od vodećih svjetskih informatičkih kompanija. Danas je MySQL
jedan od najpopularnijih SUBP s preko 100 milijuna aktivnih instalacija [5].

3
Softvare otvorenog koda - (engl.open-source) softver čiji je izvorni kod dostupan javnosti na uvid, korištenje,
izmjene i daljnje raspačavanje [6]
4
GNU licenca - omogućava slobodu umnažanja, mijenjanja i distribuiranja za komercijalnu ili nekomercijalnu
upotrebu, autoru i izdavaču djela osigurava zasluge za njihov rad, bez snošenja odgovornosti za promjene koje
naknadno učini treća osoba [7]

8
3.1.2 MySQL Workbench

MySQL Workbench je grafički alat za dizajniranje baza podataka koji integrira SQL razvoj,
administraciju, dizajn i održavanje u jedno zajedničko sučelje za MySQL baze podataka. Prva
ogledna insčica je razvijena 2005. godine i nasljednik je DBDesigner4 alata. Dio je MySQL paketa
od 2007. godine, a njegovo numeriranje je počelo inačicom 5.0, budući je nasljedio DBDesigner4.
Prva inačica je bila namijenjena za upotrebu na MS Windows operacijskom sustavu, a od inačice
5.1 dostupna je i na drugim platformama. Alat postoji u besplatnom i komercijalnom izdanju, te
je drugi alat po preuzimanjima s MySQL web stranice s preko 250.000 mjesečnih preuzimanja [8].
Na slici 3.1 prikazana je početna forma alata MySQL Workbench.

Slika 3.1 Početna forma MySQL Workbench-a

9
4. Opis aplikacijske domene

4.1 ER model

ER model predstavlja grafički prikaz entiteta i veza između entiteta u bazi podataka. 1976. godine
ga je predstavio Peter Chen, te je ubrzo postao popularan jer je lako razumljiv, te vrlo dobro
komplementira koncepte relacijskog modela [2:38].

Za prikaz ER modela baze u mojem primjeru korištena je notacija vranino stopalo5 koja se koristi
od 80-ih godina prošlog stoljeća. U ovoj notaciji entiteti se prikazuju kao pravokutnici, a veze kao
linije između njih. Različiti simboli na kraju linija prikazuju kardinalnost veze, odnosno na koliko
entiteta u tablici se odnosi veza, a značenja su prikazana na slici 4.1.

Slika 4.1 Veze u notaciji "vranino stopalo"

4.1.1 Integritet baze podataka

Kod izgradnje ove kao i kod drugih baza podataka važno je pridržavati se određenih pravila
integriteta. Integritet predstavlja definiranje i održavanje formalne ispravnosti sadržaja baze
podataka. Vrste integritetnih ograničenja su [2:67-68]:

Entitetski integritet – vrijednost primarnog ključa u bazi podataka ne smije poprimiti vrijednost
null

5
vranino stopalo – dobilo je naziv po izrazu iz engleskog jezika (crow's foot) zbog izgleda simbola koji označava
„više“

10
Referencijalni integritet – vanjski ključevi u bazi podataka ne smiju ukazivati na nepostojeću
vrijednost

4.1.2 Održavanje referencijalnog integriteta

Kao što je već navedeno održavanje referencijalnog integriteta je sprečavanje da vanjski ključevi
ukazuju na nepostojeću vrijednost, do čega može doći ako se pokuša izbrisati vrijednost u tablici
(tako zvana tablica roditelj) na koju ukazuje vanjski ključ. Da bi se to spriječilo kod stvaranja SQL
skripte stavljaju se određena ograničenja koja su [2:68]:

RESTRICT – ne dopušta brisanje vrijednosti tablice roditelja koja imaju potomke

CASCADE – kad se briše vrijednost tablice roditelj briše se i vrijednost potomka

SET NULL – nakon brisanja roditelja, potomku se stavlja vrijednost null

Na slici 4.2 može se vidjeti skripta za kreiranje tablice „primka“ i postavljena ograničenja na
vanjskim ključevima „dobavljac“ i „p_kreirao“.

Slika 4.2 Skripta za kreiranje tablice "primka"

11
4.2 Baza podataka „Prodaja“

Na slici 4.3 možemo vidjeti grafički prikaz ER modela s notacijom „vranino stopalo“ izrađen u
alatu MySQL Workbench. Baza podataka koju prikazuje naziva se „Prodaja“, te se sastoji od 14
tablica i atributima koji su objašnjeni u nastavku. Pokraj svakog atributa označen je i tip podatka
koje polje može primiti. Entiteti koji se nalaze u bazi podataka su vidljivi u relacijkoj shemi ispod,
koja predstavlja tekstualni prikaz entiteta i atributa koji se nalaze u zagradi.

artikl (id_artikl, ime_artikla, opis, kategorija, cijena, jedinicna_mjera, zaliha, porez)

kategorija (id_kat, ime_kat, opis)

poslovni_partner (id_poslovni_partner, naziv, adresa, adresa_racuna, telefon, telefax, email,


korisnik_od)

radno_mjesto (id_radnog_mjesta, naziv, adresa, adresa_racuna)

stopa_poreza (id_porez, iznos_stope, ime_stope, opis)

tipovi_placanja (id_tipovi_placanja, tip_placanja, opis, komentar)

zaposlenik (id_zaposlenik, prezime, ime, adresa, telefon, mobitel, email, datum_rodjenja,


datum_zaposlenja, radno_mjesto, kor_ime, lozinka)

narudzba (id_narudzba, p_partner, kreirao, datum_kreiranja)

narudzba_stavke (id, id_narudzba, id_artikl, kolicina)

primka (id_primka, dobavljac, p_kreirao, datum_primke, ukupno)

primka_stavke (id, id_primka, id_artikl, kolicina)

racun (id_racun, kupac, r_kreirao, id_tip, komentar, datum_racuna, datum_placanja, popust,


naruceno_putem, porez, total)

racun_stavke (id_stavke, id_racun, artikl)

partner_placanja (id_partner_placanja, ime_partnera, iznos, komentar, datum_placanja,


tip_placanja)

12
Slika 4.3 ER model baze podataka "Prodaja"

13
4.2.1 Tablica „artikl“

U ovu tablicu se upisuju novi artikli ili uređuju postojeći. Primarni ključ ove tablice je „id_artikl“
i jednoznačno određuje svaki entitet u tablici. Vanjski ključevi su „kategorija“, koji se veže na
tablicu „kategorija“, te „porez“ koji se veže na tablicu „stopa_poreza“. Atribute entiteta „artikl“
možemo vidjeti u tablici 4.1.

Tablica 4.1 „artikl“

Ključ Atribut Tip podatka Opis

PK id_artikl int Šifra artikla

ime_artikla varchar Naziv artikla

opis varchar Opis artikla

VK kategorija int Kategorija u koju artikl spada

cijena decimal Cijena u kunama

jedinicna_mjera varchar Jedinična mjera artikla

zaliha int Trenutna zaliha u skladištu

VK porez int Porezna stopa

4.2.2 Tablica „kategorija“

Služi za upis novih i uređivanje postojećih kategorija. Koristi se kod sortiranja artikala u grupe
radi bržeg pretraživanja i boljeg pregleda. Primarni ključ je „id_kategorija“. Popis svih atributa
entiteta „kategorija“je u tablici 4.2.

Tablica 4.2 „kategorija“

Ključ Atribut Tip podatka Opis

PK id_kat int Šifra kategorije

ime_kat varchar Naziv kategorije

opis varchar Opis kategorije

14
4.2.3 Tablica „poslovni_partner“

Koristi se za upis novih i uređivanje postojećih poslovnih partnera. Entitet poslovni partner se
koristi kod izrada dokumenata primka i narudžba, kao dobavljač, kod izrade računa kao kupac, te
kod unosa uplata kupaca. Primarni ključ ove tablice je „id_poslovni_partner“, a povezan je s
vanjskim ključevima tablica „narudzba“, „primka“, „racun“ i „partner_placanja“. Popis atributa
entiteta „poslovni_partner“možemo vidjeti u tablici 4.3.

Tablica 4.3 „poslovni_partner“

Ključ Atribut Tip podataka Opis

PK id_poslovni_partner int Šifra poslovnog partnera

naziv varchar Naziv poslovnog partnera

adresa varchar Adresa poslovnog partnera

adresa_racuna varchar Adresa za slanje računa

telefon varchar Telefon

telefax varchar Telefax

email varchar E-mail adresa

korisnik_od date Datum prvog unosa u bazu

4.2.4 Tablica „radno_mjesto“

Koristi se za unos i uređivanje radnih mjesta koja se koriste kod pregleda zaposlenika u aplikaciji.
Primarni ključ ove tablice je „id_radnog_mjesta“, veže se na vanjski ključ tablice „zaposlenik“.
Atributi entiteta „radno_mjesto“su vidljivi u tablici 4.4.

Tablica 4.4 „radno_mjesto“

Ključ Atribut Tip podatka Opis

PK id_radnog_mjesta int Šifra radnog mjesta

naziv varchar Naziv radnog mjesta

15
adresa varchar Komentar

adresa_racuna varchar Opis

4.2.5 Tablica „stopa_poreza“

Sadrži stope poreza koje se odnose na određene artikle i omogućuje unos novih stopa. Primarni
ključ ove tablice je „id_porez“ i veže se na vanjski ključ tablice „artikl“. Sastoji se od atributa
vidljivih u tablici 4.5.

Tablica 4.5 „stopa_poreza“

Ključ Atribut Tip podatka Opis

PK id_porez int Šifra stope poreza

iznos_stope int Iznos stope poreza

ime_stope varchar Naziv stope poreza

opis varchar Opis

4.2.6 Tablica „tipovi_placanja“

U ovu tablicu se unose i uređuju tipovi plaćanja koji se koriste u izdavanju računa, te evidenciji
plaćanja kupaca. Primarni ključ tablice je „id_tipovi_placanja“, a veže se na vanjske ključeve
tablica „racun“ i „partner_placanja“. Popis atributa entiteta „tipovi_placanja“ je u tablici 4.6.

Tablica 4.6 „tipovi plaćanja“

Ključ Atribut Tip podatka Opis

PK id_tipovi_placanja int Šifra tipa plaćanja

tip_placanja varchar Naziv tipa plaćanja

opis varchar Opis

komentar varchar Komentar

16
4.2.7 Tablica „zaposlenik“

Služi za upis zaposlenika i uređivanje njihovih podataka. Također sadrži podatke koji se
provjeravaju kod prijave u aplikaciju. Primarni ključ je „id_zaposlenik“, a veže se na vanjske
ključeve tablica „racun“, „primka“ i „narudzba“. Vanjski ključ „radno_mjesto“ povezan je s
primarnim ključem tablice „radna_mjesta“. Atribute entiteta „zaposlenik“ možemo vidjeti u tablici
4.7.

Tablica 4.7 „zaposlenik“

Ključ Atribut Tip podatka Opis

PK id_zaposlenik int Šifra zaposlenika

prezime varchar Prezime zaposlenika

ime varchar Ime zaposlenika

adresa varchar Adresa

telefon varchar Telefon

mobitel varchar Mobitel

email varchar E-mail adresa

datum_rodjenja varchar Datum rođenja

datum_zaposlenja varchar Datum zapošljavanja u tvrtku

VK radno_mjesto int Datum prestanka rada u tvrtci

kor_ime varchar Korisničko ime za prijavu

lozinka varchar Lozinka za prijavu

4.2.8 Tablica „narudzba“

Sadrži podatke o narudžbama, te služi za unos novih narudžbi. Primarni ključ ove tablice je
„id_narudzba“ i veže se za vanjski ključ tablice „narudzba_stavke“. Vanjski ključevi ove tablice

17
su „p_partner“ koji se veže na primarni ključ tablice „poslovni_partner“, te „kreirao“ koji se veže
na primarni ključ tablice „zaposlenik“. Popis svih atributa entiteta „narudzba“ je u tablici 4.8.

Tablica 4.8 „narudzba“

Ključ Atribut Tip podatka Opis

PK id_narudzba int Šifra narudžbe

VK p_partner int Dobavljač kojem šaljemo narudžbu

VK kreirao int Zaposlenik koji sastavlja narudžbu

datum_kreiranja datetime Vrijeme i datum unosa narudžbe

4.2.9 Tablica „narudzba_stavke“

Sadrži podatke o artiklima koji se nalaze na određenoj narudžbi, te njihovu količinu. Ovakva
tablica se naziva i tablica sjecište, budući da povezuje tablice „narudzba“ i „artikl“. Svaki artikl
može se pojaviti na više narudžbi, a svaka narudžba može se sastojati od više artikala. Budući da
većina sustava za upravljanje baza podataka ne podržava više-prema-više vezu između tablica
stvara se treća tablica s odnosom 1:M koja spaja te dvije tablice. Primarni ključ u ovoj tablici je
„id“, a vanjski ključevi su „id_narudzba“ koji je povezan s primarnim ključem tablice „narudzba“
i „id_artikl“ koji je povezan s primarnim ključem tablice „artikl“. Atributi entiteta
„narudzba_stavke“ su vidljivi u tablici 4.9.

Tablica 4.9 „narudzba_stavke“

Ključ Atribut Tip podatka Opis

PK id int Šifra

id_narudzba int Šifra narudžbe

id_artikl int Šifra artikla

kolicina int Količina artikala

18
4.2.10 Tablica „primka“

U nju se unose podaci kod unosa dokumenta primka. Primarni ključ ove tablice je „id_primka“
koji se povezuje s vanjskim ključem tablice „primka_stavke“, a vanjski ključevi su „dobavljac“
koji se veže s primarnim ključem tablice „poslovni_partner“ i „p_kreirao“ koji se veže s
primarnim ključem tablice „zaposlenik“. Atribute entiteta „primka“ možemo vidjeti u tablici 4.10.

Tablica 4.10 „primka“

Ključ Atribut Tip podatka Opis

PK id_primka int Šifra primke

VK dobavljac int Dobavljač po čijem dokumentu radimo primku

VK p_kreirao int Zaposlenik koji sastavlja primku

datum_primke date Datum sastavljanja primke

ukupno decimal Ukupan iznos primke

4.2.11 Tablica “primka_stavke“

Još jedna tablica sjecište koja povezuje tablice „primka“ i „artikl“. U nju se unose šifra artikla pod
šifrom primke koja se unosi, te količina artikala. Primarni ključ ove tablice je „id“, a vanjski
ključevi su „id_primka“ povezan s primarnim ključem tablice „primka“, te „id_artikl“ povezan s
primarnim ključem tablice „artikl“. Popis atributa entiteta „primka_stavke“ se nalazi u tablici 4.11.

Tablica 4.11 „primka_stavke“

Ključ Atribut Tip podatka Opis

PK id int Šifra

VK id_primka int Šifra primke

VK id_artikl int Šifra artikla

kolicina int Količina artikala

19
4.2.12 Tablica „racun“

U nju se unose podaci prilikom spremanja dokumenta račun. Primarni ključ ove tablice je
„id_racun“, a vanjski ključevi su „kupac“ povezan s primarnim ključem tablice
„poslovni_partner“, „r_kreirao“ koji je povezan s primarnim ključem tablice „zaposlenik“, te
„id_tip“ povezan s primarnim ključem tablice „tipovi_placanja“. Atributi entiteta „racun“ su
vidljivi u tablici 4.12.

Tablica 4.12 „racun“

Ključ Atribut Tip podatka Opis

PK id_racun int Šifra računa

VK kupac int Kupac

VK r_kreirao int Zaposlenik koji sastavlja račun

VK id_tip int Tip plaćanja računa

komentar varchar Komentar

datum_racuna date Datum izrade računa

datum_placanja date Datum plaćanja računa

popust varchar Iznos popusta na računu

naruceno_putem varchar Oblik naručivanja robe

porez varchar Iznos poreza na računu

total varchar Cjelokupni iznos računa

4.2.13 Tablica „racun_stavke“

Također tablica sjecište koja spaja tablice „racun“ i „artikl“. U nju se prilikom unosa računa
petljom unose i šifra artikla, te njihova količina, pod zadanom šifrom računa. Primarni ključ ove
tablice je „id_stavke“, a vanjski ljučevi su „id_račun“ povezan s primarnim ključem tablice
„racun“, te „artikl“ povezan s primarnim ključem tablice „artikl“. Popis atributa entiteta
„racun_stavke“ se nalazi u tablici 4.13.

20
Tablica 4.13 „racun_stavke“

Ključ Atribut Tip podatka Opis

PK id_stavke int Šifra

VK id_racun int Šifra računa

VK artikl int Šifra artikla

kolicina int Količina artikala

cijena varchar Cijena bez PDV-a

popust varchar Iznos popusta

iznos varchar Ukupan iznos

4.2.14 Tablica „partner_placanja“

U ovu tablicu se unose podaci o uplatama kupaca kako bi se u aplikaciji mogao izračunati trenutan
iznos dugovanja pojedinog kupca. Primarni ključ ove tablice je „id_partner_placanja“, a vanjski
ključevi su „ime_partnera“ koji se veže s primarnim ključem tablice „poslovni_partner“, te
„tip_placanja“ koji se veže na primarni ključ tablice „tipovi_placanja“. Atribute entiteta
„partner_placanja“ možemo vidjeti u tablici 4.14.

Tablica 4.14 „partner_placanja“

Ključ Atribut Tip podatka Opis

PK id_partner_placanja int Šifra uplate

VK ime_partnera int Naziv uplatitelja

iznos double Iznos uplate

komentar varchar Poziv na broj

datum_placanja date Datum uplate

VK tip_placanja int Način uplate

21
5. Aplikacija „Prodaja“

Aplikacija „Prodaja“ napravljena je sa svrhom kako bi upravljala MySQL bazom podataka


„prodaja“ kojom se pristupa putem Interneta. Ona služi zaposlenicima tvrtke kako bi izrađivali
dokumente potrebne u poslovanju (primke, račune, narudžbe), imali uvid u stanje artikala na
zalihi, te upravljali podacima u tablicama. Svi podaci koje zaposlenici unose se ažuriraju odmah i
na uvidu su ostalim zaposlenicima, budući da svi koriste istu bazu podataka. Za pristup se mogu
koristiti stolna ili prijenosna računala, bitno je jedino da imaju pristup Internetu.

Za izradu ove aplikacije korišten je programski jezik Visual Basic koji se koristi za generiranje
aplikacija za okruženje Microsoft Windows operacijskog sustava. Visual Basic koristi objektno
programiranje, tj. služi se objektima (gumbi, tekstni okviri, izbornici itd.) koje programer
razmješta po obrascima (engl.form) i dodaje im programski kod. Projekt napisan u VB kodu (.vbp)
se na zahtjev programera kompajlira i automatski se prevodi u izvršnu (.exe) datoteku koja se
može pokrenuti na bilo kojem računalu s Microsoft Windows operacijskim sustavom.

Također da bismo mogli spojiti na poslužitelj potrebno je preuzeti s Interneta MySQL konektor za
.NET aplikacije i dodati referencu u Visual Basic projektu. MySQL konektor omogućava prijenos
podataka koristeći TCP/IP protokol, podržava slanje BLOB tipa podataka 2 GB veličine, te
kompresiju podataka [9].

Sustav sadrži 2 vrste korisnika: administrator i obični korisnik. Jedina razlika je što administrator
ima pristup formi koja u sebi sadrži pregled i uređivanje pristupnih podataka zaposlenika. Svi
zaposlenici imaju pristup izradi dokumenata i unosu, uređivanju i brisanju podataka u tablicama
na poslužitelju.

22
5.1 Implementacija aplikacije

U Visual Basic-u tvrtka Microsoft se dobro potrudila da prezentira i promovira korištenje svoje
inačice relacijske baze podataka „Microsoft SQL Server“, međutim i implementacija s drugim
bazama podataka, kao u ovom slučaju MySQL-a uz malo truda nije problem. Uz instalirane
programske pakete Visual Basic i MySQL, potrebno je instalirati i MySQL priključak za .Net
aplikacije [9]. On je napisan u C# programskom jeziku i služi kao upravljački program za .Net
aplikacije koji ujedinjuje pristup relacijskim bazama podataka, XML dokumentima i drugim
podacima aplikacije [10]. Kako bi se aplikacija mogla spajati potrebno je u projekt navesti
referencu na „MySQL.Data.dll“ te na svakoj formi na kojoj se koriste sql upiti upisati na početku
programskog koda [10]:

Imports MySql.Data.MySqlClient

5.1.1 Otvaranje veze prema poslužitelju

Otvaranje veze prema poslužitelju se ostvaruje upisivanjem stringa za otvaranje veze prema
poslužitelju u kojem se upisuju podaci za autentikaciju, te pokretanjem funkcije [10]:

Dim sqlVeza As MySqlConnection


sqlVeza = New MySqlConnection
sqlVeza.ConnectionString = "SERVER = localhost; USERID =
korisnicko_ime; PASSWORD = lozinka; DATABASE = ime_baze;"
Try
Conn.Open()

ili na drugi način provjerom pomoću if:

Dim sqlVeza As New MySqlConnection


If sqlVeza.State = ConnectionState.Closed Then
Conn.ConnectionString = "SERVER = localhost; USERID =
korisnicko_ime; PASSWORD = lozinka; DATABASE = ime_baze;"
sqlVeza.Open()
End If

Nakon što je otvorena veza prema poslužitelju moguće je slati upite SUBP, primjeri najčešćih koji
su korišteni prilikom izrade aplikacije su navedeni u nastavku.

23
5.1.2 Korištenje SELECT upita

Sada kad je veza prema poslužitelju otvorena postavljamo željene upite, u ovom primjeru SELECT
upit. On se upućuje SUBP za dohvat podataka iz tablice „zaposlenici“ i ispis podataka u „listview“
tablicu „lvZaposlenici“ koristeći for petlju budući da želimo ispis svih redova u tablici, a ne samo
prvog. Upit izgleda ovako [10]:

Dim sqlUpit As String = "SELECT id_zaposlenik, prezime, ime, kor_ime, lozinka


FROM zaposlenik"
Dim sqlAdapter As New MySqlDataAdapter
Dim sqlCommand As New MySqlCommand
Dim TABLE As New DataTable
Dim i As Integer

With sqlCommand
.CommandText = sqlUpit
.Connection = sqlVeza
.ExecuteNonQuery()
End With

With sqlAdapter
.SelectCommand = sqlCommand
.Fill(TABLE)
End With

For i = 0 To TABLE.Rows.Count - 1
With lvZaposlenici
.Items.Add(TABLE.Rows(i)("id_zaposlenik"))
With .Items(.Items.Count - 1).SubItems
.Add(TABLE.Rows(i)("prezime"))
.Add(TABLE.Rows(i)("ime"))
.Add(TABLE.Rows(i)("kor_ime"))
.Add(TABLE.Rows(i)("lozinka"))
End With
End With
Next

U Visual Basic-u osim „listview“ tablica postoje i „datagridview“ tablice koje pružaju više opcija
poput razvrstavanja kolona i redaka, te više opcija manipulacijom ćelija. Ispis podataka iz sql upita
u tablicu nazvanu „dgvZaposlenici“ bi izgledao ovako [10]:

Dim sqlUpit As String = "SELECT id_zaposlenik, prezime, ime, kor_ime, lozinka


FROM zaposlenik"
Dim sqlAdapter As New MySqlDataAdapter
Dim sqlCommand As New MySqlCommand
Dim TABLE As New DataTable

24
With sqlCommand
.CommandText = sqlUpit
.Connection = sqlVeza
.ExecuteNonQuery()
End With

With sqlAdapter
.SelectCommand = sqlCommand
.Fill(TABLE)
End With
dgvZaposlenici.DataSource = TABLE

Nakon željenog ispisa možemo staviti kod koji nam pokazuje poruku greške u slučaju da do nje
dolazi u upitu [10]:

Catch ex As Exception
MsgBox(ex.ToString)
End Try

5.1.3 Korištenje UPDATE upita

Prilikom uređivanja nekog retka u tablici također otvaramo vezu prema poslužitelju, te nakon toga
postavljamo upit. U ovom primjeru niz s UPDATE upitom se stvara niz podataka iz tekstnih
okvira, a uređuje se onaj zaposlenik u tablici kojem je id u odabranom retku tablice u Visual Basic-
u i upisan je u varijabli. Osim tekstnih okvira niz se može stvarati i iz drugih objekata, poput labela,
tablica, višestrukih izbornika, ili njihovim kombiniranjem, prilikom čega je važno paziti kod
imenovanja objekata. Programski kod upita u Visual Basicu izgleda ovako [10]:

Dim id_zaposlenik As Integer


Dim sqlUpit As String = "UPDATE zaposlenik SET prezime='" & txtPrezime.Text
& "', ime='" & txtIme.Text & "', kor_ime= '" & txtAdresa.Text & "', lozinka='"
& txtTel.Text & "' WHERE id_zaposlenik='" & id_zaposlenik & "'"
Dim sqlCommand As New MySqlCommand

With sqlCommand
.CommandText = sqlUpit
.Connection = sqlVeza
.ExecuteNonQuery()
End With

25
5.1.4 Korištenje INSERT upita

Korištenje INSERT upita izvodi se slično kao i UPDATE. Prvo je potrebno otvoriti vezu sa
poslužiteljem, a zatim postavljamo upit za dodavanje novog retka u tablici. Ukoliko je primarni
ključ tipa integer i postavljen na opciju „autonumber“ SUBP ga automatski stavlja na broj jedan
veći od prethodnog unosa. Niz se sastavlja tekstom iz tekstnih okvira, a posljednja varijabla iz
višestrukog izbornika, iz kojeg se naziv uspoređuje s onima u tablici „radno_mjesto“, te se odabire
id, budući da je to polje povezano s vanjskim ključem tablice zaposlenici. Programski kod izgleda
ovako [10]:

Dim sqlUpit As String = "INSERT INTO zaposlenik(prezime, ime, adresa,


telefon, mobitel, email, datum_rodjenja, datum_zaposlenja, datum_prestanka,
radno_mjesto) VALUES('" & txtPrezime.Text & "','" & txtIme.Text & "','" &
txtAdresa.Text & "','" & txtTel.Text & "','" & txtMob.Text & "','" &
txtEmail.Text & "','" & txtDR.Text & "','" & txtDZ.Text & "','" & txtDP.Text
& "',(select id_radnog_mjesta from radno_mjesto where radno_mjesto.mjesto =
'" & cmbRM.Text & "'))"

Dim sqlCommand As New MySqlCommand

With sqlCommand
.CommandText = sqlUpit
.Connection = sqlVeza
.ExecuteNonQuery()
End With

Ovaj primjer nam pokazuje višestruki unos koristeći for petlju u tablicu „narudzba_stavke“, budući
da u narudžbi može biti više stavki, a običnim unosom bismo unijeli samo prvi redak. Podaci se
nalaze u „datagridview“ tablici i brojač petlje kreće od broja 0 pa sve do ukupnog broja redaka
umanjenog za jedan. Šifra narudžbe ostaje ista i nalazi se u tekstnom okviru nazvanom „txtID“,
atribut „idArtikl“ se nalazi na polju s indeksom 0 u tablici, a atribut količina koju zaposlenik
uređuje se nalazi na polju s indeksom 3.

Dim idNarudzba, idArtikl, kolicina As String


idNar = txtID.Text

For i As Integer = 0 To Me.dgvNarudzba.Rows.Count - 1


idArtikl = Me.dgvNarudzba.Item(0, i).Value.ToString()
kolicina = Me.dgvNarudzba.Item(3, i).Value.ToString()

Dim sqlUpit As String = "INSERT INTO narudzba_stavke


(id_narudzba, id_artikl, kolicina) values ('" & idNarudzba & "','" & idArtikl
& "','" & kolicina & "')"

26
Dim sqlCommand As New MySqlCommand

With sqlCommand
.CommandText = sqlUpit
.Connection = sqlVeza
.ExecuteNonQuery()
End With

Next

Na slici 5.1 može se vidjeti koji atributi se šalju iz forme u aplikaciji, te desno kako to izgleda kad
SUBP unese nove retke u tablicu u bazi podataka.

Slika 5.1 Prikaz objekata u aplikaciji iz kojih se prenose podaci u bazu

5.1.5 Korištenje DELETE upita

DELETE upit koristimo kada želimo izbrisati entitet iz tablice. U ovom primjeru iz tablice
„zaposlenici“ obrisat će se onaj zaposlenik čiji je id zapisan u varijabli „id_zaposlenik“, odnosno
u odabranom retku tablice u aplikaciji [10].

Dim sqlUpit As String = "DELETE FROM zaposlenik WHERE id_zaposlenik='" &


id_zaposlenik & "'"
Dim sqlCommand As New MySqlCommand
Try
With sqlCommand
.CommandText = sqlUpit
.Connection = sqlVeza
.ExecuteNonQuery()
End With

27
5.2 Dekompozicijski dijagram aplikacije

Ovaj dijagram na slici 5.2 pokazuje sve forme aplikacije i veze između njih. Pokretanjem
aplikacije pokreće se forma za prijavu korisnika. Korisnik vrši prijavu kao zaposlenik ili
administrator, te s početne forme vrši daljnji izbor.

Slika 5.2 Dekompozicijski dijagram aplikacije "Prodaja"

28
5.3 Forme aplikacije

Pokretanje aplikacije se vrši odabirom datoteke Prodaja.exe s računala zaposlenika. Na ekranu se


pojavljuje forma za prijavu (slika 5.3), gdje zaposlenik unosi svoje korisničko ime i lozinku, te
pritiskom na tipku zaposlenik ili administrator šalje zahtjev poslužitelju koji podatke iz sql upita
koji se pune podacima iz tekstnih okvira uspoređuje s onima u tablici „zaposlenici“. Ukoliko
rezultat tog upita odgovara 0 redova u bazi pojavljuje se poruka „Pogrešno korisničko ime ili
lozinka“, a ukoliko je rezultat sql upita veći od 0 redova pojavljuje se poruka „Uspješna prijava“ i
pokreće se početna forma.

Slika 5.3 Forma za prijavu

5.3.1 Početna forma

Nakon uspješne prijave automatski se otvara početna forma, prikazana na slici 5.4.

Slika 5.4 Početna forma zaposlenika

29
Na njoj se nalaze grupirani gumbi za ulazak u druge forme, također je moguć ulazak i koristeći
„toolstrip“ traku, na kojoj se nalazi i gumb za ulazak u formu s osnovnim informacijama o
aplikaciji. Početna forma je podijeljena u tri sljedeće grupe:

1. Pregled, unos i izmjena podataka


 Artikli
 Zaposlenici
 Poslovni partneri
 Radno mjesto
 Stopa poreza
 Kategorija
 Tip plaćanja

2. Pregled dokumenata
 Računi pregled
 Narudžbe pregled
 Primka pregled
 Dugovanja po kupcima

3. Unos dokumenata
 Računi
 Narudžbe
 Primka
 Unos uplata

5.3.2 Artikli

Svrha ove forme je da zaposlenik ima mogućnost dodavanja novih artikala u bazu, uređivanje
postojećih artikala i brisanje artikala iz baze. U formi postoje opcije pretraživanja po izrazu koji
radi pomoću LIKE operatora u MySQL-u, te sortiranje ovisno u kategoriji u kojoj se nalaze. Slika
5.5 prikazuje formu „Artikli“.

30
Slika 5.5 Artikli
Ulaskom u samu formu automatski se šalje upit bazi za svim artiklima, koji se zatim izlistavaju u
tablicu u formi. Pritiskom na gumb „Novi artikl“ otvara se forma za unos novih artikala (slika 5.6),
gdje zaposlenik unosi podatke o novom artiklu, koji se kod pritiska gumba „Spremi“ unose u
tablicu „artikl“ u bazi podataka. Podaci o nazivima kategorije i iznosu porezne stope se biraju iz
„combo box“ izbornika koji se popunjavaju podacima kod pokretanja forme. Kod spremanja upita
atribut zaliha se postavlja na vrijednost 0, te kasnije unosom dokumenata primka i račun povećava
mu se, odnosno smanjuje vrijednost.

Slika 5.6 Forma novi artikl


Ukoliko želimo promijeniti neki podatak o artiklu , to možemo učiniti pritiskom gumba „Uredi
artikl“ koji se nalazi na formi „Artikli“. Ako nismo odabrali nijedan artikl pojavljuje nam se
poruka upozorenja „Niste odabrali artikl“, a ukoliko jesmo atributi tog entiteta će popuniti tekstne
okvire prilikom pokretanja forme „Uredi artikl“ (slika 5.7), te je samo potrebno izmijeniti podatak
koji želimo i pritiskom gumba spremi podaci se ažuriraju u bazu podataka.

31
Slika 5.7 Uredi artikl
Ako želimo izbrisati neki artikl iz baze, učinit ćemo to izborom artikla iz tablice i pritiskom gumba
“Izbriši artikl“. Međutim to je moguće samo za one artikle koji se ne pojavljuju u nijednom
dokumentu, inače će se pojaviti poruka MySQL greške zbog ograničenja referencijalnog
integriteta postavljenog na vanjskim ključevima. Ostali gumbi na formi služe za sortiranje
podataka u tablici, te osvježavanje iste.

5.3.3 Zaposlenici

Ova forma služi za unos novih zaposlenika, uređivanje osnovnih podataka o svakom zaposleniku
i brisanje zaposlenika, samo ukoliko njegov id nije vezan uz nijedan dokumenat u aplikaciji. Slika
5.8 prikazuje formu „Zaposlenici“.

Slika 5.8 Zaposlenici

32
5.3.4 Poslovni partneri

Služi za unos novih poslovnih partnera, uređivanje i brisanje. Poslovni partner može se javiti i u
ulozi kupca, ali i dobavljača, te je vezan u izradi svih dokumenata u aplikaciji. Slika 5.9 prikazuje
formu „Poslovni partneri“.

Slika 5.9 Poslovni partneri

5.3.5 Radna mjesta

Radno mjesto se koristi vezano uz tablicu zaposlenika, gdje označava funkciju koju zaposlenik
obavlja u tvrtci. Na njoj se unose nova radna mjesta i uređuju postojeća. Slika 5.10 prikazuje formu
„Radna mjesta“.

Slika 5.10 Radna mjesta

33
5.3.6 Stopa poreza

U njoj se unose nove stope poreza, uređivaju podaci u postojećima i brišu nepotrebne. Važno je
imati pristup njihovom uređivanju budući da se stope poreza često mijenjaju, što obično donosi
potrebu za izmjenoma i dodatne troškove u većini aplikacija, a i važno je imati informaciju koja
se stopa koristi kod izrade računa. Slika 5.11 prikazuje ovu formu.

Slika 5.11 Forma stopa poreza

5.3.7 Kategorije

Služi za unos i uređivanja kategorija, koje se koriste kod sortiranja pregleda artikala. Slika 5.12
prikazuje formu „Kategorije“.

Slika 5.12 Kategorije

34
5.3.8 Tipovi plaćanja

Sadrži tipove plaćanja koje koristimo kod unosa plaćanja, te imali uvid kod provjere stanja
dugovanja određenog kupca. Slika 5.13 prikazuje formu „Tipovi plaćanja“

Slika 5.13 Tipovi plaćanja

5.3.9 Računi pregled

Pokretanjem ove forme (slika 5.14) šalje se upit bazi za izlistavanjem svih računa, koje zatim
zaposlenik izabire pojedinačno odabirom iz kombiniranog izbornika i pritiskom na gumb „Unesi“.
Ovisno o kojem id-u računa korisnik odabere u gornju tablicu se izlistavaju podaci iz tablice
„racun“, a u donjoj tablici se izlistavaju svi artikli koji su vanjskim ključem vezani za isti id.

Slika 5.14 Pregled računa

35
5.3.10 Narudžbe pregled

Na ovoj formi također možemo vidjeti podatke koji su vezani uz dokument narudžbu, u gornjoj
tablici podatke iz tablice u bazi „narudzba“, a u donjoj tablici ispis artikala iz tablice
„narudzba_stavke“. Dokument narudžbu šaljemo dobavljaču, te njime naručujemo novu robu za
skladište. Na slici 5.15 možemo vidjeti formu „Narudžbe pregled“.

Slika 5.15 Pregled narudžbi

5.3.11 Primka pregled

Kao i u ostalim formama pregleda u ovoj formi se izlistuju podaci iz tablica „primka“ i
„primka_stavke“. Pregledom primki provjeravamo ulaz robe u skladište po određenoj primci,
budući da svaka primka povećava stanje zalihe artikala u bazi. U gornjem dijelu prikazan je
dobavljač, zaposlenik koji je izradio primku, datum i iznos, a u donjem je izlistan popis artikala
na primci s količinom i cijenom, sve vidljivo na slici 5.16.

36
Slika 5.16 Pregled primki

5.3.12 Dugovanja po kupcima

Na ovoj formi zaposlenik može vidjeti kakvo je stanje dugova za određenog kupca. U gornjoj
tablici se učitavaju svi računi koji su izdani na ime traženog kupca, te aplikacija zbraja sve računa
i pokazuje njihov zbroj. U donjoj tablici se ispisuju sve uplate traženog kupca iz tablice
„partner_placanja“, a ispod tablice aplikacija zbraja sve iznose uplata. Ukupne uplate se oduzimaju
od ukupnih potraživanja i na dnu forme aplikacije ispisuje ukupni dug, koji u ovom primjeru na
slici iznosi 0,00 kn, što se vidi na slici 5.17.

Slika 5.17 Pregled dugovanja

37
5.3.13 Računi

Forma račun (slika 5.18) nam služi za izradu dokumenta račun. Poketanjem forme se popunjavaju
tekstno polje broja računa, trenutnog datuma, datuma valute, te sql upitima se popunjavaju tablice
za odabir artikala, zaposlenika, poslovnih partnera, te kombinirani izbornik s tipovima plaćanja.

Slika 5.18 Izrada računa

Iz tablice artikli lijevim pritiskom miša zaposlenik dodaje artikl u glavnu tablicu, aplikacija
izračunava cijenu bez poreza (koji može bit različit, u primjeru na slici 25 ili 10%), a na
zaposleniku je da upiše podatke u kolonu količina i rabat. Aplikacija ažurira ostale kolone u tablici
i ćelije na dnu forme s ukupnim iznosima bez poreza, rabata, poreza i ukupnog iznosa za naplatu.
Svaki artikl se može izbristati iz glavne tablice dvoklikom, te potvrdom na prozoru koji se pojavi
s upitom. Prije spremanja potrebno je izabrati zaposlenika i kupca, jer ako nisu odabrani aplikacija
pokazuje poruku s upozorenjem. Grupni okvir s zaposlenicima se otvara pritiskom na gumb
„Sastavio“, te klikom miša ažuriraju se ćelije ispod natpisa „Sastavio“ (slika 5.19).

38
Slika 5.19 Odabir zaposlenika

Isto tako pritiskom na gumb „Kupac“ otvara se grupni okvir za izbor kupca, na kojem zaposlenik
lijevim klikom miša ažurira podatke kupca (slika 5.20). Povratak na grupni okvir artikala se
ostvaruje pritiskom gumba „Artikli“.

Slika 5.20 Odabir kupca

Ukoliko su svi potrebni podaci ispunjeni pritiskom na gumb „Spremi“ aplikacija šalje podatke u
tablicu „racun“ i „racun_stavke“. Ako su podaci poslani pokazuje se poruka „Spremljeno“, a forma
se zatvara i podaci su uspješno spremljeni u bazi. Račune koji su spremljeni mogu se vidjeti na
formi „Računi pregled“ koja se pokreće s ove ili s početne forme.

39
5.3.14 Narudžbe

Ova forma nam služi za izradu dokumenta narudžba. Narudžba se šalje dobavljaču kako bi nam
dostavio novu robu na skladište, a podaci se spremaju u bazu kako bi nam ostali za evidenciju
kako bismo mogli usporediti da li su na skladište stigli artikli koje smo tražili u u naručenim
količinama.

Pokretanjem forme se popunjavaju tekstni okviri broja narudžbe i datuma, te tablice za izbor
artikla, zaposlenika i dobavljača. Iz tih tablica se klikom dodaju artikli u glavnu tablicu u kojoj se
uređuje kolona količina, te se izabire osoba koja sastavlja dokument i naziv dobavljača. Ukoliko
nisu svi podaci ispunjeni prilikom spremanja javlja se poruka greške, a ukoliko s podaci uspješno
poslani u bazu pokazuje se poruka „Spremljeno“ i forma se zatvara. Već spremljene narudžbe se
mogu pregledavati na formi „Narudžbe pregled“ klikom na gumb na ovoj ili početnoj formi.
Formu „Narudžbe“ možemo vidjeti na slici 5.21.

Slika 5.21 Izrada narudžbe

40
5.3.15 Primka

Na ovoj formi izrađuje se dokument primka. Primka nam služi za unos artikala na skladište tvrtke.
Podaci za unos artikala dobavljača i zaposlenika se unose kao i na ostalim dokumentima odabirom
iz grupnih izbornika koji se otvaraju pritiskom na odgovarajuće gumbe. Nakon unosa artikala u
glavnu tablicu zaposlenik unosi količinu, a ćelije s ukupnim zbrojem se ažuriraju. Pritiskom na
gumb „Spremi“, ukoliko su ispunjeni svi podaci unosi se novi račun u tablice „primka“ i
„primka_stavke“ INSERT upitima. Ukoliko je spremanje uspješno pojavljuje se poruka
spremljeno i forma se zatvara, što se može vidjeti na slici 5.22.

Slika 5.22 Izrada primke

5.3.16 Unos plaćanja

Na ovoj formi se unose podaci u tablicu „partner_placanja“ kako bismo imali uvid o izvršavanju
obaveza pojedinog kupca koje možemo vidjeti pokretanjem forme „Dugovanja po kupcima“.
Njezinim pokretanjem šalju se select upiti tablicama „poslovni_partner“ i „tipovi_placanja“, te se

41
popunjavaju višestruki izbornici s nazivom poslovnog partnera i načinima plaćanja. Zaposlenik
vrši odabir iz njih, unosi datum, iznos i poziv na broj plaćanja, te pritiskom na gumb „Unesi“
podaci se šalju u bazu podataka. Forma „Unos plaćanja“ može se vidjeti na slici 5.23.

Slika 5.23 Unos plaćanja

5.3.17 Korisnički podaci

Forma korisnički podaci se pokreće s početne forme ukoliko se korisnik prijavio kao administrator.
Ova forma služi za izmjenu podataka koji služe za prijavu korisnika u aplikaciju, tj. njihovo
korisničko ime i lozinku (slika 5.24). Odabiranjem korisnika u tablici i pritiskom na gumb „Uredi“
pokreće se podforma za izmjenu podataka u tablici.

Slika 5.24 Korisnički podaci

42
6. Zaključak

Kako raste važnost Interneta i mrežnih aplikacija tako raste i važnost sustava za upravljanje
bazama podataka. MySQL je imao veliku ulogu kod izgradnje Interneta kakvog danas poznajemo,
budući da većina današnjih Web stranica danas nije statična, već je povezana s bazama podataka
u koje spremaju podatke koje prikupljaju. Zapravo se može reći da je procvat e-poslovanja na
Internetu krenuo povećanjem brzina pristupa Internetu i pojavom open-source baza podataka kojih
je MySQL najpoznatiji predstavnik.

Ovim završnim radom prikazana je jednostavna baza podataka s aplikacijom koja upravlja njom,
a kakva se može primijeniti u mnogo malih obrta i poduzeća koja nemaju velike zahtjeve. MySQL
je uvelike olakšao i popularizirao korištenje baza podataka i kod običnih korisnika, koji s malim
predznanjem mogu uspješno stvarati Web aplikacije i Web stranice koje trebaju pristup bazi
podataka. Tvrtke s vrlo malim proračunom mogu izgraditi svoj informacijski sustav ili započeti e-
poslovanje, s minimalnim troškovima i naporima, a sve uz visoku sigurnost podataka, brzinu i
učinkovitost.

43
7. Literatura

1. MySQL. „Customers“. Internet: www.mysql.com/customers, 2013. [19.06.2013.]


2. C.Coronel, S.Morris, P.Rob. Database systems. Boston, SAD: Cengage Learning, 2011,
pp. 7-247.
3. Suradnici Wikipedie, „SQL“, Wikipedia, The Free Encyclopedia,
www.en.wikipedia.org/wiki/sql, 14.06.2013. [19.06.2013.]
4. Suradnici Wikipedie, „MySQL“, Wikipedia, The Free Encyclopedia,
www.en.wikipedia.org/wiki/mysql, 19.06.2013. [19.06.2013.]
5. D.Buytaert. „The history of MySQL AB“. Internet: www.buytaert.net/the-history-of-
mysql-ab, 2013. [19.06.2013.]
6. Open Source Initiative. „Open Source Licenses“. Internet: www.opensource.org/licenses,
2013. [19.06.2013.]
7. GNU Operating System. „GNU general public licence“. Internet:
www.gnu.org/licenses/gpl.html, 29.06.2007. [19.06.2013.]
8. Suradnici Wikipedie, „MySQL Workbench“, Wikipedia, The Free Encyclopedia,
www.en.wikipedia.org/wiki/MySQL_Workbench, 19.06.2013.[19.06.2013.]
9. MySQL. „MySQL Connector“. Internet: www.mysql.com/products/connector, 2013.
[19.06.2013.]
10. J.Bodnar, „MySQL Visual Basic tutorial“. Internet: www.zetcode.com/db/mysqlvb
4.10.2010. [19.06.2013.]

44

You might also like