Autor Zpráva
Barbar
Profil *
Zdravím,
Měl bych takovou teoretickou otázku. Právě jdu předělávat jednu svou starou aplikaci a tak bych to chtěl udělat pořádně.
Pokusím se situaci vysvětlit co nejlépe.

Ve staré verzi byly 2 tabulky:
Tabulka "Platby", která obsahovala seznam všech plateb, zda to byl příjem či výdej, výška částky atd. atd.
Každá nová platba si zakládala klasicky nový záznam.
Tuto tabulku zachovávám i do nové verze, ta je v pořádku.

Ovše otázku mám ohledně druhé tabulky:
Tabulka se jmenovala "platby_stat" a obsahovala pouze 1 řádek, který se upravoval (tzn nezakládaly se nové řádky).
V této tabulce byly uloženy věci jako "Stav pokladny", "Vyplaceno", "Přijato" atd.

Chtěl jsem se zeptat jestli někdo z vás nezná lepší a hlavně rychlý způsob jak tyto data ukládat. Protože mít tabulku s jedním řádkem asi nebude uplně nejlepší. Vytahovat si data z první tabulky "Platby" by bylo zdlouhavé, protože při vytahování tisíců řádků z tabulky obsahující desetitisíce řádků a poté jejich sčítání atd. by bylo extrémně náročné na databázi a zdlouhavé, takže to asi také nebude nejlepší. Je tady třeba možnost ukládat tyto statistická data (jde prostě o 5 čísel, kteá se budou velice často měnit (updatovat) ze strany aplikace) do souboru, je to vzhodný způsob? Nebo by jste doporučili nějaký jiný způsob?

Díky za každou radu ;-)
WMPopi
Profil
Nevidím problém mít tabulku jen s jedním řádkem, rozhodně je to lepší než zápis do souboru.
A možná bych neviděl ani problém data natahovat pokaždé z tabulky s platbami, v mysql máme např. užitečné sum() atd...
WMPopi
Profil
Anebo by mě napadlo použít v té samostatné tabulce pro každý typ svůj řádek stylem

parametr - hodnota
parametr - hodnota
...
ShiraNai7
Profil
WMPopi:
Anebo by mě napadlo použít v té samostatné tabulce pro každý typ svůj řádek stylem

Určitě, když už to je v té databázi a vlastní tabulce. Jinak to může být rovnou v nějakém souboru, to načítání je rychlejší než tahání hodnoty 1 sloupce z databáze.
imploder
Profil
Barbar:
Vytahovat si data z první tabulky "Platby" by bylo zdlouhavé, protože při vytahování tisíců řádků z tabulky obsahující desetitisíce řádků a poté jejich sčítání atd. by bylo extrémně náročné na databázi a zdlouhavé, takže to asi také nebude nejlepší.
Není důvod to dělat. V tabulce platby_stat bude vždycky poslední součet, takže stačí k němu při každém přidání platby přičíst její údaje do platby_stat. Doporučuju to celé udělat jako transakci, aby se vždycky provedlo obojí (přidání řádku do tabulky Platby i aktualizace platby_stat), nikdy ne jenom jedno z toho.
TomášK
Profil
Barbar:
Extrémně náročné to možná nebude - sečtení 10 000 řádků trvá 0.01 sec, s indexem bude rychlé i vybírání určitých plateb. Tedy by to pravděpodobně šlo počítat pokaždé.

Raději než transakci bych použil trigger, který by mi statistiky automaticky aktualizoval po vložení nebo smazání záznamu, abych se o to na straně aplikace nemusel starat.
Barbar
Profil *
Díky všem,
myslel jsem si že používat 1-řádkovou tabulku je jen můj špatný nápad, protože jsem o tom ještě neslyšel a v cizích aplikacích nikdy neviděl (a myslel jsem si že se to mu vyhýbali z nějakého důvodu), ale očividně jsem se s tím ještě jen nesetkal :-).
Ten trigger jak říká TomášK je opravdu ideální řešení obzvlášť protože se pak na straně aplikace nemusím o tuto tabulku vůbec starat :-)

Ještě jednou díky všem a extra díky TomášK. :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: