[ Neznalica_sa_ugla @ 15.05.2006. 09:14 ] @
Molim ako je neko raspoložen da pomogne . Ovu malu bazu ( ispit) trba dovesti u BCNF.
Ja sam vec napravio al bih da proverim.
oko upita se ne morate muciti VELIKO HVALAA

Baze podataka

(Školska godina 2005/2006)

Tablice


1. Trgovac (šifra-trgovca, ime-trgovca, status, ime-mjesta)
S (S#, SNAME, STATUS, CITY)

2. Dio (šifra-dijela, ime-dijela, boja, masa, ime-mjesta)
P (P#, PNAME, COLOR, WEIGHT, CITY)

3. Kupac (šifra-kupca, ime-kupca, ime-mjesta)
J (J#, JNAME, CITY)

4. Posao (šifra-trgovca, šifra-dijela, šifra-kupca, količina)
SPJ (S#, P#, J#, QTY)


TRGOVAC


S# SNAME STATUS CITY
S1 Smith 20 London
S2 Jones 10 Paris
S3 Blake 30 Paris
S4 Clark 20 London
S5 Adams 30 Athens

DIO:
P# PNAME COLOR WEIGHT CITY
P1 Nut Red 12 London
P2 Bolt Green 17 Paris
P3 Screw Blue 17 Rome
P4 Screw Red 14 London
P5 Cam Blue 12 Paris
P6 Cog Red 19 London


kUPAC :

J# JNAME CITY
J1 Sorter Paris
J2 Punch Rome
J3 Reader Athens
J4 Console Athens
J5 Collator London
J6 Terminal Oslo
J7 Tape London



POSAO :
S# P# J# QTY
S1 P1 J1 200
S1 P1 J4 700
S2 P3 J1 400
S2 P3 J2 200
S2 P3 J3 200
S2 P3 J4 500
S2 P3 J5 600
S2 P3 J6 400
S2 P3 J7 800
S2 P5 J2 100
S3 P3 J1 200
S3 P4 J2 500
S4 P6 J3 300
S4 P6 J7 300
S5 P2 J2 200
S5 P2 J4 100
S5 P5 J5 500
S5 P5 J7 100
S5 P6 J2 200
S5 P1 J4 1000
S5 P3 J4 1200
S5 P4 J4 800
S5 P5 J4 400
S5 P6 J4 500

upiti

1. Ispiši sve podatke o svim kupcima.
2. Pročitaj ime mjesta (X). Ispiši sve podatke o svim kupcima iz mjesta X!
3. Pročitaj šifru kupca (X). Ispiši šifre trgovaca koji prodaju kupcu (X)!
4. Pročitaj šifru kupca (X) i šifru dijela (Y). Ispiši šifre trgovaca koji kupcu (X)
prodaju dio (Y)!
5. Pročitaj šifru trgovca (X). Ispiši imena kupaca kojima prodaje trgovac (X)!
6. Pročitaj ime mjesta (X) i boju dijela (Y). Ispiši šifre kupaca kojima nisu prodani
dijelovi boje Y od strane trgovca iz mjesta X!
7. Pročitaj boju dijela (X). Ispiši šifre trgovaca ako prodaju bar jedan dio kojeg su
prodali i trgovci koji su prodali i bar jedan dio boje X !
8. Ispiši sve trojke <mjesto1, šifra dijela, mjesto2> u kojima vrijedi da trgovac iz
mjesta1 prodaje kupcu iz mjesta2 dio s navedenom šifrom. Pri tome su mjesto1 i
mjesto2 različiti!
9. Ispiši šifre kupaca koji kupuju samo od trgovca 'T2'!
10. Ispiši šifre trgovaca koji prodaju bilo koji dio svim kupcima!
11. Ispiši šifre dijelova čija je masa najveća!
12. Pročitaj ime mjesta (X). Ispiši šifre dijelova koje kupuju svi kupci iz mjesta (X)!
13. Pročitaj šifru trgovca (X). Ispiši šifre kupaca koji, između ostalog, kupuju sve
dijelove koje trgovac X prodaje!
14. Pročitaj šifru trgovca (X). Ispiši šifre kupaca koji kupuju samo one dijelove koje
trgovac X prodaje!
15. Pročitaj šifru trgovca (X). Ispiši šifre kupaca koji kupuju kod trgovca X sve
djelove koje on prodaje!
16. Pročitaj šifru trgovca (X). Ispiši šifre kupaca koji sve dijelove koje im trebaju,
kupuju, između ostalog, i kod trgovca X!
17. Ispiši šifre kupaca koji kupuju samo kod onih trgovaca koji prodaju bar jedan
dio crvene boje!
18. Pročitaj šifru trgovca (X). Ispiši broj kupaca kojima prodaje trgovac X!
19. Pročitaj šifru dijela (X) i šifru trgovca (Y). Ispiši količinu dijelova X koje je
prodao trgovac Y!
20. Za svaki prodani dio ispiši njegovu šifru, šifru kupca i prodanu količinu!

[ broker @ 15.05.2006. 09:27 ] @

TRGOVCI (id_trgovca, naziv, status, id_mesta)

KUPCI (id_kupca, naziv, id_mesta)

DELOVI (id_dela, naziv, boja, masa)

PRODAJA (id_prodaje, id_dela, id_kupca, id_trgovca, datum_prodaje, kolicina)

MESTA (id_mesta, naziv)

[ Neznalica_sa_ugla @ 15.05.2006. 20:22 ] @
hhh , a zašto datrum prodaje ????
[ Neznalica_sa_ugla @ 15.05.2006. 22:06 ] @
(datum prodaje)
e sada a zašto ne izdvojiti i boju u posebnu tablicu da se ne ponavlja
[ Neznalica_sa_ugla @ 15.05.2006. 22:08 ] @
TRGOVCI (id_trgovca, naziv, status, id_mesta)

KUPCI (id_kupca, naziv, id_mesta)

DELOVI (id_dela, naziv, id_boja, masa)

PRODAJA (id_prodaje, id_dela, id_kupca, id_trgovca, datum_prodaje, kolicina)

MESTA (id_mesta, naziv)

BOJA (id_boja, boja)

ako ne zašto ne???
[ chachka @ 16.05.2006. 00:41 ] @
A gde su funkcionalne zavisnosti?
[ broker @ 16.05.2006. 06:50 ] @
Da, boju sam prevideo, treba i to da se normalizuje. Ok si to uradio samo umesto id_boja polje nazovi id_boje) a tabelu umesto BOJA nazovi BOJE.

Datum prodaje je valjda bitan podatak da se zna sta je kada prodato.
[ Neznalica_sa_ugla @ 16.05.2006. 07:14 ] @
Da li postoji negde malo opširnije kako se normalizira baza na našem jeziku ??????
upravo uzimajući u obzir funkcionalne zavisnosti i minimalno pokriće
[ chachka @ 16.05.2006. 16:41 ] @
Prvo: Normalizacija se ne moze raditi bez definisanih funkcionalnih zavisnosti. Bez definisanih FZ je i pocetna struktura u BCNF-u.

Drugo: Normalizacija ne sluzi za dodavanje novih atributa, kao sto ste vi ucinili sa: id_boje, id_prodaje, datum_prodaje. Tom logikom se moze dodati npr. atribut 'ugovoren_rabat' ili strukture: STATUSI (id_statusa, status), MASE (id_mase, masa).

Trece: Evo neki link http://www.puskice.net/cetvrta/baze_podataka.php. O kvalitetu ne mogu da sudim jer ponudjene tekstove nisam procitao.
[ broker @ 16.05.2006. 18:43 ] @
Pa da, dalo se ocekviati da ce da se pojavi neko da sitnicari i pametuje. Valjda je sasvim jasno sta je coveku trebalo, a ti ako si tako pun znanja onda mu pomozi, a nemoj da prosipas pamet.
[ chachka @ 16.05.2006. 22:22 ] @
Pomogao sam mu i ponovicu:
Prvo: Nema normalizacije do BCNF-e bez funkcionalnih zavisnosti!
Drugo: Normalizacijom se ne dodaju novi atributi! Mogu se dobiti samo nove relacije.
Trece: Postavio sam link.

Lista entiteta, lista atributa, funkcionalne zavisnosti se dobijaju u procesu analize sistema koji se modelira. Normalizacija dolazi nakon toga. Iskreno, ja ovo u praksi ne koristim, niti o tome razmisljam.

Jasno je da je postavljen neki skolski zadatak. Ako je zadatak na forum prenet kompletno, onda je zadatak los! Spreman sam da polozim svoju sesticu za ovu tvrdnju :)

[ Neznalica_sa_ugla @ 16.05.2006. 23:10 ] @
Zadatak je doista školski , al zašto loš??
teški su upiti . al .....
[ chachka @ 16.05.2006. 23:29 ] @
OK. Idem od pocetka.

Receno je da: "Ovu malu bazu ( ispit) trba dovesti u BCNF." i dalje je receno: "oko upita se ne morate muciti". Dakle poenta je stavljena na normalizaciju. U zadatku nisu date funkcionalne zavisnosti, pa se normalizacija ne moze izvrsiti, i zato sam zadatak nazvao losim.



Kada sada malo bolje razmislim, originalna postavka zadatka bi mogla biti nesto poput:

---------------------
Data je sledeca struktura koja je u BCNF.

...

Dat je sledeci skup podataka.

...

Odgovorite na sledecih 20 pitanja.

...
---------------------

Dakle poenta originalnog zadatka je po meni odgovor na 20 pitanja, a ne normalizacija!
[ broker @ 17.05.2006. 06:05 ] @
Chacka, decko se ocigledno potrudio ko tog zadatka i javio se kada mu je zatrebala pomoc. Umesto prosipanja pameti i teoretisanja treba mu konkretno pomoci ili cutati.

Ne znam, meni nije bio problem da mu doteram strukture tabela, jer je prilozio upite koji su zadati pa se iz njih moze zakljuciti sve sto je potrebno. Koliko sam primetio, to sto sam mu uradio je bilo dovoljno da skonta neke stvari i dalje stvar zavrsi sam. E kad bi bilo vise takvih koji traze pomoc a ne onih sto i ne procitaju zadatak nego ga samo copy&paste ovde.

Inace svi dobro znamo da su najcesce problem lose postavljeni zadaci.

[Ovu poruku je menjao broker dana 17.05.2006. u 07:07 GMT+1]
[ mkaras @ 17.05.2006. 17:26 ] @
Citat:

chachka :
Prvo: Nema normalizacije do BCNF-e bez funkcionalnih zavisnosti!

Normalizacija je pojam vezan iskljucivo za podatke i omogucava jednoznacno
definisanje entiteta bez ponavljanja nepotrebnih podataka. Ovo je jedan od
nivoa aplikacije. Funkcionalna zavisnost sluzi za odredjivanje i
uspostavljanje poslovnih pravila i predstavlja drugi nivo aplikacije. Treci
nivo aplikacije je aplikacija kod krajnjeg korisnika

Citat:

chachka :
Drugo: Normalizacijom se ne dodaju novi atributi! Mogu se dobiti samo nove relacije.

Relacije se stvaraju izmedju entiteta. Entiteti imaju svoje atribute pa je
ponekad potrebno dodati i po neki entitet ali i neki atribut.

Citat:

broker:
... a tabelu umesto BOJA nazovi BOJE ...

Nije previse bitno kako se nazivaju tabele. Sto se tice funkcionalnosti
savrseno je svejedno da li je ime u mnozini ili u jednini. Bitno je, samo
radi lakseg snalazenja, usvojiti neki standard za imenovanje entiteta i
atributa i dosledno ga se pridrzavati.


[Ovu poruku je menjao mkaras dana 17.05.2006. u 18:27 GMT+1]
[ chachka @ 17.05.2006. 19:41 ] @
Citat:
mkaras: Relacije se stvaraju izmedju entiteta. Entiteti imaju svoje atribute pa je
ponekad potrebno dodati i po neki entitet ali i neki atribut.

Brkas relacioni model podataka i ER (entity-relationship) dijagram.

Relacioni model barata relacijama. Pojam entiteta ne postoji u relacionom modelu podataka. On se pojavljuje u ER dijagramu koji je graficki prikaz modela podataka, gde se pravougaonik naziva entitetom, a linije koje povezuju entitete relacijama. Kada se ER dijagram prevodi u SQL tada se za svaki pravougaonik pravi CREATE TABLE, a i za neke linije se takodje pravi CREATE TABLE! Sto ce reci da u implementaciji ER dijagrama ne postoji razlika izmedju entiteta (pravougaonika) i relacija (linija).



Citat:
mkaras: Normalizacija je pojam vezan iskljucivo za podatke i omogucava jednoznacno
definisanje entiteta bez ponavljanja nepotrebnih podataka. Ovo je jedan od
nivoa aplikacije. Funkcionalna zavisnost sluzi za odredjivanje i
uspostavljanje poslovnih pravila i predstavlja drugi nivo aplikacije. Treci
nivo aplikacije je aplikacija kod krajnjeg korisnika


Uf... Ovo o nivoima aplikacije mi nije bas skroz jasno.

Odgovoricu na deo o normalizaciji i funkcionalnim zavisnostima.

Normalne forme idu redom 1NF, 2NF, 3NF, BCNF (Boyce-Codd Normal Form), 4NF, ... U nedostatku udzbenika iz baza podataka, pozvacu se na wikipediu i na materijal sa linka koji sam ranije postovao:

Wikipedia http://en.wikipedia.org/wiki/Database_normalization

Citat:

First normal form
The domain of attribute must include only atomic (simple, indivisible) values.

Second normal form
A relation schema R is in 2NF if it is in 1NF and every non-prime attribute A in R is fully functionally dependent on primary key.



materijal o bazama podataka

Citat:

Relacija R je u Prvoj normalnoj formi (1NF) ako su sve vrednosti njenih atributa atomske.

Relacija R je u Drugoj normalnoj formi (2NF) ako i samo ako je u 1NF i svi njeni neključni atributi potpuno i funkcionalno zavise od primarnog ključa.


Necu ici dalje do BCNF koja se spominjala u prvom postu ove teme.


Citat:
mkaras: Nije previse bitno kako se nazivaju tabele. Sto se tice funkcionalnosti
savrseno je svejedno da li je ime u mnozini ili u jednini. Bitno je, samo
radi lakseg snalazenja, usvojiti neki standard za imenovanje entiteta i
atributa i dosledno ga se pridrzavati.


Slazem se. Boja, boje... nije mi bitno dok god je uniformno. Licno vise preferiram jedninu zbog komplikacija oko srpske mnozine, pa rodovi, pa pridevi, pa padezi,...

Lako je englezima: krknu 's' u najgorem slucaju 'es'.
[ Neznalica_sa_ugla @ 23.05.2006. 13:13 ] @
Moram reći na žalost da baza nije dobro uradjene (TAKO VELI PROFESOR ) nije sve normalizirano
anomalije , kod unosa u tablicu SPJ. Po .........
[ broker @ 23.05.2006. 13:35 ] @
Nije ti rekao sta nije u redu?
[ chachka @ 23.05.2006. 14:03 ] @
Problem je sto Neznalica_sa_ugla nije postavio kompletan zadatak
[ Neznalica_sa_ugla @ 23.05.2006. 15:00 ] @
ev čim stignem kući provjeriću ,al to je zadatak šta bi još trebalo da se napiše????
[ broker @ 23.05.2006. 16:36 ] @
Ako ti profesor nije rekao sta ne valja, onda ne treba nista vise. Kakav je zadtak postavio, takvo je resenje i dobio.
[ Neznalica_sa_ugla @ 01.06.2006. 15:35 ] @
PONOVO O NORMALIZACIJI
Naime sam kandidat treba napisati funkcionalne ovisnosti i viševrjednosne ovisnosti , dodirne ovisnostio ne treba . To povaditi iz priloženih tablica .
zatim normalizirati bazu .

ne valjeju mi ni upiti 15 -19
stvarno bih vam bio zahvalan za pomoć oko ovoga
mozete mi spremiti i na email
[ broker @ 01.06.2006. 17:02 ] @
Pa dobro, ipak bi i ti trebao nesto da uradis, zar ne?
[ Neznalica_sa_ugla @ 02.06.2006. 12:49 ] @
Pa dobro radim al pomoć nije na odmet aklo neko zna , nek pomogne
trudim se koliko mogu
[ Zidar @ 02.06.2006. 19:51 ] @
Profesor ti je rekao isto sto i Chacka. Da bi se noramalizovala baza treba prvo da nam kazes kakav proces modeliras (to ti je prevod onih funkcionalnih zavisnosti koje spominje Chachka) Sta se dakle desava? Ko sta proizvodi, voszi i prodaje i kome? Nije dovoljno da nam samo das nepotpun spisak tabela sa nepotpunim spiskom kolona. Kazes ne rade ti upiti 16-19. Bas mi je zao. Otkud mi znamo kako ti zgledaju upiti? Nismo ih videli pa ne mozemo reci sta ne valja. Nismo videli opis problema, nismo videli konacan dizajn tabela, nismo videli upite. Pa kako da ti pomognemo?

[ Neznalica_sa_ugla @ 02.06.2006. 22:43 ] @
Hhh , zidar (ili informatičer) vidjeli ste zadatak onakav kakv sam dobio i ništa više valjda je to dovoljno da se zadatak i uradi , no čini mi se lakše reći negu učiniti. Podaci u tablicama i jesu tu da se iz njih izvade( izčitaju ) FO . Znam da nisam posebno vješt u ovome al mi se čini da drugi još manje znaju ili ne žele da pomognu . A što se tiče mojih upita , namerno ih nisam stavio da vas ne vodim na pogrešan trag , al ako to netko zna valjda mu ne bi bio problem rešiti jedan običan zadatak za trći razred srednje škole. Ja nisam ni očekivao d a mi neko uradi zadatak , neke stavri sam uradio neke nisam znao , samo pokušao Nadao sam se da ći mi neko lepo objasniti (ko IMA volje , znanja i vremena ) da mogu nastaviti sam obaviti posao . Ne znam što zidar ne pokuša sam napravti te upite pa da vidi koliko su složeni .
No ja se svakom čoveku dobronamernom zahvaljujem i svaki savet uvažim ,al sam dosta iznenadjemn da zadatak za srednju školu neko ne reši u par munuta , bar su nam rekli da je dovoljno vremena oko dva školska časa. Ja sae i prestavljam kao neznalica upravo zato jer sam svestan da treba da naučim puno stvari , al neke jesam naučio :To je svakao da ne dajem savete ako znam da čoveku ne pomažu
PUNO HVALA SVIMA
[ broker @ 03.06.2006. 08:24 ] @
Sam si rekao, NECEMO da ti radimo domaci. Da ti pomognemo hocemo a ovakav tvoj nastup je krajnje uvredljiv.
[ Neznalica_sa_ugla @ 03.06.2006. 14:26 ] @
Da ti pomognemo hocemo a ovakav tvoj nastup je krajnje uvredljiv.

Ne vidim da sam nekoga uvredio ??????? čime ?????
[ Zidar @ 05.06.2006. 14:39 ] @
Nema ljutnje ni uvrede. Kad je Zidar isao u srednju skolu, jedinice su se dobijale ako djak nije ni probao da uradi domaci zadatak. Ako si probao, pa ne ide, profesor je govorio 'Donesi papire da vidim da si probao i gde si pogresio'. Isto tako, trazimo od tebe da nam posaljes upite koje si napisao. Prihvaticemo da su tabela onakve kakve si dao na pocetku. Pokazi sta si napravio i nije valjalo, da bismo ti rekli sta ne valja. Lako ce i Broker i Zidar da napisu iskaze, ali to ne resava tvoj problem. Gde si se ovoliko trudio, potrudi se jos malo i mozda naucis jos nesto korisno. Ajde, daj SQL iskaze od 15 do 19.