Autor | Zpráva | ||
---|---|---|---|
Barbar Profil * |
#1 · Zasláno: 27. 1. 2011, 19:14:20
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 |
#2 · Zasláno: 27. 1. 2011, 19:28:45
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 |
#3 · Zasláno: 27. 1. 2011, 19:47:02
Anebo by mě napadlo použít v té samostatné tabulce pro každý typ svůj řádek stylem
parametr - hodnota parametr - hodnota ... |
||
ShiraNai7 Profil |
#4 · Zasláno: 27. 1. 2011, 19:50:59
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 |
#5 · Zasláno: 27. 1. 2011, 19:55:28
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 |
#6 · Zasláno: 27. 1. 2011, 20:19:03
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 * |
#7 · Zasláno: 27. 1. 2011, 21:43:31
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. :-) |
||
Časová prodleva: 13 let
|
0