ugrás a tartalomhoz

Nagy elemszámú űrlap módosítása

Max Logan · 2014. Ápr. 16. (Sze), 08.24
Hogyan oldjátok meg azt, hogy egy nagy elemszámú (50+) űrlap módosítása esetén, ahol az egyes űrlapadatok (csoportonként) különböző táblákban vannak tárolva, csak arra az adathalmazra legyen UPDATE, ahol ténylegesen történt módosítás?

Létezik-e legjobb megoldás, vagy helyzete válogatja, hogy mit érdemes csinálni?

Keresgéltem neten és többféle alternatívát ajánlottak, de kíváncsi vagyok a ti gondolataitokra, tapasztalatotokra, bevált módszere(i)tekre.
 
1

Kapcsolat?

Poetro · 2014. Ápr. 16. (Sze), 08.29
Mi a kapcsolat az űrlapok, az űrlapelemek a táblák és az adathalmazok között? Egyáltalán szükséges tudni űrlapokról? A kettő között nem látok kapcsolatot, különösen az UPDATE-re való tekintettel.
2

Van egy űrlap, ami tartalmaz

Max Logan · 2014. Ápr. 16. (Sze), 09.23
Van egy űrlap, ami tartalmaz vegyesen input text, select és checkbox mezőket, és vannak ismétlődő adathalmazokat (pl. partnernél a kapcsolattartó személyek adatai). Ha ezt az űrlapot megjelnítjük, majd módosít benne a user, akkor mi alapján építjük fel az UPDATE mechanizmust, hogy csak az az adat legyen elküldve az adatbázisnak UPDATE-re, ami ténylegesen változott? Ez a kérdés.

Mondok egy példát. Van egy nagy űrlap, amiben egy partner adatait lehet módosítani. Vannak általános adatok, többféle cím (külön mezőben a város, megye, stb.), több kapcsolattartó megadatható, több bankszámla (bank nevével, számlaszámmal, stb.), több szerződés megadható, stb.

Ott az űrlap a felhasználó előtt, de ő mondjuk csak az egyik bankszámlaszámot módosítja, meg a törli a fax telefonszámát, mert megszűntette a partner a fax fogadási lehetőséget.

Értelemszerűen felesleges és erőforráspazaroló elküldeni az adatbázisnak a teljes adathalmazt, mint UPDATE SQL utasítások halmaza, így ki kell válogatni, mely adat módosult az adatbázisban szereplőhöz állapothoz képest.

Ennek módszertanára kérdeztem rá...
3

Honnan tudod, hogy

Vilmos · 2014. Ápr. 16. (Sze), 10.52
Honnan tudod, hogy változatlan az adatbázis az érintett tábláknál? Szűréshez a form adatait akkor használhatod fel ha az egyszemélyes használat biztosítva van. Egyébként kénytelen vagy kiolvasni (zárolás alatt) a módosítandó részt, összevetni a beírandóval ... bonyolult. Ennek akkor van értelme, ha figyelmeztetni akarsz, valaki beelőzött.

Amennyiben a vizsgálódás nem érdekes elküldheted az adatsort teljes egészében. Az sql (mysql, a többit nem tudom) úgyis csak a változott mezőket fogja átírni. A változatlanokat mintegy átlépi. (Ahol van "timestamp" mező, ott látszik a mechanizmus. Update változatlan adattal nem fogja aktualizálni az időbélyeget.)
4

Előbbi felvetésed teljesen

Max Logan · 2014. Ápr. 16. (Sze), 20.21
Előbbi felvetésed teljesen jogos, valóban előfordulhat egy többfelhasználós rendszerben, hogy más módosította időközben az adathalmazt.

Utóbbit én is olvastam, a hosszászóló is azt írta (ugyanerre a kérdés felvetésre), hogy MySQL így működik, de nem tudja, hogy többiek miként viselkednek e tekintetben.
5

Valószínű

Pepita · 2014. Ápr. 18. (P), 08.52
de nem tudja, hogy többiek miként viselkednek e tekintetben.
Mivel az SQL egy alapnyelv, valószínűleg az SQL alapú motorok is hasonlóan vannak optimalizálva, tehát nyugodtan update-elhetsz ebből a szempontból (a Delphivel adott BDE is pont így működik).

Ha mégis a Júzernek kiküldött adatot akarod ellenőrizni, akkor pl. szerializálva mentsd egy külön táblába kiküldéskor, session id-t tudod azonosításra használni, mikor visszajön a POST. Viszont ez szinte biztos, hogy lassabb, mint a sima update, de tudod ellenőrizni, hogy ugyanazt a partnert egyszerre egy Júzer módosítsa.