[ antraks @ 25.03.2014. 14:44 ] @
Dobio sam, da tako kazem, manji neki projektni zadatak iz baza podataka. Trebam da izaberem neku temu da napravim specifikaciju, da to izmodelujem kako treba, da napravim bazu podataka. Moze li neko da mi pomogne oko teme?
Neki prijedlog?
Ja stvarno nemam ideju jer se prvi put radim ovo tako da ne znam ni sta ce biti lako da se modeluje a sta ce biti tesko. Kao neki primjer, radili smo danas smo prozivodnja i otkup mlijeka. Proizvodjaci proizvode mlijeko, pa mljekara vrsi otkup itd.
Neke od tema sto su smislili drugi su kosarkaski klub, karate takmicenja neka, forum neki itd.
Teme kao video klub, biblioteka, studentska sluzba nisu dozvoljene.
Svaka pomoc je dobrodosla, pa ako mozete pomoci bilo bi odlicno. Zasad imam 7 dana da odredim temu tu i da priblizno izmodelujem.
[ madcama @ 26.03.2014. 12:39 ] @
Gradsko komunalno preduzeće.
[ captPicard @ 26.03.2014. 13:40 ] @
Citat:
madcama: Gradsko komunalno preduzeće.


Ovo mislim da je ipak malo prekomplicirano.

Savjetujem automehaničarsku radionu, više manje svatko zna kako stvari funkcioniraju tako da ne treba gubiti vrijeme na traženje informacija. Naravno ne može se obraditi cijelo poslovanje. Artikli, Kupci/Dobavljači, RadniNalog, Račun, Narudžbenica, Primka...
Možeš i npr. rezervacije hotelskog smještaja, makar mislim da tu ima malo više posla nego u automehaničarskoj radionici, ali ako imaš volje onda je i ta tema svakako zgodna.
[ antraks @ 26.03.2014. 16:18 ] @
Mislim da bih mogao raditi ovu automehanicarsku radnju. Donekle bih znao sta trebam napraviti.
Kako je receno trebam imati oko 20 entiteta. I veze izmedju njih.
Ovo je zadatak tj. pocetak.
"Napisati specifikaciju informacionih potreba za odabrani projektni zadatak, pa na osnovu specifikacije informacionih potreba projektovati konceptualni model podataka odabranog sistema korištenjem IE notacije."

Ovo je primjer sto smo radili neki dan.

Specifikacija informacionih potreba
Projektovati konceptualni model podataka koji zadovoljava informacione potrebe lanca otkupnih stanica u različitim mestima u kojima se otkupljuje sirovo mleko različitog porekla (npr. kravlje, kozje, ...), kako od individualnih proizvođača, tako i od drugih preduzeća. Otkupljeno mleko se isporučuje različitim mlekarama. Sistem treba da omogući vođenje evidencija o proizvođačima, mlekarama, otkupu, isplatama i isporuci. Za svaku otkupljenu količinu bitna je informacija o kvalitetu. Proizvođač za predate količine dobija potvrdu o količini i kvalitetu predatog mleka. Sistem treba da zadovoljava sledeću specifikaciju informacionih potreba vezanih za obračun otkupljenog mleka i isplate proizvođačima:
Obračun:
Svaka vrsta mleka ima osnovnu jediničnu cenu po litru i jediničnu premiju po litru i masnoj jedinici (masna jedinica je mera kvaliteta). Ukupna cena otkupljenog litra jednaka je zbiru osnovne jedinične cene i jedinične premije pomnožene brojem masnih jedinica: OtkupnaCena = JediničnaCena + JediničnaPremija*Kvalitet Otkupna vrednost mleka izračunava se na osnovu važeće cene na dan otkupa prema formuli: OtkupnaVrednost = OtkupnaCena*Količina
Isplate:
Isplate proizvođačima vrše se povremeno za prethodno predate neisplaćene količine. Obračunati iznos isplaćuje se na odgovarajući račun proizvođača u nekoj banci. Svaki proizvođač može da ima više računa kod različitih banaka.



Da se vratim na svoj zadatak.
Kao neke entitete u automehanicarskoj radnji bi mogao navesti (kao gore navedeno) Automeh. radnja, artikli, kupci, racun u banci, banka (kao u primjeru, da se placa preko banke), narudzba, fiskalni racun (nadam se da moze), mjesto (gdje se nalazi radnja). Ima li smisla ovo sto sam naveo??
Radim ovo prvo put pa mi je nekako tesko odrediti sta sve mogu da upotrijebim. Ako ste voljni da mi pomognete, slobodno recite sta ne valja, sta popraviti i to.
Hvala puno.
[ Zidar @ 27.03.2014. 14:26 ] @
Mehanicarska radnja moze da bude preteska, iznajmljivanje soba je jos teze.

Zasto ne uradis recimo "Otkup jagoda", ili jabuka ili voca generalno. Umesto mlekara imas hladnjace, umesto vrsta mleka imas vrste I sorte voca. Onda mozes da se oslonis na ono sto si ucio u skoli. Za bilo sta drugo treba ti dobar opis problema, koji generalno obezbedjuje neko drugi, a ti modeliras. Ako napravis los opis, docbices I los model, pa ce ispasti da ne znas modeliranje kad u stvari ne znas da napravis opis (to je OK, niko te jos nije ucio da napravis opis problema).

Mozes da uradis I rent-a-car poslovnice, po ugledu na biblioteku. Umesto knjiga iznajmljujes automobile, te umesto ISBN imas VIN broj ili registarsku tablicu. Sve ostalo je prakticno isto.

Ako uzmes slican model, moraces da ga razumes, a I to je nacin da se nesto nauci. Ne verujem da su zabranili biblioteku zato sto svi to zanju, nego zato sto misle da to ima odakle da se prepise. Rent-acar uemsto biblioteke ne dozvoljava da copy/paste postojece resenje. Moraces da promenis sve nazive atributa, nazive entiteta I prilagodis opis problema. To vec nije puko prepisivanje.

Ali, ako professor ne dozvoljava da se uzmu slicne teme, onda izaberi neki process koji mislis da dobro poznajes, makar bila I mehanicarska radnja.

U svakom slucaju, srecsn rad
[ antraks @ 28.03.2014. 23:27 ] @
Vidis nije mi ni palo na pamet da uradim nesto slicno ovom sto imam. Problem je u tome sto ne znam jos da modelujem. Ne znam sta mogu da uzmem za modelovanje da ima smisla nekog.

Mogao bih uraditi otkup voca i proizvodnja od voca. Neke sokove, marmelade i slicno.
Posto rece da zadatak treba da ima oko 20 entiteta. Pa da uspijem da naguram toliko. Moram jos vidjeti s prof. da li moze proci takav model.
Ako to ne upali onda cu pokusati rent-a-car.

Ukoliko imate jos nekakav prijedlog sta bih mogao da radim slobodno podijelite sa mnom. Posto ja uopste nemam predstavu sta moze biti tesko za uraditi a sta lako.

Hvala na pomoci dosad.
[ antraks @ 01.04.2014. 13:11 ] @
Krenuo sam da pravim model pa cu vidjeti sta ce da ispadne na kraju.
Poceo sam ovako.

Entitet Osoba koja ima JMB, ime prezime, adresu. Pa sam mislio da iz nje izvedem entitet zaposleni (ISA veza) koji ce imati platu kao atribut (u hladnjaci, kasnije) i individualni proizvodjac (voca).
Pa proizvodjac koji ce imati individualnog proizvodjaca ili preduzece neko. Da li bi to moglo tako?
Onda Mjesto sa brojem postem i nazivom. A mjesto ce kasnije da bude povezano sa proizvodjacem (slicno kao na slici) a i hladnjaca takodje.
Hladnjaca ima jib, naziv, vlasnik (mozda i nepotrebno), kapacitet, adresa, vrsta voca (koju preradjuje). Nakon toga mislio sam entitet Gotov Proizvod (koji izlazi iz hladnjace) i ide u trgovine na prodaju.
Mogao bih dodati jos neke slicne stvari kao na slici. Otkup, isplata, racun, banka.

Ovo je pocetak pa cu vidjeti kako dalje.
Da li je ovo dobro za pocetak? Nacin i put kojim sam krenuo.
Slobodno dodajte jos ponesto ukoliko znate. I kritikujte ako nesto nije u redu.
[ Zidar @ 01.04.2014. 14:26 ] @
Koju god temu da izaberes, nemoj poceti sa nabrajanjem entiteta. Pocni sa opisom poslovnog problema, onako kako ste to u skoli radili na primeru sa mlekom. Na primer, mozes da kazes: "Preduzece X ima nekoliko otkupnih stanica za voce. Voce se otkupljuje od individualnih proizvodjaca. Pri otkupu, meri se kolicna I kvalietet voca. Pri otkupu, pravi se priznanica za otkup - document na kome pise koliko je cega otkupljeno I od koga, na osnovu koga se vrsi placanje. Za otkupleno voce, placa se u roku od 7 dana na bankovni racun proizvodjaca. Cene se utvrdjuju jednom godisnje za svako ovce I kategoriju, pa se po tom cenovniku placa......" Kad zavrsis opis, onda u opisu trazis imenice - to ce biti entiteti. Onda svaki entitet opises jednom prosto prosirenom recenicom. Na primer, za imenicu 'otkupna stanica' uvodis entitet OtkupnaStanica. O njemu mozes da kazes ovo, na primer:
1) "Otkupna stanica ime neki ID, nalazi se na nekoj adresi, I ima telefon, fax I e-mail adresu, sef stanice je neka osoba." Sad I u toj recenici imas neke nove imenice. Za svaku imanicu uvedes nekakav naziv, pa napises recenicu ovako:
2) "Otkupna stanica oznacena kao [OtkStanID] nalazi se u mestu [Mesto] na adrsi [Adr], ima telefon [Tel], fax [Fax] I e-maila adresu [Email], sef stanice je [Sef]"

Ovo se zove "predikati relacija" ili "znacenje predikata relacija"

To ti je jedan entitet, OtkupnaStanica, I to se formalno prikazuje ovako, kao nekakav skup:
OtkupnaStanica = {[OtkStanID], [Mesto], [Adr], [Tel], [Fax], [Email], [Rukovodilac]}

Sad pogledas u elemente skupa OtkupnaStanica - to ce ti biti atributi. Atributi se definisu nazivom I tipom, pa treba da dodas tipove, ovako nekako:
OtkupnaStanica = {([OtkStanID], int);([Mesto], text(255)); ([Adr], text (255));( [Tel], text (8));([Fax], text(8)); ([Email],text(255));([Rukovodilac],int)}

I tako za sve entitete koje mozes da uocis u tekstu. Ako ne uspe od prve, radis sledecu iteraciju, nesto dodas, nesto oduzmes.

Onda se vratis na teks koji opisuje process, pa ga napises u drugoj verziji. U ovom korku, pokusavs da uocis kako se entiteti odnose jedan prema drugom, I to zapisujes u kratkim recenicama, svaku recenicu numerises I pises u posebnom redu. Na primer:

1) "Otkupna stanica otkupljuje voce od proizvodjaca" Ovo ne mora da pise u opisu bas ovako, ali ti zakljucujes iz opisa problema da se u sustini ovo desava. Onda ides dalje, pa vidis da:
2) Proizvodjacu se izadje priznanica za otkup.
3) Na osnovu priznanice, vrsi se isplata proizviodjacu ne njegov bankovni racun, na osnovu cenovnika.
4) Pravi se cenovnik za svaku godinu.

To su glavni odnosi za opis koji sam ja dao. Tvoj ce opis verovatno biti detaljniji (trebalo bi da bude, a ne da prepisujes moj opis), pa ce I ove recenice izgledati malkice drugacije, ali u sustini to je to. Na osnovu ove cetiri recenice mozes da pocnes da crtas ER dijagram. Da pocnes, a dok ga zavrsis ima jos posla.

U sledecem koraku se vracas na definicije entiteta (oni skupovi, sa ili bez tipova podataka). Za svaki atribut pises ogranicenja. da bi to uradio, moras da napises attribute kao vertikalnu listu, ovako:
OtkupnaStanica :{
[OtkStanID], NOT NULL, int > 0
[Mesto], NOT NULL
[Adr], NOT NULL
[Tel], NOT NULL, dozvoljene samo cifre, duzina tacno 8 karaktera
[Fax], NOT NULL, dozvoljene samo cifre, duzina tacno 8 karaktera
[Email], NULL, ako nije null onda ne sme biti veci od 255 karaktera, mora da ima @ znak, bar jednu tacku iza @, @ ne sme da bude prvi znak, tacka ne sme da bude poslednji znak, izmedju @ I tacke mora da postoji bar jedan zank, iza tacke mora da bude 2 ili 3 znaka
[Rukovodilac], NOT NULL int >0, mora da bude iz skupa zaposlenih u firmi X
}

Obrati paznju na poslednje ogranicenje, Rukovodilac mora da bude iz skupa zaposlenih u firmi X. To znaci da mora da ostoji entitete ZaposleniUFirmiX, koji sadrzi identifikacione brojeve za radnike. Neki od tih radnika bice rukovodioci otkupnih stanica. Ukoliko si u prethodnoj analizi propustio da definises entitet ZaposleniUfirmiX, ovo ce te podsetiti da to uradis. Ja sam propustio da navedem taj entitet, ali zahvaljujuci ovom dodatnom koraku u analizi propust je na vreme uocen. Slicnu situaciju imas kad definises sta se otkupljuje - samo voce koje je definisano negde, sa kategorijama koje su definisane negde, I samo definisano voce I kategorije mogu se nalaziti na cenovnikui, a u priznanicu ide samo ono sto se nalazi u cenovniku.

Dodatna korist od zapisivanja ogranicenja jeste da kad budes pravio tabele, znaces da postavis pravila validacije podatka, sto mnogi zaborave pa dobar model u praksi kljakavo radi. Model nije samo ER dijagram, nego skup {ER dijagram, Ogranicenja, Znacenja predikata relacija}

Sad ovo procitaj jako polako, deo po deo I uradi sta je predlozeno. Samo citanje je posao od 2-4 sata, a razvoj modela (posto napravis dobar opis) ce ti uzeti nekoliko dana. Za skolu je verovatno dovoljno da im odneses prvu iteraciju ER modela, I scve appire koje si napisao da bi do tog koraka dopsao (ovo sto smo pokazali u tekstu).

U praksi, mnogo je lakse kad neko uradi anlizu I modelovanje, pa ti kao mladi programmer pocetnik samo kodiras ogranicenja I pravis interfejs za procese koji se desavaju u sistemu. Nekad je tako I bilo, najiskusniji I najobuceniji ljudi su bili analiticari baza podataka I data-modeleri. Danas se ocekuje da svako sve zna I zato se danas pravi softver mnogo losijeg kvaliteta nego pre 20 godina. Tuzno, ali tako je.

Srecan rad

:-)



[ antraks @ 02.04.2014. 00:15 ] @
Odmah na pocetku da kazem hvala za odgovor. Jer je stvarno opsiran i fino je sve objasnjeno. A to je naravno zahtjevalo odredjeno vrijeme da se napise takav odgovor.
Sto znaci da si odvojio svoje vrijeme da mi pomognes. Hvala.

Procitao sam sve pomno i odmah mi je dosta stvari jasnije. Sam nacin kako poceti i sta raditi. Sutra se bacam na posao i rad. Ovdje ima dosta smjernica koje ce mi pomoci kako da uradim svoj zadatak.
I tako nas i uce da znamo sve, da pokrijemo sve oblasti i na kraju ostanemo kratki sa znanjem na svakom polju. Nazalost je tako. Ne moze se tu nista dok sam nesto ne uradis.