Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 4.236 pregleda

Najnovija ↓

Rad sa bazom kod izmena 21.12.2016. u 20:24 · pre 120 meseci #1
Ovo je možda više pitanje za baze ali pošto korstim PHP neka bude ovde.

Dakle, prilikom snimanja neke forme na client strani, dobijem JSON sa podacima koje treba snimiti u bazu. Međutim, ta forma ne sadrži samo vrednosti koje se upisuju u jedan red u bazi nego sadrži neke stavke. Na primer, imamo fakturu koja će imati nepoznat broj artikala i usluga na sebi. Kad stignu sve te stavke posle snimanja, ako je prvi upis onda se očigledno sve INSERT-uje u bazu i to je jasno. Međutim, koji je najbolji način hendlanja izmena:

1. Kad stigne JSON sa podacima, ići stavku po stavku i upoređivati sa bazom pa ono što postoji da se radi UPDATE, ono što ne postoji da se uradi INSERT a zatim videti u bazi šta je višak pa to DELETE.
2. Prosto i seljački: kod upisa obrisati sve prethodne stavke iz baze i INSERT-ovati sve nove.

Koji sistem se generalno koristi?

Re: Rad sa bazom kod izmena 21.12.2016. u 23:52 · pre 120 meseci #2
Ako nemaš neke spoljne ključeve ka drugim tabelama ili druga ograničenja koja nisi ovde naveo, onda definitivno 2, u transakciji.
Sviđa mi se1
Re: Rad sa bazom kod izmena 01.02.2017. u 14:59 · pre 118 meseci #4
Ja ne podrzavam delete, bar ne bez zurnal tablele.
Napravi jos jednu kolonu STATUS kojoj mozes vrednost da menjas u zavisnosti od potrebe (VALID/INVALID).


Re: Rad sa bazom kod izmena 01.02.2017. u 15:16 · pre 118 meseci #5
Potpuno se slažem sa onim što je napisao Dr.sima - ne samo da je DELETE nad takvim podacima upitan, čak se treba uzdržavati i sa UPDATE komandom.

U tvom primeru, ako je u pitanju faktura sa stavkama, pitanje je šta se JOŠ desilo osim što je upisan slog (slogovi) u jednoj ili dve tabele. Recimo, odštampana je fakutura koja je završila u nekom DMS-u. Poslata je faktura kupcu. Promenjeno je stanje u skladištu. Urađeno je knjiženje po fakturi itd.

Bez obzira da li se sve gornje zaista i desilo, pitanje je za šta ti trebaju podaci o kojima je reč, pa prema tome treba doneti i odluku.

Jedan pristup, na primer ako podatak treba da završi u nekom DWH sistemu je da se doda polje GENERATION ili VERSION. Ovo je, po meni, bolje rešenje nego imati statusno polje valid/invalid. Na ovakav način imaš istoriju promena, pa možeš iz istorije da rekonstruišeš željeno krajnje stanje. U DWH se takvi podaci NIKADA ne brišu, ali ako je tebi potrebno da imaš takve podatke u transakcionoj bazi, na ovaj način možeš da uradiš čišćenje podataka i da u transakcionoj bazi ostaviš samo poslednju generaciju ili verziju podataka.

Drugi pristup je da u JSON poruku dodaš neke meta podatke. Tipa, ako je dodatata stavka, staviti neki status new=true. Ako je stavka obrisana dodati deleted=true, ako je promenjena, staviti old i new vrednosti za svako polje i oznaku da je stavka apdejtovana.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme