Komisiona prodaja podrazumeva da svaki dobavljač, u različitim vremenima, donosi različite artikle, u različitoj količini na komisionu prodaju i da on odlučuje o nivelaciji cene na gore ili na dole u zavisnosti od toka prodaje. Učestalost nivelacija je takođe stvar dobavljača. FIFO metoda ovde ne može da se ispoštuje do kraja, jer dobavljač ima eksluzivno pravo odlučivanja o prodajnoj ceni pojedinog komada.
Nema modela, pa je teško dati sugestije. Banem je pretporstavio da si suviše normalizovao podatke. Možda je i to problem, a možda ne treba denormalizovati. Denormalizacija je okosnica za analitičke baze podataka tipa OLAP. U takvim bazama se ne radi ažuriranje, već samo agregacija. Ako sam ja dobro razumeo, ti treba da vodiš prostu evidenciju.
Prvi predlog je da za ključ artikla postaviš:
PK (SifraDobavljaca+SifraArtikla+DatumNabavke). To bi bilo dovoljno jedinstveno po stavci za praćenje cene u vremenu ukoliko se promene cena odnose na primljene artikle u jednoj sesiji. Znači, sve količine jednog artikla u istom danu.
Međutim, dobavljač može imati i ovakav zahtev. Prvih pet komada jednog donetog artikla pordajem po ceni X, a sve ostale po ceni Y.
Drugi predlog je da svaki komad bilo kojeg artikla posmatraš kao zasebnu instancu i da svaki ima svoju sopstvenu šifru. Ovo zahteva više truda pri unosu podataka. Mada, ako se dobro automatizuje, dodela sifara za 20 komada nečega može da se uradi automatski. Takođe zahteva veliki broj šifara. Pretrage za potrebe ažuriranja (nivelisanja cena) su nešto sporije ali se i dalje vrše po dobavljaču i datumu nabavke.
Prvi slučaj sa složenim ključem je teži za implementaciju, ali je sigurniji za ažuriranje.
I u jednom i u drugom slučaju moraš da vodiš tabelu Nivelacije. Zadnja nivelacija je merodavna za cenu pojedinog artikla.
Sad valja proceniti na osnovu realnog sistema koji od ovih predloga implementirati u informacioni sistem.