[ solarko @ 06.02.2007. 12:14 ] @
Poz!

Pravim Nem-Srp-Nemacki recnik.

Ovo mi je prvo projektovanje baze, a hocu da sve bude "po knjizi".

Razmisljao sam nesto ovako.

TerminiGer(#id, rec) // sa terminom npr. 321231 market
TerminiSer(#id, rec) // sa terminom npr. 132425 prodavnica
TranslateGerSer(#id, id1, id2) // povezuje 321231 132425
TranslateSerGer(#id, id1, id2) // isto samo srpsku rec sa nemackim prevodima 132425 321231

Da li je ovo ok? Normalizovano, i po svim ostalim zahtevima?

Znaci preko ove dve poslednje tabele bi omogucio da rec ima vise prevoda.
[ Zidar @ 07.02.2007. 13:42 ] @
Nije OK i nije normalizovano.

Prvo, imas polja koja nista ne znace - ID. Pretrazivanje tvoje baze bice po terminima i prevodima, pa ce ti po tim poljima trebati indexi. Posto se ocekuje da termin u recniku bude jedinstven, imamo da po toj koloni trebati unique index. Ako je vec unique index, zasto ne bi bio i Primary Key?

Drugo, umesto ovoga:
TerminiGer(#id, rec) // sa terminom npr. 321231 market
TerminiSer(#id, rec) // sa terminom npr. 132425 prodavnica
TranslateGerSer(#id, id1, id2) // povezuje 321231 132425
TranslateSerGer(#id, id1, id2) // isto samo srpsku rec sa nemackim prevodima 132425 321231

sve sto ti treba je ovo:
TerminGer(NemackaRec) PK = NemackaRec
TerminSer (SrpskaRec) PK = SrpskaRec
Translate(NemackaRec, SrpskaRec) PK = NemackaRec, SrpskaRec

Za izabranu nemacku rec, prikazi sve odgovarajuce reci:
SELECT NemackaRec,SrpskaRec FROM Translate
WHERE NemackaRec = .....

a moze i ovo:
SELECT SrpskaRec, NemackaRec FROM Translate
WHERE SrpskaRec= .....

Ako u ovom koraku tvog ucenja steknes pogresnu naviku da trpas ID (Identity :-) svuda, i gde treba, i gde ne treba, ostace ti to do kraja zivota i nikada neces razumeti gde gresis. Pokusaj da napises dva prilozana SELECT iskaza koristeci tvoj originalni dizajn, pa uporedi sa datim iskazima i prosudi koji su komplikovaniji. I kakav je dobitak od uvedenih ID? Manja tabela? Brze pretrazivanje? Nikad neces pretrazivati po Id, uvek ces pretrazivati po recima direktno.

:-)


[ solarko @ 07.02.2007. 16:27 ] @
Hvala ti!
Mislio sam da ce brze da radi sa brojevima, nego sa recima.

A sa izbacivanjem ID atributa, dobio sam tabelu u 3NF, zar ne?


[Ovu poruku je menjao solarko dana 07.02.2007. u 20:20 GMT+1]
[ momsab @ 09.02.2007. 00:18 ] @
ako dobor vidim, dve tabele imaju samo jedan atribut a treca je spoj te dve (da se tako izrazim) i nema svoje atribute
prve dve su ti u svim mogucim NF
takodje i treca

sada je potrebno da im odredis kardinalnost ;)

savetujem ti da malo bolje proucis teoriju