Upload
trinhnguyet
View
251
Download
4
Embed Size (px)
Citation preview
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
Varaždin, 2013.
Mentor:
Doc. dr. sc. Markus Schatten
I
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
II
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
1
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.
2
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]:
3
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
4
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
5
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
6
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
7
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
8
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]
9
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
10
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“
11
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"
12
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)
13
Slika 4.3 ER model baze podataka "Prodaja"
14
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
15
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
16
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
17
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
18
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
19
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
20
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.
21
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
22
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.
23
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.
24
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
25
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
26
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 & "')"
27
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
28
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"
29
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
30
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“.
31
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.
32
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
33
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
34
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
35
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
36
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.
37
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
38
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).
39
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.
40
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
41
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
42
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
43
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.
44
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.]