[ 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
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.