[ mika @ 26.09.2006. 15:23 ] @
Zdravo svima,

Imam jednu malu nedoumicu oko definisanja jedne strukture podataka, pa ću ovde da iznesem *pojednostavljen* problem.

Pretpostavimo da imamo tabelu sa dva polja:

ID_unosa, Unos

...gde je Unos tekstualno polje. Korisnici unose neki tekst, a u front-endu postoji mogućnost izmene Unosa. Znači dvoklik na postojeći unos, otvara se maska za izmenu, pokreće se INSERT query i vraća se nazad u formu za unos. Potrebno je napraviti log tabelu u kojoj se čuva istorija unosa (prethodni unosi), kako bi se imao uvid šta je menjano.

To sam rešio na sledeći način, napravivši tblLog:

ID_unosa, Datum, OldUnos, NewUnos

...dakle, ključ u ovoj tabeli je kombinovan od dva polja (ID_unosa, Datum), tako da se ima uvid u sve podatke. Datumsko polje je TIMESTAMP i ima default vrednost now().

Pitanje jeste: da li je ovo rešenje optimalno? Postoji mogućnost višestrukog menjanja unosa pa se malko komplikuje praćenje istorije s tim. Takođe, ovo je samo pojednostavljena tabela, realna tabela ima više od 10 polja koja se mogu menjati, pa tabela tblLog postaje redundantna - slabo popunjena.

Hvala unapred na predlozima!
[ Vladimir Djuric @ 26.09.2006. 17:29 ] @
Pretpostavljam da bi to trebalo da sljaka... Sto se tice visestrukih izmena, ne bi trebalo da je problem, ako ti je PK sastavljen od Id_unosa+datum...
[ mika @ 27.09.2006. 07:42 ] @
Ma to radi, nego se samo glasno pitam da li je optimalno rešenje, ili se u tom slučaju koristi neka druga struktura podataka koju ja ne poznajem... razumeš?
[ BiloKoje @ 27.09.2006. 09:04 ] @


Ako se u tabeli nalaze podaci za koje znamo da će se menjati, po meni, logičnije je napraviti povezanu tabelu u kojoj će se čuvati sve te promene. Naravno tih povezanih tabela može da bude veći broj zavisno od broja polja u kojima se podaci menjaju.
[ mika @ 27.09.2006. 14:58 ] @
Ok, daj primer, na koji nacin mislis da napravim povezanu tabelu?