Pogledajte određenu poruku
Staro 26. 03. 2008.   #4
Dejan Topalovic
old school
Professional
 
Datum učlanjenja: 15.02.2006
Lokacija: Wien, Austria
Poruke: 304
Hvala: 121
47 "Hvala" u 26 poruka
Dejan Topalovic će postati "faca" uskoro
Pošaljite poruku preko MSN za Dejan Topalovic
Default

Ne slazem se sa potencijalnim rjesenjima cijenjenih kolega, jer se predlozenim rjesenjima OSNOVNI zadatak baze pokusava prebaciti na aplikaciju - koristenje vise tabela (za svaki jezik po jedna), spremanje vrijednosti odabranog jezika u neku varijablu, pa dinamicki odabir tabela i td.

Slazem se sa izjavom da nekad ne treba bas sve po knjigama raditi, odnosno da ne treba normalizovati podatke u tabelama do najsitnijih detalja i referenci, ali do tih slucajeva se dolazi uglavnom u odredjenim situacijama...

Evo kako smo mi odradili visejezicnu podrsku u nasoj bazi - uzecu npr. fondove, jer imamo visejezicnost za mnoge stvari:

1. imamo glavnu tabelu sa fondovima (fund_id, name, ... )
2. imamo tabelu sa opisima fondova na vise jezika (surogatni_id, fund_id, language, fund_description, ...)

E sad, posto smo spomenuli normalizaciju i denormalizaciju, ovo je idealan primjer denormalizacije. Naime, mogli bismo kreirati jos jednu tabelu za jezike (jezik_id, naziv_jezika, oznaka), pa ju onda koristiti u JOIN dijelu, ali posto je broj koristenih jezika veoma mali, ne isplati se cuvati informaciju o koristenim jezicima.

Znaci, ako nam na njemackom jeziku treba opis fonda pod brojem 11, onda upit izgleda ovako:
Kôd:
SELECT fund_description
FROM funds_descriptions
WHERE fund_id = 11
AND language = 'DE';
Ukoliko bismo koristili jos jednu normalizovanu lookup tabelu sa jezicima, onda bi upit izgledao ovako:
Kôd:
SELECT fd.fund_description
FROM funds_descriptions fd, languages l
WHERE l.language = 'DE'
AND fd.language_id = l.id
AND fd.fund_id = 11;

@McChoban: Tebi treba jedna language tabela sa poljima (id, ref_id_iz_prve_tabele, jezik, opis, ...), npr. imas u prvoj tabeli ove podatke:


Kôd:
ID     URL 
---   --------------------------------
   1   http://www.baze-podataka.net/
   2   http://www.devprotalk.com/
I sad zelis da za URL pod brojem 2 imas opise na vise jezika ukljucujuci engleski, njemacki i td., na osnovu cega u ovoj novoj tabeli imas podatke:

Kôd:
ID    URL_ID   JEZIK    OPIS
---   -------  ------   ------------------------------------
  1        2      EN    This is just a dummy description ...
  2        2      DE     Das ist nur eine dumme Beschreibung ...
  3        2      ??     lorem ipsum ...

Dakle, onaj posao - za koji su baze namijenjene - treba bazama prepustiti i ne izmisljati toplu vodu...
__________________
Blog: Baze podataka
------------------------
Oracle OCP DBA
Oracle OCE SQL Expert
Oracle OCP Developer
Certified MySQL DBA

Poslednja izmena od Dejan Topalovic : 26. 03. 2008. u 01:36. Razlog: CODE tag
Dejan Topalovic je offline   Odgovorite uz citat
2 članova zahvaljuje Dejan Topalovic za poruku: