Lekce 1 - Osobní finance v MS Access – Záměr
V úvodní části dnešní lekce si ukážeme, jak se uvažuje nad databázovou úlohou, tedy jakési žvanění, které je ale je mnohdy účinnější, než napsat desítky stran kódu, který je následně třeba opravit, škrtat, přepisovat a nakonec zahodit. V další části se budeme věnovat návrhu úlohy a datových struktur.
Popis záměru úlohy
Rodinné finance nejsou jenom tanečky kolem peněženky každého člena rodiny nebo tlustého výpisu z bankovního účtu, nejsou to jenom přímé příjmy a výdaje podobné účetnictví. Pokud opravdu chceme mít vládu nad hospodařením domácnosti, která má barvitější obrat peněz, než jak jsem slyšel nedávno u kasy ve velkokšeftě, kde volal Jano na kamaráda: „Fero, ber eném nejnútnější, prachy pridú ve středu,“ musíme tomu věnovat úsilí v rozvrhu projektu, přesnost při sestavení úlohy a pečlivost při zadávání dat.
Pokud mluvíme o financích, všechny peníze projdou hotovostním nebo bankovním obratem, na tom se asi všichni shodneme. K běžným agendám patří, odkud peníze přišly a kam je vydáváme, dále také sledování, za jakým účelem. Někdy je dělíme na úspory a spotřebu, jindy podle osob v domácnosti. Rozšíříme-li pojem finance na ekonomiku, jsou zde i investice jiné, než finanční nebo do dětí - někdo bude obchodovat s akciemi, může být zájem o rozšíření na hmotné jednotky, pokud například máme zahradu s větší rozlohou a ta nám pomáhá v rodinném hospodaření. Také otázka měn a jejich převodu může být silným pilířem našeho snažení. Z rozsahu záběru, který chceme pojmout do projektu a hlavně, který jsme v budoucnu schopni plnit daty a využívat, si stanovíme hranice systému.
Důležité je si uvědomit, že nevytváříme podvojné účetnictví nebo buzerační systém, ale stavíme si pomocníka, jehož sklad budeme roky plnit a využívat.
Zde jsme vedeni omezenými stupni volnosti z hlediska prostoru a času, ale také vazbami na výukové lekce, ke kterým by tato realizace měla směřovat.
Základní popis úlohy
Po definici ohraničení a koncepce začneme požadavky na výsledné funkce, pro někoho možná nelogicky. Podobně jako barák se sice staví od základů, ale v té době už musíte vědět, kolik bude pater a jak to všechno bude těžké a kde bude těžiště, jinak se staví základy k hvězdným branám.
Definice systému
Stanovíme si hranice systému, abychom později netápali mimo rámec, kterým si omezíme naše fantazie a sny na reálnou míru tak, že je lze dosáhnout a dlouhodobě udržovat. Dále musíme mít na mysli, že jde o školní příklad. Půjde tedy o mnohá zjednodušení.
Já zde definuji dvoučlennou rodinu, jednu hotovostní peněženku a jeden bankovní účet. Pro praktické použití si můžete počty těchto zdrojů libovolně zvýšit. Předpokládám, že hypoteční úvěr lze snadno převést a importovat na stejné úrovni, jako běžný účet bankovní.
Koncepce úlohy
Centrem dat bude tabulka jednotné struktury o finančních pohybech. Tato tabulka bude ve vztahu k uživateli pouze pro čtení. Ve stejné datové struktuře budeme pořizovat data o hotovostních obratech dávkovým způsobem a na trvalou tabulku je ukládat. Přijatá data z bankovních účtů budeme transformovat také do této centrální struktury, tam budou zkontrolována a před jejich uložením je doplníme hodnotami o osobách a účelech. Kompletní data z banky nezahodíme, ale budeme je archivovat.
Datové struktury vyplynou z další analýzy úlohy. Důležitý je kalendář a jeho sledování, ale vzhledem k úzkým vazbám na bankovní účty dávám jako sledované období jeden měsíc, banky zatím asi jinou závěrku neumí.
Definice funkcí
- hotovost (pořízení a oprava dat)
- bankovní účty (import dat, transformace na jednotnou strukturu, doplnění typů pohybů a osob, pohled na detaily a součty)
- archivace úplných importovaných dat a přístup k nim (v praxi použijeme jenom malou část)
- hledání v uložených datech
- bilance příjmů a výdajů v hrubém nebo podrobném členění
- základní informační panel
Způsob uvažování nad funkcemi
Abych přiblížil, jak je důležité mít rozmyšleno, čeho chceme dosáhnout, vezmu první definovanou funkci Hotovost a rozeberu ji z pohledu očekávaných akcí.
Je třeba si ale jasně říci, že jde o uvažování individuální, každý z nás může mít jiný pohled na problém a jiné požadavky.
Někomu postačí holé formuláře a součty, jiný bude chtít škálu doprovodných funkcí.
Detailní funkce
- pořízení dat
- vyhledávání v datech
- součtované pohledy do dat
Další specifikace detailu
Také zde bude možná škála rozsahu práce, tedy v tomto stádiu spíše počet a kvalita plánovaných funkcí, tedy široká. Funkce kromě pořízení budou společné pro všechny záznamy, tedy i banku. Jako příklad uvedu první detailní funkci Pořízení dat. Pomineme minimalistický přístup jako zobrazení tabulky peněžního deníku v datové tabulce.
Střední požadavky na pořízení dat
- při spuštění funkce pořizování dat zobrazit zprávu, jaké je poslední pořízené datum a vložená částka.
- zobrazení tabulky peněžního deníku v datové tabulce
- na konci pořizování dat opět zobrazit zprávu, jaký je součet hodnot dnes pořízených záznamů a jejich počet
- v případě nesouhlasu se součty možnost vrátit se na pořizování dat
Datové struktury
Pro vytvoření datových tabulek nemusíme studovat právní předpisy ani čekat na vyjádření zadavatele. Vše je v naší hlavě, záleží na zkušenostech a fantazii. Zde položíme jednoduchý základ, který můžeme případně dále upravovat, ale pokusíme se být co nejpřesnější. Nebudeme se zde zabývat metodami návrhu databází a datových struktur. Základem je zjistit, kam plynou peníze z našich účtů a z peněženky, nebo najít několik let starý záznam. Pro identifikaci osoby, účelu a zdroje pohybu vytvoříme číselníky. Pro vyhledávání a uchování nezbytných pracovních proměnných si vytvoříme parametrickou tabulku.
Finance – centrální datová struktura
Pole: /ID/Datum/Zdroj/Osoba/Ucel/Castka/Poznamka/
Číselníky
Zdroj
Označení, odkud se obrat do tabulky dostal. Abychom nemuseli dělat další číselník pro banky, jsou zde pole potřebná pro kontrolu importů,, která u hotovosti nevyužijeme.
Pole: /Zdroj/IBAN/Ucet/Banka/Nazev/UzaverkaDatum/UzaverkaStav/ImportSoubor/Poznamka/
Hodnoty pole Zdroj:
f
– banka Fio (případná další písmena použiji u jiných bankovních účtů)h
– hotovost (možné hodnoty jsou také1
a2
pro kasu jednoho a druhého člena rodiny atd.)
Osoba
Pole: /Titul/Jmeno/Prijmeni/Adresa/Telefon/Poznamka/
Titul ve smyslu přezdívka
Hodnoty pole Titul:
- Já
- Ty
- Oba
Účel
Zdržím se u této položky komentářem. V každém větším systému bych raději volil dva číselníky, tedy Typ a Účel, kde Typ by byl nadřazený, např. auto, dům, domácnost a účel by byl definován pouze jednou, např. spotřeba by byla jedna pro auto, dům i pro domácnost. Podobných drobností jsou ale desítky, systém bobtná a stává se složitým na pořizování dat i jako školní příklad. Proto zde máme účel jenom jeden a číselník se dvěma pozicemi, první k typu, druhá k jeho podrobnostem.
Pole: /Ucel(!! Textové pole)/Nazev/Poznamka/
Hodnoty pole Ucel:
0
– Příjmy01
– Mzda02
– Jiný příjem09
- Ostatní1
– Domácnost11
– Potraviny a jídlo12
– Alkohol13
– Energie14
- Údržba19
- Ostatní2
– Auto21
– Opravy22
– Pojištění23
– Spotřeba29
– Ostatní
Možná se tato lekce programátorům nebo netrpělivým řešitelům zdá jako plané kecání, ale z mojí čtyřicetileté praxe je tento čas, kdy jenom sepisuji funkce, řadím, škrtám, doplňuji, sčítám, rozčleňuji a zase hromadím nové, jedním z nejlépe využitých, i když se to pozná až v průběhu práce.
Tím končí první lekce.
V příští, Osobní finance v MS Access – Datové tabulky, už budeme pracovat s databází.