Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Teorija Vs. Praksa

[es] :: Baze podataka :: Teorija Vs. Praksa

Strane: < .. 1 2 3 4

[ Pregleda: 21493 | Odgovora: 73 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Teorija Vs. Praksa18.07.2006. u 14:03 - pre 216 meseci
Citat:
Zidar: Na zalost, nije NEKAD, nego je UVEK ili bar U VECINI SLUCAJEVA. Svaki dan vidjam ovako rezonovanje: "Posto se na kraju sve denormalizuje, zasto uopste normalizovati?" i onda dobijemo flat table sistem gde su tabele spakovane u MS SQL ili ORACLE. Uvodjenej surogat kljuca jeste denormalizacija. Ako se to uradi na pocetku projekta, znaci da ni nema normalizacije. Ponovo prekrsaj, iz lenjosti iako u sustini an duzi rik zahteva vise rada nego normalizovano resenje.

Šta da kažem, osim da imaš vrlo pesimističan pogled na svet oko sebe. :)

Nikad nisam imao razumevanja za isključive stavove tipa: "Ili projektuješ po knjizi i to je savršeno, ili ne normalizuješ uopšte, sve podatke trpaš u BLOB polja, nemaš referencijalne zavisnosti, svuda pakuješ surogat ključeve, siluješ male dečake i zaslužuješ da goriš u paklu sledeće tri večnosti!". Po mom iskustvu, sweet spot je uvek negde između, a uzroci najvećih problema u svakom softverskom projektu obično leže u mnogo banalnijim pojavama od surogat ključeva.
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Teorija Vs. Praksa18.07.2006. u 15:07 - pre 216 meseci
Za Broker: U pravu si, nasm primetio. Ovako stoji:
POSLOVI (ID_POSLA, ID_RADNIKA, ID_ZADATKA, Dodeljen, Zapocet, Zavrsen)
IZDATI_MATERIJALI (ID_MATERIJALA, ID_POSLA, DatumIzdavanja, DatumVracanja, Izdata_Kolicina, Utrosena_Kolicina)
IZDATI_ALATI (ID_ALATA, ID_POSLA, DatumIzdavanja, DatumVracanja, Kolicina)

A moglo je i ovako:
POSLOVI (ID_RADNIKA, ID_ZADATKA, Dodeljen, Zapocet, Zavrsen)
IZDATI_MATERIJALI (ID_MATERIJALA, ID_RADNIKA, ID_ZADATKA, DatumIzdavanja, DatumVracanja, Izdata_Kolicina, Utrosena_Kolicina)
IZDATI_ALATI (ID_ALATA, ID_RADNIKA, ID_ZADATKA,, DatumIzdavanja, DatumVracanja, Kolicina)

U tom slucaju vidm direktno u tabelama da je neki materiajl ili alat izdat radniku ID_Radnika koji radi na zadatku ID_Zadataka.

Onako kako ste stavili, sa ID_Posla, ako hoces da vidis koji materijal je izdat kom radniku i zasto, treba ti JOIN:

SELECT
M.ID_MAterijala, M.ID_Posla,
P.ID_Radnika
FROM IZDATI_MATERIJALI
JOIN POSLOVI AS P ON P.ID_Posla=M.ID_Posla

Isto tako za izdati alat:
SELECT
A.ID_Alata, A.ID_Posla,
P.ID_Radnika
FROM IZDATI_ALATI AS A
JOIN POSLOVI AS P ON P.ID_Posla=A.ID_Posla

Surogat key ID_POsla ste uveli da bi se lakse piso JOIN u dva pokazana SELECT iskaza. Medjutim, da ste ostavili PK u POSLOVI kao (ID_RADNIKA, ID_ZADATKA), ta dva SELECT izkaza ne bi vam ni trebali. Ponavljam ono sto sam rekao na pocetku; lakse je ne pisati JOIN uopste nego pisati veoma jednostavan JOIN (dva u ovom slucaju)

Doduse, ako sef nije trazio da vidi koji materijal je izdat kom radniku i za koji posao, moja promedba je bespredmetna. Cini mi se ipak da je pitanje vrlo logicno, pa cak i kao sef ne trazi to odmah na pocetku, trazice kasnije, sigurno. A kad bude trazio sef, onda ce svaki SELECT (2 komada) da se pretvore u VIEW (2 komada) koje ce da koristi front end i tako dalje...
Pa kad dodate jos jednu kolonu nekad u neku tabelu, onda morte da se setite da je dodate u view i tako dalje..

ZA Mladju:
Citat:
Ovde pre sveg amislim na unos podataka, jer bi magacioner koji izdaje materijale i alate, morao da upisuje radnika i zadatak koji se obavlja u trebovanju a ako postoji ID_POSLA, on samo upisuje posao i materijale i alate koji su potrebni za taj posao, ne uzlazeci u to koji je konkretan zadatak i ko ga obavlj a(osim utoliko sto taj radnke terba da mu potpise trebovanje. Uvodjenjem polja ID_POSLA se unos podataka znatno pojednostavljuje i smanjuje s emogucnsot pogresnog unosa.

Radnik uglavnom treba da potpise trebovanje, nista ne izlazi iz magacina a da neko ne potpise trebovanje. Sefovi ne trebuju za radnike. Ako mogu sefovi da trebuju za radnike, onda nesto fali u modelu. Ko trebuje, mora biti u modelu. Kako je model postavlje, proizilazi da se radnik zaduzuje kmaterijalom. prema tome on ce i da potpise trebovanje. Gresku na unosu eliminise referential integrity a ne ID_POSLA . Ne vidim kako ID_POSLA smanjuje mogucnost greske. Pojednostavljuje upis, da. Kuca se jedan podatak umesto dva. Bez mogucnosti kontrole. Ako je ID_POSLA = 1276676684, da li je moguce da ce magacioner ukucati 1276676864 a da ne primeti? Ako ne primeti, zaduzio si Lazu sa materijalom koji je u stvari uzeo Pera. A Laza je bivsi bokser i ne voli da ga duize tudjim materijalom.


Kako ce se raditi je stvar ukusa, bice da sam ja isuvise star da bih shvatio prednosti negiranja teorije na kojoj je cela relaciona prica bazirana. Necu vise da vas davim.

srecan rad



[Ovu poruku je menjao Zidar dana 18.07.2006. u 16:25 GMT+1]
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.tippnet.co.yu.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Teorija Vs. Praksa18.07.2006. u 18:59 - pre 216 meseci
Evo mog resenja. Poduze je ali samo tako mogu u potpunosti da se izrazim.Source govori sam za sebe :)
Code:

CREATE TABLE Alati (
    id_alata INTEGER NOT NULL,
    naziv_alata VARCHAR(50) NOT NULL,
  CONSTRAINT pk_ala PRIMARY KEY (id_alata)
);


CREATE TABLE Materijali (
    id_materijala INTEGER NOT NULL,
    naziv_materijala VARCHAR(50) NOT NULL,
  CONSTRAINT pk_mat PRIMARY KEY (id_materijala)
);


CREATE TABLE Radna_Mesta (
    id_radnog_mesta INTEGER NOT NULL,
    opis_radnog_mesta VARCHAR(50) NOT NULL,
  CONSTRAINT pk_ram PRIMARY KEY (id_radnog_mesta)
);


CREATE TABLE Radnici (
    id_radnika INTEGER NOT NULL,
    id_radnog_mesta INTEGER NOT NULL,
    ime_radnika VARCHAR(15) NOT NULL,
    prezime_radnika VARCHAR(30) NOT NULL,

  CONSTRAINT pk_rad PRIMARY KEY (id_radnika),

  CONSTRAINT un_rad UNIQUE (id_radnika, id_radnog_mesta),

  CONSTRAINT fk_rad_ram FOREIGN KEY (id_radnog_mesta)
    REFERENCES Radna_Mesta (id_radnog_mesta)
    ON UPDATE CASCADE ON DELETE RESTRICT
);


CREATE TABLE Zadaci (
    id_zadatka INTEGER NOT NULL,
    id_radnog_mesta INTEGER NOT NULL,
    naziv_zadatka VARCHAR(50) NOT NULL,
    trajanje_zadatka INTEGER NOT NULL CHECK (trajanje_zadatka > 0), -- u danima??
    
  CONSTRAINT pk_zad PRIMARY KEY (id_zadatka),
  
  CONSTRAINT un_zad UNIQUE (id_zadatka, id_radnog_mesta),
  
  CONSTRAINT fk_zad_ram FOREIGN KEY (id_radnog_mesta)
    REFERENCES Radna_Mesta (id_radnog_mesta)
    ON UPDATE CASCADE ON DELETE RESTRICT
);


CREATE TABLE Poslovi (
    id_radnika INTEGER NOT NULL,
    id_zadatka INTEGER NOT NULL,
    id_radnog_mesta INTEGER NOT NULL,
    datum_dodele DATE NOT NULL,
    datum_pocetka DATE,
    datum_zavrsetka DATE,
    
  CONSTRAINT pk_pos PRIMARY KEY (id_radnika,id_zadatka),
  
  CONSTRAINT fk_pos_rad FOREIGN KEY (id_radnika, id_radnog_mesta)
    REFERENCES Radnici (id_radnika, id_radnog_mesta)
    ON UPDATE CASCADE ON DELETE RESTRICT,
    
  CONSTRAINT fk_pos_zad FOREIGN KEY (id_zadatka, id_radnog_mesta)
    REFERENCES Zadaci (id_zadatka, id_radnog_mesta)
    ON UPDATE CASCADE ON DELETE RESTRICT,
    
  CONSTRAINT ch_pos_datum_pocetka CHECK (   (datum_dodele <= datum_pocetka)
                                         OR (datum_pocetka IS NULL)),
                                         
  CONSTRAINT ch_pos_datum_zavrsetka CHECK (   (datum_pocetka <= datum_zavrsetka)
                                           OR (datum_zavrsetka IS NULL))
);


CREATE TABLE Potrebni_Alati (
    id_zadatka INTEGER NOT NULL,
    id_alata INTEGER NOT NULL,
    normativna_kolicina NUMERIC(16,3) NOT NULL CHECK (normativna_kolicina > 0),
    
  CONSTRAINT pk_poa PRIMARY KEY (id_zadatka, id_alata),
  
  CONSTRAINT fk_poa_zad FOREIGN KEY (id_zadatka)
    REFERENCES Zadaci (id_zadatka)
    ON UPDATE CASCADE ON DELETE RESTRICT,
    
  CONSTRAINT fk_poa_ala FOREIGN KEY (id_alata)
    REFERENCES Alati (id_alata)
    ON UPDATE CASCADE ON DELETE RESTRICT
);


CREATE TABLE Potrebni_Materijali (
    id_zadatka INTEGER NOT NULL,
    id_materijala INTEGER NOT NULL,
    normativna_kolicina NUMERIC(16,3) NOT NULL CHECK (normativna_kolicina > 0),
    
  CONSTRAINT pk_pom PRIMARY KEY (id_zadatka, id_materijala),
  
  CONSTRAINT fk_pom_zad FOREIGN KEY (id_zadatka)
    REFERENCES Zadaci (id_zadatka)
    ON UPDATE CASCADE ON DELETE RESTRICT,
    
  CONSTRAINT fk_pom_mat FOREIGN KEY (id_materijala)
    REFERENCES Materijali (id_materijala)
    ON UPDATE CASCADE ON DELETE RESTRICT
);


CREATE TABLE Izdati_Alati (
    id_radnika INTEGER NOT NULL,
    id_zadatka INTEGER NOT NULL,
    id_alata INTEGER NOT NULL,
    datum_izdavanja DATE NOT NULL,
    izdata_kolicina NUMERIC(16,3) NOT NULL CHECK (izdata_kolicina > 0),
    datum_vracanja DATE,
    
  CONSTRAINT pk_iza PRIMARY KEY (id_radnika, id_zadatka, id_alata),
  
  CONSTRAINT fk_iza_pos FOREIGN KEY (id_radnika, id_zadatka)
    REFERENCES Poslovi (id_radnika, id_zadatka)
    ON UPDATE CASCADE ON DELETE RESTRICT,
    
  CONSTRAINT fk_iza_poa FOREIGN KEY (id_zadatka, id_alata)
    REFERENCES Potrebni_Alati (id_zadatka, id_alata)
    ON UPDATE CASCADE ON DELETE RESTRICT,
    
  CONSTRAINT ch_iza_datum_izdavanja CHECK(   (datum_izdavanja <= datum_vracanja)
                                          OR (datum_vracanja IS NULL))
);


CREATE TABLE Izdati_Materijali(
    id_radnika INTEGER NOT NULL,
    id_zadatka INTEGER NOT NULL,
    id_materijala INTEGER NOT NULL,
    datum_izdavanja DATE NOT NULL,
    izdata_kolicina NUMERIC(16,3) NOT NULL CHECK (izdata_kolicina > 0),
    vracena_kolicina NUMERIC(16,3) NOT NULL CHECK (vracena_kolicina >= 0),
    datum_vracanja DATE,
    
  CONSTRAINT pk_izm PRIMARY KEY (id_radnika, id_zadatka, id_materijala),
  
  CONSTRAINT fk_izm_pos FOREIGN KEY (id_radnika, id_zadatka)
    REFERENCES Poslovi (id_radnika, id_zadatka)
    ON UPDATE CASCADE ON DELETE RESTRICT,
    
  CONSTRAINT fk_izm_pom FOREIGN KEY (id_zadatka, id_materijala)
    REFERENCES Potrebni_Materijali (id_zadatka, id_materijala)
    ON UPDATE CASCADE ON DELETE RESTRICT,
    
  CONSTRAINT ch_izm_datum_izdavanja CHECK(   (datum_izdavanja <= datum_vracanja)
                                          OR (datum_vracanja IS NULL))
);

Napomena: SQL skript je proveren na PostgreSQL DBMS-u. PostgreSQL ima DATE tip podataka, dok koliko znam MS SQL nema - Find/Replace All sa DATETIME.

Pojasnjenje tabela:

- Tabele 'Alati', 'Materijali', 'Radna_Mesta' su trivijalne.

- Tabela 'Radni_Zadaci' referencira ka tabeli 'Radna_Mesta'. Ovoj tabeli je dodat UNIQUE index (kasnije ce biti objasnjeno zasto).

- Tabela 'Radnici' referencira ka tabeli 'Radna_Mesta' u smislu da je radnik rasporedjen (kvalifikovan) na odredjeno radno mesto. Ovoj tabeli je dodat UNIQUE index (kasnije ce biti objasnjeno zasto).

- Tabela 'Zadaci' takodje referencira ka tabeli 'Radna_Mesta' u smislu da se zadatak izvrsava na tom radnom mestu. Ovoj tabeli je dodat UNIQUE index (kasnije ce biti objasnjeno zasto).

- Tabela 'Poslovi' referencira ka tabelama 'Radnici' i 'Zadaci' preko gore spominjanih UNIQUE indexa. Ovim je obezbedjeno da se radnik ne moze poslati da radi zadatak za koji nije kvalifikovan i koji se ne radi na njegovom radnom mestu. Tabeli je takodje dodata prosta provera ispravnosti datuma.

- Tabela 'Potrebni_Alati' ima kompozitni prirodni kljuc od dva atributa. Na ovaj nacin je spreceno da se za isti zadatak navede potreba za dva ista alata, i obratno.

- Tabela 'Potrebni_Materijali' takodje ima kompozitni prirodni kljuc od dva atributa. Slicno predhodnoj tabeli, na ovaj nacin je spreceno da se za isti zadatak navede potreba za dva ista materijala, i obratno.

- Tabela 'Izdati_Alati' referencira ka tabeli 'Radnik' kome je taj alat izdat. Takodje tabela referencira ka tabeli 'Potrebni_Alati'! Na ovaj nacin je spreceno da se radniku izda alat koji mu nije potreban za obavljanje konkretnog zadatka. Citiracu Brokerov originalni zadatak: 'podatke o alatima koji su radniku izdati za obavljanje konkretnog posla'. Tabela opet ima kompozitni kljuc koji je ovog puta sastavljen od tri atributa. Tabeli sam takodje dodao trivijalnu proveru ispravnosti datuma vracanja alata.

- Tabela 'Izdati_Materijali' referencira ka tabeli 'Radnik' kome je materijal izdat. Takodje tabela referencira ka tabeli 'Potrebni_Materijali'! Na ovaj nacin je spreceno da se radniku izda materijal koji mu nije potreban za obavljanje konkretnog zadatka. Opet citiram Brokerov originalni zadatak: 'podatke o materijalima koji su radniku izdati za obavljanje konkretnog posla'. Tabela opet ima kompozitni kljuc koji je takodje sastavljen od tri atributa. Tabeli sam takodje dodao trivijalnu proveru ispravnosti datuma vracanja materijala i vracene kolicine.


Svoje resenje sam prezentovao u SQL-u jer je to univerzalni jezik baza podataka zasnovanih na relacionoj teoriji. Lako vam je da uradite copy/paste uz blage izmene i mozete proveriti moje tvrdnje na RDBMS-ima koje upotrebljavate.


Resenja (ili je bolje reci resenje?) koja su ponudili Amladja i Broker prvo pate od nedostatka referencijalnih integriteta (u daljem tekstu RI).
Ako ne modelirate i ne upotrebljavate RI onda slobodno umesto Relacionih sistema za upravljanje podacima (RDBMS) mozete koristiti FAJL SISTEME!


Navedena resenja su data u obliku kvazi matematicke notacije relacionog modela podataka.

U toj notaciji se RI pisu upotrebom projekcije i relacije 'je podskup od'. Na primer
Code:

RADNA_MESTA (ID_RADNOG_MESTA, Naziv)

RADNIK (ID_RADNIKA, Prezime, Ime, DatumRodjenja, ID_RADNOG_MESTA)

RADNIK[ID_RADNOG_MESTA] je podskup od RADNA_MESTA[ID_RADNOG_MESTA]



Ponudjenim resenjima takodje nedostaje provera unetih podataka koje sam naveo u resenju koje sam ja prikazao. U tim resenjima je sasvim legitimno dati posao radniku na nekom zadatku, a da radnik nije ni kvalifikovan za taj zadatak. Sasvim je legitimno radniku izdati alat koji mu nije potreban.

Price da se to resava u aplikativnom delu ne drze vodu, jer kako cete spreciti cak i ispod prosecnog korisnika SQL DML-a da uradi
Code:

INSERT INTO POSLOVI (ID_POSLA, ID_RADNIKA, ID_ZADATKA, Dodeljen, Zapocet, Zavrsen)
VALUES (1, 1, 1, '2006-07-15', '2006-07-07', '2006-01-01');
COMMIT;

ako u tabeli RADNIK imate da je radnik sa RADNIK.ID_RADNIKA = 1 zaposlen na radnom mestu RADNIK.ID_RADNOG_MESTA = 2? (Obratite paznju da je posao uradjen pre nego sto je i dodeljen!)

Ovakvo nesto se moze spreciti samo fizickim metodama represalija nad zaposlenima u firmi. Zabrana instaliranja generickih SQL programa cak i administratorima jer boze moj on je mozda drug nekome ko zna SQL.


I na kraju zbog jake simetricnosti modela (slicnost izmedju 'Alati' i 'Materijali' i njihove upotrebe) bi se dalo razmisljati i o generalizaciji ove dve tabele u tabelu 'Resursi', pa onda samo jedna tabela 'Potrebni_resursi' i jos jedna tabela za 'Izdati_Resursi'. Ali ova ideja je data nakon povrsnog razmatranja modeliranog sistema i sigurno bi trebalo dublje analizirati sistem da bi ova ideja bila primenjena.

"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at.

Sajt: www.baze-podataka.net


+2 Profil

icon Re: Teorija Vs. Praksa18.07.2006. u 20:46 - pre 216 meseci
Svaka cast momci! Ovo se zove konstruktivna diskusija! Mogao bi moderator ovu temu TOPovati?

Nego, sad shef kad dodje, moze samo da potvrdno klimne glavom i da odrijesi kesu za gajbu pive i neko dobro pecenje.

Ne znam ima li smisla sada, da i ja dodajem svoje vidjenje ovog zadatka, jer se ne bi skoro nimalo razlikovalo od vec napisanih.
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

amladjo
Mladen Arbutina
Novi Sad

Član broj: 30160
Poruke: 53
*.ptt.yu.

Sajt: www.dynasoft.rs


Profil

icon Re: Teorija Vs. Praksa18.07.2006. u 23:54 - pre 216 meseci
@chachka, svaka čast na detaljnosti!
Citat:
Resenja (ili je bolje reci resenje?) koja su ponudili Amladja i Broker prvo pate od nedostatka referencijalnih integriteta (u daljem tekstu RI).
Ako ne modelirate i ne upotrebljavate RI onda slobodno umesto Relacionih sistema za upravljanje podacima (RDBMS) mozete koristiti FAJL SISTEME!

Nisam primetio da ti nešto nije bilo jasno u skraćenoj notaciji koju sam naveo, tvoja je svakako detaljnija ali opet bežiš od konkretne stvari pravdajući se da kao nisam naveo to i to. Tvoje rešenje će možda moći da sprovede i Seka ali da li mi pričamo o tome?

Dopusti, kako kaže Dejan, da nas šef časti pivom.
Naš šef bi recimo poželeo da jedan radnik radi na jednom zadatku kroz više etapa. Naš šef nas je također obavestio da podatke koje su operateri u međuvremenu uneli hteo da zadrži i samo "proširi" za ovu varijantu.
Nadam se da nećeš razočarati našeg šefa i reći da moraš praviti novi "projekat" i da će to trajati toliko dugo kao osnovni jer ipak, ovo je samo jedna sitnica koje nije uspeo da se seti.
Šefu se jako sviđa tvoja notacija, puno je bolja i, nekako stručnija, pa te moli ako može isto tako - da bi ga Seka lakše sprovela.

Još nešto, šef kaže: "Nisi dobro razumeo Seku ili se ona nije dobro izrazila ali njoj ne trebaju samo datumi nego i datum i vreme početka i kraja zadatka pa ako možeš i to da napraviš. Hvala."

Veliki pozdrav za Zidara, mada me nije dobro citirao.
Šef će svakako tražiti sve moguće izveštaje po svemu mogućem što se unosi, to je stvar kreiranja upita, i to ćeš lako/teško izvesti, to svakako zavisi od toga kako je projektovana baza. Mislim da još nije izmišljena baza u kojoj ćeš sve upite napraviti bez korišćenja JOIN-a i kad moraš da upotrebiš JOIN jednostavno moraš. Odnosno, kakva god da se baza smisli uvek će se desiti da Šef traži izveštaj koji zahteva JOIN i onda: "da je baza projektovana tako i tako upit bi mogao biti bez njega".
Pitanje grešaka operatera je vrlo zanimljivo, znači ako umesto šifre radnika 1232 upišem 1233 a šifru zadatka tačno pogodim (čudnim čudom) umesto boksera će mi doći lepa Kata? Da mi "pokaže" kako se trebuje? Ljudi, pa ovo NIJE smešno, koristim li ja išta osim šifara?
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.tippnet.co.yu.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Teorija Vs. Praksa19.07.2006. u 09:33 - pre 216 meseci
Citat:
amladjo:
Nisam primetio da ti nešto nije bilo jasno u skraćenoj notaciji koju sam naveo, ...

Meni je jasno, ali ova tema moze biti nekome od koristi. Ne meni i ne tebi, od nje nema koristi ni Broker, ni Dejan, ni Zidar (izvinjavam se svima koji nisu nabrojani, a i onima koji jesu, a osete se uvređeni :). Ova tema može da pomogne ljudima koji tek ulaze u svet programiranja baza podataka, npr. loshmiscg (veoma je aktivan na forumima o Delphi-ju i Access-u, vidi se da se trudi da nauči).

Ako smo krenili sa rešavanjem konkretnog problema, dajte rešenje kompletno. Prepiska između tebe i Brokera se svela na to 'ma da jesi (jesam) pogrešio, ali se to sigurno nebi desilo sa si (sam) koristio foreign key-jeve'. Ko brani momentalnu upotrebu foreign key-jeva?

Digresija: Imam kolegu koji je jednom prilikom kreirao stotinjak tabela u bazi. Pitam ga: Gde su referencijalni integriteti? Kaže: To ću uraditi posle. Ni posle godinu dana ih nije ubacio!

Meni je bilo jasno da podrazumevate referenciranje tabele upotrebom primary key-jeva, ali to nemora da bude tako. Referenciranje ka drugoj tabeli se može ostvariti preko bilo kojeg ključa (alternativnog, surogatnog, prirodnog, kandidata za ključ). U sadašnjim implementacijama SUBP-a se to postiže kreiranjem dodatnih UNIQUE INDEX-a.

Razlika između fajl sistema i SUBP-a je između ostalih i ta što fajlovi nemaju vezu ka drugim fajlovima. Tabele mogu i moraju da imaju veze (FOREIGN KEY) ka drugim tabelama. I fajlove i tabele možeš da čitaš, pišeš, menjaš, brišeš, razlika je u vezama.

(Ko je to viknuo WinFS?!!) :)

Nije ni moje rešenje bez propusta. Još kako bih u stvarnom projektu imao što-šta da priupitam i seku kadrovkinju, i batu šefa i tatu direktora. Ali bi se takva pitanja i odgovori preko foruma otegli nedeljama. (Zidar je to radio u nekim temama.)


Citat:
amladjo: Naš šef bi recimo poželeo da jedan radnik radi na jednom zadatku kroz više etapa. Naš šef nas je također obavestio da podatke koje su operateri u međuvremenu uneli hteo da zadrži i samo "proširi" za ovu varijantu.

Citat:
amladjo: Još nešto, šef kaže: "Nisi dobro razumeo Seku ili se ona nije dobro izrazila ali njoj ne trebaju samo datumi nego i datum i vreme početka i kraja zadatka pa ako možeš i to da napraviš. Hvala."

Da li su ovo nove dopune zahteva originalnom Brokerovom problemu? Ako jesu, rado ću dopuniti model nakon svojih dnevnih obaveza.


Srdjan

PS: Nedavno si mi rekao da ja vas (malo slovo - množina) ne poznajem. S obzirom da ni vi ne poznajete mene, nemojte mi zameriti ako čas koristim ti, čas vi, čas mi (Matematičar - imao 3 iz Srpskog :( ). Iako sam citirao Amladju obraćam se svim učesnicima foruma (i onima koji pišu i onima koji samo čitaju)

"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.it-austria.net.

Sajt: www.baze-podataka.net


+2 Profil

icon Re: Teorija Vs. Praksa19.07.2006. u 09:57 - pre 216 meseci
Bilo bi dobro da sada dodje seka iz kadrovskog i izdiktira, koje sve informacije i u kojim slucajevima zeli imati prikazane na ekranu. Programer/projektant odmah konvertuje te njene zelje u SQL upite. Dakle, zgodno za nastavak konstruktivne diskusije bi bilo to, da uzmemo jedan od ponudjenih modela(kako odluciti, koji je najidealniji?) i na osnovu njega sklepamo 10-20 smislenih SQL upita za seku iz kadrovskog.

Vjerujem da bi bilo zanimljivo vidjeti razlicita rjesenja i ponesto nauciti od starijih i iskusnijih kolega.

Shefe, de posalji seku iz kadrovskog, da nam izdiktira svoje zelje!


Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

amladjo
Mladen Arbutina
Novi Sad

Član broj: 30160
Poruke: 53
*.ptt.yu.

Sajt: www.dynasoft.rs


Profil

icon Re: Teorija Vs. Praksa19.07.2006. u 11:09 - pre 216 meseci
Nikada mi nije bila namera da bilo kojeg programera početnika uporedim sa Sekom. Seka je izmišljeni i karikirani lik koji predstavlja operatera. Operateri su ljudi od krvi i mesa koji vrlo konstruktivno mogu učestvovati u izradi projekta. Seka je samo kroz humor trebala da skrene pažnju na to šta joj je bitno, bez namere da se neko uvredi. I Šef je takav lik.
I sam sam neko vreme bio operater tako da mi to pomaže da lakše razumem njihove probleme i pokušam što jednostavnije da ih rešim.

Tebi je izgleda samo bitno, moram tebe da citiram, ko ima duži.
Meni to, od početka, nije bila namera. Moja je namera, između ostalog, da uporedim svoje iskustvo sa drugim ljudima, možda i ja nešto naučim iz toga a ne samo početnici. Profesija kojom se bavim upravo to od mene i zahteva, da se stalno usavršavam. Najmanje što želim jeste da sve ljude koji ovde diskutuju poslažem po "dužini" što ti uporno činiš.

Ako hoćeš da neko nešto konstruktivno nauči iz ove teme nemoj da bežiš od početnog problema:
Da li je bolje dodati ID kao primarni ključ i N:M vezi ili nije.

Izneo si svoj model ali si stao kod prve promene. Upravo sam o tome i pričao u prethodnim postovima. Tvoj model jednostavno ne trpi izmene a ti me ispravi ako grešim.

Veliki broj tvoj komentara u ovoj temi je ostao bez odgovora, namerno.
Ako ti je stvarno cilj da ovde nešto pokažemo bilo bi dobro da razmisliš i takve komentare jednostavno izbaciš. Moramo li da dokazujemo da nemaju veze sa početnim problemom.

Da rezimiram, napravljen je projekat, on funcioniše nekoliko meseci i onda NAM Šef javlja sa zahtevom za izmenu strukture. Dajte zahteve. Dajte rešenja.
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Teorija Vs. Praksa19.07.2006. u 14:33 - pre 216 meseci
Citat:
Da rezimiram, napravljen je projekat, on funcioniše nekoliko meseci i onda NAM Šef javlja sa zahtevom za izmenu strukture. Dajte zahteve. Dajte rešenja.

Mladjo, sef nikad ne trazi promenu strukture. On ti iskazuje novu potrebu, koju nije spomenuo kad se projekt razvijao. To ce ponekad zahtevati izmenu strukture a nekada ne. Da definisemo izmenu strukture: Bilo koja od sledece tri stvari:
1. dodavanje nove tabele ili
2. dodavanje novog polja u postojecu tabelu bez uticajka na PK
3. dodavanje novog polja koje je deo PK, pa se propagira svuda u child tabele gde iamo migrirani PK
Dodabanje novog view-a nije promena strukture baze

Surogat key 'pomaze' samo u trecem slucaju, ali samo prividno. Uvodjenjem surogat key bilo sta ce postati jedinstveno i 'normalizovano'. Sve sto moze surogat key, moze o kompozitni, samo ima vise pisanja kad se rade JOINs. Sistem bez surogat keys garantuje manje potreba za JOIN, iako su oni koji ipak moraju da se rade slozeniji, idu po vise polja. Manje JOINa, manje view-a => ukupan broj objekata o kojima treba voditi racuna tokom razvoja i zivota sustema je manji. Iz toga sledi da je u stvari manje posla ako se ne koriste surogat kljucevi. Ponekad se ne mogu izbeci, ali ne treba gurati pravilo "Po svaku cenu treba koristi surogate umesto kompozitnih kljuceva jer su bolji".

Pusti pricu o teoriji i praksi. Moja prababa je znala iz prakse da budjav hleb pomaze da rana zaraste, a zivela je u 19. veku. Ipak je trebalo da dodje 1943 i da Aleksandar Fleming shvati da je budj gljiva od koje se moze napraviti lek zvani penicilin. Danas niko ne stavlja budjav hleb na rane, iako je praksa pokazala da to radi. Onda su od penicilina razvili i streptomicin, kao bolji od penicilina. Pa su ga u praksi doktori davali svima, maloj deci pogotovo. Zato ja danas imam zelene zube i ne cujem na jedno uvo. Onda je neko proucio i praksu i teoriju i zabranio streptomicin za davanje deci i preporucio da se bas i ne koristi ako ne mora ni za odrasle.

Surogat key je isto kao neutralni element u matematici. Sta god pomnozis sa 1 dobijes to isto. To ne znaci da svakom mnozenju treba pripisati x1. ili svakom sabiranju dodati +0. To radi suragat key, mnozi sa jedinicom i dodaje nulu u svaku racunsku operaciju. Ne pomaze nista, ali za razliku od matematike moze da napravi stetu. Medjutim, ako se pazljivo radi, i ne mora da nanese stetu. Jedino kad ima previse 'moze' i 'ako' stvari lako krenu naopako.

Opet ne kazem nemoj da koristis surogat keys. Ne kazem da ti radis pogresno, niti da treba da menjas stil rada. Dozvoli samo ideju i mogucnost da ce sistemi bez ili sa minimalnom upotrebom surogata isto tako raditi kao i oni sa surogatom. Svacija je praksa razlicita. Moja traje vise od 20 godina, svasta sam video, svasta probao, svakojake greske napravio i na osnovu toga mogu da kazem da je od surogat keys veca steta nego korist. Dozvoli samo da oni sa manje iskustva koji citaju ovaj forum imaju vise od jedna opcije na raspolaganju i da cuju za i protiv pa neka sami vide sta ce.

:-)
 
Odgovor na temu

amladjo
Mladen Arbutina
Novi Sad

Član broj: 30160
Poruke: 53
*.ptt.yu.

Sajt: www.dynasoft.rs


Profil

icon Re: Teorija Vs. Praksa19.07.2006. u 18:03 - pre 216 meseci
Čini mi se da je ova poruka Zidara negde najviše pogodila suštinu.
Moram komentarisati kako je za streptomicin praksa bila lošija od teorije pa zbog toga moramo uvek i u svakom slučaju da se tako ponašamo. Smatraću to, u ovom slučaju, samo želju da se po svaku cenu izbegne poseban primarni ključ jer nije deo teorije već prakse. Poštujem odluku.

Smatraću takođe da se kompozitni ključ koji se proteže u nekoliko child tabela može promeniti iz dva polja u, recimo, četiri i da pravi stručnjak svog zanata ipak drži konce u rukama. Moguće je, i sam sam to nekada činio.
Ubiješ sve foreing ključeve, ubiješ postojeći primarni ključ, dodaš potrebno polje u glavnu tabelu i sve child tabele, stvoriš primarni ključ, stvoriš sve foreing ključeve, zatim menjaš sve upite (i view-ove) da bi sve to profunkcionisalo.
Jeste dugotrajan proces ali je moguć.

Lično, negde na pola puta sam se umorio od toga. Posle toga, ova odluka mi je olakšala i ubrzala dane i dane posla. Ja sam imao više slobodnog vremena a klijentu je ispunjen zahtev na vreme. Nije mi se "lupilo o glavu", barem ne do sada. Upiti nisu sporiji, čak su ponekad puno brži. Negde je to i poruka koju sam "slao" ovde.

Citat:
Opet ne kazem nemoj da koristis surogat keys. Ne kazem da ti radis pogresno, niti da treba da menjas stil rada. Dozvoli samo ideju i mogucnost da ce sistemi bez ili sa minimalnom upotrebom surogata isto tako raditi kao i oni sa surogatom. Svacija je praksa razlicita.

Citat:
Dozvoli samo da oni sa manje iskustva koji citaju ovaj forum imaju vise od jedna opcije na raspolaganju i da cuju za i protiv pa neka sami vide sta ce.


Čini mi se da će oni sa manje iskustva koji čitaju ovaj forum upravo doći do tog zaključka.

Pozdrav Zidaru :)
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.tippnet.co.yu.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Teorija Vs. Praksa19.07.2006. u 20:56 - pre 216 meseci
@amladjo

PRVO

Citat:
amladjo: Da li je bolje dodati ID kao primarni ključ i N:M vezi ili nije.

Brokerov prvi post:
Citat:
broker: ... zavisi ...

Moj prvi post:
Citat:
chachka: ... zavisi ...


DRUGO

Citat:
amladjo: Tvoj model jednostavno ne trpi izmene a ti me ispravi ako grešim.

Ne grešiš. Moj model zaista ne trpi izmene i ja ne mogu da ga izmenim, pogotovo ako mi u PostgreSQL-u uradis
Code:

REVOKE CREATE ON SCHEMA public FROM chachka;


TRECE

Tvoj prvi post
Citat:
amladjo: ... za koju varijantu ću se onda odlučiti?
Naravno za drugu varijantu sa posebnim primarnim ključem kroz jedno polje ...

Nakon toga Broker postavlja problem, a ti dajes resenje.
Broker to resenje komentarise sa
Citat:
broker: Mislim da nema potrebe da se tabelama MATERIJALI_ZADATKA, IZDATI_MATERIJALI i IZDATI_ALATI uvodi posebno polje kao kljuc tabele.

A ti na to kazes:
Citat:
amladjo: Dakle brokerove korekcije su sasvim na mestu ali "tvrdoglavo" zadržavam posebne ID ključeve.

Izvini sto sam rekao
Citat:
chachka: ... ova tema moze biti nekome od koristi. Ne meni i ne tebi, ...

jer si ti ocigledno prihvatio da se surogat kljuc ne trpa po default-u u svaku tabelu.
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

amladjo
Mladen Arbutina
Novi Sad

Član broj: 30160
Poruke: 53
*.ptt.yu.

Sajt: www.dynasoft.rs


Profil

icon Re: Teorija Vs. Praksa19.07.2006. u 21:31 - pre 216 meseci
@chachka

Citat:
Dakle, kada se pojavi sef sa zahtevima, tada cu prilagodjavati model.


Šef se javio a mi još uvek čekamo...
Ili si jednostavno odlučio da zanemariš šefa (Izabrao si "1. način")?
Sa REVOKE si to jednostavno dokazao.
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Re: Teorija Vs. Praksa20.07.2006. u 00:33 - pre 216 meseci
NE bih bas sad da ulazim u polemiku ali bih rekao da radi produktivnosti treba ostaviti po strani sujetu i zelju da se pokaze znanje, nego da gledamo da ova diskusiaj bude korsina onima koji tek uce. Dakle, valjalo bi izbegavati ijave tipa "mator sam ja da bi vama objasnjavao", "imam preca posla", a narocito zalazenej u neke detalje koji nisu bitni a odvlace paznju od onoga sto jeste bitno.

Uzgred, sef ostavio ceduljce:

"Zaboravio sam reci, jedan posao moze da radi vise radnika".

Kajla. Ovo je jedna od stvari koje projektant MORA da predvidi unapred i da pre nego sto pocne da radi projekat, razresi sa nalogodavcem da li je takva potreba ili nije.

Na poledjini cedulje stoji napomena za Cacku:

"Magacioneri se salbo snalaze sa racunariam i bune se da im je unos podataka u trebovanja komplikovan. Magacioner treba da u sto manje koraka dobije sve potrebne podatke za izdavanje materijala i robe i mogucnost da potvrdi sta je od potrebnog izdato i u kojoj kolicini. Potreba unosa sifre radnika i sifre zadatka je neprihvatljiva i treba iskoristiti to sto je vec jednom radniku dodeljen zadatak da se izbegne nepotrebno ponovno unosenje iste dodele prilikom izdavanja materijala. Cesto se desavaju i greske da se prilikom izdavanja materijala, izda materijal radniku za pogresan zadatak ili za neki raniji zadatak, a ne onaj koji je trebalo da se uradi".

 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.tippnet.co.yu.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Teorija Vs. Praksa20.07.2006. u 13:35 - pre 216 meseci
"Creating a database can be like creating a universe, only more complicated. At least when the universe was created, there was no one around to complain."
- Michael J. Hernandez

Citat:
broker: NE bih bas sad da ulazim u polemiku ali bih rekao da radi produktivnosti treba ostaviti po strani sujetu i zelju da se pokaze znanje, nego da gledamo da ova diskusiaj bude korsina onima koji tek uce. Dakle, valjalo bi izbegavati ijave tipa "mator sam ja da bi vama objasnjavao", "imam preca posla", a narocito zalazenej u neke detalje koji nisu bitni a odvlace paznju od onoga sto jeste bitno.

Zamerka prihvacena, slazem se i prekidam takvo ponasanje.

Sta se novo izdesavalo po pitanju korisnickih zahteva?
Citat:
broker: Magacioneri se salbo snalaze sa racunariam i bune se da im je unos podataka u trebovanja komplikovan. Magacioner treba da u sto manje koraka dobije sve potrebne podatke za izdavanje materijala i robe i mogucnost da potvrdi sta je od potrebnog izdato i u kojoj kolicini. Potreba unosa sifre radnika i sifre zadatka je neprihvatljiva i treba iskoristiti to sto je vec jednom radniku dodeljen zadatak da se izbegne nepotrebno ponovno unosenje iste dodele prilikom izdavanja materijala. Cesto se desavaju i greske da se prilikom izdavanja materijala, izda materijal radniku za pogresan zadatak ili za neki raniji zadatak, a ne onaj koji je trebalo da se uradi".

Ovo su zahtevi koji se odnose na graficki (tekstualni?) interfejs izmedju korisnika i baze podataka. Ovo je forum o bazama podataka, a ne o izradi GUI-a. Ja za izradu programa koristim Delphi te nakon dizajna baze mozemo preci u forum o Delphi-ju i pokusati da sklepamo neku aplikaciju. Sumnjam da bi to uspelo jer se onda vec pokrece pitanje ko ima pristup kojem SUBP-u zbog kreiranje baze, SQL script bi morao biti potpuno standardizovan zbog raznih SUBP-ova, pa nacin konekcije na bazu (ODBC, ADO, BDE, DBExpress, ...), pa izrada reporta jer uz Delphi 7 dolazi Rave Report kojeg ja u zivotu nisam koristio, ... Ovo se jako tesko moze uspesno dovesti do kraja.

Zidar je radio nesto slicno upotrebom Access-a i za deo baze i za deo GUI-a. Ja Access ne koristim.

Citat:
amladjo: Naš šef bi recimo poželeo da jedan radnik radi na jednom zadatku kroz više etapa. Naš šef nas je također obavestio da podatke koje su operateri u međuvremenu uneli hteo da zadrži i samo "proširi" za ovu varijantu.

Citat:
broker: "Zaboravio sam reci, jedan posao moze da radi vise radnika".

Ovo vec prerasta u ozbiljan projekat pracenja proizvodnje te mu se ozbiljno mora i pristupiti.
Citat:
broker: Ovo je jedna od stvari koje projektant MORA da predvidi unapred i da pre nego sto pocne da radi projekat, razresi sa nalogodavcem da li je takva potreba ili nije.

Tacno! Slicno nesto sam napisao i ja
Citat:
chachka: Nije ni moje rešenje bez propusta. Još kako bih u stvarnom projektu imao što-šta da priupitam i seku kadrovkinju, i batu šefa i tatu direktora.

Mada smo izgleda ostali bez seke :(, jer se neradi o kadrovskoj evidenciji. Izgleda smo dobili jos jednog batu magacionera :)

Zato evo pitanja:

1. Za kakvu firmu mi to uopste radimo? Da li je firma nova, ili vec duze vreme posluje? Kakav je kadar u firmi? Da li sef proizvodnje ima iskustva na toj poziciji, ako ne da li je bar bio radnik u firmi koja se bavi slicnom proizvodnjom? Da li je upoznat sa tehnoloskim procesima proizvodnje ili ce i on da se uci usput kako firma bude napredovala?

2. Sta firma uopste proizvodi? Da li se radi o pojedinacnoj, serijskoj, masovnoj proizvodnji? Da li se u proizvodnji koriste samo alati i materijali ili se koriste jos neki resursi (vreme, usluge drugih firmi, energenti, masine, sudovi za odlezavanje)?

3. Da li se koriste radni nalozi? Ako ne, na osnovu cega se vrsi obracun kostanja gotovog proizvoda?

4. Ako vec postoji grupa radnika koja radi na jednom poslu, da li medju njima postoji predradnik? Da li se radnici zaduzuju za jos nesto (radna odela, zastitnu opremu) osim za alate?

5. Da li se desava da se alat pokvari? Da li se pokvareni alat vraca magacioneru ili se otpisuje ili se daje sluzbi odrzavanja? Sta se desava ako je sav izdati materijal skart?

6. Da li imamo jedno ili vise radnih centara (Nis, Beograd, Novi Sad)? Da li imamo jednog ili vise magacionera (magacioner alata, magacioner materijala, magacioner gotovih proizvoda)? Cak i ako ih nemamo da li imamo potrebu za vise magacina?

7. Da li su propisana potrebna radna mesta po etapama proizvodnje? Da li se sme izdavati materijal i alat za poslednju etapu iako prva jos nije zavrsena? Koliko radnika radi na jednoj etapi? Da li se alat i materijal koriste u jednoj etapi ili se koriste za vise etapa?

Ima tu verovatno jos pitanja, ali cu stati.
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.tippnet.co.yu.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Teorija Vs. Praksa20.07.2006. u 22:39 - pre 216 meseci
Ok, predpostavio sam da ce ovo tesko ici, te cu ja dati i odgovor na pitanja (teram vodu na svoju vodenicu :)

1. i 2.

Angazovala nas je novo formirana firma da izradimo informacioni sistem cija je namena pracenje procesa proizvodnje. Firma se bavi proizvodnjom crpnih pumpi (o ovome nemama pojma, mozda i lupim koju te me ispravite :). Proizvodnja se radi po narudzbini za poznatog kupca.

Direktor proizvodnje je kvalifikovano tehnicko lice sa velikim iskustvom u slicnim firmama. Direktor proizvodnje je zaduzen kako za pracenje i unapredjenje proizvodnje, tako i za kontrolu kvaliteta materijala, alata, gotovih proizvoda. U ovom trenutku je firmi preko potrebno pracenje proizvodnje, dok sam deo kontrole kvaliteta ostavljaju za kasniju doradu informacionog sistema. Pored direktora proizvodnje imamo i dva sefa proizvednje koji su neposredno nadredjeni radnicima u proizvodnji. Sefovi su po recima direktora proizvodnje solidnog znanja, sa prostorom za napredovanje.

U proizvodnji se koriste materijali i alati. Postoji i znacajan utrosak elektricne energije, ali se on ne moze precizno izmeriti po proizvedenoj pumpi. Direktor kaze da se troskovi elektricne energije obracunavaju na mesecnom nivou.

3.

Radni nalog postoji i potpisuje ga sef proizvodnje. Na radnom nalogu je naveden datum izdavanja radnog naloga, broj radnog naloga, koja pumpa se proizvodi, ko sve od radnika ucestvuje u proizvodnji, koji su materijali potrebni i u kojoj kolicini i koji su alati potrebni i u kojoj kolicini. Primopredaji materijala i alata obavezno prisustvuje sef proizvodnje koji i potpisuje da su mu alati i materijali izdati od strane magacionera.

Iako se proizvodnja odvija u etapama materijali i alati se izdaju za konkretanu pumpu, i mogu se izdati odjednom ili u vise navrata.

3a. U ovom momenti pitamo direktora da li postoje normativi za proizvodnju pumpi?

Da, normativi postoje (Nasi stari poznanici 'Potrebni_Materijali' i 'Potrebni_Alati' :), ali se mogu izdati i vece kolicine zbog brzog prevazilazenje problema ako je povecan skarti ili ako se alat osteti (a magacioner je bas otisao na dorucak?).

4.

Nema predradnika, sef ih stalno nadgleda i prati procese proizvodnje i upotrebu resursa. Zastitna oprema postoji, ali je njen rok trajanja godinu i po dana te se ona daje radniku na duze koriscenje. Radnici sami brinu o svojoj opremi. U slucaju da radnik ostane bez opreme ili mu se oprema osteti, odmah mu se daje druga.

4a. Direktore, ovakvim davanjem opreme na koriscenje moze doci do zloupotrebe opreme. Kako sprecavate zloupotrebu?

U ovom trenutku se ne razmislja o tome, veruje se radnicima, imaju dobre uslove rada i solidne plate, te se smatra da nece biti zloupotreba. U svakom slucaju, direktor ce u jednom trenutku uporediti koliko je sluzba nabavke nabavila opreme, a koliko on ima radnika (svaki radnik ima jednu opremu). Ako bude velikih odstupanja morace da smisliti sistem za pracenje upotrebe opreme.

5.

Vec je ranije spomenuto da moze doci do ostecenja alata. Osteceni alat se daje sluzbi kontrole kvaliteta, koka dalje preuzima nadleznost nad ostecenim alatom. I materijal i alat se mogu dodatno izdati na zahtev sefa proizvodnje.

6.

Postoji samo jedna lokacija na kojoj se vrsi proizvodnja pumpi. Zbog cene potrebnog alata i zalihe materijala, uopste se ne razmislja o joj jednoj fabrici. Postoje dva agacionera, ali zajedno duze magacin, jedan u prvoj smeni, a drugi u drugoj smeni. Moze se reci da se i materijal i alat drze u jednom magacinu, s tim da se alat drzi u posebno ozidanoj prostoriji. Proizvedene pumpe se odmah otpremaju kupcu, bez zadrzavanja u magacinu. Ako i dodje do zastoja u isporuci pumpa ostaje u proizvodnoj hali.

7.

Na jednom radnom mestu se mogu izvrsavati sve etape u proizvodnji konkretne pump. Etape sluze da se prati vremenski napredak proizvodnje. Vec je receno da se materijal izdaje za konkretnu pumpu, nezavisno od etape u kojoj se teenutno nalazi proizvodnja. Svaku etapu izvrsavaju svi radnici zajedno (eventualno je neki na pus pauzi). Alat je univerzalan za sve etape. Izdavanje alata i materijala se, kako je vec recno moze obaviti u celosti ili u vise navrata (na kašičicu)


Ima li ko sta da dodada na ove odgovore? Da li da ih usvojimo ili neko ima bolje ideje? Nisam uspeo da ubacim 'Zadaci' iz originala, ali njihovu ulogu ovde potpuno identicno obavljaju 'Gotovi_Proizvodi'

Srdjan

PS: Ljudi pomagajte vodim diskusiju sam sa sobom!!!!! :)

[Ovu poruku je menjao chachka dana 20.07.2006. u 23:52 GMT+1]
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.neobee.net.



Profil

icon Re: Teorija Vs. Praksa21.07.2006. u 11:12 - pre 216 meseci
Pozdrav,

neću remetiti odgovore, sem da bi možda trebali odraditi prvo magacin zaliha (materijala) i alata, tabele, povezivanje, kljucevi, pogledi... Pa onda redom...

p.s. mogao bih propratiti pravljenje korisničkog interfejsa u delphi - u...
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Teorija Vs. Praksa21.07.2006. u 13:43 - pre 216 meseci
Predlazem da se promeni delatnost firme. 'Crpne pumpe' se ne proizvode na opisani nacin - radnici zaduze materijal i alat i onda naprave pumpu, pa posle vrate alat i vrate visak materijala. Sa takvim procesom propali bi posle sest meseci i niakd nam ne bi platili projekat.

Opisani nacin sa izuzumanjem materijala i alata vise odgovara usluznimdelatnostima - opravka puteva, opravka vodovoda, molerski radovi, pranje prozora, ciscenje.

Predlazem dve opcije:
a) Molerska firma. Firma radi na ugovor za vece firme. Kad se ugovori posao, odrede se tim (radnici + predradnik) koji ce na tome raditi. Naruci se materijal, koji stize u magacin, odakle ga tim izuzima. Zavisno od konkretnog posla, potreban je razliciti alat (merdevine razlictih velcina, kompresori, cetke) i materijal (boje, lakovi, razredjivaci). Radnici naravno duze i radna odela i zastitnu opremu. Radna odela se zaduzuju dva puta godisnje, ili po potrebi.
Firma naplacuj 'djuture' - dogovorenu sumu za ceo posao. Firma radi sa nekoliko dobavljaca za boje. Za svaki posao, trze ponudu od dobavljaca i opredeljuju se za jednog. Firma dobija poslove na licitacijama - za svaki posao sastavlja ponudu koju podnosi potencijalnom poslodavcu. U ponudi su opisani radovi koji ce se izvesti. Cesto se radovi izvode na osnovu predmera i predracuna koji dostavi narucilac radova.

b) Firma za pranje prozora. Firma pere prozore na velikim (poslovnim) zgradama. Kad se ugovori posao, odrede se tim (radnici + predradnik) koji ce na tome raditi. Firma ima svoju zalihe deterdzenta za pranje i potrosnog materijala - krpe, cetke. Zaliha se dopunjava po potrebi. Od velikog alata koriste se merdevine, pokretne skele ili hidraulicne platforme, elektricni vitlovi, produzni gajttani, agregati za struju. Firmu su osnovali alpinisti, pa svako imalicnu opremu - konopce i one kajase koje uz to idu. Firma kupuje radnicima jednom godisnje novu licnu opremu.
Firma naplacuj 'djuture' - dogovorenu sumu za ceo posao. Firma ima jednog snabdevaca za deterdzent i potrosni materijal. naruceni materijal placa se u roku od 30 dana. Firma dobija poslove na licitacijama - za svaki posao sastavlja ponudu koju podnosi potencijalnom poslodavcu. U ponudi su opisani radovi koji ce se izvesti.
Radnici koji rade u firmi nisu zaposleni, nego ih frima poziva na ugovor. Placa ih djuture, po obavljenom poslu. Isplate su na ziro racun. Posto su potnijlni radnici alpinisti, cesto su odsutnni, idu na Kilimadzaro ili Anapurnu po nekoliko meseci. Firma vodi kalendar raspolozivosti radnika.
 
Odgovor na temu

grebenar
Pavle Grebenar
IT manager
Zavidovici

Član broj: 86758
Poruke: 8
*.dlp400.bih.net.ba.



Profil

icon Re: Teorija Vs. Praksa21.07.2006. u 14:42 - pre 216 meseci
Zdravo svima
zaista sam se moraou ukljuciti u diskusiju. Rijec je zapravo o tome da li neki pojam smatramo relacijom ili entitetom, i to u svom prvom poimanju pri razvoju baze. Napomenucu da sve vise "prakticara" zastupa tezu o OID-u tj. rjesenju tipa (id, radnik_ID, zadatak_id) Dakle, bez pozivanja na ev. modifikacije, u startu je jasno da sa entitetima (sa uvedenim id) imamo fleksibilniju postavku baze za daljnji razvoj. Domenu ovako uvedenog ID cak dijeli vise tabela za primarni kljuc (generisu se iz jedne sekvence)
 
Odgovor na temu

misk0
.: Lugano :. _.: CH :.

SuperModerator
Član broj: 634
Poruke: 2824
*.adsl.ticino.com.

ICQ: 46802502


+49 Profil

icon Re: Teorija Vs. Praksa23.07.2006. u 13:11 - pre 216 meseci
Odem na odmor, kad se vratim imam sta da citam. Kvalitetna diskusija, svi su se potrudili, svaka cast! Ide u TOP
Zamolio bih vas sve, kad dodje do sukoba misljenja tj neslaganja, nemojte pokusavati da diskreditujete sagovornika govoreci 'ti si ovakav ili onakav, ti si ucio ili nisi ucio i slicno' .. ne daje fin miris citavoj diskusiji :).

:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
 
Odgovor na temu

chachka
Srđan Mijatov
Programer
BUS Computers
Kikinda

Član broj: 53780
Poruke: 576
*.tippnet.co.yu.

Sajt: www.baze-podataka.net


+4 Profil

icon Re: Teorija Vs. Praksa23.07.2006. u 17:24 - pre 216 meseci
Citat:
Zidar: Sa takvim procesom propali bi posle sest meseci i niakd nam ne bi platili projekat.

Znaci firma bi radila jos punih 5 meseci nakon propasti naseg IS-a

Za koju smo se "firmu" odlucili? Zidarevi moleri deluju sasvim OK. S tim da ja nebih dalje produbljivao problem na nabavku, prodaju, ugovaranje.
"The best code is no code at all."
- Zidar (ES član)
"Biggest obstacle to learning
SQL is unlearning procedural
programming."
- Joe
Celko
"Minimize code, maximize data."
- A. Neil Pappalardo
 
Odgovor na temu

[es] :: Baze podataka :: Teorija Vs. Praksa

Strane: < .. 1 2 3 4

[ Pregleda: 21493 | Odgovora: 73 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.