Diplomová práce
Informační systém pro podporu obchodní činnosti vypracoval: Václav Klofera vedoucí práce: Ing. Vladimír Dumek, Ph.D. obor: Inženýrská informatika a automatizace specializace: Informatika 2006
ANOTACE Diplomová práce se zabývá návrhem a realizací informačního systému pro podporu obchodní činnosti. Řešení je realizováno pomocí vývojového prostředí Delphi s použitím relačního databázového systému MySQL.
ANNOTATION The thesis deals with design and realization of the information system for business support. IDE Delphi and the relational database system MySQL were used for development of this information system.
PODĚKOVÁNÍ Děkuji panu Ing. Vladimíru Dumkovi, Ph.D., za vedení mé diplomové práce a za jeho podnětné rady a připomínky.
PROHLÁŠENÍ Prohlašuji, že jsem tuto práci vypracoval samostatně podle rad a pokynů svého vedoucího diplomové práce pana Ing. Vladimíra Dumka, Ph.D. Pro vypracování jsem použil literaturu a zdroje uvedené na konci práce.
V Brně dne 26. 5. 2006
Informační systém pro podporu obchodní činnosti
Strana 9
OBSAH Obsah......................................................................................................................................... 9 Seznam použitých symbolů a zkratek .................................................................................. 11 1 Úvod................................................................................................................................. 13 2 Informační systémy ........................................................................................................ 15 2.1 Informace a systém................................................................................................... 15 2.1.1 Charakteristika informace ................................................................................ 15 2.1.2 Pojem systém.................................................................................................... 15 2.2 Informační systém .................................................................................................... 17 2.3 Tvorba informačních systémů.................................................................................. 18 3 Realizační prostředky .................................................................................................... 19 3.1 Objektově orientované programování ...................................................................... 19 3.2 Vývojové prostředí Delphi ....................................................................................... 20 3.2.1 Historie ............................................................................................................. 20 3.2.2 Možnosti Delphi............................................................................................... 20 3.2.3 Komponenta Zeos ............................................................................................ 21 3.3 Jazyk SQL ................................................................................................................ 22 3.3.1 Základní příkazy............................................................................................... 22 3.3.2 Transakce ......................................................................................................... 24 3.3.3 Izolační úrovně transakcí ................................................................................. 25 3.4 Databázový systém MySQL..................................................................................... 26 3.4.1 Charakteristika ................................................................................................. 26 3.4.2 Typy tabulek..................................................................................................... 27 3.5 Použité prostředky.................................................................................................... 28 4 Specifikace požadavků................................................................................................... 29 4.1 Momentální stav....................................................................................................... 29 4.2 Požadavky na systém ............................................................................................... 29 5 Datová a funkční analýza .............................................................................................. 31 5.1 Datový model systému ............................................................................................. 31 5.1.1 Tok dat v systému ............................................................................................ 31 5.1.2 Návrh datového modelu ................................................................................... 32 5.2 Funkce systému ........................................................................................................ 33 5.3 Návrh databáze......................................................................................................... 34 5.3.1 Normalizace databáze ...................................................................................... 34 5.3.2 Návrh struktury databáze ................................................................................. 35
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 10
Informační systém pro podporu obchodní činnosti
6
Implementace.................................................................................................................. 43 6.1 Vytvoření databáze................................................................................................... 43 6.1.1 Tvorba tabulek.................................................................................................. 43 6.2 Datové třídy.............................................................................................................. 44 6.2.1 Datový modul ................................................................................................... 44 6.2.2 Třída Class_Generic......................................................................................... 45 6.2.3 Třída ClassObjednavka .................................................................................... 47 6.2.4 Ostatní datové třídy .......................................................................................... 48 6.3 Konfigurace aplikace................................................................................................ 48 6.3.1 Třída TSchemata .............................................................................................. 48 6.3.2 Konfigurační soubor......................................................................................... 48 6.3.3 Třída TNastaveni.............................................................................................. 48 6.4 Grafické rozhraní aplikace ....................................................................................... 49 6.4.1 Hlavní formulář aplikace.................................................................................. 49 6.4.2 Připojení ........................................................................................................... 50 6.4.3 Formuláře entit ................................................................................................. 50 6.4.4 Formulář Editace objednávky .......................................................................... 52 6.4.5 Formulář Editace faktury ................................................................................. 53 6.4.6 Faktura.............................................................................................................. 54 6.4.7 Statistiky........................................................................................................... 55 6.4.8 Uživatelská nastavení ....................................................................................... 55 6.5 Instalace a požadované prostředky........................................................................... 56 7 Závěr................................................................................................................................ 57 8 Seznam použité literatury.............................................................................................. 59
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 11
SEZNAM POUŽITÝCH SYMBOLŮ A ZKRATEK ANSI BDB CORBA CSV DFD DLL DNS E-R GNU GPL IDE IDEF INI InnoDB IP ISAM LAN LGPL MDI MEIN MERISE OOP PHP RAD RDBMS SDM SQL SSADM VCL WIN32 API XML
American National Standards Institute Berkeley Database Common Object Request Broker Architecture Comma-Separated Values Data Flow Diagram Dynamic-Link Library Domain Name System Entity Relationship GNU’s Not Unix General Public License Integrated Development Environment Integrated Definition Initialization File Inno Database Internet Protocol Indexed Sequential Access Method Local Area Network Lesser General Public License Multiple Document Interface Methodologia Informatica Methode d'Etude et de Realisation Informatique pour les Systemes d'Enteprise Object Oriented Programming PHP Hypertext Preprocessor, původně Personal Home Page Rapid Application Development Relational Database Management System Sytem Development Methodology Structured Query Language Structured System Analysis and Design Method Visual Component Library 32-bit Windows Application Interface Extensible Markup Language
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 13
1 ÚVOD Bez počítačové podpory se v současné době neobejde takřka žádná organizace. Firmy dnes používají hardwarové a softwarové vybavení, které jim umožňuje přehledně vytvářet a zpracovávat doklady vystavované klientům. Na našem trhu se nachází několik takových softwarových produktů. Pokud ale tyto produkty nevyhovují požadavkům firmy, je firma nucena vyvinout vlastní systém, který odpovídá zavedeným vnitrofiremním postupům a zvyklostem. Diplomová práce navrhuje řešení informačního systému pro firmu provozující druhým rokem internetový obchod Moře her na adrese www.more-her.cz. Obchod nabízí hry, stavebnice, hračky a jiný sortiment pro volný čas určený jak pro děti, tak dospělé. Dále v sekci Baby program umožňuje výběr zboží pro nejmenší. První část této práce se věnuje informačním systémům obecně. Nastiňuje jejich hlediska rozdělení, jejich úlohy a cíle. Seznamuje se zavedenými postupy používanými při jejich návrhu. V druhé části jsou popsány realizační prostředky, které byly použity pro tvorbu informačního systému. Tato část se věnuje způsobům a možnostem programování v prostředí Delphi ve spojení s relačním databázovým serverem MySQL. Popisuje také jazyk SQL používaný pro jejich vzájemnou komunikaci. V další části jsou uvedeny požadavky firmy a jejich datová a funkční analýza. Jsou zde navrženy tabulky databáze a definice vztahů mezi nimi. Poslední část práce představuje návrh aplikace informačního systému. Věnuje se nejen vytvoření databáze na serveru MySQL, ale také popisu nejdůležitějších datových tříd a popisu uživatelského rozhraní klientské aplikace, která spravuje databázi.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 15
2 INFORMAČNÍ SYSTÉMY 2.1 INFORMACE A SYSTÉM 2.1.1 Charakteristika informace Pojem informace je pojem vysoce abstraktní. V zásadě je informace nový poznatek o určité události – jevu – obsažený v nějaké zprávě, která má charakter výroku. Odebráním konkrétního obsahu jevu nebo události, o němž se vydávají informace, zůstane jen nějaká množina vzájemně odlišných stavů. Každý objekt může být v každém časovém okamžiku v jednom z mnoha možných stavů. Různé jevy se vzájemně liší počtem možných stavů a zvláštnostmi jejich výběru (pravděpodobností výskytu jednotlivých stavů). Jednotkou informace je jeden bit, který v informatice představuje rozhodnutí mezi dvěma alternativami, nulou a jedničkou. Informace je přenášena a poskytována různými prostředky. Vždy je však vysílána subjektu prostřednictvím nějakého přenosového kanálu. Informace je v určité zprávě obsažená jen tehdy, jestliže u přijímacího subjektu odstraňuje neurčitost. To umožňuje chápat informaci jako něco nového, co momentálně nebo v budoucnosti určitým způsobem ovlivní konání příjemce. Informací tedy míníme sdělení, které odstraňuje nejistotu nebo nevědomost, daty pak míníme jakékoli zaznamenané poznatky či fakta. Jako zvláštní pojem zde vystupuje také znalost představující zobecnění poznání určité části reality. Informaci je možno také chápat jako data s nějakým přidaným významem (informace = data + význam).
2.1.2 Pojem systém Systémem se obecně rozumí soubor prvků, mezi nimiž existují vzájemné vazby. Systém jako celek splňuje nějaký cíl a má určité vztahy ke svému okolí. Každý materiální objekt obsahuje nekonečné množství proměnných a je možné na něm definovat nekonečné množství systémů. Při studiu objektu sledujeme jisté zájmové hledisko, jímž z objektu vymezujeme systém, který je konkrétním předmětem studia. Hranice systému vymezuje samotný systém nebo odděluje více systémů. Logická hranice je hranicí pomyslnou a vymezuje podsystémy v rámci systému. Okolí systému je již hranicí viditelnou. Prvky vně hranice pak ovlivňují chování systému přes jeho vstupy. Nekonečné množství různých systémů lze rozdělit podle různých hledisek: • podle povahy prvků: reálné × abstraktní • podle původu: přírodní × umělé
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 16
Informační systém pro podporu obchodní činnosti
• • • • • • • • •
podle fungování: řízené × neřízené podle stupně složitosti: jednoduché × složité podle vztahu k okolí: otevřené × uzavřené podle délky existence: stálé × dočasné podle reakce na podněty na vstupech: stabilní × nestabilní podle charakteru reakce na působení okolí: aktivní × pasivní podle typu signálu: spojité × diskrétní podle pravděpodobnosti stavů na výstupu: deterministické × stochastické podle závislosti na předchozích hodnotách vstupu: statické × dynamické.
objektivní realita (nekonečná hmota)
objekt
SYSTÉM (určité zájmové hledisko)
okolí
Obr. 1: Systém a jeho zařazení do reality.
Systémy se skládají ze vstupů, procesů a výstupů. Každý systém je charakterizován dvěma základními vlastnostmi: • Chování systému: charakterizuje jeho vnitřní funkční vztahy. Chování systému je závislost mezi podněty okolí působícími na jeho vstup a příslušnými odezvami objevujícími se na jeho výstupu. • Struktura systému: charakterizuje jeho vnitřní funkční vztahy. Strukturou systému rozumíme způsob uspořádání (organizaci) vzájemných vazeb mezi prvky systému, ale i chování těchto prvků. Obě tyto vlastnosti systému spolu úzce souvisejí. Určité struktuře jednoznačně odpovídá chování systému a naopak určitému chování systému odpovídá třída struktur, která je definována tímto chováním.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 17
2.2 INFORMAČNÍ SYSTÉM Informační systém (IS) je systém pro sběr, udržování, zpracování a poskytování informací a dat. Vazby v něm jsou chápány jako informace nebo data a prvky jako místa vzniku, sběru, přenosu, uchování, zpracování a distribuce informací. Systém je tedy soubor prostředků vzájemně účelně vybraných a propojených pro automatizované získávání informací potřebných k rozhodování a řízení. Úkolem systému je dobrá informační strategie, tedy jak včas a ve správnou chvíli dodat určitému člověku informaci, kterou právě potřebuje. Obecně chápeme IS jako systém pro zpracování dat, který má tyto cíle: • strategické (plánování investic) • taktické (vedení, kontrola rozpočtů) • operační (každodenní rutina). Důležité jsou také úlohy IS: • manažerské (EIS - Executive IS) • taktické (DSS - Decision Support System) • vedení (MIS - Management IS) • expertní (KWS - Knowledge Work System) • kancelářské (OIS - Office IS) • operativní: transakční (bankovní systémy), CRM (péče o zákazníka), RIS (rezervační systémy), CAM (konstrukční systémy (CAD)), GIS (geografické systémy). Tato práce se zabývá manažerským IS, který podporuje obchodní činnost firmy správou dat o obchodujících subjektech a předmětech obchodování a zpracováním dokumentace obchodní činnosti firmy.
INFORMAČNÍ SYSTÉM Vstupy OKOLÍ SYSTÉMU Výstupy
Vstupní prvky
Procesy zpracování informací
Datová báze
Výstupní prvky
Obr. 2: Model informačního systému.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 18
Informační systém pro podporu obchodní činnosti
2.3 TVORBA INFORMAČNÍCH SYSTÉMŮ Při narůstající složitosti informačních systémů je nutno provádět jejich návrh standardizovanými metodami a upustit od intuitivního navrhování ad hoc. To lze použít pouze pro jednoduché systémy. Existuje množství studií a metodik používaných při tvorbě IS, například: • procesně orientované přístupy (DeMarco, Gane/Sarson - velký důraz na DFD) • datově orientované přístupy (Warnier/Orr - rozšíření o stavové diagramy) • kombinace obou metod (tzv. Yourdonova metoda) • strukturované metody (SSADM, MERISE, IDEF, MAIN, SDM, …). V dnešní době se nejvíce používají strukturované metody. Stanovují, jak postupovat a jaké techniky používat pro analýzu, návrh a popis skutečností, jakými jsou: • pohyby formulářů, dokumentů, dat a informací ve firmě • vztahy mezi údaji používanými ve firmě • průběhy procesů ve firmě • stavy jednotlivých procesů a vyhodnocení stavu jednotlivých organizačních jednotek i firmy jako celku • události, na které má IS reagovat • další významné skutečnosti potřebné pro následný návrh IS (objemy dat, periodicita dat, požadovaný stupeň utajení dat apod.).
Rozbor zadání Analytické modelování Systémový design Objektový design Implementace Zkušební provoz Nasazení IS Obr. 3: Fáze řízení tvorby a návrhu IS.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 19
3 REALIZAČNÍ PROSTŘEDKY 3.1 OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Objektově orientované programování (OOP) je metodika vývoje softwaru založená na objektech, jejich vlastnostech a operacích s nimi. Některé z vlastností OOP jsou unikátní, jiné (např. abstrakce) jsou běžnou vlastností i jiných vývojových metodik. OOP popisuje nejen způsob vývoje a zápisu programu, ale i způsob, jakým návrhář programu o problému přemýšlí. OOP používá následující techniky a myšlenky: • Objekty: jednotlivé prvky modelované reality (jak data, tak související funkčnost) jsou v programu seskupeny do entit, nazývaných objekty. Objekty si pamatují svůj stav a navenek poskytují operace přístupné jako metody pro volání. • Abstrakce: programátor, resp. program, který programátor vytváří, může abstrahovat od některých detailů práce jednotlivých objektů. Každý objekt pracuje jako černá skříňka, která dokáže provádět určené činnosti a komunikovat s okolím, aniž by vyžadovala znalost způsobu, kterým vnitřně pracuje. • Zapouzdření: zaručuje, že objekt nemůže přímo přistupovat k vnitřním vlastnostem a metodám jiných objektů, což by mohlo vést k nekonzistenci dat. Každý objekt navenek zpřístupňuje rozhraní, pomocí kterého (a ne jinak) se s objektem pracuje. • Skládání: objekt může využívat služeb jiných objektů tak, že je požádá o provedení operace. • Dědičnost: objekty jsou organizovány stromovým způsobem. Objekty jednoho druhu mohou dědit z jiného druhu objektů, čímž přebírají jejich schopnosti. K nim pouze přidávají svoje vlastní rozšíření. Tato myšlenka se obvykle implementuje pomocí rozdělení objektů do tříd, přičemž každý objekt je instancí nějaké třídy. Každá třída pak může dědit od jiné třídy (v některých programovacích jazycích i z několika jiných tříd). • Polymorfismus: odkazovaný objekt se chová podle toho, jaký je jeho skutečný typ. Pokud několik objektů poskytuje stejné rozhraní, pracuje se s nimi stejným způsobem, ale jejich konkrétní chování se liší. V praxi se tato vlastnost projevuje např. tak, že na místo, kde je očekávána instance nějaké třídy, můžeme dosadit i instanci libovolné její podtřídy (třídy, která přímo či nepřímo z této třídy dědí). Dědící třída se může chovat jinak, než by se chovala instance rodičovské třídy, ovšem pouze v rámci hranic daných popisem rozhraní.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 20
Informační systém pro podporu obchodní činnosti
Základním principem OOP je snaha modelovat při řešení úloh svět v počítači pokud možno tak, aby činnosti společné všem dědícím objektům byly stejné. Objekty se tedy liší jen vlastnostmi a metodami, které jsou pro daný objekt logicky jedinečné. Použitím této myšlenky mohou při vývoji složitých informačních systémů jednotliví vývojáři používat již vytvořené komponenty, podle potřeby si je upravit nebo je používat jako stavebnici pro sestavování důmyslnějších a složitějších objektů. Při tom je však nezbytné dbát na zodpovědnost objektu, tedy na to, co objekt umí a o co se stará. Existuje velké množství programovacích jazyků umožňujících objektově orientované programování, např. Smalltalk, Java, C++, Object Pascal, C#, Lisp, PHP atd. Tyto jazyky můžeme rozčlenit jako: • čistě objektové jazyky, ve kterých se programuje pouze pomocí objektů (např. Smalltalk) • hybridní jazyky, ve kterých programátor může a nemusí dodržovat metody OOP (např. C++) • objektová rozšíření původně neobjektových jazyků (např. Object Pascal, který vznikl jako rozšíření neobjektového jazyka Pascal).
3.2 VÝVOJOVÉ PROSTŘEDÍ DELPHI Delphi je grafické integrované vývojové prostředí (IDE) vyvinuté firmou Borland. Slouží k tvorbě aplikací pro MS Windows pomocí programovacího jazyka Object Pascal.
3.2.1 Historie První verzi produktu, Delphi 1, vytvořila firma Borland v roce 1995. Představila tak první překladač s grafickým, objektově orientovaným IDE, který významě ovlivnil tvorbu programů pro MS Windows. Následující verze byly vydávány takřka každý rok a přinášely stále nové možnosti a dokonalejší prostředky. Dnes jsou po verzích 1 až 8 dostupné verze 2005 a 2006, které mimo jiné podporují i platformu .NET a kromě jazyka Object Pascal také jazyk C#.
3.2.2 Možnosti Delphi Jako každý RAD nástroj má Delphi editor kódu, ladicí program, návrhář formulářů a další nástroje. Umožňuje vizuální návrh grafického uživatelského rozhraní, na jehož základě je automaticky vytvářena kostra zdrojového kódu. To výrazně urychluje vývojový proces aplikace. Programování v Delphi je z velké části založeno na použití komponent. Komponenty jsou dopředu vytvořené objekty, které vykonávají určitou činnost. Dělí se na vizuální (zobrazují např. text nebo obrázky) a nevizuální (např. komunikují s databází). Komponenty
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 21
je možno v Delphi vytvářet. Velkou předností Delphi je skutečnost, že knihovny komponent jsou již součástí instalace. Dodávané komponenty významně usnadňují tvorbu aplikací. Kromě samostatných aplikací lze v Delphi vyvíjet také dynamické knihovny DLL, nástroje pro řízení systému, konzolové aplikace, aplikace založené na spolupráci s databázemi i aplikace pro webové servery a práci s internetem. Většina verzí Delphi se dělí na tři typy: • Delphi Personal je základní verzí, poskytuje vše potřebné pro tvorbu aplikací a je ideální zejména pro studenty. Tato verze je nabízena zdarma ke stažení s licencí, jež umožňuje pouze tvorbu aplikací pro osobní spotřebu. • Delphi Professional je určena profesionálním programátorům a oproti základní verzi obsahuje větší počet komponent, podporu databází včetně databázového serveru InterBase s licencí pro 5 uživatelů, řadu komponent pro vývoj internetových aplikací, grafů a tabulek, nástroj pro tvorbu instalačních programů atd. Od této verze jsou programátorům k dispozici i zdrojové kódy knihoven. • Delphi Enterprise je určena pro tvůrce rozsáhlých síťových firemních systémů. Obsahuje podporu standardů XML, CORBA, podporu pro týmový vývoj aplikací, pokročilé nástroje pro tvorbu aplikací založených na jazyku SQL atd. K vytváření vlastních aplikací lze použít mnoho vývojových nástrojů. Delphi dnes patří mezi nejpoužívanější zvláště z několika důvodů. Jsou jimi: • grafické IDE typu RAD • rychlý a výkonný překladač s optimalizací kódu v jazyku Object Pascal • komfortní práce s integrovaným debuggerem • dodávané knihovny komponent VCL • velké množství volně dostupných komponent • snadný návrh pomocí komponent, jejich vlastností a jejich přednastavených reakcí na události • vizuální dědičnost formulářů, což představuje maximální spojení OOP a vizuálního návrhu aplikací • databázová podpora a podpora internetových aplikací • podpora WIN32 API a zpracování v paralelních podprocesech – vláknech (multithreading).
3.2.3 Komponenta Zeos Prostředí Delphi, jež bylo použito, samo neumožňuje nativní přístup k databázi. Bylo proto použito balíčku Zeos Database Objects, který je součástí projektu ZeosLib na serveru www.sourceforge.net. Jde o balíček komponent pro nativní přístup aplikace k databázím MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle a DB/2. Komponenty jsou vyvíjeny jako Open Source pro prostředí Delphi, Kylix a C++ Builder a šířeny pod
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 22
Informační systém pro podporu obchodní činnosti
licencemi GNU GPL, GNU Library a GNU LGPL. Znamená to tedy, že ke zdrojovým kódům produktu má kdokoli přístup, a může tedy přispívat k vývoji opravami, vylepšováním kódu a navrhováním optimalizací. Dostupné zdrojové kódy umožňují vytvořit balíček komponent a ten nainstalovat do vývojového prostředí, v případě této diplomové práce do prostředí Delphi. Balíček obsahuje různé komponenty, z nichž nejdůležitější jsou: • TZConnection: zapouzdřuje databázové spojení a transakční operace • TZReadOnlyQuery: komponenta typu TDataset k provádění SQL dotazů v neinteraktivním režimu spojení • TZQuery: komponenta typu TDataset umožňující změnu dat v normálním a cacheovaném interaktivním režimu • TZSQLMonitor: monitoruje všechny odchozí SQL dotazy a zaznamenává informace o spojení. Základní myšlenkou vývoje komponent Zeos je kompatibilita s příslušnými komponentami Delphi. Proto je možné je použít bez obtíží ve spojení s ostatními prostředky Delphi, které pak využívají jejich vlastnosti a metody.
3.3 JAZYK SQL SQL je standardizovaný dotazovací jazyk používaný pro práci s daty v relačních databázích. Vznikl v 70. letech dvacátého století ve firmě IBM jako jazyk, ve kterém by se příkazy tvořily syntakticky co nejblíže přirozenému jazyku (v tomto případě v angličtině). Americký institut ANSI ho přijal poprvé v roce 1986 jako SQL-86. Dnes vychází většina databázových systémů ze zdokonalené verze standardu SQL-92, případně novějších SQL-99 a SQL-2003, které reagují na potřeby práce nejmodernějších databází s objektovými prvky, rekurzivními výrazy, triggery (spouštěmi) nebo exportem dat do XML.
3.3.1 Základní příkazy Dotazy jazyka SQL můžeme rozdělit do 4 základních skupin: • Příkazy pro manipulaci s daty: jsou to příkazy pro získání dat z databáze a pro jejich úpravy. Označují se zkráceně DML – Data Manipulation Language. Jedná se například o příkazy: o SELECT – vybírá data z databáze, umožňuje výběr podmnožiny dat o INSERT – vkládá do databáze nová data o UPDATE – mění existující záznam v databázi. • Příkazy pro definici dat: těmito příkazy vytváříme struktury databáze – tabulky, indexy, pohledy a další objekty. Vytvořené struktury můžeme upravovat,
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
•
•
Strana 23
doplňovat a odstraňovat. Tato skupina příkazů se nazývá zkráceně DDL – Data Definition Language. Jako příklad lze uvést: o CREATE – vytváření nových objektů o ALTER – změny existujících objektů. Příkazy pro řízení dat: do této skupiny patří příkazy pro nastavování přístupových práv a řízení transakcí. Označují se jako DCL – Data Control Language, někdy také TCC – Transaction Control Commands. Jsou to například: o GRANT – příkaz pro přidělení oprávnění uživateli k určitým objektům o BEGIN – zahájení transakce o COMMIT – potvrzení transakce. Ostatní příkazy: do této skupiny se řadí příkazy pro správu databáze. Pomocí nich se přidávají uživatelé, nastavují parametry (kódování, způsob řazení, formáty data a času apod.). Tato skupina není standardizována a konkrétní syntax příkazů je zavislá na databázovém systému. V některých dialektech jazyka SQL jsou přidány i příkazy pro kontrolu běhu, takže lze tyto dialekty zařadit i mezi programovací jazyky. Příkladem je například: o SET – příkaz pro nastavení proměnných serveru o SOURCE – příkaz pro dávkové zpracování souboru příkazů.
Při sestavování dotazu SQL se použije příkaz a argumenty podle jeho předepsané syntaxe. Dotazy jsou ukončovány středníkem. Následuje jednoduchý příklad výběru dat z tabulky databáze pomocí příkazu SELECT (při použití tab. 1, viz kap. 5.3.2): SELECT idZakaznika, prijmeni, jmeno, ulice, mesto, psc, email, telefon, nazevspol, ico, dic, bankUcet, datum_reg, poznamka FROM tbl_zakaznici;
Vkládání do databáze zajišťuje příkaz INSERT (při použití tab. 1, viz kap. 5.3.2): INSERT INTO tbl_zakaznici SET prijmeni=”Soukup”, jmeno=”Karel”, ulice=”Berkova 1”, mesto=”Brno”, psc=”61200”, email=”
[email protected]”, telefon=”549123456”;
Příklad syntaxe vytvoření databázové tabulky viz kap. 6.1.1.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 24
Informační systém pro podporu obchodní činnosti
Pro nastavení systémových proměnných se užívá příkaz SET, tedy například nastavení maximálního počtu aktuálních připojení k databázi se provede příkazem (v tomto případě pro MySQL): SET Max_used_connections=50;
3.3.2 Transakce Transakční zpracování se považuje za jeden z největších přínosů databází typu klient-server. Transakce totiž minimalizují možné škody při nestandardní situaci. Jejich úkolem je zabezpečit konzistenci dat. Transakční zpracování je obecný koncept, jehož účelem je zajistit integritu jakéhokoliv dynamického systému v rámci přechodu z jednoho konzistentního stavu do druhého. Každá databáze prochází transformacemi v podobě přidávání, změn a rušení záznamů. SQL dotazy se vykonávají jeden po druhém. V případě běžného použití není důležité, v jakém pořadí databáze příkazy vykonává, pokud všechny obslouží rychle. Určité druhy dotazů se však musejí vykonat v konkrétním pořadí. To platí například pro dotazy, které závisejí na výsledcích předchozího dotazu, nebo skupiny aktualizací, jež je zapotřebí vykonat jako celek. Další důvod použití transakcí je v problému fyzického spojení klienta a serveru. Pokud se přistupuje k databázi vzdáleně, je pravděpodobné, že dojde k výpadku spojení. Je tedy možné, že nebude dokončena požadovaná posloupnost příkazů. V případě transakcí je tato možná nekonzistence dat ošetřena. Podpora transakčního zpracování zajišťuje takové provádění transakcí, aby databáze zůstala v konzistentním stavu i v případě selhání některé z operací prováděných na datech. Pro provedení takové operace musí být splněny tři základní podmínky: • řádná definice konzistentních stavů databáze • řádná definice jednotlivých transakcí • korektnost provádění jednotlivých transakcí. Základní vlastnosti transakcí jsou definovány takto: • Atomicita – všechny operace prováděné v rámci transakce jsou chápány jako operace jediná a nedělitelná. • Konzistence – v průběhu transakce může být databáze v nekonzistentním stavu, ale po úspěšném ukončení transakce je stav databáze považován za konzistentní. • Izolovanost – každá transakce je zcela izolována od operací prováděných jinými transakcemi, jako kdyby měla výhradní přístup k celé databázi. • Trvalost – pouze po úspěšném ukončení transakce jsou všechny změny provedené transakcí trvale zachyceny v databázi.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 25
Začátek transakce označuje příkaz BEGIN, příkaz COMMIT znamená její úspěšné dokončení. Mezi těmito dvěma příkazy se provede posloupnost potřebných příkazů. Po zadání příkazu COMMIT se změny stanou trvalými. Pokud se ale stane něco nepředvídatelného, lze použít příkaz ROLLBACK, po kterém dojde k vrácení změn provedených transakcí. Následuje příklad sledu příkazů při použití transakce (při použití tabulky tbl_zakaznici z kap. 5.3.2): BEGIN SELECT * FROM tbl_zakaznici WHERE prijmeni=”Novák”; ... (práce se záznamy v programu, např. kontrola údajů) UPDATE * FROM tbl_zakaznici SET poznamka=”K objednávce přibalit dárek akce Dárky pro věrné Nováky” WHERE prijmeni=”Novák”; COMMIT
3.3.3 Izolační úrovně transakcí Při souběžném použití transakcí by se mohlo stát, že se dvě různé transakce budou pokoušet měnit stejné údaje. V ten okamžik může dojít ke ztrátě informace, protože měněná data jsou změněna ještě před tím, než je první změna potvrzena. Aby se předešlo takovému stavu, používá se mechanismus úrovní izolace transakcí. Server řídí přístup transakcí k datům pomocí různých typů zámků. Jelikož má soupeření transakcí o data negativní vliv na výkon systému, definuje standard SQL několik izolačních úrovní, které představují různou míru kompromisu mezi nechráněným přístupem a exkluzivním přístupem blokujícím práci všem transakcím. Úroveň izolace je vlastností transakce, a různé transakce tedy mohou pracovat s odlišnou úrovní izolace. Standard SQL92 definuje následující izolační úrovně: • Read Uncommitted – dovoluje transakcím číst nepotvrzená data z jiných transakcí – nečistá čtení. Aktualizace stejných dat je však zablokována. Úroveň dovoluje nejvyšší propustnost dat, ale zároveň může dojít k celé škále anomálií z důvodu čtení nepotvrzených dat. Některé databázové systémy tuto úroveň izolace z bezpečnostních důvodů vůbec nepřipouštějí. • Read Commited – nepovoluje nečistá čtení (viz úroveň Read Uncommited). Blokuje souběžnou aktualizaci dat a povoluje pouze čtení potvrzených změn. Při krátkých a jednoduchých změnách dat dovoluje tato úroveň propustnost dat srovnatelnou s úrovní Read Uncommited. Přesto může při přidávání nových záznamů docházet k anomáliím – k přidávání fantomových řádků, kdy dva
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 26
Informační systém pro podporu obchodní činnosti
•
•
stejné dotazy vrátí po časové prodlevě jinou množinu dat. Úroveň povoluje neopakovatelná čtení vzniklá opakovaným čtením řádků měněných a potvrzených jinou transakcí. Repeatable Read – nepovoluje neopakovatelná čtení, stále ale hrozí anomálie vzniklé přidáním nových řádků. Úroveň je vhodné používat při transakcích, které potřebují neměnný pohled na data. Možnost vzniku fantomových řádků je většinou vyloučena použitím operací, které na základě přečtených údajů mění data. Serializable – nepovoluje ani fantomová čtení, data přístupná v transakci jsou stejná jako na začátku transakce.
Změnu izolační úrovně na úroveň Read Commited pro všechny nové transakce aktuálního spojení zajistí SQL příkaz: SET SESSION TRANSACTION ISOLATION LEVEL READ_COMMITED;
3.4 DATABÁZOVÝ SYSTÉM MYSQL 3.4.1 Charakteristika MySQL je Open Source databázový systém vytvořený švédskou firmou MYSQL AB. Je považován za úspěšného průkopníka dvojího licencování – je k dispozici jak pod bezplatnou licencí GPL, tak pod komerční placenou licencí. Jde o multiplatformní databázi typu klient-server. Komunikace s ní probíhá – jak už název napovídá – pomocí jazyka SQL. Podobně jako u ostatních SQL databází se jedná o dialekt tohoto jazyka s některými rozšířeními. Databáze MySQL je systém řízení relačních databází – RDBMS. Je to program schopný ukládat velké množství různých dat a vracet je zpět při naplňování potřeb jakéhokoliv typu firmy nebo organizace. MySQL byla od počátku optimalizována především pro rychlost, a to i za cenu některých zjednodušení, například měla jen jednoduché způsoby zálohování. Nové vlastnosti jsou doplňovány teprve v posledních letech, kdy je začali postrádat nejčastější uživatelé produktu – programátoři. Z přehledu podporovaných vlastností jsou nejdůležitější: • použití cizích klíčů (od verze 3.23 podporovány v tabulkách typu InnoDB) • použití transakcí (od verze 3.23 podporovány v tabulkách typu InnoDB) • podpora různých znakových sad a časových pásem v datech (od verze 4.1) • poddotazy (od verze 4.1).
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 27
Pro svou snadnou implementovatelnost (lze jej instalovat na Linux, MS Windows, ale i další operační systémy), výkon a především díky tomu, že se jedná o volně šiřitelný software, má MySQL vysoký podíl na databázích, které se v současné době používají na českých i zahraničních serverech. Velmi oblíbená a často nasazovaná je kombinace MySQL, PHP a serveru Apache jako základní software webového serveru.
3.4.2 Typy tabulek V MySQL existují dva typy tabulek. Tabulky InnoDB a BDB jsou transakčně zabezpečeny, ISAM, MyISAM, MERGE a HEAP transakčně zabezpečeny nejsou. Volba správného typu tabulky může mít zásadní vliv na výkonnost a rychlost databáze. Typ ISAM je starým standardem MySQL a je nahrazen typem MyISAM, který je ideální pro systémy s převahou výběrových dotazů před aktualizacemi. Tabulky typu MERGE vznikají sloučením tabulek MyISAM a používají se k urychlení práce s příliš velkými tabulkami MyISAM. Tabulky typu HEAP jsou nejrychlejším typem, protože jsou umístěny v operační paměti. Vytváří se z jiného typu tabulky například kopírováním záznamů. To je užitečné pro současné procesy aktualizace a rychlého čtení záznamů tabulky. Standardním typem pro podporu transakcí je typ InnoDB. Ve srovnání rychlosti přístupu jsou tabulky InnoDB oproti MyISAM pomalejší, protože mají větší režii při používání transakcí. Podpora tabulek typu BDB je ve fázi vývoje, a není tedy zaručena plná funčnost tabulky. Pracovní stanice
Pracovní stanice
Klientská aplikace
Klientská aplikace
Transakce SQL konverzace Síťové připojení přes Internet
Transakce SQL konverzace Síťové připojení přes LAN
Serverová síťová stanice Databáze
Klientská aplikace
Transakce SQL konverzace lokální připojení
Server MySQL Databáze
Obr. 4: Model klient-server připojení k serveru MySQL.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 28
Informační systém pro podporu obchodní činnosti
3.5 POUŽITÉ PROSTŘEDKY Při tvorbě aplikace pro tuto diplomovou práci bylo použito programovací prostředí Delphi verze 5 Professional. Použitá komponenta Zeos, která byla nainstalována do prostředí Delphi, nese označení ZeosDBO-6.5.1-alpha14-11-2004. Pro kompilaci komponenty bylo nutné přidat k jejímu zdrojovému kódu programovou jednotku DateUtils, která obsahovala definici konverzní procedury DecodeDateTime. Poté již proběhlo sestavení a nainstalování komponenty bez obtíží. Následuje definice zmíněné procedury: procedure DecodeDateTime(Date: TDateTime; var Year, Month, Day, Hour, Min, Sec, MSec: Word); begin DecodeDate(Date,Year,Month,Day); DecodeTime(Date,Hour,Min,Sec,MSec); end;
Aplikace byla vyvíjena s použitím databázového serveru MySQL verze 4.1.14-nt-max. Server byl nainstalován pod operačním systémem MS Windows XP na lokálním počítači.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 29
4 SPECIFIKACE POŽADAVKŮ 4.1 MOMENTÁLNÍ STAV V současnosti není ve firmě zaveden žádný informační systém. Internetový obchod využívá placeného webhostingu. Aplikace internetového obchodu je spuštěna nad databázovým serverem MySQL verze 4.1.7. Ke vkládání produktů do databáze se používá webové rozhraní. Databáze obsahuje záznamy o zboží a vytvořených objednávkách. Objednávky jsou posílány z webové aplikace internetového obchodu na firemní e-mail. Faktury jsou vytvářeny v tabulkovém procesoru MS Excel. Firma se rozhodla kvůli zjednodušení a zároveň i k zefektivnění obchodní činnosti zavést informační systém, který by komplexně obsluhoval internetový obchod.
4.2 POŽADAVKY NA SYSTÉM Aplikace má pracovat pod operačním systémem MS Windows XP a má používat stávající databázi MySQL. Základním požadavkem je rozšíření databáze o evidenci zákazníků a archivaci faktur. Systém má automaticky zjišťovat nové objednávky, umožňovat jejich snadné vyřizování a tisk souvisejících faktur. Dalším požadavkem je zobrazování statistických údajů o prodejích (vystavených fakturách) za určité období, a to o celkovém počtu prodejů, o prodejích tříděných podle výrobce a o průměrném počtu prodejů.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 31
5 DATOVÁ A FUNKČNÍ ANALÝZA Cílem datové analýzy je vymezení datové základny, nad níž bude systém pracovat. Dále se analýza zabývá návrhem a realizací struktury datové základny. Analýza musí identifikovat charakteristiky objektů a určit vztahy mezi těmito objekty. Funkční analýza informačního systému se zaměřuje na shromáždění požadavků konečného uživatele pro vytvoření konceptuálního modelu, na identifikování hlavních činností systému a objektů hlavních činností. Datová a funkční analýza se navzájem doplňují a překrývají.
5.1 DATOVÝ MODEL SYSTÉMU Datová část využívá původní databázi typu MySQL. Pro kompatibilitu s původní databází je databáze rozšířena podle požadavků na funkce informačního systému. Informační systém zpracovává následující části: • katalog zákazníků • katalog produktů • katalog výrobců • katalog objednávek • katalog faktur.
5.1.1 Tok dat v systému V diagramu toku dat (obr. 5) je znázorněn postup uskutečnění prodeje produktu. Zákazník vytváří podle předem vystavené nabídky objednávku. Existují tři typové možnosti postupu vystavování dokladů. Pokud si zákazník zvolí platbu převodem, je mu zaslána zálohová faktura. Po následném uskutečněném peněžním převodu potvrzeném bankou se vystaví faktura, která je přiložena k expedovanému zboží (obr. 5, činnosti 1 a 2). Při volbě zákazníka doručení zásilky zásilkovou službou ve formě dobírky je vystavena faktura. Ta je přiložena k expedovanému zboží (obr. 5, činnost 3). Poslední možností je platba při osobním odběru. Zákazník si po vytvoření objednávky osobně vyzvedne zboží a při přebírání je zaplatí. Systémem je v tomto případě vystavena faktura a příjmový pokladní doklad (obr. 5, činnosti 3 a 4).
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 32
Informační systém pro podporu obchodní činnosti
Objednávka zákazníka
Uhrazení zálohové faktury zákazníkem
Objednávka zákazníka
Uhrazení faktury zákazníkem
1
Nabídka obchodu
Vystavení zálohové faktury
Zálohová faktura
2
Zálohová faktura
Vystavení faktury
Faktura
3
Nabídka obchodu
Vystavení faktury
Faktura
4
Faktura
Vystavení příjmového pokladního dokladu
Příjmový pokladní doklad
Obr. 5: Diagram toku dat.
5.1.2 Návrh datového modelu Základním stavebním prvkem datového modelu jsou entity, které popisují jednotlivé objekty systému. Každou entitu determinují vlastnosti, které nazýváme atributy. Entita Zákazníci Entita obsahuje informace o zákaznících. Prvním atributem je jedinečné číslo zákazníka. Je tu dále uvedeno jméno a příjmení zákazníka, respektive název společnosti,
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 33
kontaktní údaje, fakturační adresa a případně také informace o bankovním spojení. Entita Zákazníci vstupuje do vztahu s entitou Objednávky. Entita Produkty Produkty popisují objekty, které jsou předmětem prodeje. Každý produkt je v systému rozlišen jedinečným identifikátorem. Produkt je zařazen do kategorie produktů a přidružen k výrobci. Pro potřeby firmy se uchovává kód produktu, název produktu, ceny, reklamní popis produktu, údaje o poskytované slevě, o zařazení do kategorie produktů v obchodě, o aktuálním skladovém stavu produktu, o eventuální záruční době a status produktu v nabídce obchodu. Entita Produkty je v relaci s entitou Výrobci a také s entitou Objednávky. Entita Výrobci Tato entita uchovává informace o výrobcích produktů. Obsahuje jedinečný identifikátor výrobce v systému, název výrobce, adresu internetových stránek výrobce, poštovní a e-mailovou adresu výrobce, údaje o kontaktní osobě a případné údaje o bankovním účtu. Je ve vztahu s entitou Produkty. Entita Objednávky Entita obsahuje informace o objednávkách. Každá objednávka je v systému rozlišena jedinečným identifikátorem. Dále je zde uvedeno unikátní číslo objednávky formátované podle potřeb firmy, identifikátor zákazníka, identifikátor způsobu platby, způsob doručení, datum vytvoření objednávky, celková cena objednávky, status vyřizování objednávky a případné datum expedování. Entita vstupuje do vztahu s entitami Produkty, Faktury a Zákazníci. Entita Faktury Faktury jsou základním dokumentem v obchodní činnosti. Systém je uchovává pod jedinečným identifikátorem. Další atributy určují číslo faktury podle firemního formátu, číslo relevantní objednávky, identifikátor zákazníka, identifikátor způsobu platby, datum vystavení, datum splatnosti a datum zaplacení faktury. Jsou zde i atributy pro identifikaci bankovního spojení a atribut identifikátoru statusu zaplacení faktury. Entita je v relaci s entitou Objednávky.
5.2 FUNKCE SYSTÉMU Podle požadavků uživatele obstarává informační systém zejména následující činnosti: • Evidence zákazníků: v informačním systému jsou uchovávána data o zákazníkovi. Je možné přidávat data o nových zákaznících, měnit údaje o stávajících zákaznících a používat tyto údaje při vyřizování objednávek.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 34
Informační systém pro podporu obchodní činnosti
•
•
• • •
Evidence produktů: systém spravuje detailní informace o produktu, který je předmětem prodeje, umožňuje tyto informace měnit a zadávat do databáze data o nových produktech. Systém také kontroluje zásoby daného produktu na skladě, v případě potřeby doplnění skladu je možno měnit údaje o stavu skladových zásob. Informace o produktu a skladovém stavu lze použít při vyřizování objednávek. Vyřizování objednávek: pomocí systému je možno přijímat objednávky a vyřizovat je, případně vytvářet nové objednávky (například po telefonické domluvě). Systém pravidelně zjišťuje existenci nových objednávek. Udržuje také informaci o stavu objednávky (je definováno pět stavů: čeká na vyřízení, přijatá, vyřizuje se, expedovaná, stornovaná). Ze systému lze vytvářet doklady k vyřizovaným objednávkám a ukládat vystavené dokumenty. Evidence dokumentů: systém eviduje vystavené faktury a umožňuje jejich zpětné vyhledávání. Tisk dokumentů: ze systému je možno tisknout všechny potřebné doklady, tedy faktury, zálohové faktury, přehledy například o stavu skladu a statistické přehledy. Zpracování statistických údajů: systém poskytuje souhrnné statistické údaje za dané období. Vytváří statistiky o všech prodejích v Kč, o prodejích podle určitého výrobce a statistiky o počtu prodejů.
5.3 NÁVRH DATABÁZE Entita je v relační databázi reprezentována databázovou tabulkou nebo množinou tabulek se vzájemnými vztahy – relacemi. Vztahy mezi tabulkami v systému se znázorňují pomocí E-R diagramů. Každá tabulka sestává z definovaných sloupců, které odpovídají atributům entity. Řádky tabulky odpovídají jednomu výskytu entity. Každá entita musí být jednoznačně identifikovatelná. K tomu slouží atribut nebo skupina atributů nazývaná identifikační klíč. Jestliže identifikační klíč identifikuje entitu jednoznačně, jde o jednoznačný klíč a takový klíč je zvolen jako primární klíč tabulky. Volí se vždy klíč složený z nejmenšího počtu atributů. V tabulce se vyskytuje vždy jen jeden primární klíč. Konkrétní výskyt vztahu mezi tabulkami je identifikován dvěma klíči v tabulce: primárním klíčem aktuální tabulky a primárním klíčem jiné tabulky, tzv. cizím klíčem.
5.3.1 Normalizace databáze Normalizace databáze je sada pravidel, podle které by se mělo postupovat při návrhu struktury databázových tabulek v relačních databázích. Normalizace pomáhá vyhnout se datovým anomáliím a pozdějším potenciálním problémům se správou dat. Základní myšlenkou normalizace je provést rozklad nenormalizovaného relačního schématu (tj. popisu
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 35
tabulek) do dílčích relačních schémat bez ztráty informace (bezeztrátová dekompozice). Technika normalizace vede: • k eliminaci nadbytečnosti dat, a tedy k menší prostorové náročnosti databáze • k usnadnění změny dat a zabránění vzniku anomálií při této činnosti • k ulehčení zavádění omezení referenční integrity • k vytváření snadno pochopitelné struktury, která je velice blízká situaci reprezentované daty a umožňuje další rozvinutí databáze. Proces normalizace dat je prováděn postupnými tzv. normalizačními kroky, přičemž vznikají jednotlivé normální formy. Je popsáno několik stupňů normalizace, ale používají se v podstatě jen první tři: 1. normální forma: tabulka neobsahuje žádné opakující se atributy, jsou definovány všechny klíčové atributy a všechny atributy závisejí na primárním klíči. V této fázi se obvykle aplikuje i požadavek atomičnosti atributů (jméno a příjmení místo celého jména). 2. normální forma: tabulka je v 1. normální formě a nezahrnuje žádné závislosti, kdy atribut závisí jen na části primárního klíče. Pokud se primární klíč skládá jen z jednoho atributu a tabulka je v 1. normální formě, pak je i v 2. normální formě. 3. normální forma: tabulka je v 2. normální formě a neobsahuje žádné tranzitivní závislosti, tedy když nějaký neklíčový atribut závisí na primárním klíči prostřednictvím jiného neklíčového atributu.
5.3.2 Návrh struktury databáze Podle výše popsaných entit a původní databáze byly navrženy struktury pro databázi systému. Použité původní tabulky byly případně rozšířeny podle požadavků na funkce systému. Primární klíče a cizí klíče v tabulkách začínají písmeny ID a primární klíče jsou vždy prvním atributem tabulky. Následující tabulky definují jednotlivé entity systému. Pole Atribut udává jméno atributu v tabulce, pole Datový typ udává název datového typu atributu používaný v databázi MySQL. Tabulky jsou v 3. normální formě. Atribut
Datový typ
Popis
IDZakaznika
INTEGER(6)
Jedinečný identifikátor zákazníka
Jmeno
VARCHAR(25)
Jméno
Prijmeni
VARCHAR(30)
Příjmení
Ulice
VARCHAR(35)
Fakturační adresa
Mesto
VARCHAR(35)
Město
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 36
Informační systém pro podporu obchodní činnosti
Atribut
Datový typ
Popis
PSC
VARCHAR(6)
Poštovní směrovací číslo
Email
VARCHAR(40)
E-mailová adresa
Telefon
VARCHAR(24)
Telefonní kontakt
NazevSpol
VARCHAR(40)
Název společnosti
ICO
VARCHAR(8)
Identifikační číslo organizace
DIC
VARCHAR(12)
Daňové identifikační číslo
BankUcet
VARCHAR(40)
Číslo bankovního účtu
DatumReg
INTEGER(11)
Datum, kdy byl zákazník zaregistrován
JePlatny
TINYINT(1)
Platnost záznamu v databázi
Poznamka
TEXT
Poznámka o zákazníkovi
Tab. 1: Tabulka tbl_zakaznici.
Atribut
Datový typ
Popis
IDProduktu
INTEGER(6)
Jedinečný identifikátor produktu
IDKategorie
MEDIUMINT(4)
Identifikátor kategorie
KodProduktu
VARCHAR(15)
Firemní kód produktu
NazevProduktu
VARCHAR(145)
Prezentovaný název produktu
PopisProduktu
TEXT
Reklamní popis produktu
IDVyrobce
SMALLINT(4)
Identifikátor výrobce
Zaruka
SMALLINT(2)
Záruka na produkt v měsících
Jednotka
VARCHAR(8)
Měrná jednotka produktu (ks, kg, …)
DatumPridani
INTEGER(10)
Datum přidání produktu do systému
DatumAktualizace INTEGER(10)
Datum poslední aktualizace záznamu
DodaciLhuta
TINYINT(4)
Dodací lhůta produktu ve dnech
Vyrazeno
TINYINT(1)
Indikace platnosti nabídky produktu
Doporucujeme
TINYINT(1)
Indikace doporučovaného produktu
Sleva
DECIMAL(3,1)
Sleva na produkt v %
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 37
Atribut
Datový typ
Popis
DoporucenaCena
DECIMAL(8,2)
Doporučená cena výrobku
Cenabdph
DECIMAL(8,2)
Prodejní cena bez DPH
IDDph
TINYINT(2)
Identifikátor uvažované DPH
SkladovaCena
DECIMAL(8,2)
Nákupní cena produktu na sklad
KusuSkladem
INTEGER(6)
Počet produktů na skladě
KusuObjednano
INTEGER(6)
Počet produktů objednaných zákazníky
Tab. 2: Tabulka tbl_produkty.
Obr. 6: Detailní schéma vztahů tabulky tbl_produkty.
Atribut
Datový typ
Popis
IDVyrobce
SMALLINT(4)
Jedinečný identifikátor výrobce
NazevVyrobce
VARCHAR(30)
Název výrobce
URLVyrobce
VARCHAR(40)
Internetové stránky výrobce
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 38
Informační systém pro podporu obchodní činnosti
Atribut
Datový typ
Popis
Ulice
VARCHAR(35)
Sídlo výrobce
Mesto
VARCHAR(35)
Město sídla výrobce
PSC
VARCHAR(6)
Poštovní směrovací číslo
Email
VARCHAR(40)
E-mailová adresa
Telefon
VARCHAR(24)
Kontaktní telefon
KontaktJmeno
VARCHAR(50)
Jméno kontaktní osoby
ICO
VARCHAR(8)
Identifikační číslo organizace
DIC
VARCHAR(12)
Daňové identifikační číslo
BankUcet
VARCHAR(40)
Číslo bankovního účtu
Poznamka
TEXT
Poznámka o výrobci
Tab. 3: Tabulka tbl_vyrobci.
Atribut
Datový typ
Popis
IDObjednavky
INTEGER(6)
Jedinečný identifikátor objednávky
CisloObjednavky INTEGER(10)
Číslo objednávky podle firemního formátu
IDZakaznika
INTEGER(6)
Identifikátor zákazníka
IDPlatby
SMALLINT(4)
Identifikátor typu platby
IDDoruceni
SMALLINT(4)
Identifikátor způsobu doručení
Datum
INTEGER(10)
Datum přijetí objednávky
Cenabdph
DECIMAL(8,2)
Cena bez DPH
Poznamka
TEXT
Poznámka k objednávce
IDStatusu
TINYINT(2)
Identifikátor stavu vyřizování objednávky
Expedovano
INTEGER(10)
Datum expedice objednávky
BylaZobrazena
TINYINT(1)
Ukazatel zobrazení objednávky
Tab. 4: Tabulka tbl_objednavky.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 39
Obr. 7: Detailní schéma vztahů tabulky tbl_objednavky.
Atribut
Datový typ
Popis
IDPolozky
INTEGER(6)
Jedinečný identifikátor položky objednávky
IDObjednavky
INTEGER(6)
Identifikátor objednávky
IDProduktu
INTEGER(6)
Identifikátor produktu
KodProduktu
VARCHAR(15)
Kód produktu ve firemním formátu
NazevProduktu
VARCHAR (100)
Prezentovaný název produktu
Cenabdph
DECIMAL(8,2)
Účtovaná cena bez DPH
Sleva
DECIMAL(3,1)
Sleva na produkt v době objednávky
DPH
TINYINT(2)
Uvažovaná DPH
PocetKs
DECIMAL(7,2)
Objednaný počet kusů produktu
Jednotka
VARCHAR(5)
Měrná jednotka produktu
Tab. 5: Tabulka tbl_objednavky_polozky.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 40
Informační systém pro podporu obchodní činnosti
Atribut
Datový typ
Popis
IDFaktury
INTEGER(6)
Jedinečný identifikátor faktury
CisloFaktury
INTEGER(10)
Číslo faktury podle firemního formátu
IDObjednavky
INTEGER(6)
Identifikátor objednávky
IDPlatby
SMALLINT(4)
Identifikátor typu platby
DatumVystaveni INTEGER(10)
Datum vystavení faktury
DatumSplatnosti INTEGER(10)
Datum splatnosti faktury
DatumZaplaceni INTEGER(10)
Datum zaplacení faktury
VarSymbol
INTEGER(8)
Variabilní symbol
KonstSymbol
INTEGER(4)
Konstantní symbol
Cenabdph
DECIMAL(8,2)
Cena bez DPH
Poznamka
TEXT
Poznámka k faktuře
IDStatusu
TINYINT(1)
Stav faktury (zaplacená, nezaplacená, …)
Zaloha
DECIMAL(8,2)
Případná záloha
Sleva
DECIMAL(3,1)
Sleva na fakturu v procentech
Tab. 6: Tabulka tbl_faktury.
Obr. 8: Detailní schéma vztahů tabulky tbl_faktury.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 41
Atribut
Datový typ
Popis
IDKategorie
INTEGER(4)
Jedinečný identifikátor kategorie
ParentKat
INTEGER(4)
Identifikátor nadřazené kategorie
NazevKat
VARCHAR(100)
Prezentovaný název kategorie
StatusKat
TINYINT(1)
Indikace prezentování kategorie
Tab. 7: Tabulka tbl_kategorie.
Atribut
Datový typ
Popis
IDPlatby
SMALLINT(4)
Jedinečný identifikátor platby
NazevPlatby
VARCHAR(60)
Prezentovaný název platby
PopisPlatby
TEXT
Prezentovaný popis platby
JePlatny
TINYINT(1)
Platnost způsobu platby
Tab. 8: Tabulka tbl_platby.
Atribut
Datový typ
Popis
IDDoruceni
SMALLINT(4)
Jedinečný identifikátor způsobu doručení
NazevDoruceni
VARCHAR (60)
Prezentovaný název způsobu doručení
CenovyLimit
DECIMAL(5,2)
Limit zvýhodněné ceny
CenaPodLimit
DECIMAL(4,2)
Účtovaná cena pod cenovým limitem
CenaNadLimit
DECIMAL(4,2)
Účtovaná cena nad cenovým limitem
Popis
TEXT
Prezentovaný popis způsobu doručení
JePlatny
TINYINT(1)
Platnost způsobu doručení
Tab. 9: Tabulka tbl_doruceni.
Atribut
Datový typ
Popis
IDDPH
SMALLINT(4)
Jedinečný identifikátor DPH
NazevDPH
VARCHAR(60)
Název DPH
DPH
DECIMAL(4,2)
Uvažovaná hodnota DPH v %
PopisDPH
VARCHAR(255)
Prezentovaný popis DPH
JePlatny
TINYINT(1)
Platnost typu DPH v systému
Tab. 10: Tabulka tbl_DPH. Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 42
Informační systém pro podporu obchodní činnosti
Obr. 9: E-R diagram entit.
Atribut
Datový typ
Popis
IDStatusu
TINYINT(2)
Jedinečný identifikátor statusu objednávky
NazevStatusu
VARCHAR (20)
Prezentovaný název statusu objednávky
JePlatny
TINYINT(1)
Platnost statusu objednávky
Tab. 11: Tabulka tbl_objednavky_statusy.
Atribut
Datový typ
Popis
IDStatusu
TINYINT(2)
Jedinečný identifikátor statusu faktury
NazevStatusu
VARCHAR (20)
Prezentovaný název statusu faktury
JePlatny
TINYINT(1)
Platnost statusu faktury
Tab. 12: Tabulka tbl_faktury_statusy. Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 43
6 IMPLEMENTACE Implementace navrženého systému probíhá v několika krocích: • Prvním krokem je vytvoření databáze na serveru, tedy definice tabulek a jejich atributů. • V další fázi se pro jednotlivé entity vytvoří odpovídající datové třídy. • Následuje navržení grafického rozhraní aplikace a chování jednotlivých ovládacích prvků. • Posledním krokem je napojení nevizuálních komponent – datových tříd – na komponenty vizuální, tedy na grafické rozhraní.
6.1 VYTVOŘENÍ DATABÁZE Databáze je vytvořena přesně podle návrhu její struktury (viz kap. 5.3.2).
6.1.1 Tvorba tabulek Tabulky lze nejjednoduššeji vytvořit pomocí skriptu. Je to textový soubor (standardně s příponou .sql), který obsahuje jednotlivé příkazy v jazyce SQL na vytvoření struktury databáze. Následuje ukázková definice struktury tabulky tbl_zakaznici v generovacím skriptu struktura.sql: CREATE TABLE `tbl_zakaznici` ( `idZakaznika` int(6) NOT NULL auto_increment, `jmeno` varchar(25) NOT NULL default '', `prijmeni` varchar(30) NOT NULL default '', `ulice` varchar(35) NOT NULL default '', `mesto` varchar(35) NOT NULL default '', `psc` varchar(6) NOT NULL default '', `email` varchar(40) NOT NULL default '', `telefon` varchar(24) NOT NULL default '', `nazevSpol` varchar(40) NOT NULL default '', `ico` varchar(8) NOT NULL default '', `dic` varchar(12) NOT NULL default '', `bankucet` varchar(40) NOT NULL default '',
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 44
Informační systém pro podporu obchodní činnosti
`datum_reg` int(11), `poznamka` text NOT NULL default '', `jePlatny` tinyint(1) NOT NULL default '1', PRIMARY KEY (`idZakaznika`) ) ENGINE=InnoDB DEFAULT CHARSET=latin2;
Jednotlivé atributy mají odpovídající typ. Primárním klíčem tabulky je jednoznačný identifikátor idZakaznika typu int (celé číslo). Má zadán příkaz pro automatickou inkrementaci. Poté co server MySQL takto vytvoří tabulku, pamatuje si poslední použité číslo (i když je naposledy vložený záznam vymazán) a automaticky číslo při vkládání nového záznamu o 1 zvyšuje. Počáteční hodnotou číselné řady je 1. Řetězcové atributy jsou vytvořeny jako varchar (pole znaků dynamické délky) s udanou maximální délkou pole. Tento typ se používá, aby se ušetřil diskový prostor obsazený databází. Maximální délka řetězce vychází ze znalosti zadávaných dat a měla by ve všech případech plně dostačovat pro uchování potřebných informací. Pokud atributu není při vkládání nového záznamu přiřazena hodnota, server MySQL na jeho místo vloží prázdný řetězec (''). Atribut popisující datum je celočíselného typu. Ukládá se v něm údaj o datu známý z unixových systémů. Jde o počet sekund, které uběhly od půlnoci 1. 1. 1970. Při čtení a ukládání atributu se používají funkce serveru pro převod dat FROM_UNIXTIME a UNIX_TIMESTAMP. Pokud není datum při vkládání nového záznamu definováno, nabývá pole hodnoty NULL. Tento datový typ byl použit s ohledem na kompatibilitu s původní databází. Konec příkazu vytvářejícího strukturu tabulky udává použitý typ tabulky. Zde je zvolen typ InnoDB, protože umožňuje komunikovat mezi klientem a databází MySQL v bezpečném přenosovém režimu – v režimu transakcí. Databáze MySQL umožňuje nastavit pro každou tabulku znakovou sadu, ve které se data ukládají. Aby zobrazování a používání českých znaků s diakritickými znaménky bylo bezproblémové, nastavuje se pro všechny tabulky znaková sada Latin2 (ISO-8859-2).
6.2 DATOVÉ TŘÍDY 6.2.1 Datový modul DModul je datový modul typu TDataModule. Třída TDataModule se v Delphi používá ke sdružování nevizuálních, zpravidla datových komponent aplikace. Je zde umístěna stěžejní komponenta ZConnection, pomocí níž se aplikace připojuje k databázi. Tuto komponentu dále využívají ostatní datové komponenty pro komunikaci
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 45
s databází. ZConnection obsahuje parametr Hostname, který udává IP adresu nebo DNS jméno serveru v síti. Dále jsou zde přihlašovací údaje User a Password, jméno používané databáze Database a parametr TransactIsolationLevel definující transakční úroveň. V této aplikaci bylo použito transakční úrovně Read Committed. Pro správnou funkci přenosu dat s českou diakritikou je nutno po vytvoření spojení vhodně nastavit proměnné serveru. To bylo ošetřeno v události komponenty ZConnection AfterConnect SQL dotazem „SET NAMES Latin2“, který se vykonává ihned po připojení aplikace k databázi. Dotaz nastavuje proměnné serveru character_set_client, character_set_connection a character_set_results na hodnotu Latin2. Ostatní komponenty v DModulu jsou dotazovací nástroje přistupující k databázi pomocí dotazů jazyka SQL. Jejich prostřednictvím se přistupuje v aplikaci k vlastním záznamům databáze.
Obr. 10: DModul a datové komponenty.
6.2.2 Třída Class_Generic Práce s jednotlivými záznamy v odlišných tabulkách je v zásadě velmi podobná. Používá se vkládání nových záznamů, dále pak změna stávajících a rušení nepotřebných záznamů. Tyto operace se liší atributy v jednotlivých tabulkách, a tedy i použitým SQL
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 46
Informační systém pro podporu obchodní činnosti
dotazem. Užívaný postup je vždy stejný, a proto je jako schéma vytvořena rodičovská třída Class_Generic. Z ní dědí vlastnosti a metody ostatní třídy, jež odpovídají operacím s jednotlivými tabulkami. Jsou to třídy: • ClassDPH • ClassFaktura • ClassKategorie • ClassObjednavka • ClassPolozkyObj • ClassProdukt • ClassStatusFaktury • ClassStatusObj • ClassVyrobci • ClassZakaznik • ClassZpusobDoruceni • ClassZpusobPlatby Chráněné metody třídy Class_Generic: • procedure NaplnPolozky; virtual; abstract; – metoda připravená pro naplnění vlastností třídy, které odpovídají atributům relevantní tabulky • procedure NaplnSeznamy(NazevSloupce,ID,Value:string); virtual; abstract; – metoda připravená pro naplnění seznamů ListNames, ListIDs a ListValues příslušnými daty • function NaplnSQL(SQLString:string):string; virtual; abstract; – metoda využívaná k vytvoření správného SQL dotazu odpovídajícího zpracovávané tabulce • function Proved(SQL:string): boolean; virtual; – metoda provádí zadaný výkonný SQL dotaz. Veřejné vlastnosti a metody třídy Class_Generic: • ListNames:TStringList; – vlastnost pro ukládání seznamu názvů, příp. seznamu jmen • ListIDs:TStringList; – vlastnost, kam se ukládá seznam identifikátorů záznamů odpovídajících položkám vlastnosti ListNames • ListValues:TStringList; – do vlastnosti se ukládá případný seznam hodnot položek příslušných vlastnosti ListNames • function NactiPolozky(SQL:string):boolean; virtual; abstract; – funkce, která je volána aplikací při požadavku načtení atributů záznamu
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
•
•
•
Strana 47
function NactiSeznamy(SQL,nazevsloupce,ID,Value:string):boolean; virtual; abstract; – funkce je volána při požadavku načtení položek do seznamů ListNames, ListIDs a ListValues function DecimalPointConvert(cena:currency):string; – funkce řeší problém s ukládáním záznamu typu currency (měna), ve kterém je kvůli nastavení formátů čísel v systému Windows pro Českou republiku jako oddělovač desetinných míst použita čárka místo serverem užívané tečky procedure Init; virtual; abstract; – metoda je připravena na nastavení vlastnosti třídy na výchozí hodnotu, číselné vlastnosti na nulu, řetězcové na prázdný řetězec ('') a datum na hodnotu 0.
6.2.3 Třída ClassObjednavka Třída ClassObjednavka je děděna z třídy Class_Generic. Rozšiřuje rodičovskou třídu o vlastnosti a metody související s operacemi nad tabulkou tbl_objednavky. Veřejné vlastnosti a metody třídy ClassObjednavka: • vlastnosti třídy: – jména vlastností jsou shodná s příslušnými atributy tabulky tbl_objednavka a mají odpovídající datové typy • function SmazID(id:integer):boolean; – funkce podle zadaného identifikátoru označí položku z tabulky tbl_objednavky jako stornovanou a vrátí úspěšnost celé operace • function UlozID(id:integer):boolean; – podle zadaného argumentu id uloží položku do tabulky tbl_objednavky. Pokud je identifikátor id roven 0, vytvoří položku novou, v opačném případě aktualizuje položku s identifikátorem idObjednavky, který se rovná argumentu funkce id • function NactiPolozky(SQL:string):boolean; override; – funkce naplní podle zadaného SQL dotazu jednotlivé vlastnosti třídy • function NactiSeznamy(SQL,nazevsloupce,ID,Value:string):boolean; override; – funkce načte podle zadaného SQL dotazu a argumentů seznam položek do zděděných vlastností ListNames, ListIDs a ListValues • procedure Init; virtual; override; – metoda nastavuje vlastnosti třídy na výchozí hodnotu (viz kap. 6.2.2). Třída ClassObjednavka využívá všechny vlastnosti a metody třídy Class_Generic. Třída také používá k práci s databází nevizuální komponentu ZQueryObj, jež je obsažena v datovém modulu DModul.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 48
Informační systém pro podporu obchodní činnosti
6.2.4 Ostatní datové třídy Příslušnosti k jednotlivým tabulkám napovídají názvy tříd (viz kap. 5.2.2). Těla, tedy vlastnosti a metody ostatních tříd, jsou analogická a spravují odpovídající tabulku databáze.
6.3 KONFIGURACE APLIKACE Uživatel může v aplikaci modifikovat různá nastavení chování systému, ať už jde o chování grafického rozhraní nebo o jiná nastavení. Vše lze v aplikaci pohodlně měnit přes menu Nastavení. Správu konfiguračních dat obstarávají třídy TSchemata a TNastaveni.
6.3.1 Třída TSchemata Tato třída za běhu aplikace udržuje informace o uložených připojeních k databázím. Veřejnými vlastnostmi třídy jsou například Nazev, Server, Databaze, Uzivatel atd. Tyto vlastnosti jsou objekty typu TStringList a obsahují seznamy jednotlivých položek potřebných při připojování k databázi.
6.3.2 Konfigurační soubor Nastavení aplikace se ukládá do souboru konfigurace ISystem.ini. Jde o soubor typu INI používaný běžně v operačním systému MS Windows. Soubor obsahuje popis schémat připojení k databázím (viz kap. 6.3.1) a informace o nastavení programu (viz kap. 6.3.3).
6.3.3 Třída TNastaveni V třídě TNastavení se shromažďují informace o uživatelském nastavení programu. Třída obsluhuje čtení a ukládání dat do konfiguračního souboru (viz kap. 6.3.2). Obsahuje ale hlavně vlastnosti popisující chování grafického prostředí aplikace, jako například nastavení automatického zarovnávání sloupců v tabulkách, zobrazování detailu aktuálně vybrané položky v tabulce nebo nastavení automatického obnovování dat z databáze v určitém časovém intervalu. Při spuštění aplikace se načte konfigurační soubor s uloženým nastavením. Pokud v souboru nejsou žádná nastavení k dispozici, anebo soubor neexistuje, použijí se hodnoty přednastavené v aplikaci. Při ukončování běhu programu se aktuálně nastavené parametry uloží.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 49
6.4 GRAFICKÉ ROZHRANÍ APLIKACE K interakci uživatele s aplikací se používá její grafické rozhraní. Aplikace je vytvořena jako typ MDI. Obsahuje tedy možnost zobrazit na své ploše mnoho formulářů, které se používají k modifikaci dat databáze.
6.4.1 Hlavní formulář aplikace Po spuštění programu se zobrazí hlavní formulář (obr. 11). V titulkovém pruhu je vedle názvu aplikace umístěna informace o aktuálním datu a systémovém čase. Z menu okna jsou přístupné veškeré položky obsluhující zobrazování jednotlivých dceřiných oken. Pro zobrazení oken lze také použít navigační panel v levé části formuláře s nabídkou akcí.
Obr. 11: Hlavní formulář.
Na liště pod položkami menu jsou umístěny nástroje pro připojení k databázi. Z rozbalovacího pole lze vybrat název uloženého připojení a sousedícími tlačítky spojení navázat nebo zrušit.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 50
Informační systém pro podporu obchodní činnosti
Dalšími objekty na liště jsou tlačítka pro snadný přístup k zobrazení přednastavené internetové stránky a k spuštění zvoleného e-mailového klienta. Internetová stránka je otevřena v implicitním internetovém prohlížeči, e-mailovým klientem může být program na lokálním počítači nebo internetová stránka. Na pravé straně lišty je pro informaci zobrazen týdenní kalendář. Po kliknutí na něj se zobrazí okno s kalendářem měsíčním.
6.4.2 Připojení Před navázáním spojení jsou aplikací požadovány login a heslo pro přístup k databázi. Po připojení aktualizuje aplikace automaticky obsah případných otevřených podoken. Od této chvíle je možno pracovat s informacemi databáze.
Obr. 12: Přihlašovací okno připojení k databázi.
6.4.3 Formuláře entit Kliknutím na požadovanou položku v navigačním panelu se otevře příslušné podokno entity s přehlednou tabulkou, která zobrazuje nejdůležitější informace (obr. 13). V horní části dceřiného okna se nacházejí tlačítka pro vytvoření nové položky a pro opětovné načtení tabulky. Dále je zde tlačítko pro tisk obsahu tabulky a tlačítka pro import a export záznamů z a do souboru ve formátu CSV. Jde o jednoduchý formát určený pro výměnu dat. Jednotlivé záznamy jsou v něm uchovávány na samostatných řádcích, položky záznamu jsou odděleny definovaným oddělovačem (například čárkou či středníkem). Tento formát podporuje většina databázových systémů. Pro vyhledávání v tabulce slouží textové pole, do kterého lze zadat počáteční znaky hledaného řetězce. Po potvrzení požadovaného řetězce klávesou Enter nebo po stisknutí tlačítka Najít se v tabulce v aktuálně zvoleném sloupci najde první položka odpovídající zadání. Kliknutím pravého tlačítka myši na záznam v tabulce se zobrazí PopUp nabídka. Umožňuje správu jednotlivých položek podobně jako nástrojový panel formuláře. Po vybrání akce Detail z PopUp nabídky, po stisknutí klávesy Enter v tabulce nebo po dvojkliku na vybraný záznam tabulky se otevře modální okno se všemi dostupnými informacemi (obr. 14). Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Obr. 13: Formulář pro správu zákazníků.
Obr. 14: Detail záznamu o zákazníkovi.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 51
Strana 52
Informační systém pro podporu obchodní činnosti
6.4.4 Formulář Editace objednávky Detail objednávky se svou strukturou od většiny oken detailů liší (obr. 15). Obsahuje veškeré potřebné informace o přijaté objednávce. V případě potřeby se pomocí něj také nová objednávka zadává. V horní části okna je uvedeno číslo objednávky, lze nastavovat statusy objednávky a způsob doručení zboží. Celková cena objednávky se aktualizuje v závislosti na nastavených pravidlech, která ošetřují připočítávání poštovného k zakázce. Napravo od informací o objednávce jsou zobrazeny údaje o kupujícím zákazníkovi. Zákazníka je možné v případě nové objednávky vyhledat přes tlačítko Najít. Střední část okna je vyhrazena položkám objednávky. Zobrazují se zde důležitá data o kusových cenách položek, o objednávaném množství a o celkové ceně za jednotlivé položky. Je zde také uvedena výše případné procentuální slevy, jež byla na zboží poskytována obchodem v době objednávky. Tlačítkem nebo prostřednictvím PopUp menu lze položky přidávat, případně stávající položky měnit nebo odstraňovat. Ve spodu okna se zobrazují údaje o celkové ceně položek a o konečné ceně zahrnující poplatek za doručení a haléřové vyrovnání.
Obr. 15: Formulář Editace objednávky.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 53
6.4.5 Formulář Editace faktury Otevřít formulář pro vytvoření či úpravu faktury lze dvěma způsoby. Buď se vytvoří nová faktura z objednávky přes tlačítko Fakturace v okně Editace objednávky (viz kap. 6.4.4), nebo se otevře existující faktura z okna zobrazujícího seznam vystavených faktur. Okno (obr. 16) zobrazuje číslo objednávky, na jejímž základě je faktura vystavena, číslo faktury, způsob doručení, údaje o zákazníkovi a seznam fakturovaných položek. Dále jsou zde zobrazena data vystavení, splatnosti a zaplacení, konstantní symbol, procentuální sleva a záloha. Tyto položky může uživatel měnit. Variabilní symbol je shodný s číslem faktury. Posledními údaji jsou v tomto okně součet cen všech položek a celková suma k úhradě. Částky se při změně slevy a zálohy automaticky přepočítávají. Posledním krokem k dokončení fakturace je vytištění faktury. To proběhne po stisknutí tlačítka Faktura v oblasti Tisk. Pokud zákazník platí při osobním vyzvednutí zboží, je k dispozici tisk Příjmového daňového dokladu.
Obr. 16: Formulář Editace faktury.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 54
Informační systém pro podporu obchodní činnosti
6.4.6 Faktura Základním tiskovým výstupem systému je faktura. Jde o daňový dokument, který obsahuje všechny náležitosti související s uskutečněním obchodního styku. Na faktuře jsou uvedeny adresy obou obchodujících stran. Umístění jména a adresy odběratele zboží je zvoleno tak, aby bylo možno použít typizovanou obálku formátu DL s okénkem v adresové části (obr. 17). Dále faktura obsahuje seznam fakturovaných položek s odpovídajícími cenami a celkovou cenou fakturovaného zboží s údajem o koncové platební povinnosti odběratele.
Obr. 17: Ukázka části vytištěné faktury.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 55
6.4.7 Statistiky Aplikace zpracovává statistické údaje o prodejích. V okně statistiky lze v horní liště měnit sledované období prodejů. Stisknutím tlačítka Dodnes se nastaví v poli konce období aktuální datum. Statistika se zobrazuje buď v přehledné tabulce, nebo v grafu (obr. 18). Zobrazení se volí zaškrtnutím pole Graf.
Obr. 18: Graf statistiky prodejů.
6.4.8 Uživatelská nastavení Aplikace dovoluje uživatelské nastavení chování různých prvků (viz kap. 6.3). K tomu slouží položky z menu Nastavení. Kromě chování vizuálních prvků, jako je například zarovnávání sloupců, umožňuje nastavit nutné parametry pro připojení k databázi. K nastavování chování aplikace slouží modální okno Nastavení prostředí. Obsahuje záložky s nastavením pro odpovídající okna aplikace a umožňuje také nastavit chování uživatelských tlačítek a možností tisku. Pomocí přehledného dialogu Nastavení připojení se nastavují jednotlivá schémata připojení (obr. 18). Příslušné akce se provádějí přes tlačítka ve spodní části okna. Pro každou uvažovanou databázi je třeba zadat název firmy (název schématu), DNS název nebo IP adresu hostitelského serveru, na němž se nachází databázový systém, dále jméno databáze, ke které aplikace bude přistupovat, a uživatelské jméno pro připojení k databázi. Heslo není z bezpečnostních důvodů ukládáno a je nutné ho před každým připojením zadat. Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Strana 56
Informační systém pro podporu obchodní činnosti
Pokud na serveru není databáze vytvořena, je možné použít tlačítko Vytvořit databázi. Systém se pokusí připojit k serveru, zkontroluje, zda databáze skutečně neexistuje, a poté ji vytvoří.
Obr. 18: Dialogové okno pro nastavení připojení.
6.5 INSTALACE A POŽADOVANÉ PROSTŘEDKY Pro snadné zahájení práce s aplikací byl vytvořen instalační balíček, který nainstaluje informační systém do počítače. Aplikace je určena pro spouštění pod operačním systémem MS Windows XP. Předpokládá možnost spojení se serverem MySQL min. verze 4.1, který podporuje transakční přístup. Pokud nejsou transakce podporovány (například z důvodu existující databáze s tabulkami typu MyISAM), je aplikace plně funkční, avšak není zajištěna integrita dat, například při společném přístupu více instancí aplikace k databázi.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 57
7 ZÁVĚR Cílem práce bylo realizovat pro internetový obchod řešení informačního systému pracujícího se stávající databází MySQL. S ohledem na zadané požadavky firmy byla provedena datová a funkční analýza. Ta poskytla podklady pro rozšíření databáze a vytvoření datových tříd. Aplikace byla vyvíjena v prostředí Delphi. Její komunikace s databázovým serverem probíhá pomocí SQL dotazů. Funkce klientské aplikace byly navrženy podle zavedených zvyklostí firmy. Důraz byl kladen na pohodlnou obsluhu systému a na přehlednou správu dat. Systém dohlíží na korektní zadávání dat a neumožňuje vytváření neúplných tiskových výstupů. K zefektivnění obchodní činnosti zobrazuje systém statistické údaje o prodejích dle zadaných kritérií.
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky
Informační systém pro podporu obchodní činnosti
Strana 59
8 SEZNAM POUŽITÉ LITERATURY TEXIERA, Steve; PACHECO, Xavier. Borland Delphi: Průvodce vývojáře IV. 1. vydání. Praha: Mobil Media, 2002. 512 s. ISBN 80-86097-36-6. TEXIERA, Steve; PACHECO, Xavier. Borland Delphi: Průvodce vývojáře V-VI. 1. vydání. Praha: Mobil Media, 2002. 512 s. ISBN 80-86593-10-X. HOLAN, Tomáš. Delphi v příkladech. 2. vydání. Praha: BEN – technická literatura, 2001. 207 s. ISBN 80-7300-033-4. SVOBODA, Luděk. 1001 tipů a triků pro Delphi.1. vydání. Praha: Computer Press, 2002. 390 s. ISBN 80-7226-529-6. PÍSEK, Slavoj. Začínáme programovat v Delphi. 1. vydání. Praha: Grada Publishing, 2000. 303 s. ISBN 80-247-9008-4. GILFILLAN, Ian. Myslíme v MySQL 4. 1. vydání. Praha: Grada Publishing, 2003. 752 s. ISBN 80-247-0661-X. MASLAKOWSKI, Mark. Naučte se MySQL za 21 dní. Praha: Computer Press, 2001. 478 s. ISBN 80-7226-448-6. POKORNÝ, Jaroslav. Konstrukce databázových systémů. 2. vydání. Praha: Vydavatelství ČVUT, 2004. 166 s. ISBN 80-01-02898-4. ELMASRI, Ramez; NAVATHE, Shamkant. Fundamentals of Database Systems. 3rd ed. Addison Wesley Publishing Company, 2000. 1009 p. ISBN: 0-8053-1755-4. Databáze [online]. 17.03.2004.
MySQL AB :: MySQL Documentation [online]. Builder.cz: diskuzní fórum: Delphi [online]. Borland IDE: Delphi[online].
Vysoké učení technické v Brně, Fakulta strojního inženýrství, Ústav automatizace a informatiky