Forumi
Home Pravila i pomoć Članovi Kalendar Današnji postovi


Povratak   PC Ekspert Forum > Računala > Software > Web dizajn, programiranje i ostalo
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 11.03.2012., 19:26   #1
skyman
Premium
 
skyman's Avatar
 
Datum registracije: Aug 2008
Lokacija: ZG
Postovi: 775
Baza podataka-povezivanje tablica

Imam jedno pitanje...imam npr. ovakav primjer...dvije tablice:

Nalog [SifraNaloga, Datum, Iznos,SifraPosla]
Posao [SifraPosla, OpisPosla, Iznos]

Tablica posao naravno sadrži sve poslove koje pruža npr. tvrtka skupa s opisom posla i odgovarajućom cijenom, znači jednostavne dvije tablice, e sad ovo usper funkcionira u slučaju da svaki radni nalog ima samo jedan posao...i tablice su povezane pomoću atributa SifraPosao iz obje tablice, npr. kreiranjem novog radnog naloga:

INSERT INTO Nalog VALUES (12,12.1.2012,336,4);

i kasnije naravno dohvaćam nalog i posao koji je obavljen na tom nalogu pomoću upita...

SELECT SifraNalog.Nalog, Iznos.Nalog, OpisPosla.Posao FROM Nalog, Posao WHERE SifraPosla.Nalog= SifraPosla.Posao AND SifraNaloga.Nalog=12;

Ali šta ako svaki nalog ima više poslova, ne samo jedan kao u gore navedenom slučaju, kako onda to obaviti?

Jedina ideja mi je bila kreirat još jednu dodatnu tablicu koja će upisivat SifraNaloga i SifraPosla pri svakom kreiranju naloga, znači ako ima 3 posla dodavat će se 3 zapisa u tu tablicu...npr:

Poslovi[SifraPosla,SifraNaloga]

I onda tako povezat te tri tablice...jel ima neko elegantnije riješenje?

Zadnje izmijenjeno od: skyman. 11.03.2012. u 19:31.
skyman je offline   Reply With Quote
Staro 11.03.2012., 20:14   #2
johnson
Registered User
 
Datum registracije: Oct 2011
Lokacija: istra
Postovi: 25
netreba komplicirati s dodatnom tablicom, jabi stavio kao PK nad Nalog ( SifNaloga, SifPosla)

tako bi mogao upisivat pod isti nalog više poslova, npr:

INSERT INTO Nalog VALUES (12,12.1.2012,336,4);
INSERT INTO Nalog VALUES (12,12.1.2012,336,5);
INSERT INTO Nalog VALUES (12,12.1.2012,336,6);

itd...

za listanje i dalje pretražuješ po šifri naloga... i tjt, barem ako sam ja dobro skužio

alias u selectu nebi bila loša ideja
johnson je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 11.03.2012., 20:25   #3
sinisa1989
Bazinga
Moj komp
 
sinisa1989's Avatar
 
Datum registracije: Nov 2007
Lokacija: Križevci
Postovi: 3,927
Citiraj:
Autor johnson Pregled postova
netreba komplicirati s dodatnom tablicom, jabi stavio kao PK nad Nalog ( SifNaloga, SifPosla)

tako bi mogao upisivat pod isti nalog više poslova, npr:

INSERT INTO Nalog VALUES (12,12.1.2012,336,4);
INSERT INTO Nalog VALUES (12,12.1.2012,336,5);
INSERT INTO Nalog VALUES (12,12.1.2012,336,6);

itd...

za listanje i dalje pretražuješ po šifri naloga... i tjt, barem ako sam ja dobro skužio

alias u selectu nebi bila loša ideja
U tom slučaju kad bi izvlačio nalog sa SELECT-om po šifri naloga dobio bi onoliko rezultata koliko je poslova bilo. Isto tako imao bi puno ponavljanja. To po meni nije najsretnije rješenje.
Ja bi išao na varijantu koju je sam autor predložio.
__________________
The best place to hide a dead body
is page 2 of Google search results.
sinisa1989 je offline   Reply With Quote
Staro 11.03.2012., 20:47   #4
johnson
Registered User
 
Datum registracije: Oct 2011
Lokacija: istra
Postovi: 25
Citiraj:
Autor sinisa1989 Pregled postova
U tom slučaju kad bi izvlačio nalog sa SELECT-om po šifri naloga dobio bi onoliko rezultata koliko je poslova bilo. Isto tako imao bi puno ponavljanja. To po meni nije najsretnije rješenje.
Ja bi išao na varijantu koju je sam autor predložio.

pa šta nije to bila i zamisao...

da za jedan nalog ima više poslova (stavki),

npr. za nalog 12 izvršeno je 4 posla, kod selecta vidit će 4 sloga, tj. sve poslove pod tim nalogom

na kakva ponavljanja misliš? - to su sve jedinstvene vrijednosti

što bi točno dobio kad bi vrijednosti koje ima već zapisane u tablici nalog prebacivao u neku 3 tablicu?
--
moguće da ja nisam sve skužio kako treba
johnson je offline   Reply With Quote
Staro 11.03.2012., 23:49   #5
burki
Umalo Premium
 
Datum registracije: Jan 2009
Lokacija: localhost
Postovi: 61
Citiraj:
Autor sinisa1989 Pregled postova
U tom slučaju kad bi izvlačio nalog sa SELECT-om po šifri naloga dobio bi onoliko rezultata koliko je poslova bilo. Isto tako imao bi puno ponavljanja. To po meni nije najsretnije rješenje.
Ja bi išao na varijantu koju je sam autor predložio.
Pozdrav, slažem se s kolegom johnsonom.
Da izbjegnete ponavljanje koristite SELECT DISTINCT...
burki je offline   Reply With Quote
Staro 12.03.2012., 00:27   #6
skyman
Premium
 
skyman's Avatar
 
Datum registracije: Aug 2008
Lokacija: ZG
Postovi: 775
Citiraj:
Autor johnson Pregled postova
netreba komplicirati s dodatnom tablicom, jabi stavio kao PK nad Nalog ( SifNaloga, SifPosla)

tako bi mogao upisivat pod isti nalog više poslova, npr:

INSERT INTO Nalog VALUES (12,12.1.2012,336,4);
INSERT INTO Nalog VALUES (12,12.1.2012,336,5);
INSERT INTO Nalog VALUES (12,12.1.2012,336,6);

itd...

za listanje i dalje pretražuješ po šifri naloga... i tjt, barem ako sam ja dobro skužio

alias u selectu nebi bila loša ideja
Hm, ali ovom metodom dodajem hrpu novih redova/naloga u tablicu i samim time povećavam veličinu baze više nego da imam 3. tablicu (koja ima dvije brojčane vrijednosti)...i ako će se koristit npr. access, ako netko otvori tablicu u office accessu to će izgledat jako nepregledno s hrpom zapisa...ipak izgleda da ću koristit i prvotnu opciju.
skyman je offline   Reply With Quote
Staro 12.03.2012., 08:55   #7
sinisa1989
Bazinga
Moj komp
 
sinisa1989's Avatar
 
Datum registracije: Nov 2007
Lokacija: Križevci
Postovi: 3,927
Citiraj:
Autor burki Pregled postova
Pozdrav, slažem se s kolegom johnsonom.
Da izbjegnete ponavljanje koristite SELECT DISTINCT...
Ja ne kažem da to rješenje neće funkcionirati, ali ja bi to napravio s dodatnom tablicom.
Lako za ponavljanje, ali će mu se nepotrebno gomilati podaci u toj tablici. Npr. da svaki nalog ima po 5 poslova.

@ johnson
Ne bi se ništa promijenilo, ja sam se malo krivo izrazio. Uglavnom skyman ti je odgovorio ono što sam ja mislio.
__________________
The best place to hide a dead body
is page 2 of Google search results.

Zadnje izmijenjeno od: sinisa1989. 12.03.2012. u 09:02.
sinisa1989 je offline   Reply With Quote
Staro 12.03.2012., 09:55   #8
johnson
Registered User
 
Datum registracije: Oct 2011
Lokacija: istra
Postovi: 25
Ma sve 5 napravi kako mislis daje jednostavnije...nego samo nesto npr. jedan nalog ima 4 posla i nakon unosa kako bi izgledali tablice nalozi i poslovi,,tj. zapisi u tab....i dali difra naloga pocne u nekim periodima ispocetka
johnson je offline   Reply With Quote
Staro 13.03.2012., 09:25   #9
doublev
the letter
Moj komp
 
doublev's Avatar
 
Datum registracije: Sep 2005
Lokacija: 127.0.0.1
Postovi: 794
Rješavati loš design sa SELECT DISTINCT je nešto najgluplje što možeš napraviti.

SELECT DISTINCT ima svojih koristi. Ovo nije jedna od njih.

Ako je tablica Posao šifarnik tj. katalog poslova, onda je riješenje sa još jednom tablicom.
Nju nazoveš StavkeNaloga. Tako se to radi. Točka.
Jedno pitanje: Kako ćeš u ovom slučaju handleati promjenu cijene? Ispravno bi bilo dodati novu stavku u tablicu Posao jer bi inače promjenom stavke izmijenio sve povezane naloge. Drugo riješenje je da u tablicu StavkeNaloga dodaš cijenu a tu kolonu izbaciš iz tablice Posao.

Ako Posao nije šifarnik već se u nju dodaje linija svaki puta kada se neki posao obavi tj. kada se radi novi nalog, onda treba obrnuti uloge. Nalog je master tablica, Posao detail i u nju dodaš kolonu SifraNaloga a iz Naloga izbacis SifraPosla.
__________________
Exception up = new Exception("Illegal operation.");
throw up;
doublev je offline   Reply With Quote
Staro 24.03.2012., 22:20   #10
rodriguez
....
Moj komp
 
rodriguez's Avatar
 
Datum registracije: Nov 2009
Lokacija: Hrvatska
Postovi: 2,054
Može mi se javiti netko na PM tko zna programirati recimo bazu podataka u excelu?
rodriguez je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 24.03.2012., 23:54   #11
skyman
Premium
 
skyman's Avatar
 
Datum registracije: Aug 2008
Lokacija: ZG
Postovi: 775
Citiraj:
Autor rodriguez Pregled postova
Može mi se javiti netko na PM tko zna programirati recimo bazu podataka u excelu?
Access je bolji za tu nemjenu, općenito radi boljih opcija i po potrebi eksportanja...
skyman je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Odgovori



Pravila postanja
Vi ne možete otvarati nove teme
Vi ne možete pisati odgovore
Vi ne možete uploadati priloge
Vi ne možete uređivati svoje poruke

BB code je Uključeno
Smajlići su Uključeno
[IMG] kod je Uključeno
HTML je Isključeno

Idi na