Professional Documents
Culture Documents
637878.1.1-Kemi Elimir - Primjer Baze Podataka U Sustavu MySQL PDF
637878.1.1-Kemi Elimir - Primjer Baze Podataka U Sustavu MySQL PDF
VARAŽDIN
Želimir Kemić
Varaždin, 2013.
SVEUČILIŠTE U ZAGREBU
VARAŽDIN
Želimir Kemić
Izvanredni student
Mentor:
Varaždin, 2013.
Sadržaj
1. UVOD ...................................................................................................................................................... 1
3. MYSQL .................................................................................................................................................... 8
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
I
5.1.2 Korištenje SELECT upita ....................................................................................................................... 24
5.1.3 Korištenje UPDATE upita ..................................................................................................................... 25
5.1.4 Korištenje INSERT upita ....................................................................................................................... 26
5.1.5 Korištenje DELETE upita....................................................................................................................... 27
5.2 DEKOMPOZICIJSKI DIJAGRAM APLIKACIJE ................................................................................................................. 28
5.3 FORME APLIKACIJE ............................................................................................................................................. 29
5.3.1 Početna forma ..................................................................................................................................... 29
5.3.2 Artikli ................................................................................................................................................... 30
5.3.3 Zaposlenici ........................................................................................................................................... 32
5.3.4 Poslovni partneri ................................................................................................................................. 33
5.3.5 Radna mjesta ...................................................................................................................................... 33
5.3.6 Stopa poreza ....................................................................................................................................... 34
5.3.7 Kategorije ............................................................................................................................................ 34
5.3.8 Tipovi plaćanja .................................................................................................................................... 35
5.3.9 Računi pregled ..................................................................................................................................... 35
5.3.10 Narudžbe pregled ........................................................................................................................... 36
5.3.11 Primka pregled ............................................................................................................................... 36
5.3.12 Dugovanja po kupcima ................................................................................................................... 37
5.3.13 Računi ............................................................................................................................................. 38
5.3.14 Narudžbe ........................................................................................................................................ 40
5.3.15 Primka............................................................................................................................................. 41
5.3.16 Unos plaćanja ......................................................................................................................................... 41
5.3.17 Korisnički podaci ............................................................................................................................. 42
6. ZAKLJUČAK ................................................................................................................................................. 43
7. LITERATURA .......................................................................................................................................... 44
II
1. Uvod
Baze podataka su postale esencijalni dio modernog društva. Većina nas se svaki dan susreće s
nekoliko aktivnosti koje uključuju neku interakciju s bazama podataka. Na primjer, svaki put kad
odlazimo u banku podići novac, kada rezerviramo kartu za koncert, kupujemo nešto preko
Interneta, ili čak kod običnog odlaska u dućan mješovitom robom u susjedstvu velike su šanse da
aplikacija na računalu kojem se pristupa za obradu pohranjuje i ažurira podatke u neku vrstu baze
podataka. Ovo su većinom primjeri tako zvanih tradicionalnih baza podataka koje spremaju
informacije u tekstualni ili brojčani tip podataka. Međutim razvoj sustava za upravljanje baza
podataka nam danas omogućuje i pohranu slika, video i audio isječaka u digitalnom formatu, koji
su važan dio složenih multimedijskih baza podataka koje se koriste u pretraživačima Interneta,
geografskim informacijskim sustavima, skladištima podataka i sustavima za analitičko
odlučivanje.
Jedan od najraširenijih sustava za upravljanje relacijskim bazama podataka koji se danas koristi
je MySQL, sustav otvorenog koda koji se pokreće na poslužitelju, te pruža pristup višestrukom
broju korisnika i pohranu višestrukog broja baza podataka. Neke od najvećih svjetskih kompanija
poput Paypal-a, Twitter-a, Wikipedia-e, Adobe-a, te mnogih drugih koriste MySQL baze podataka
[1]. Kako bi pobliže opisao MySQL za potrebe ovog završnog rada razvio sam bazu podataka, te
aplikaciju programiranu u Visual Basic-u koja pristupa toj bazi podataka.
1
2. Relacijske baze podataka
Današnje relacijske baze podataka predstavljaju skup organiziranih podataka spremljen u računalu
na specifičan način. Podaci se spremaju u obliku dvodimenzionalnih tablica, gdje se svaka od njih
sastoji od redaka i stupaca [2:59]. Svaki redak u tablici označava entitet koji može predstavljati
neku stvar, osobu, ili pojavu, a stupci predstavljaju atribute tog entiteta koji ga opisuju. U tablici
2.1 možemo vidjeti navedene tri osobe koje predstavljaju entitete, a stupci sadrže atribute koji
opisuju osobe (id, prezime, ime, grad).
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.
3 Ivić Ivo 2
Navedeni primjer predstavlja vezu između dvije tablice, odnosno relacije, a po tipu veze između
dva entiteta mogu biti [2:76-78]:
2
1:1 - veza jedan prema jedan, što znači da je jedan zapis iz tablice vezan samo uz
jedan zapis u drugoj tablici. Rjeđe se koristi jer podaci mogu biti upisani u istoj
tablici.
1:M - veza jedan prema više, najviše je u upotrebi, znači da na jedan zapis u prvoj
tablici može se odnositi jedan ili više zapisa u drugoj tablici (npr. jedan album se
sastoji od više pjesama).
M:M- veza više prema više, slučaj kad jedan ili više entiteta iz jedne tablice može
biti povezano s jednim ili više entiteta u drugoj tablici (npr. na računu može biti
navedeno jedan ili više artikala, a svaki artikl može se nalaziti na više izdanih
računa ). Budući da ovo nije dopušteno u oblikovanju relacijskog modela, slučaj se
rješava uvođenjem treće tablice zvane tablica sjecište, koja je u vezi 1:M s ostale
dvije tablice.
3
2.2 SQL
SQL je akronim za Structured Query Language, te je najpoznatiji računalni jezik korišten pri izradi
baza podataka, te manipulacijom podataka u bazi podataka. Napravljen je po uzoru na relacijski
model Edgar F. Codda predstavljen u njegovom radu "A Relational Model of Data for Large
Shared Data Banks" koji je objavio u časopisu „Association for Computing Machinery“ 1970.
godine. Razvila ga je američka tvrtka IBM, gdje je razvijena baza podataka pod nazivom „System
R“, a zadatak tada zvanog Structured English Query Language ("SEQUEL") je bio upravljanje
tom bazom podataka. Kratica SEQUEL je kasnije promijenjena u SQL, jer je tada naziv
„SEQUEL“ koristila jedna zrakoplovna tvrtka u Ujedinjenom Kraljevstvu. SQL je standardiziran
preko standarda ANSI1 1986. godine i ISO2 1987. godine, te je postao referentni jezik za relacijske
baze podataka [3].
SQL je lagan za upotrebu i ne zahtijeva veliko znanje korisnika za upotrebu. Glavna karakteristika
mu je deklarativnost što znači da korisnik određuje što SQL treba napraviti, ali ne i kako doći do
rezultata, te nema potrebe poznavati složene aktivnosti koje se događaju kad se unese SQL naredba
[2:222]. Iako je SQL standardiziran danas postoje male razlike u različitim SUBP koje možemo
nazvati i „narječja“ u SQL jeziku. Gotovo svaki od poznatijih SUBP poput MySQL-a, Micosoft
SQL Server-a, IBM-ova DB2, ima neke svojstvene karakteristike poput sintakse i tipova podataka
koje je poželjno proučiti prije njihove upotrebe. Osnovni tipovi podataka koje podržavaju svi
SUBP su sljedeći [2:223]:
1
ANSI - American National Standards Institute
2
ISO - International Organization for Standardization
4
2.2.1 Naredbe u SQL-u
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].
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]
INSERT naredba se koristi za dodavanje novih redaka u tablicu. Sintaksa INSERT naredbe izgleda
ovako [2:237]:
ili
5
INSERT INTO ime_tablice (atribut_1, atribut_2...) VALUES (vrijednost_1, vrijednost_2...)
UPDATE se koristi za izmjenu podataka u tablici. Sintaksa UPDATE naredbe je sljedeća [2:240]:
WHERE atribut_X=vrijednost_X
DELETE naredba se koristi za brisanje redaka iz tablice. Sintaksa DELETE naredbe je sljedeća
[2-241]:
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].
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]:
6
AND – kako bi red bio izabran svi uvjeti moraju biti istiniti
NOT-- kako bi red bio izabran svi uvjeti moraju biti lažni
Specijalni operatori se koriste zajedno s WHERE uvjetom, te u njih spadaju sljedeći operatori
[2:249]:
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]:
7
3. MySQL
MySQL je izradila švedska tvrtka MySQL AB 1995. godine, koja je osnovana iste godine.
Osnivači su joj Michael Widenius, David Axmark i Allan Larsson. Od 2000. godine MySQL
postaje software otvorenog koda, nakon čega već sljedeće godine broj aktivnih instalacija raste na
2 milijuna. Tvrtka se širi i na američko tržište, zapošljava oko 320 ljudi, te 2006. godine postiže
33% ukupnog svjetskog tržišta aktivnih instalacija i 0,2% ukupnih prihoda u tržištu baza podataka,
a za njih se počinje zanimati Oracle. Međutim, tvrtka je prodana Sun Microsystems-u za 1 bilijun
dolara 2008. godine. Dvije godine kasnije Oracle kupuje većinski paket dionica Sun
Microsystems-a te postaje jedna od vodećih svjetskih informatičkih kompanija. Danas je MySQL
jedan od najpopularnijih SUBP s preko 100 milijuna aktivnih instalacija [5].
3
Softvare otvorenog koda - (engl.open-source) softver čiji je izvorni kod dostupan javnosti na uvid, korištenje,
izmjene i daljnje raspačavanje [6]
4
GNU licenca - omogućava slobodu umnažanja, mijenjanja i distribuiranja za komercijalnu ili nekomercijalnu
upotrebu, autoru i izdavaču djela osigurava zasluge za njihov rad, bez snošenja odgovornosti za promjene koje
naknadno učini treća osoba [7]
8
3.1.2 MySQL Workbench
MySQL Workbench je grafički alat za dizajniranje baza podataka koji integrira SQL razvoj,
administraciju, dizajn i održavanje u jedno zajedničko sučelje za MySQL baze podataka. Prva
ogledna insčica je razvijena 2005. godine i nasljednik je DBDesigner4 alata. Dio je MySQL paketa
od 2007. godine, a njegovo numeriranje je počelo inačicom 5.0, budući je nasljedio DBDesigner4.
Prva inačica je bila namijenjena za upotrebu na MS Windows operacijskom sustavu, a od inačice
5.1 dostupna je i na drugim platformama. Alat postoji u besplatnom i komercijalnom izdanju, te
je drugi alat po preuzimanjima s MySQL web stranice s preko 250.000 mjesečnih preuzimanja [8].
Na slici 3.1 prikazana je početna forma alata MySQL Workbench.
9
4. Opis aplikacijske domene
4.1 ER model
ER model predstavlja grafički prikaz entiteta i veza između entiteta u bazi podataka. 1976. godine
ga je predstavio Peter Chen, te je ubrzo postao popularan jer je lako razumljiv, te vrlo dobro
komplementira koncepte relacijskog modela [2:38].
Za prikaz ER modela baze u mojem primjeru korištena je notacija vranino stopalo5 koja se koristi
od 80-ih godina prošlog stoljeća. U ovoj notaciji entiteti se prikazuju kao pravokutnici, a veze kao
linije između njih. Različiti simboli na kraju linija prikazuju kardinalnost veze, odnosno na koliko
entiteta u tablici se odnosi veza, a značenja su prikazana na slici 4.1.
Kod izgradnje ove kao i kod drugih baza podataka važno je pridržavati se određenih pravila
integriteta. Integritet predstavlja definiranje i održavanje formalne ispravnosti sadržaja baze
podataka. Vrste integritetnih ograničenja su [2:67-68]:
Entitetski integritet – vrijednost primarnog ključa u bazi podataka ne smije poprimiti vrijednost
null
5
vranino stopalo – dobilo je naziv po izrazu iz engleskog jezika (crow's foot) zbog izgleda simbola koji označava
„više“
10
Referencijalni integritet – vanjski ključevi u bazi podataka ne smiju ukazivati na nepostojeću
vrijednost
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]:
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“.
11
4.2 Baza podataka „Prodaja“
Na slici 4.3 možemo vidjeti grafički prikaz ER modela s notacijom „vranino stopalo“ izrađen u
alatu MySQL Workbench. Baza podataka koju prikazuje naziva se „Prodaja“, te se sastoji od 14
tablica i atributima koji su objašnjeni u nastavku. Pokraj svakog atributa označen je i tip podatka
koje polje može primiti. Entiteti koji se nalaze u bazi podataka su vidljivi u relacijkoj shemi ispod,
koja predstavlja tekstualni prikaz entiteta i atributa koji se nalaze u zagradi.
12
Slika 4.3 ER model baze podataka "Prodaja"
13
4.2.1 Tablica „artikl“
U ovu tablicu se upisuju novi artikli ili uređuju postojeći. Primarni ključ ove tablice je „id_artikl“
i jednoznačno određuje svaki entitet u tablici. Vanjski ključevi su „kategorija“, koji se veže na
tablicu „kategorija“, te „porez“ koji se veže na tablicu „stopa_poreza“. Atribute entiteta „artikl“
možemo vidjeti u tablici 4.1.
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.
14
4.2.3 Tablica „poslovni_partner“
Koristi se za upis novih i uređivanje postojećih poslovnih partnera. Entitet poslovni partner se
koristi kod izrada dokumenata primka i narudžba, kao dobavljač, kod izrade računa kao kupac, te
kod unosa uplata kupaca. Primarni ključ ove tablice je „id_poslovni_partner“, a povezan je s
vanjskim ključevima tablica „narudzba“, „primka“, „racun“ i „partner_placanja“. Popis atributa
entiteta „poslovni_partner“možemo vidjeti u tablici 4.3.
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.
15
adresa varchar Komentar
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.
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.
16
4.2.7 Tablica „zaposlenik“
Služi za upis zaposlenika i uređivanje njihovih podataka. Također sadrži podatke koji se
provjeravaju kod prijave u aplikaciju. Primarni ključ je „id_zaposlenik“, a veže se na vanjske
ključeve tablica „racun“, „primka“ i „narudzba“. Vanjski ključ „radno_mjesto“ povezan je s
primarnim ključem tablice „radna_mjesta“. Atribute entiteta „zaposlenik“ možemo vidjeti u tablici
4.7.
Sadrži podatke o narudžbama, te služi za unos novih narudžbi. Primarni ključ ove tablice je
„id_narudzba“ i veže se za vanjski ključ tablice „narudzba_stavke“. Vanjski ključevi ove tablice
17
su „p_partner“ koji se veže na primarni ključ tablice „poslovni_partner“, te „kreirao“ koji se veže
na primarni ključ tablice „zaposlenik“. Popis svih atributa entiteta „narudzba“ je u tablici 4.8.
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.
PK id int Šifra
18
4.2.10 Tablica „primka“
U nju se unose podaci kod unosa dokumenta primka. Primarni ključ ove tablice je „id_primka“
koji se povezuje s vanjskim ključem tablice „primka_stavke“, a vanjski ključevi su „dobavljac“
koji se veže s primarnim ključem tablice „poslovni_partner“ i „p_kreirao“ koji se veže s
primarnim ključem tablice „zaposlenik“. Atribute entiteta „primka“ možemo vidjeti u tablici 4.10.
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.
PK id int Šifra
19
4.2.12 Tablica „racun“
U nju se unose podaci prilikom spremanja dokumenta račun. Primarni ključ ove tablice je
„id_racun“, a vanjski ključevi su „kupac“ povezan s primarnim ključem tablice
„poslovni_partner“, „r_kreirao“ koji je povezan s primarnim ključem tablice „zaposlenik“, te
„id_tip“ povezan s primarnim ključem tablice „tipovi_placanja“. Atributi entiteta „racun“ su
vidljivi u tablici 4.12.
Također tablica sjecište koja spaja tablice „racun“ i „artikl“. U nju se prilikom unosa računa
petljom unose i šifra artikla, te njihova količina, pod zadanom šifrom računa. Primarni ključ ove
tablice je „id_stavke“, a vanjski ljučevi su „id_račun“ povezan s primarnim ključem tablice
„racun“, te „artikl“ povezan s primarnim ključem tablice „artikl“. Popis atributa entiteta
„racun_stavke“ se nalazi u tablici 4.13.
20
Tablica 4.13 „racun_stavke“
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.
21
5. Aplikacija „Prodaja“
Za izradu ove aplikacije korišten je programski jezik Visual Basic koji se koristi za generiranje
aplikacija za okruženje Microsoft Windows operacijskog sustava. Visual Basic koristi objektno
programiranje, tj. služi se objektima (gumbi, tekstni okviri, izbornici itd.) koje programer
razmješta po obrascima (engl.form) i dodaje im programski kod. Projekt napisan u VB kodu (.vbp)
se na zahtjev programera kompajlira i automatski se prevodi u izvršnu (.exe) datoteku koja se
može pokrenuti na bilo kojem računalu s Microsoft Windows operacijskim sustavom.
Također da bismo mogli spojiti na poslužitelj potrebno je preuzeti s Interneta MySQL konektor za
.NET aplikacije i dodati referencu u Visual Basic projektu. MySQL konektor omogućava prijenos
podataka koristeći TCP/IP protokol, podržava slanje BLOB tipa podataka 2 GB veličine, te
kompresiju podataka [9].
Sustav sadrži 2 vrste korisnika: administrator i obični korisnik. Jedina razlika je što administrator
ima pristup formi koja u sebi sadrži pregled i uređivanje pristupnih podataka zaposlenika. Svi
zaposlenici imaju pristup izradi dokumenata i unosu, uređivanju i brisanju podataka u tablicama
na poslužitelju.
22
5.1 Implementacija aplikacije
U Visual Basic-u tvrtka Microsoft se dobro potrudila da prezentira i promovira korištenje svoje
inačice relacijske baze podataka „Microsoft SQL Server“, međutim i implementacija s drugim
bazama podataka, kao u ovom slučaju MySQL-a uz malo truda nije problem. Uz instalirane
programske pakete Visual Basic i MySQL, potrebno je instalirati i MySQL priključak za .Net
aplikacije [9]. On je napisan u C# programskom jeziku i služi kao upravljački program za .Net
aplikacije koji ujedinjuje pristup relacijskim bazama podataka, XML dokumentima i drugim
podacima aplikacije [10]. Kako bi se aplikacija mogla spajati potrebno je u projekt navesti
referencu na „MySQL.Data.dll“ te na svakoj formi na kojoj se koriste sql upiti upisati na početku
programskog koda [10]:
Imports MySql.Data.MySqlClient
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]:
Nakon što je otvorena veza prema poslužitelju moguće je slati upite SUBP, primjeri najčešćih koji
su korišteni prilikom izrade aplikacije su navedeni u nastavku.
23
5.1.2 Korištenje SELECT upita
Sada kad je veza prema poslužitelju otvorena postavljamo željene upite, u ovom primjeru SELECT
upit. On se upućuje SUBP za dohvat podataka iz tablice „zaposlenici“ i ispis podataka u „listview“
tablicu „lvZaposlenici“ koristeći for petlju budući da želimo ispis svih redova u tablici, a ne samo
prvog. Upit izgleda ovako [10]:
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]:
24
With sqlCommand
.CommandText = sqlUpit
.Connection = sqlVeza
.ExecuteNonQuery()
End With
With sqlAdapter
.SelectCommand = sqlCommand
.Fill(TABLE)
End With
dgvZaposlenici.DataSource = TABLE
Nakon željenog ispisa možemo staviti kod koji nam pokazuje poruku greške u slučaju da do nje
dolazi u upitu [10]:
Catch ex As Exception
MsgBox(ex.ToString)
End Try
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]:
With sqlCommand
.CommandText = sqlUpit
.Connection = sqlVeza
.ExecuteNonQuery()
End With
25
5.1.4 Korištenje INSERT upita
Korištenje INSERT upita izvodi se slično kao i UPDATE. Prvo je potrebno otvoriti vezu sa
poslužiteljem, a zatim postavljamo upit za dodavanje novog retka u tablici. Ukoliko je primarni
ključ tipa integer i postavljen na opciju „autonumber“ SUBP ga automatski stavlja na broj jedan
veći od prethodnog unosa. Niz se sastavlja tekstom iz tekstnih okvira, a posljednja varijabla iz
višestrukog izbornika, iz kojeg se naziv uspoređuje s onima u tablici „radno_mjesto“, te se odabire
id, budući da je to polje povezano s vanjskim ključem tablice zaposlenici. Programski kod izgleda
ovako [10]:
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.
26
Dim sqlCommand As New MySqlCommand
With sqlCommand
.CommandText = sqlUpit
.Connection = sqlVeza
.ExecuteNonQuery()
End With
Next
Na slici 5.1 može se vidjeti koji atributi se šalju iz forme u aplikaciji, te desno kako to izgleda kad
SUBP unese nove retke u tablicu u bazi podataka.
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].
27
5.2 Dekompozicijski dijagram aplikacije
Ovaj dijagram na slici 5.2 pokazuje sve forme aplikacije i veze između njih. Pokretanjem
aplikacije pokreće se forma za prijavu korisnika. Korisnik vrši prijavu kao zaposlenik ili
administrator, te s početne forme vrši daljnji izbor.
28
5.3 Forme aplikacije
Nakon uspješne prijave automatski se otvara početna forma, prikazana na slici 5.4.
29
Na njoj se nalaze grupirani gumbi za ulazak u druge forme, također je moguć ulazak i koristeći
„toolstrip“ traku, na kojoj se nalazi i gumb za ulazak u formu s osnovnim informacijama o
aplikaciji. Početna forma je podijeljena u tri sljedeće grupe:
2. Pregled dokumenata
Računi pregled
Narudžbe pregled
Primka pregled
Dugovanja po kupcima
3. Unos dokumenata
Računi
Narudžbe
Primka
Unos uplata
5.3.2 Artikli
Svrha ove forme je da zaposlenik ima mogućnost dodavanja novih artikala u bazu, uređivanje
postojećih artikala i brisanje artikala iz baze. U formi postoje opcije pretraživanja po izrazu koji
radi pomoću LIKE operatora u MySQL-u, te sortiranje ovisno u kategoriji u kojoj se nalaze. Slika
5.5 prikazuje formu „Artikli“.
30
Slika 5.5 Artikli
Ulaskom u samu formu automatski se šalje upit bazi za svim artiklima, koji se zatim izlistavaju u
tablicu u formi. Pritiskom na gumb „Novi artikl“ otvara se forma za unos novih artikala (slika 5.6),
gdje zaposlenik unosi podatke o novom artiklu, koji se kod pritiska gumba „Spremi“ unose u
tablicu „artikl“ u bazi podataka. Podaci o nazivima kategorije i iznosu porezne stope se biraju iz
„combo box“ izbornika koji se popunjavaju podacima kod pokretanja forme. Kod spremanja upita
atribut zaliha se postavlja na vrijednost 0, te kasnije unosom dokumenata primka i račun povećava
mu se, odnosno smanjuje vrijednost.
31
Slika 5.7 Uredi artikl
Ako želimo izbrisati neki artikl iz baze, učinit ćemo to izborom artikla iz tablice i pritiskom gumba
“Izbriši artikl“. Međutim to je moguće samo za one artikle koji se ne pojavljuju u nijednom
dokumentu, inače će se pojaviti poruka MySQL greške zbog ograničenja referencijalnog
integriteta postavljenog na vanjskim ključevima. Ostali gumbi na formi služe za sortiranje
podataka u tablici, te osvježavanje iste.
5.3.3 Zaposlenici
Ova forma služi za unos novih zaposlenika, uređivanje osnovnih podataka o svakom zaposleniku
i brisanje zaposlenika, samo ukoliko njegov id nije vezan uz nijedan dokumenat u aplikaciji. Slika
5.8 prikazuje formu „Zaposlenici“.
32
5.3.4 Poslovni partneri
Služi za unos novih poslovnih partnera, uređivanje i brisanje. Poslovni partner može se javiti i u
ulozi kupca, ali i dobavljača, te je vezan u izradi svih dokumenata u aplikaciji. Slika 5.9 prikazuje
formu „Poslovni partneri“.
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“.
33
5.3.6 Stopa poreza
U njoj se unose nove stope poreza, uređivaju podaci u postojećima i brišu nepotrebne. Važno je
imati pristup njihovom uređivanju budući da se stope poreza često mijenjaju, što obično donosi
potrebu za izmjenoma i dodatne troškove u većini aplikacija, a i važno je imati informaciju koja
se stopa koristi kod izrade računa. Slika 5.11 prikazuje ovu formu.
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“.
34
5.3.8 Tipovi plaćanja
Sadrži tipove plaćanja koje koristimo kod unosa plaćanja, te imali uvid kod provjere stanja
dugovanja određenog kupca. Slika 5.13 prikazuje formu „Tipovi plaćanja“
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.
35
5.3.10 Narudžbe pregled
Na ovoj formi također možemo vidjeti podatke koji su vezani uz dokument narudžbu, u gornjoj
tablici podatke iz tablice u bazi „narudzba“, a u donjoj tablici ispis artikala iz tablice
„narudzba_stavke“. Dokument narudžbu šaljemo dobavljaču, te njime naručujemo novu robu za
skladište. Na slici 5.15 možemo vidjeti formu „Narudžbe pregled“.
Kao i u ostalim formama pregleda u ovoj formi se izlistuju podaci iz tablica „primka“ i
„primka_stavke“. Pregledom primki provjeravamo ulaz robe u skladište po određenoj primci,
budući da svaka primka povećava stanje zalihe artikala u bazi. U gornjem dijelu prikazan je
dobavljač, zaposlenik koji je izradio primku, datum i iznos, a u donjem je izlistan popis artikala
na primci s količinom i cijenom, sve vidljivo na slici 5.16.
36
Slika 5.16 Pregled primki
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.
37
5.3.13 Računi
Forma račun (slika 5.18) nam služi za izradu dokumenta račun. Poketanjem forme se popunjavaju
tekstno polje broja računa, trenutnog datuma, datuma valute, te sql upitima se popunjavaju tablice
za odabir artikala, zaposlenika, poslovnih partnera, te kombinirani izbornik s tipovima plaćanja.
Iz tablice artikli lijevim pritiskom miša zaposlenik dodaje artikl u glavnu tablicu, aplikacija
izračunava cijenu bez poreza (koji može bit različit, u primjeru na slici 25 ili 10%), a na
zaposleniku je da upiše podatke u kolonu količina i rabat. Aplikacija ažurira ostale kolone u tablici
i ćelije na dnu forme s ukupnim iznosima bez poreza, rabata, poreza i ukupnog iznosa za naplatu.
Svaki artikl se može izbristati iz glavne tablice dvoklikom, te potvrdom na prozoru koji se pojavi
s upitom. Prije spremanja potrebno je izabrati zaposlenika i kupca, jer ako nisu odabrani aplikacija
pokazuje poruku s upozorenjem. Grupni okvir s zaposlenicima se otvara pritiskom na gumb
„Sastavio“, te klikom miša ažuriraju se ćelije ispod natpisa „Sastavio“ (slika 5.19).
38
Slika 5.19 Odabir zaposlenika
Isto tako pritiskom na gumb „Kupac“ otvara se grupni okvir za izbor kupca, na kojem zaposlenik
lijevim klikom miša ažurira podatke kupca (slika 5.20). Povratak na grupni okvir artikala se
ostvaruje pritiskom gumba „Artikli“.
Ukoliko su svi potrebni podaci ispunjeni pritiskom na gumb „Spremi“ aplikacija šalje podatke u
tablicu „racun“ i „racun_stavke“. Ako su podaci poslani pokazuje se poruka „Spremljeno“, a forma
se zatvara i podaci su uspješno spremljeni u bazi. Račune koji su spremljeni mogu se vidjeti na
formi „Računi pregled“ koja se pokreće s ove ili s početne forme.
39
5.3.14 Narudžbe
Ova forma nam služi za izradu dokumenta narudžba. Narudžba se šalje dobavljaču kako bi nam
dostavio novu robu na skladište, a podaci se spremaju u bazu kako bi nam ostali za evidenciju
kako bismo mogli usporediti da li su na skladište stigli artikli koje smo tražili u u naručenim
količinama.
Pokretanjem forme se popunjavaju tekstni okviri broja narudžbe i datuma, te tablice za izbor
artikla, zaposlenika i dobavljača. Iz tih tablica se klikom dodaju artikli u glavnu tablicu u kojoj se
uređuje kolona količina, te se izabire osoba koja sastavlja dokument i naziv dobavljača. Ukoliko
nisu svi podaci ispunjeni prilikom spremanja javlja se poruka greške, a ukoliko s podaci uspješno
poslani u bazu pokazuje se poruka „Spremljeno“ i forma se zatvara. Već spremljene narudžbe se
mogu pregledavati na formi „Narudžbe pregled“ klikom na gumb na ovoj ili početnoj formi.
Formu „Narudžbe“ možemo vidjeti na slici 5.21.
40
5.3.15 Primka
Na ovoj formi izrađuje se dokument primka. Primka nam služi za unos artikala na skladište tvrtke.
Podaci za unos artikala dobavljača i zaposlenika se unose kao i na ostalim dokumentima odabirom
iz grupnih izbornika koji se otvaraju pritiskom na odgovarajuće gumbe. Nakon unosa artikala u
glavnu tablicu zaposlenik unosi količinu, a ćelije s ukupnim zbrojem se ažuriraju. Pritiskom na
gumb „Spremi“, ukoliko su ispunjeni svi podaci unosi se novi račun u tablice „primka“ i
„primka_stavke“ INSERT upitima. Ukoliko je spremanje uspješno pojavljuje se poruka
spremljeno i forma se zatvara, što se može vidjeti na slici 5.22.
Na ovoj formi se unose podaci u tablicu „partner_placanja“ kako bismo imali uvid o izvršavanju
obaveza pojedinog kupca koje možemo vidjeti pokretanjem forme „Dugovanja po kupcima“.
Njezinim pokretanjem šalju se select upiti tablicama „poslovni_partner“ i „tipovi_placanja“, te se
41
popunjavaju višestruki izbornici s nazivom poslovnog partnera i načinima plaćanja. Zaposlenik
vrši odabir iz njih, unosi datum, iznos i poziv na broj plaćanja, te pritiskom na gumb „Unesi“
podaci se šalju u bazu podataka. Forma „Unos plaćanja“ može se vidjeti na slici 5.23.
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.
42
6. Zaključak
Kako raste važnost Interneta i mrežnih aplikacija tako raste i važnost sustava za upravljanje
bazama podataka. MySQL je imao veliku ulogu kod izgradnje Interneta kakvog danas poznajemo,
budući da većina današnjih Web stranica danas nije statična, već je povezana s bazama podataka
u koje spremaju podatke koje prikupljaju. Zapravo se može reći da je procvat e-poslovanja na
Internetu krenuo povećanjem brzina pristupa Internetu i pojavom open-source baza podataka kojih
je MySQL najpoznatiji predstavnik.
Ovim završnim radom prikazana je jednostavna baza podataka s aplikacijom koja upravlja njom,
a kakva se može primijeniti u mnogo malih obrta i poduzeća koja nemaju velike zahtjeve. MySQL
je uvelike olakšao i popularizirao korištenje baza podataka i kod običnih korisnika, koji s malim
predznanjem mogu uspješno stvarati Web aplikacije i Web stranice koje trebaju pristup bazi
podataka. Tvrtke s vrlo malim proračunom mogu izgraditi svoj informacijski sustav ili započeti e-
poslovanje, s minimalnim troškovima i naporima, a sve uz visoku sigurnost podataka, brzinu i
učinkovitost.
43
7. Literatura
44