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.

PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

Embed Size (px)

Citation preview

Page 1: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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.

Page 2: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 3: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 4: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 5: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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.

Page 6: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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]:

Page 7: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 8: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 9: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 10: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 11: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 12: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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]

Page 13: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 14: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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“

Page 15: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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"

Page 16: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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)

Page 17: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

13

Slika 4.3 ER model baze podataka "Prodaja"

Page 18: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 19: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 20: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 21: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 22: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 23: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 24: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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.

Page 25: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 26: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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.

Page 27: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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.

Page 28: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 29: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 30: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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 & "')"

Page 31: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 32: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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"

Page 33: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 34: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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“.

Page 35: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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.

Page 36: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 37: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 38: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 39: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 40: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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.

Page 41: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 42: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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).

Page 43: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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.

Page 44: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 45: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 46: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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

Page 47: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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.

Page 48: PRIMJER BAZE PODATAKA U SUSTAVU MYSQL

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.]