Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky Vyšší odborná škola informačních služeb v Praze
Sandra Nagyová
Návrh a implementace databázového systému pro CRM (Customer relationship management) společnosti Zyxel Communication Czech, s.r.o.
Bakalářská práce
2011
ZADÁVACÍ LIST
Prohlášení Prohlašuji, že jsem bakalářskou práci na téma Návrh a implementace databázového systému pro CRM (Customer relationship management) společnosti Zyxel Communication Czech, s.r.o. zpracovala samostatně a použila jsem pouze zdrojů, které cituji a uvádím v seznamu použité literatury.
V Praze dne 20. května 2011 Podpis: …………………….
Poděkování Tímto chci poděkovat vedoucí mé práce, PhDr. Heleně Kučerové, za její cenné rady během tvorby mé práce. Zároveň děkuji rodině a mému příteli za podporu a trpělivost.
Abstrakt Cílem této práce je navrhnout a implementovat databázový systém CRM (Customer relationship management) pro společnost Zyxel Communication Czech, s.r.o.. Teoretická část zahrnuje definici základních pojmů a obecných principů databáze a dále také popis technologií využitých pro implementaci Praktickou část tvoří samotná aplikace, tedy popis implementace a funkcí databáze. Využity jsou technologie PHP, SQL, HTML, JavaScript a AJAX.
Abstract Objective of this work is to design and implement database system CRM (Customer relationship management) for Zyxel Communication Czech, s.r.o. company. The theoretical part includes definition of basic terms and common database principles and also technology description used for implementation. Practical part is the database system itself and description of implementation and database functions. Following technologies are used: PHP, SQL, HTML, JavaScript and AJAX.
Obsah 1 Úvod...............................................................................................................................9 2 Úvod do databází..........................................................................................................10 2.1 Datové modely ......................................................................................................10 2.1.1 hierarchický model.........................................................................................10 2.1.2 síťový model ..................................................................................................11 2.1.3 relační model..................................................................................................11 2.2 Architektura databází ............................................................................................11 2.2.1 Centrální architektura.....................................................................................11 2.2.2 Architektura File/server .................................................................................12 2.2.3 Architektura klient/server...............................................................................12 2.3 Relační databázové systémy .................................................................................12 2.3.1 Integrita ..........................................................................................................12 2.3.1.1 Doménová integrita.................................................................................12 2.3.1.2 Entitní integrita........................................................................................13 2.3.1.3 Relační integrita ......................................................................................13 2.3.2 Normalizace dat .............................................................................................13 2.3.2.1 První normální forma ..............................................................................13 2.3.2.2 Druhá normální forma.............................................................................14 2.3.2.3 Třetí normální forma ...............................................................................14 2.3.2.4 Boyce/Coddova normální forma .............................................................14 2.3.2.5 Čtvrtá normální forma.............................................................................15 2.3.2.6 Pátá normální forma................................................................................15 2.3.3 Denormalizace dat..........................................................................................15 2.3.4 Stanovení hodnosti relace ..............................................................................15 2.3.4.1 Hodnost jedna k jedné - 1:1 ....................................................................15 2.3.4.2 Hodnost jedna k více - 1:N .....................................................................16 2.3.4.3 Hodnost více k více - N:M ......................................................................16 2.4 Databáze CRM ......................................................................................................16 2.4.1 Problematika CRM ........................................................................................16 2.4.2 Struktura CRM ...............................................................................................17 2.4.2.1 Operativní část CRM ..............................................................................17 2.4.2.2 Kooperační část CRM .............................................................................17 2.4.2.3 Analytická část CRM ..............................................................................18 3 Databázové programovací jazyky ................................................................................19 3.1 Jazyk SQL .............................................................................................................19 3.1.1 Historie jazyka SQL.......................................................................................19 3.1.2 Základní části jazyka SQL .............................................................................20 3.2 Jazyk PHP .............................................................................................................21 3.2.1 Historie jazyka PHP .......................................................................................21 3.3 HTML ...................................................................................................................21 3.3.1 Historie HTML ..............................................................................................22 3.4 JavaScript ..............................................................................................................22 3.5 AJAX ....................................................................................................................23 4 Zyxel Communication Czech, s.r.o..............................................................................24 4.1 Organizační struktura firmy Zyxel........................................................................24 5 Popis současného systému CRM společnosti Zyxel ....................................................26 6 Návrh nové databáze ....................................................................................................27
6.1 Nedostatky současné databáze ..............................................................................27 6.2 Požadavky na novou databázi ...............................................................................27 6.3 Návrh systému z hlediska funkčnosti....................................................................27 Vedoucí pracovník bude mít na výběr funkce: ...................................................28 Zaměstnanec bude mít na výběr funkce:.............................................................28 6.3.1 Funkce přidat firmu........................................................................................29 6.3.2 Funkce přidat zaměstnance ............................................................................29 6.3.3 Funkce přidat partnerský program .................................................................30 6.3.4 Funkce upravit firmu......................................................................................30 6.3.5 Funkce upravit zaměstnance ..........................................................................32 6.3.6 Funkce vyhledat firmu ...................................................................................32 6.3.7 Funkce vyhledat zaměstnance........................................................................34 6.3.8 Funkce vyhledat partnerský program.............................................................34 6.3.9 Funkce vyhledat Aktivity...............................................................................35 6.3.10 Funkce odstranit firmu .................................................................................35 6.3.11 Funkce odstranit zaměstnance......................................................................36 6.3.12 Funkce odstranit partnerský program...........................................................37 7 Tvorba datového modelu .............................................................................................38 7.1 Konceptuální model – ERA diagram ....................................................................38 7.1.1 Popis tabulek ..................................................................................................38 7.2 Fyzický model – ERA diagram.............................................................................41 7.2.1 Popis Entit ......................................................................................................41 7.2.2 Relace mezi Entitami .....................................................................................46 8 Implementace ...............................................................................................................51 8.1 Klientská část ........................................................................................................51 8.1.1 Uživatelské rozhraní.......................................................................................51 8.1.2 Validace dat....................................................................................................52 8.1.3 Ovládací prvky ...............................................................................................52 8.1.3.1 Přidat/odebrat kontakt .............................................................................52 8.1.3.2 Přidat/odebrat adresu...............................................................................53 8.1.3.3 Přidat/odebrat osobu................................................................................53 8.1.3.4 Další/předchozí ......................................................................................54 8.2 Serverová část .......................................................................................................56 8.2.1 Přihlášení uživatele do systému .....................................................................56 8.2.2 Funcke přidat..................................................................................................57 8.2.2.1 Přidat firmu .............................................................................................57 8.2.2.2 Přidat zaměstnance..................................................................................58 8.2.2.3 Přidat partnerský program.......................................................................59 8.2.3 Funkce Upravit...............................................................................................60 8.2.3.1 Upravit firmu...........................................................................................60 8.2.3.2 Upravit zaměstnance ...............................................................................60 8.2.4 Funkce Vyhledat ............................................................................................61 8.5 Funkce Odstranit ...................................................................................................61 9 Závěr ............................................................................................................................63 10 Seznam použité literatury...........................................................................................64 Seznam obrázků ..............................................................................................................67 Seznam příloh..................................................................................................................67 Příloha 1
1 Úvod Cílem mé práce je návrh a implementace databázového systému CRM pro společnost Zyxel Communication Czech, s.r.o. V této firmě jsem absolvovala praxi během mého studia na Vysoké škole Ekonomické a dále zde pracuji již několik let. Do dnešní doby vede tato společnost svou databázi CRM v programu Microsoft Excel, což považuji za nedostačující, protože nových záznamů přibývá, a tato databáze se stává stále méně přehlednou. Proto jsem se rozhodla vytvořit databázový systém CRM pomocí relační databázové technologie s využitím programovacích jazyků tak, aby byl přehlednější, uživatelsky přijatelnější a dále také rozšířený o další potřebné a důležité funkce. Pro implementaci databáze a uživatelského rozhraní použijí programovací jazyk PHP s využitím SQL, a dále také využiji HTML, JavaScritp a AJAX Hlavním typem mé práce bude projekt. Jedná se o empirický typ práce. Při tvorbě této práce jsem vycházela hlavně z knižních publikací a internetových zdrojů. Také jsem využila znalosti získané během studia na střední škole a Vysoké škole ekonomické
9
2 Úvod do databází Databáze neboli datová základna je systém organizovaných dat, umožňuje přístup k uloženým datům a manipulaci s nimi. Funkční databáze by neměla obsahovat žádné redundance dat. Databáze se skládá ze dvou základních prvků, dat a SŘBD (systém řízení báze dat). [10] Data jsou uspořádané údaje a hodnoty jistých entit a objektů. Využívají se pro získávání informací potřebných pro řídící procesy. [22] Data lze rozdělit na data statická a dynamická. Statická data jsou ta, která od okamžiku zápisu do databáze nemění svůj obsah, jako například numerická data, znakové řetězce, grafika a zvuky. Dynamická data obsahují informace, které podléhají změnám, jedná se o metody a znalosti. Systém řízení báze dat (SŘBD) zajišťuje fyzickou i logickou nezávislost dat na programu, data a jejich popis je uložen odděleně od aplikačních programů. Umožňuje definici a manipulaci s daty, zajišťuje integritu a bezpečnost dat. [10]
2.1 Datové modely Popisují strukturu databáze na konceptuální úrovni. Logické schéma, které vzniká je nezávislé na konkrétních SŘBD. Podle organizace dat rozlišujeme různé datové modely. Datové modely používají pro své vyjádření entity, atributy, domény a vztahy. Existují tři základní datové modely, hierarchický model, síťový model a relační model. [17, 11]
2.1.1 hierarchický model Data jsou uspořádána do stromové struktury. Každý záznam neboli prvek lze propojit s „n“ prvky na kterékoli nižší úrovni, ale pouze s jedním prvkem na vyšší úrovni. Mezi záznamy jsou trvalé vztahy, když chceme přistupovat k podřazeným záznamům lze to pouze přes nadřazené. Tento model umožňuje rychlejší vyhledávání, neprohledává celý soubor, ale pouze příslušné větve. Mezi záznamy nelze jednoduše
10
vyjádřit vztah N:M, záznamy by musely být duplicitní. Struktura databáze musí být předem stanovena, dodatečné změny jsou velmi obtížné. [5, 232]
2.1.2 síťový model Každý prvek může být spojen jakýmkoliv způsobem se všemi ostatními prvky. Vyjádření vztahů je flexibilní (1:N, N:1, N:M). Umožňuje rychlé vyhledávání, jelikož se neprohledává celá databáze, ale sleduje se přímá cesta k danému prvku. Odstraňuje duplicitní záznamy. Nevýhodou je, že vzájemné vztahy mezi množinami se mohou stát velmi komplikovanými. Strukturu databáze je potřeba předem pevně stanovit. Chcemeli
získat
rychlé
odpovědi,
potřebujeme
k tomu
předem
připravené
dotazy,
komplikovanější dotazy potřebují více kroků. [5, 233]
2.1.3 relační model V roce 1970 byl tento model poprvé popsán E. F. Coddem. Data jsou zde organizována do uspořádaných n-tic a to umožňuje flexibilní vytváření vztahů mezi různými prvky, vztahy se definují až v okamžiku, kdy jsou potřeba, vztahy nejsou trvalé. Zachovává integritu, změna struktury databáze lze pouhým přidáním nebo zrušením sloupce v konkrétní vybrané tabulce, nijak tak neovlivňuje ostatní tabulky. Tento model je neprocedurální, určuje co se s daty bude dělat a ne jak toho dosáhnout. Jelikož se pracuje neprocedurálním způsobem s celými množinami dat, jsou vysoké nároky na paměť a výkon počítače. Vyhledávání je neefektivní, tento model bere v úvahu celé množiny dat, z kterých pak vybírá požadované data. [17, 9]
2.2 Architektura databází Architektura databází se rozděluje do tří základních kategorií a to, centrální architektury, architektury file/server a architektury klient/server. Tyto kategorie jsou založeny na různých způsobech komunikace mezi uživateli, počítačovými systémy a databázovými systémy.
2.2.1 Centrální architektura Funkčnost této architektury je založena tak, že v centrálním počítači se nachází systém řízení báze dat (SŘBD) i báze dat neboli databáze. Pro komunikaci mezi
11
uživateli a systémem slouží terminály umístěné na pracovištích. Vstupní údaje se přenášejí pomocí sítě z terminálu do centrálního počítače, kde jsou zpracovány centrálním programem, jelikož zde může probíhat více úloh, je možné že odezvy na dotazy mohou mít jisté zpoždění. [2]
2.2.2 Architektura File/server Na jednotlivých počítačích jsou umístěny všechny oblasti programu, ale vlastní data jsou umístěna na file serveru, po zadání uživatelského dotazu zasílá zpět k uživateli soubor, který obsahuje požadovaná data. [14, 459]
2.2.3 Architektura klient/server Klientský počítač žádá o zaslání dat ze serveru, kde jsou umístěny veškeré databázové soubory a databázový stroj, který tato data zpracovává a posílá je zpět na klientský počítač. Touto architekturou se snižují požadavky na výpočetní výkon klientského počítače a server se tak stává nejvíce zatíženým počítačem. [3, 291]
2.3 Relační databázové systémy Jak je z názvu patrné, hlavním smyslem relačních databází jsou relace. Relace vzniká kartézským součinem nad doménami, výsledkem jsou uspořádané relace, kde nezáleží na pořadí prvků v relacích. Jedná se o tabulku tvořenou ze sloupců a řádků, kde sloupce odpovídají vlastnostem atributů entity a řádky obsahují aktuální stav.
2.3.1 Integrita Integrita představuje pravidla, která omezují hodnoty v řádcích relace. Zabezpečují správnost a konzistenci dat v relacích. Aby byla integrita zachována, musíme dodržovat základní typy integritních omezení, kterými jsou doménová integrita, entitní integrita a relační integrita. [17, 59]
2.3.1.1 Doménová integrita Zajišťuje, že jakákoli hodnota atributu se nachází pokaždé v konkrétním oboru hodnot. Obor hodnot není totéž co datový typ. [17, 60] Datový typ usiluje o přesné definování typu proměnných, který je vždy stanoven svým oborem hodnot a operacemi, které s nimi lze provádět. [19]
12
2.3.1.2 Entitní integrita Každá relace musí mít primární klíč, což je atribut nebo více atributů, jejichž hodnoty výslovně identifikují každý z řádků relace.
2.3.1.3 Relační integrita Určuje úroveň vztahů mezi tabulkami s pomocí cizích klíčů. Zabraňuje nežádoucím změnám v datech, a to tak, že nedovolí podřízené tabulce přidat záznam k neexistujícímu záznamu v nadřízené tabulce. A také nepovolí z nadřízené tabulky odstranit záznam, ke kterému jsou přiřazeny záznamy v podřízené tabulce. Zajišťuje tak konzistenci dat. [17, 63]
2.3.2 Normalizace dat Cílem normalizace je omezit redundanci dat, pomocí nástrojů pro řízení struktury dat. Pravidla pro správnou normalizaci určuje šest normálních forem, kde každá forma je rozšířením předchozí. Normalizovaný datový model, který dodržuje pravidla relační struktury by měl být ve výsledku efektivní a funkční databází. [17, 28] Existuje šest základních normálních forem, které slouží pro dobrý návrh tabulek v databázi. [21]
2.3.2.1 První normální forma Cituji Rebeccu M. Riordan „ Každý atribut vektoru hodnot musí obsahovat jen jednu jednotlivou skalární hodnotu“. [17, 32] Všechny data v relaci musí být atomické, dále nedělitelné. [21] Pro přiblížení této problematiky a její pochopení můžeme využít například adresu. Na obrázku č. 1 vidíme tabulku, která má atribut Adresa, jelikož tento atribut jednoznačně obsahuje několik hodnot, tím pádem nemůže být skalární a tak není v první normální formě.
Obrázek 1 – 1NF nesprávná; Zdroj: Autor
13
Obrázek č. 2 již je v první normální formě, jelikož se skládá z atributů Ulice, Město a PSČ, kde každý má pouze jednu nedělitelnou skalární hodnotu.
Obrázek 2 – 1NF správná; Zdroj: Autor
V této formě se můžeme setkat s nejasnostmi, zda je daná hodnota skalární či nikoliv. Například hodnota datumu může být zavádějící. Datum se skládá z roku, měsíce, dne a někdy i času, otázkou je, zda datum rozložit na samostatné hodnoty, nebo je ponechat jako jednu hodnotu. Vše záleží na požadavcích na systém, zda datum budeme využívat například pouze jako časové razítko, můžeme datum ponechat v celku jako jednu hodnotu. Pokud ale budeme s datumem častěji pracovat, je lepší rozložit ho do samostatných atributů. [17,33]
2.3.2.2 Druhá normální forma Slovy Rebeccy M. Riordan „Relace je ve druhé normální formě, pokud je v první normální formě a navíc všechny její atributy jsou závislé na celém kandidátním klíči“. Někdy se můžeme setkat s problémem, že v tabulce potřebujeme víc než jeden primární klíč, tato situace se řeší tak, že tabulku rozložíme na dvě či více tabulek, kde už každá tabulka bude mít svůj vlastní a jediný primární klíč. [17,34]
2.3.2.3 Třetí normální forma Podle Rebeccy M. Riordan „O relaci říkáme, že je ve třetí normální formě, pokud je ve druhé normální formě a navíc všechny její neklíčové atributy jsou vzájemně nezávislé“. [17, 35]
2.3.2.4 Boyce/Coddova normální forma Vychází ze třetí normální formy. Tuto formu lze použít pouze za splnění tří podmínek a to, relace musí obsahovat dva nebo více kandidátních klíčů, nejméně dva
14
tyto klíče musí být složené a musí se v některých atributech
překrývat. Mezi
kandidátními klíči nesmí být žádná funkční závislost. [17, 38]
2.3.2.5 Čtvrtá normální forma Cituji Rebeccu M. Riordan „Relace je ve čtvrté normální formě, pokud je v Boyce/cidrově normální formě, a navíc všechny vícehodnotové závislosti jsou zároveň funkčními závislostmi z kandidátních klíčů.“ Aby byla tato forma splněna, musíme všechny vícehodnotové závislosti vyčlenit do nezávislých relací. Čtvrtá forma se používá pouze v situaci, kdy atribut obsahuje více hodnot. [17, 40]
2.3.2.6 Pátá normální forma Relace je v páté normální formě, pokud je ve čtvrté normální formě. Trojný a vícerý primární klíč nesmí obsahovat párové cyklické závislosti. [17, 41]
2.3.3 Denormalizace dat Denormalizace dat neboli partitioning se využívá pro vyšší výkonnost databáze. Normalizace tvoří více entit a to způsobuje více propojování mezi jednotlivými tabulkami, což zpomaluje dotazy. Proto je někdy výhodnější pro zlepšení rychlosti konkrétních dotazů zapomenout na přínosy integrity dat a navrátit datovou strukturu na nižší normalizační formu. Pro rozhodnutí zda denormalizovat lze využít tyto příklady. Pokud
je
výkonnost
normalizované
struktury
uspokojující
nemělo
by
se
denormalizovat. Zdali je výkonnost nedostatečná, je zapotřebí zjistit, jestli jí denormalizace pomůže navrátit na uspokojující stupeň. Tak je zapotřebí učinit rozhodnutí zda je zvýšená výkonnost přednější než snížená integrita dat. [5, 261]
2.3.4 Stanovení hodnosti relace Jestliže mezi entitami existuje určitá relace, musí být správně namodelována. K tomu slouží tři základní typy vztahů mezi entitami.
2.3.4.1 Hodnost jedna k jedné - 1:1 Výskyt jedné entity odpovídá právě jednomu výskytu druhé entity. Zpravidla by se daly tyto entity uložit do společné tabulky, ale v některých případech se přeci jen vztah 1:1 využívá. Když tabulka obsahuje velký počet sloupců, z bezpečnostních důvodů se izoluje část tabulky, v případě, že ukládáme krátkodobá data, které pak můžeme lehce odstranit smazáním tabulky, a nebo v případě, že ukládáme data, která se vztahují pouze k části hlavní tabulky. [17, 48]
15
2.3.4.2 Hodnost jedna k více - 1:N První entitě odpovídá více než jedna druhá entita a druhé entitě odpovídá nanejvýš jedna první entita. První entitě je pole primárním klíčem a ve druhé entitě je pole cizím klíčem. [17, 52]
2.3.4.3 Hodnost více k více - N:M První entitě odpovídá více než jedna druhá entita a druhé entitě odpovídá více než jedna první entita. V relační databázi tyto vztahy nelze přímo provést, vytváří se za pomoci vazebních tabulek, které vztah rozloží na dva vztahy 1:N. Spojované tabulky obsahují většinou pouze primární klíče vazebních tabulek. [17, 53]
2.4 Databáze CRM Databáze CRM slouží pro řízení vztahů se zákazníky. Využívá se hlavně pro podporu prodeje, marketingu, zákaznických služeb, správy objednávek či kontaktů a udržování konkurenceschopnosti. Možnosti CRM obsahují různé procesy s důslednou pozorností na zákazníka, jeho věrnost a stabilitu v obchodních vztazích. K novým informačním službám pro zákazníka se využívají zejména informační a komunikační technologie. Implementace systému CRM je někdy složitější než se může zdát. Aby byl celý systém funkční musí se firma naučit jak se zákazníky pracovat, poznat přínosy konkrétních zákazníků pro společnost, jak pozitivní, například finanční přínosy tak i negativní, jako jsou stížnosti na určitý produkt či službu a také reklamaci produktu nebo služby. Firma se musí snažit zákazníky uspokojit, podle konkrétních potřeb jednotlivých zákazníků. [9]
2.4.1 Problematika CRM Zpravidla se rozlišují tři okruhy problematiky CRM, a to marketing, prodej a poskytování služeb. Řešení této problematiky je založeno na několika oblastech, které by ve firmě neměli chybět a to: -
databáze o zákaznících, kde jsou umístěny veškeré informace spojené se zákazníkem a informace o potencionálních zákaznících
-
kontaktní místa jako jsou internet, telefon nebo osobní styk 16
-
adresář a uchovávání historie kontaktů se zákazníkem
-
aktuální seznam produktů
-
tvorba cenových nabídek
-
evidence objednávek
-
existence e-shopu
-
hot line, pro vyřizování reklamací a stížností, nebo pro pořádání soutěží
-
call centrum, pro prodej po telefonu
-
prodej a propagace pomocí pošty
CRM strategie pro správné řešení této problematiky zahrnuje: - určit základní preferované kontakty se zákazníkem - formulovat charakteristiku koncového zákazníka - najít způsob, který zabrání odchodu významných zákazníků - určení cílového místa na trhu
2.4.2 Struktura CRM Systém CRM lze rozčlenit na sektor operativní, kooperační a analytický.
2.4.2.1 Operativní část CRM Operativní CRM zajišťuje realizaci strategie. Jsou to především aplikace podporující obchodní činnost, automatizaci komunikačních marketingových procesů a aplikace služeb a podpory pro zákazníka. Avšak neposkytuje konkurenční výhodu. [16] Do této části CRM patří Back Office čili podpůrné aplikace a zvláště Front Office, což jsou aplikace využívané při kontaktu se zákazníkem: -
aplikace řešené pomocí mobilních telefonů
-
aplikace pro práci centra při kontaktování zákazníků (Contact Center)
-
aplikace pro podporu práce obchodníka (Sales Force Automation)
-
automatizace marketingu (Enterprice marketing)
-
aplikace pro zákaznické služby a podporu (Customer servis and Support)
[16]
2.4.2.2 Kooperační část CRM Tato část představuje používané technologie pro kontakt se zákazníkem. Zda se jedná o osobní kontakt na pobočce firmy, písemnou korespondenci, elektronickou korespondenci, faxovou komunikaci, telefonický kontakt či kontakt přes internet.
17
Používané technologie pro telefonický kontakt jsou: -
pobočková ústředna – Pand (Private Branch Exchange)
-
automatický hlasový signál – IVR (Interactive Voice Response)
-
automatické vytáčení telefonických hovorů – Dealer
-
integrace telefonní a počítačové sítě – CTI (Computer Technology Integration)
-
SMS centrum (Short Message Service)
-
Přístup na internetové stránky přes mobilní telefon – WAP (Wireless Aplication Protocol)
[16]
2.4.2.3 Analytická část CRM Analytické CRM určuje podmínky návrhu strategie CRM a další kroky ovlivňující vztah se zákazníkem. [16] Do této části patří členění klientů, vytipování výnosných zákazníků, analýzy chování zákazníků a marketingových kampaní a také jaké nabídky poskytovat konkrétním zákazníkům, jakou formou a v jaký čas. Úspěšnost CRM projektů je pak založena především na součinnosti všech jeho částí. Bez odpovídajících dat nepřinese analýza správné výsledky a bez analýzy nedosáhne operační část CRM očekávaných efektů. Proto musí být vše integrováno do uceleného systému, který vidíme na obrázku č. 3. [16]
Obrázek 3 - Architektura CRM; Zdroj: [15]
18
3 Databázové programovací jazyky Mezi známé programovací jazyky využívané pro tvorbu databází patří SQL, MS Access, dBase a FoxPro. Dále také programovací jazyky, které jsou spojeny s databázemi a tvorbou webových stránek, jako jsou jazyky PHP, Java a JavaScript. Jelikož v mé bakalářské práci pracuji s jazyky SQL, PHP, HTML, JavaScriptem a AJAXEM, ráda bych tyto jazyky více přiblížila.
3.1 Jazyk SQL SQL (Structured Query Language) je neprocedurální programovací jazyk, to znamená, že kód tohoto jazyka vkládáme do jiného jazyka, který už je procedurální. Jazyk SQL je relačně úplný, obsahuje nástroje pro tvorbu databází a také nástroje pro operace s daty, jako například vkládání, aktualizaci, mazání a vyhledávání dat. [21]
3.1.1 Historie jazyka SQL Prvopočátek jazyka SQL se objevuje v roce 1970, kdy firma IBM prováděla výzkum relačních databází. Z tohoto výzkumu vzniká jazyk SEQUEL (Structured English Query Language). [1] V průběhu několika let se objevuje spousta systémů založených na jazyku SEQUEL, jako například v roce 1981 SQL/DS nebo v roce 1983 systém DB2. Poté jazyk SEQUEL dostává zkrácený název SQL. Relační databáze se stávají stále podstatnějšími a je za potřebí, aby byl jejich jazyk standardizován. Proto v roce 1986 vzniká SQL 86 a je jedním z prvních vydaných ISO standardů, avšak v této verzi se objevuje mnoho nedostatků. V roce 1989 se tak objevuje SQL89, který je rozšířen o dodatek Integrity Enhancement Feature. Vše vyvrcholí až v roce 1992, kdy vzniká SQL92 dnes nazývaný SQL2, je prvním opraveným ISO standardem, který je standardem relačních databází dodnes. Roku 1999 je vydáno SQL3, které je rozšířeno o objektové funkce, které využívají objektově relační databáze. [15, 41]
19
3.1.2 Základní části jazyka SQL Jazyk se skládá z několika částí, které jsou určeny pro různé typy uživatelů, kteří přistupují
k tomuto
jazyku
různě,
administrátor,
návrhář,
koncový
uživatel,
programátor. SQL příkazy se dělí do dvou hlavních kategorií, jazyk pro definici dat DDL (Data Definition Language) a jazyk pro manipulaci s daty DML (Data Manipulation Language). [18] Příkazy DDL se používají na vytváření, úpravu a mazání tabulek a změnu struktury databáze, nebo jakéhokoli objektu v databázi. Patří mezi ně CREATE, kde se musí použít i datové typy, nejčastěji používané jsou VARCHAR pro pevnou délku řetězce, pro číselné typy INTEGER nebo DATETIME pro datum a čas. Určují se zde i primární a jiné klíče. A dále různé omezení, jako například NOT NULL, což znamená, že zvolená položka nesmí být nulová. Příkaz ALTER se používá pro dodatečnou změnu struktury tabulky, nebo dat v tabulce. Mohou se také přidávat primární klíče, ale častější využití ALTER TABLE je pro spojení tabulek přes cizí klíč. DROP umožňuje smazání zvolené tabulky. [6] S jazykem DML se nejčastěji setkávají koncový uživatelé a databázový programátoři, příkazy toho jazyka jsou určené k práci s daty v tabulkách. Obsahuje příkazy INSERT, UPDATE a DELETE, do této části patří i příkaz SELECT. Příkaz INSERT přidává nový řádek do zvolené tabulky. UPDATE upravuje zvolený řádek a DELETE maže zvolený řádek. Příkaz SELECT slouží pro zobrazení vybraných řádků, či tabulek. Další částí je jazyk SDL (Storage Definition Language), ten umožňuje práci s tabulkami. [6] Čtvrtou částí jazyka je VDL (View Definition language), který slouží v vytváření pohledů, zobrazí tabulku, která reálně neexistuje, a to pomocí dotazů pro spojování tabulek nebo zvolených dat. Tento jazyk využívají hlavně návrháři a správci databáze. [21] Jazyk DCL (Data Control Language) slouží pro řízení dat. [18]
20
3.2 Jazyk PHP Tento jazyk je široce používaným mnohoúčelovým skriptovacím jazykem, nejvíce využívaný pro vývoj webových aplikací a umožňuje vložení do HTML. [11]
3.2.1 Historie jazyka PHP Za tento jazyk vděčíme Rasmusovi Lerdorfovi, který ve svém soukromém programu využíval první náznaky tohoto jazyka. Jeho úmyslem nebylo vytvořit nový programovací jazyk, pouze se snažil upravovat si své vlastní webové stránky. V roce 1995 vydal první verzi přístupnou pro veřejnost PHP/FI (personal home page/from interpretter), byla implementována do jazyka C, pro lepší komunikaci s databázemi, toto umožnilo uživatelům jednoduše vyvíjet aplikace pro web. Rasmus Lerdorf uvolnil zdrojový kód a tak každý uživatel může opravovat chyby a vylepšovat kód. V roce 1997 byla vydána druhá verze PHP/FI 2.0 také implementovaná v jazyce C, tuto verzi obohatili především programátoři, kteří přidali své vlastní kódy. Dále se v roce 1998 objevuje verze PHP 3.0 za jejím vývojem stojí Andi Gutmans a Zeev Suraski. Tato verze byla oproti předchozím rychlejší a obsahovala nové funkce, byla rozšířena o další moduly, o podporu mnoha databázových systému, objekty a cookies. V roce 1999 přichází další verze PHP 4.0, která je rozšířena o jádro 'Zend Engine' a o další nové funkce a vlastnosti. V roce 2004 je dokončena další verze PHP 5, na jeho vývoji se pracovalo celé dva roky. Obsahuje jádro 'Zend Engine 2.0' obohaceno o nový objektový model a škálu nových vlastností. [2]
3.3 HTML HTML neboli HyperText Markup Language je značkovací jazyk. Tento jazyk je určen k vytváření dokumentů, které obsahují hypertextové odkazy a pokročilejší formátování. HTML obsahuje prvky, pro vytváření, úpravu a formátování webových stránek. Díky těmto prvkům lze nastavit vzhled stránky, velikost vybraného textu a jeho formu. Dále také lze do dokumentu vkládat obrázky různých velikostí a umožňuje tvorbu formulářů a tabulek. Také umožňuje definici barev pro pozadí celého dokumentu, či tabulky a dále i pro samostatný řádek tabulky nebo pro jednotlivou buňku. Lze vkládat
21
odkazy na další sekce v dokumentu, a nebo na dokumenty které jsou umístěny na jiných stránkách. [12, 17]
3.3.1 Historie HTML V roce 1990 se objevuje první verze HTML 1.0. V roce 1993 byla představena neoficiální verze HTML+, která obsahovala formuláře, tabulky i obrázky, ale nezahrnovala formátování odstavců a ani úpravy textů. V roce 1994 přišla verze HTML 2.0, tato verze byla první, která obsahovala formátování specifikací a stala se oficiálním standardem. Verze HTML 3.0 byla uvedena na trh v roce 1995. V této verzi se poprvé vyskytly tabulky, které bylo možno obtékat textem a také matematické prvky. Tato verze také obsahovala možnost formátování. V roce 1996 se objevuje verze HTML 3.2, která obchází HTML 3.0 a stává se nástupcem verze HTML 2.0. Verze HTML 3.2 obsahuje 19 nových elementů a z verze HTML3.0 si zachovalo tabulky a možnost obtékat je textem. Verze HTML 4.0 přidala podporu elementu OBJECT, který je významný pro vkládání obrázků a multimédií. Tato verze také obsahuje podporu pro úpravu formulářů a tabulek, skriptování na straně klienta, internacionalizaci a další speciální vlastnosti podporující matematické operace a profesionální publikování. Z verze HTML 5.0 je zatím k dispozici pouze pracovní verze. Stále se pracuje na upřesnění specifikací pro tuto verzi. [12, 18]
3.4 JavaScript JavaScript je multiplatformní objektově orientovaný skriptovací jazyk, jehož první verzi v roce 1995 vydaly společnosti Netscape Communications a Sun Microsystems. [24] Tento jazyk je určený pro vytváření a přizpůsobení aplikací na internetu. JavaScript je založen na programovacím jazyku Java. [8]
22
3.5 AJAX AJAX znamená asynchronní JavaScript a XML. Jelikož má jazyk asynchronní charakter, může podávat žádosti na server, přijímat a pracovat s daty ze serveru bez nutnosti obnovení stránky. Umožňuje tak například aktualizaci pouze části stránky, která je způsobená uživatelskou událostí. [7] První zmínka o tomto jazyku se objevuje v roce 2005 v článku Jesse Jamese Garretta s názvem „Ajax: A New Apperoach to web Applications“. [4]
23
4 Zyxel Communication Czech, s.r.o. Společnost ZyXEL byla založena v roce 1989 na Taiwanu panem Dr. Shun-I Chu a v současnosti je předním dodavatelem síťových prvků, jako například Switchů, Routerů a Wifi produktů pro telekomunikační společnosti, malé a střední firmy i domácí uživatele. V roce 2008 se příjem firmy „Zyxel“ vyšplhal na 479 milionů amerických dolarů. V současné době má firma přes 3.200 zaměstnanců a distributory v 70 zemích, kteří jsou schopni obsáhnout na 150 regionálních trhů. V roce 2004 byla otevřena pobočka v České republice, která má zodpovědnost za trhy v České republice, Slovenské republice a v Polsku. Otevření pobočky v České republice bylo logickým krokem rozvoje společnosti a odpovědí na vzrůstající poptávku po produktech společnosti Zyxel. [28] Společnost Zyxel sama o sobě produkty neprodává, pouze vyrábí. V české republice má čtyři velké distributory, a to 100MEGA Distribution, s.r.o., Tech Data Distribution, s.r.o., SWS, a.s. a eD´ system Czech, a.s..
4.1 Organizační struktura firmy Zyxel Pobočka v české republice je poměrně malá. Má pouze 12 zaměstnanců. Ředitele pobočky, recepční, 3 pracovníky na pozici péče o zákazníky, dva účetní, tři obchodní managery a dva servisní pracovníky. Ředitele pobočky, který má na starosti schvalování veškerých zakázek a výběrové řízení pro řešení zakázky. Také komunikuje se zahraničními pobočkami a řeší nejrůznější problémy. Pracovnice na pozici recepční má na starosti uvítání a péči o návštěvníky, předávání
telefonních
hovorů,
připravování
občerstvení
k poradám,
třídění
korespondence. Pracovníci na pozici péče o zákazníky se zaměřují na komunikaci se zákazníky, jak telefonicky tak korespondenčně. Účetní pracovníci mají na starosti účetnictví, mzdové účetnictví, veškeré faktury a dobropisy. Obchodní manageři se starají o resellery a distributory, osobně se s nimi kontaktují, radí jim s problémy, s kterými si neví rady. Pořádají promoakce.
24
Servisní pracovníci se starají o veškeré servisní problémy, jak ve firmě, tak u zákazníků.
25
5 Popis současného systému CRM společnosti Zyxel Firma Zyxel Communication Czech, s.r.o. v současnosti používá několik informačních systémů, proto nemám větší prostor pro komplexnější řešení celého systému CRM. V mé práci se tedy zaměřím pouze na pokrytí mezer, mezi již existujícími systémy, určené pro firemní oddělení, které má na starosti nabídku různých partnerských programů a školení firmám. V současnosti lze provést registraci nových zákazníků, resp. firem u společnosti Zyxel do databáze CRM dvěma způsoby: 1) Zákazník se může registrovat sám na webových stránkách společnosti a automaticky se uloží do systému, který je provozován na webových stránkách společnosti, ke kterému mají přístup pouze stálí zaměstnanci. Pracovníci na pozici péče o zákazníky jsou pouze brigádníci a nemají přístup do webového systému, a tak si vedou svou vlastní databázi v programu Microsoft Excel. Proto je zapotřebí, aby probíhala komunikace mezi stálými zaměstnanci a pracovníky na pozici péče o zákazníky, bohužel v praxi tato komunikace probíhá špatně.
2) Zákazník je kontaktován pracovníkem na pozici péče o zákazníky, který pak zaznamená nový záznam jak na webové stránky, tak do databáze, do dnešní doby vedené v programu Microsoft Excel.
Problém s dvěma databázemi nemám oprávnění řešit, proto jsem se rozhodla alespoň vylepšit databázi, doposud vedenou v programu Microsoft Excel.
26
6 Návrh nové databáze Pří návrhu databáze jsem vycházela především z vlastních zkušeností a celou databázi jsem se snažila navrhnout tak, aby byla z uživatelského hlediska co nejpříjemnější. Zároveň jsem se rozhodla přidat možnost kontroly činnosti zaměstnanců, aby měl vedoucí pracovník přehled o vykonané práci svých podřízených.
6.1 Nedostatky současné databáze -
zdlouhavé přidávání nových záznamů
-
nepřehlednost databáze
-
špatně řešené vyhledávání pomocí klávesové zkratky „CTRL + F“
-
nemožnost kontroly činnosti zaměstnanců
6.2 Požadavky na novou databázi -
možnost vkládání a úprav základních údajů o firmách včetně kontaktů a údajích o osobách, jejichž prostřednictvím lze s firmou komunikovat
-
možnost vyhledávání podle vícero kritérií
-
možnost vkládání a přiřazování partnerských programů firmám
-
možnost přidávání krátkých textových poznámek k firmám
-
možnost kontroly činnosti zaměstnanců
-
přehledné a nenáročné uživatelské rozhraní
-
snadné a intuitivní ovládání
6.3 Návrh systému z hlediska funkčnosti Pro přístup do systému bude zapotřebí přihlášení pomocí uživatelského jména a hesla, poté bude uživatel přihlášen, dokud se sám neodhlásí nebo nebude delší dobu neaktivní. Po přihlášení bude mít uživatel na výběr funkce v závislosti na jeho právech. Systém bude rozlišovat pouze dva typy uživatelů a to řadový pracovník, resp. zaměstnanec a vedoucí pracovník, resp. admin.
27
Vedoucí pracovník bude mít na výběr funkce: -
Přidat o Firmu o Zaměstnance o Partnerský program
-
Upravit o Firmu o Zaměstnance o Partnerský program
-
Vyhledat o Firmu o Zaměstnance o Partnerský program o Aktivity
-
Odstranit o Firmu o Zaměstnance o Partnerský program
-
Odhlásit se
Zaměstnanec bude mít na výběr funkce: -
Přidat o Firmu
-
Upravit o Firmu
-
Vyhledat o Firmu o Partnerský program
-
Odstranit o Firmu
-
Odhlásit se
28
6.3.1 Funkce přidat firmu Pro přidání firmy bude uživatel povinen vyplnit název firmy, který se bude po každém zadaném znaku kontrolovat a zároveň informovat uživatele, zdali se v databázi již firma s tímto názvem nenachází. Systém neumožní uživateli přidat duplicitní název firmy. Dále bude mít uživatel možnost vyplnit následující údaje o firmě:
-
IČO
-
DIČ
-
Banka
-
www
-
Telefon
-
Email
-
Adresa o Ulice o Město o Kraj o PSČ
-
Kontaktní osoba o Titul o Jméno o Příjmení o Telefon o Email
V případě potřeby bude mít uživatel možnost přidat více adres, kontaktů a kontaktních osob. Pro zápis vyplněných údajů do databáze bude mít uživatel k dispozici tlačítko Vložit, po jehož stisknutí se data uloží a uživateli bude nabídnuto přidat další firmu.
6.3.2 Funkce přidat zaměstnance Pro přidání nového zaměstnance bude mít uživatel možnost vyplnit následující údaje:
- Jméno - Heslo
29
- Práva
Pro zápis vyplněných údajů do databáze bude mít uživatel k dispozici tlačítko Vložit, po jehož stisknutí se data uloží a uživateli bude nabídnuto přidat dalšího zaměstnance.
6.3.3 Funkce přidat partnerský program Pro přidání nového partnerského programu bude mít uživatel možnost zadat následující údaje: - Název - Popis
Pro vložení vyplněných dat do databáze bude mít uživatel k dispozici tlačítko Vložit, po jehož stisknutí se údaje uloží a uživateli bude nabídnuto přidat další partnerský program.
6.3.4 Funkce upravit firmu Pro možnost upravení firmy bude muset uživatel nejprve vyhledat firmu. Uživateli bude nabídnuto vyhledávání podle více kritérií:
- Hledat podle Firmy o Firma o IČO o DIČ o Banka o www
-
Hledat podle Adresy o Ulice o Město o PSČ o Kraj
-
Hledat podle Osoby
30
o Titul o Jméno o Příjmení
-
Hledat podle Kontaktu o Telefon o Email
-
Hledat podle Partnerského programu o Firma o Název programu Vyhledávání bude probíhat po každém přidaném znaku a výsledek hledání se
bude zobrazovat v přehledné tabulce. Tato tabulka bude obsahovat maximálně dvanáct nalezených záznamů, pokud bude záznamů více, uživatel se bude moci pomocí tlačítka Další přesunout se na následující záznamy. Pro zobrazení předešlých záznamů bude mít uživatel k dispozici tlačítko Předchozí. Uživatel bude mít možnost vybrat z tabulky požadovanou firmu a dále ji upravovat. Možnosti úpravy jsou: -
upravit již dříve uložené údaje
-
přidat nové údaje o další kontakty fimy o nové adresy o nové osoby o další kontakty osoby
-
odebrat adresu
-
odebrat osobu
-
odstranit firmu se všemi údaji jí náležícími
Pro zápis změn do databáze bude mít uživatel k dispozici tlačítko Uložit, po jehož stisknutí se změněná data uloží a uživateli bude zobrazena firma s upravenými údaji.
31
6.3.5 Funkce upravit zaměstnance Pro možnost úpravy údajů o zaměstnanci uživatel nejprve bude muset vyhledat požadovaného zaměstnance. Pro hledání bude možnost zadat údaje: - Jméno - Heslo - Práva o Zaměstnanec o Administrátor
Vyhledávání bude probíhat po každém přidaném znaku a výsledek se bude zobrazovat v přehledné tabulce. Uživatel bude mít možnost vybrat z tabulky požadovaného zaměstnance a dále ho upravovat. Pro uložení změněných údajů do databáze bude mít uživatel k dispozici tlačítko Vložit, po jehož stisknutí se data uloží a uživateli bude nabídnuto vyhledávání dalšího zaměstnance.
6.3.6 Funkce vyhledat firmu Pro možnost vyhledávání firmy bude mít uživatel na výběr z více kritérií, podle kterých může firmu hledat a dále také podle jejich atributů:
- Hledat podle Firmy o Firma o IČO o DIČ o Banka o www
-
Hledat podle Adresy o Ulice o Město o PSČ o Kraj
32
-
Hledat podle Osoby o Titul o Jméno o Příjmení
-
Hledat podle Kontaktu o Telefon o Email
-
Hledat podle Partnerského programu o Firma o Název programu
Vyhledávání bude probíhat po každém přidaném znaku a výsledek hledání se bude zobrazovat v přehledné tabulce. Tato tabulka bude obsahovat maximálně dvanáct nalezených záznamů, pokud bude záznamů více, uživatel se bude moci pomocí tlačítka Další přesunout se na následující záznamy. Pro zobrazení předešlých záznamů bude mít uživatel k dispozici tlačítko Předchozí. Uživatel bude mít možnost vybrat z tabulky požadovanou firmu a dále bude přesměrován na stránku s následujícími údaji:
- Údaje o firmě - Údaje o primární kontaktní osobě - Poznámky o Vložit poznámku - Aktivní partnerské programy o Odebrat partnerský program o Přidat partnerský program
Uživateli se zobrazí poznámky, které byly v minulosti k této firmě přidány, a bude mít také možnost přidat novou poznámku. Zároveň bude uživatel informován o aktivních partnerských programech této firmy a bude mít možnost jí přiřadit další partnerský program z nabídky partnerských programů. Tato nabídka bude obsahovat
33
pouze názvy těch partnerských programů, které ještě nebyly k této firmě přiřazeny. Uživateli také bude umožněno firmě odebrat aktivní partnerský program. Pro samotnou úpravu údajů o firmě bude mít uživatel k dispozici tlačítko Upravit, po jehož stisknutí bude přesměrován na funkci upravit firmu. .
6.3.7 Funkce vyhledat zaměstnance Pro funkci vyhledávání zaměstnance bude mít uživatel možnost zadat:
- Jméno - Heslo - Práva o Zaměstnanec o Administrátor
Vyhledávání bude probíhat po každém vloženém znaku a výsledek hledání se bude zobrazovat v přehledné tabulce. Tato tabulka bude obsahovat maximálně dvanáct nalezených záznamů, pokud bude záznamů více, uživatel se bude moci pomocí tlačítka Další přesunout se na následující záznamy. Pro zobrazení předešlých záznamů bude mít uživatel k dispozici tlačítko Předchozí. Uživatel bude mít možnost vybrat z tabulky požadovaného zaměstnance a tento záznam upravit. Po stisknutí tlačítka Vložit se upravený záznam uloží do databáze a uživateli bude nabídnuto hledat dalšího zaměstnance.
6.3.8 Funkce vyhledat partnerský program Pro možnost vyhledávání partnerského programu bude uživatel moci zadat:
- Název partnerského programu - Popis partnerského programu Vyhledávání bude probíhat po každém vloženém znaku a výsledek hledání se bude zobrazovat v přehledné tabulce. Tato tabulka bude obsahovat maximálně dvanáct nalezených záznamů, pokud bude záznamů více, uživatel se bude moci pomocí tlačítka Další přesunout se na následující záznamy. Pro zobrazení předešlých záznamů bude mít uživatel k dispozici tlačítko Předchozí. 34
Uživatel bude mít možnost vybrat z tabulky požadovaný partnerský program, který se mu poté zobrazí s kompletním popisem tohoto programu. Partnerský program nebude možno upravovat.
6.3.9 Funkce vyhledat Aktivity Pro možnost vyhledávání aktivit bude uživatel moci zadat:
-
firmu
-
uživatele
Vyhledávání bude probíhat po každém vloženém znaku a výsledek hledání se bude zobrazovat v přehledné tabulce. Tato tabulka bude obsahovat maximálně dvanáct nalezených záznamů, pokud bude záznamů více, uživatel se bude moci pomocí tlačítka Další přesunout se na následující záznamy. Pro zobrazení předešlých záznamů bude mít uživatel k dispozici tlačítko Předchozí.
6.3.10 Funkce odstranit firmu Pro odstranění firmy bude muset uživatel nejprve vyhledat požadovanou firmu. Pro vyhledání bude uživatel nabídnuta možnost vybrat z více kritérií podle kterých bude moci hledat a následně v nich bude moci pro hledání zadat:
- Hledat podle Firmy o Firma o IČO o DIČ o Banka o www
-
Hledat podle Adresy o Ulice o Město o PSČ o Kraj
35
-
Hledat podle Osoby o Titul o Jméno o Příjmení
-
Hledat podle Kontaktu o Telefon o Email
-
Hledat podle Partnerského programu o Firma o Název programu
Výsledek hledání se zobrazí v přehledné tabulce a po vybrání požadované firmy bude odstranění neproběhne automaticky, ale bude muset být potvrzeno uživatelem. Následně bude firma odstraněna i se všemi záznamy, které této firmě náleží a uživateli bude nabídnuto další vyhledávání.
6.3.11 Funkce odstranit zaměstnance Pro možnost odstranění zaměstnance bude muset uživatel nejdříve vyhledat požadovaný záznam. Uživatel bude moci pro hledání zadat:
- Jméno - Heslo - Práva o Zaměstnanec o Administrátor
Výsledek hledání se bude zobrazovat v přehledné tabulce. Po vybrání požadovaného záznamu odstranění neproběhne automaticky, ale bude muset být uživatelem potvrzeno.
36
6.3.12 Funkce odstranit partnerský program Pro funkci odstranit partnerský program bude uživateli nejprve nabídnuta možnost pro vyhledávání, kde bude moci zadat:
- Název partnerského programu - Popis partnerského programu
Výsledek hledání se zobrazí v přehledné tabulce a po vybrání požadovaného partnerského programu odstranění neproběhne automaticky, ale bude muset být potvrzeno uživatelem.
37
7 Tvorba datového modelu V této části práce popíši strukturu a funkcionalitu celé SQL databáze. Nejprve na konceptuální úrovni a následně na úrovni fyzické.
7.1 Konceptuální model – ERA diagram
Obrázek 4 – ERA diagram; Zdroj: Autor
7.1.1 Popis tabulek Login Tato tabulka obsahuje data potřebná pro přihlášení uživatele do databáze. A také pro přidělení uživatelských práv. Atributy tabulky jsou: •
ID_log
- identifikační číslo tabulky
•
Jméno
- přístupové jméno uživatele do databáze
•
Heslo
- přístupové uživatelské heslo do databáze
•
Práva
- obsahuje hodnotu „1“, pokud se jedná o administrátora - obsahuje hodnotu „0“, pokud se jedná o zaměstnance
38
Firma Tato tabulka slouží pro ukládání údajů o firmě a další manipulaci s těmito daty. Tabulka obsahuje atributy:
•
ID_firma
- identifikační číslo tabulky
•
Firma
- název firmy
•
ICO
- ičo firmy
•
DIC
- dič firmy
•
Banka
- číslo bankovního účtu firmy
•
www
- webové stránky firmy
Osoba Úloha této tabulky je uchovávat data o osobách, které náleží firmě a poskytovat možnost další manipulace s těmito údaji. Tabulka obsahuje atributy: •
ID_osoba
- identifikační číslo tabulky
•
Titul
- titul osoby
•
Jméno
- křestní jméno osoby
•
Příjmení
- příjmení osoby
Telefon Tato tabulka slouží pro uchovávání záznamů o kontaktech na firmy a osoby. Poskytuje možnost další manipulace s těmito záznamy. Tabulka obsahuje atributy: •
ID_telefon
- identifikační číslo tabulky
•
Telefon
- telefon firmy a nebo telefon osoby
•
Tab
- obsahuje hodnotu „F“ pokud se jedná o telefon a email firmy - obsahuje hodnotu „O“ pokud se jedná o telefon a email osoby
•
email
- email firmy a nebo email osoby
Adresa Tabulka slouží k uchovávání vložených záznamů o adrese firmy a poskytuje další manipulaci s těmito daty. Tabulka obsahuje atributy: •
ID_adresa
- identifikační číslo tabulky
•
Ulice
- ulice firmy
•
Město
- město ve kterém firma nachází 39
•
PSC
- psč
•
Kraj
- kraj ve kterém se firma nachází
Poznámky Tabulka slouží pro zapisování poznámek týkajících se firmy, například kdy byla firma kontaktována a z jakého důvodu. Dále je zde možno zaznamenávat pozitivní i negativní poznámky získané od zákazníků. Tabulka obsahuje atributy: •
ID_poz
- identifikační číslo tabulky
•
Datum
- datum vložení poznámky
•
Uživatel
- jméno uživatele, který poznámku vytvořil
•
Poznámka
- text poznámky
Aktivity V této tabulce se zaznamenávají veškeré činnosti zaměstnanců. Například kdy byl jaký údaj upraven, vložen či smazán a kým byl vykonán. Tabulka obsahuje atributy: •
ID_aktivity
- identifikační číslo tabulky
•
Datum
- datum vytvoření aktivity
•
Uživatel
- jméno uživatele, který činnost vykonal
•
Aktivita
- činnost v databázi
•
Tab
- obsahuje hodnoty pro identifikaci ke které tabulce aktivita patří
•
Příkaz
- příkaz aktivity
Partn_prog V této tabulce se uchovávají záznamy o vložených partnerských programech. Tabulka obsahuje atributy: •
ID_programu - identifikační číslo
•
Název
- název partnerského programu
•
Popis
- popis partnerského programu
40
7.2 Fyzický model – ERA diagram
Obrázek 5 – ERA diagram; Zdroj: Autor 1
7.2.1 Popis Entit Databáze „SQL“ se skládá celkem z devíti tabulek neboli entit.
Primární entitou zvolenou za specifikaci požadavků je entita Firma. Tato entita se skládá z atributů: -
ID_firma o primární klíč entity Firma o generuje se automaticky, vždy s přírůstkem o jedna o datový typ – INTEGER o integritní omezení
-
maximální délka řetězce 10 znaků
nesmí být nulový
Firma o datový typ VARCHAR o integritní omezení 41
-
maximální délka řetězce 30 znaků
nesmí být nulový
ICO o datový typ – INTEGER
-
DIC o datový typ – VARCHAR o integritní omezení - maximální délka řetězce 30 znaků
-
Banka o datový typ – VARCHAR o integritní omezení - maximální délka řetězce 30 znaků
-
WWW o Datový typ – VARCHAR o Integritní omezení - maximální délka řetězce 30 znaků
Entita Osoba obsahuje atributy: -
ID_osoba o primární klíč tabulky Osoba o generuje se automaticky, vždy s přírůstkem o jedna o datový typ – INTEGER o integritní omezení - maximální délka řetězce 10 znaků
-
ID_firma o cizí klíč tabulky Osoba o datový typ – INTEGER o integritní omezení - maximální délka řetězce 11 znaků
-
Titul o datový typ – VARCHAR o integritní omezení - maximální délka řetězce 30 znaků
-
Jméno o datový typ – VARCHAR o integritní omezení - maximální délka řetězce 30 znaků
-
Příjmení o datový typ – VARCHAR o integritní omezení - maximální délka řetězce 30 znaků
42
Entita Telefon se skládá se z atributů: -
ID_telefon o primární klíč tabulky Telefon o generuje se automaticky vždy s přírůstkem o 1 o datový typ – INTEGER o integritní omezení - maximální délka řetězce 10 znaků
-
ID_tab o datový typ – INTEGER o integritní omezení - maximální délka řetězce 11 znaků
-
Telefon o datový typ VARCHAR o integritní omezení- maximální délka řetězce 11 znaků
-
Tab o datový typ VARCHAR o integritní omezení - maximální délka řetězce 11 znaků
-
Email o datový typ VARCHAR o integritní omezení - maximální délka řetězce 11 znaků
Entita Adresa obsahuje atributy: -
ID_adresa o primární klíč tabulky Adresa o generuje se automaticky vždy s přírůstkem o 1 o datový typ – INTEGER o integritní omezení - maximální délka řetězce 10 znaků
-
ID_firma o cizí klíč tabulky Adresa o datový typ – INTEGER o integritní omezení - maximální délka řetězce 11 znaků
-
Ulice o datový typ – VARCHAR o integritní omezení- maximální délka řetězce 40 znaků
-
Město o datový typ – VARCHAR 43
o integritní omezení - maximální délka řetězce 30 znaků -
PSC o datový typ – INTEGER o integritní omezení - maximální délka řetězce 11 znaků
-
Kraj o datový typ – VARCHAR o integritní omezení - maximální délka řetězce 40 znaků
Entita Aktivity se skládá z atributů: -
ID_aktivity o
primární klíč tabulky Aktivity
o generuje se automaticky vždy s přírůstkem o 1 o datový typ – INTEGER o integritní omezení- maximální délka řetězce 10 znaků -
ID_tab o datový typ – INTEGER o integritní omezení- maximální délka řetězce 11 znaků
-
Datum o datový typ - DATETIME
-
Aktivita o datový typ – VARCHAR o integritní omezení- maximální délka řetězce 100 znaků
-
Tab o datový typ – VARCHAR o integritní omezení- maximální délka řetězce 10 znaků
-
Příkaz o datový typ – VARCHAR o integritní omezení- maximální délka řetězce 100 znaků
Entita Partn_prog se skládá z atributů: -
ID_program o primární klíč tabulky Partn_prog o generuje se automaticky vždy s přírůstkem o 1 o datový typ – INTEGER 44
o integritní omezení- maximální délka řetězce 10 znaků -
Název o datový typ – VARCHAR o integritní omezení - maximální délka řetězce 90 znaků
-
Popis o datový typ – VARCHAR o integritní omezení - maximální délka řetězce 500 znaků
Entita Fipa obsahuje atributy: -
ID_fipa o primární klíč tabulky Fipa o generuje se automaticky vždy s přírůstkem o 1 o datový typ - INTEGER o integritní omezení - maximální délka 10 znaků
-
IDfirma o cizí klíč o datový typ – INTEGER o integritní omezení - maximální délka řetězce 10 znaků
-
IDprog o
cizí klíč
o datový typ – INTEGER o integritní omezení - maximální délka řetězce 10 znaků
Entita Login obsahuje atributy: -
ID_log o primární klíč tabulky Login o generuje se automaticky vždy s přírůstkem o 1 o datový typ – INTEGER o integritní omezení - maximální délka řetězce 4 znaky
-
Jméno o datový typ – VARCHAR o integritní omezení - maximální délka řetězce 65 znaků
-
Heslo o datový typ – VARCHAR 45
o integritní omezení - maximální délka řetězce 65 znaků -
Práva o datový typ – INTEGER o integritní omezení - maximální délka řetězce 11 znaků
Entita Poznámky se skládá z atributů: -
ID_poz o primární klíč tabulky Poznámky o generuje se automaticky vždy s přírůstkem o 1 o datový typ – INTEGER o integritní omezení – maximální délka řetězce 10 znaků
-
ID_firma o cizí klíč o datový typ – INTEGER o integritní omezení – maximální délka řetězce 10 znaků
-
Datum o datový typ – DATETIME
-
Uživatel o datový typ – VARCHAR o integritní omezení – maximální délka řetězce 30 znaků
-
Poznámka o datový typ – VARCHAR o integritní omezení – maximální délka řetězce 200 znaků
-
ID_log o cizí klíč o datový typ - INTEGER
7.2.2 Relace mezi Entitami Entita Firma má vztah k tabulkám: -
Osoba o 1:N (jedna firma může obsahovat více osob) o relace je normalizována pomocí cizího klíče ID_firma v tabulce Firma
46
-
Adresa o 1:N (jedna firma může mít více adres) o tato relace je normalizována pomocí cizího klíče ID_firma v tabulce Adresa
-
Telefon o 1:N (jedna firma může vlastnit více telefonů a emailů) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab v tabulce Telefon, ID_tab obsahuje hodnotu ID_firma a Tab obsahuje hodnotu „F“ pokud telefon a email patří firmě
-
Aktivity o 1:N (jedna firma může vytvářet více aktivit) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab v tabulce Aktivity, kde ID_tab obsahuje hodnotu ID_firma a Tab obsahuje hodnotu „F“ pokud aktivita patří firmě
-
Poznámky o 1:N (jedna firma může vlastnit více poznámek) o relace je normalizována pomocí cizího klíče ID_firma v tabulce Poznámky
-
Partn_prog o N:N (více firem může mít více partnerských programů) o relace je normalizována pomocnou tabulkou Fipa
Entita Fipa slouží jako pomocná tabulka pro rozdělení vztahu N:N mezi tabulkou Firma a Partn_prog na dva vztahy 1:N.
Entita Partn_prog má vztah k tabulkám: -
Firma o N:N (více partnerských programů může být přiřazeno více firmám) o relace je normalizována pomocnou tabulkou Fipa
Entita Osoba má vztah k tabulkám: -
Firma o N:1 (více osob může patřit k jedné firmě) o vztah je normalizován pomocí cizího klíče ID_firma 47
-
Telefon o 1:N (jedna osoba může mít více telefonů a emailů) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab v tabulce Telefon, ID_tab obsahuje hodnotu ID_osoba a Tab obsahuje hodnotu „O“ pokud telefon a email patří osobě
-
Aktivity o 1:N (jedna osoba může tvořit více aktivit) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab v tabulce Aktivity, kde ID_tab obsahuje hodnotu ID_osoba a Tab obsahuje hodnotu „O“ pokud aktivita patří osobě
Entita Telefon má vztah k tabulkám: -
Firma o N:1 (více telefonů může patřit jedné firmě) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab, ID_tab obsahuje hodnotu ID_firma a Tab obsahuje hodnotu „F“ pokud telefon a email patří firmě
-
Osoba o N:1 (více telefonů může náležet právě jedné osobě) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab, kde ID_tab obsahuje hodnotu ID_osoba a Tab obsahuje hodnotu „O“ pokud telefon a email patří osobě
-
Aktivity o 1:N (jeden telefon může mít více aktivit) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab v tabulce Aktivity, kde ID_tab obsahuje hodnotu ID_telefon a Tab obsahuje hodnotu „T“ pokud aktivita patří k tabulce Telefon
Entita Adresa má vztah k tabulkám: -
Firma o N:1 (více adres může náležet právě jedné firmě) o relace je normalizována pomocí cizího klíče ID_firma
-
Aktivity o 1:N (jedna adresa může mít více aktivit) 48
o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab v tabulce Aktivity, kde ID_tab obsahuje hodnotu ID_adresa a Tab obsahuje hodnotu „A“ pokud aktivita patří k tabulce Adresa
Entita Aktivity má vztah k tabulkám: -
Firma o N:1 (více aktivit může vytvářet jedna firma) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab, kde ID_tab obsahuje hodnotu ID_firma a Tab obsahuje hodnotu „F“ pokud aktivita patří k tabulce Firma
-
Osoba o N:1 (více aktivit může vytvářet jedna osoba) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab, kde ID_tab obsahuje hodnotu ID_osoba a Tab obsahuje hodnotu „O“ pokud aktivita patří k tabulce Osoba
-
Adresa o N:1 (více aktivit může vytvářet jedna firma) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab, kde ID_tab obsahuje hodnotu ID_adresa a Tab obsahuje hodnotu „A“ pokud aktivita patří k tabulce Adresa
-
Telefon o N:1 (více aktivit může vytvářet jeden telefon a email) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab, kde ID_tab obsahuje hodnotu ID_telefon a Tab obsahuje hodnotu „T“ pokud aktivita patří k tabulce Telefon
-
Poznámky o 1:1 (jedna aktivita může být vytvořena právě jednou poznámkou) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab, kde ID_tab obsahuje hodnotu ID_poz a Tab obsahuje hodnotu „P“ pokud aktivita patří k tabulce Poznámky
-
Fipa o N:1 ( více aktivit může vytvářet jeden partnerský program)
49
o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab, kde ID_tab obsahuje hodnotu ID_fipa a Tab obsahuje hodnotu „Fipa“ pokud aktivita patří k tabulce Fipa -
Login o N:1 (více aktivit může být vytvořeno jedním uživatelem) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab, kde ID_tab obsahuje hodnotu ID_firpa a Tab obsahuje hodnotu „Fipa“ pokud aktivita patří k tabulce Fipa
Entita Poznámky má vztah k tabulkám: -
Firma o N:1 (více poznámek může patřit jedné firmě) o relace je normalizována pomocí cizího klíče ID_firma
-
Aktivity o 1:1 (jedna poznámka může mít pouze jednu aktivitu) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab v tabulce Aktivity, kde ID_tab obsahuje hodnotu ID_poz a Tab obsahuje hodnotu „P“ pokud aktivita patří k tabulce Poznámky
-
Login o N:1 (více poznámek může být vytvořeno jedním uživatelem) o relace je normalizována pomocí cizího klíče ID_log
Entita Login má vztah k tabulkám: -
Aktivity o 1:N (jeden uživatel může vytvořit více aktivit) o relace mezi těmito entitami je realizována pomocí atributů ID_tab a Tab v tabulce Aktivity, kde ID_tab obsahuje hodnotu ID_log a Tab obsahuje hodnotu „L“ pokud aktivita patří k tabulce Login
-
Poznámky o 1:N (jeden uživatel může vytvořit více poznámek) o relace je normalizována pomocí cizího klíče ID_log v tabulce Poznámky
50
8 Implementace Celý projekt je implementován za využití programovacích jazyků PHP, HTML, JavaScript, AJAX, SQL a lze rozdělit do dvou částí: serverová a klientská. Serverová část zajišťuje komunikaci s SQL databází pomocí PHP, zatímco klientská část zahrnuje oblast uživatelského rozhraní.
8.1 Klientská část V této části se zaměřím na implementaci uživatelského rozhraní a některých ovládacích prvků.
8.1.1 Uživatelské rozhraní Uživatelské rozhraní jsem se snažila implementovat tak, aby bylo přehledné a uživatelky nenáročné. Vycházela jsem z klasického uspořádání webových stránek. Do levé části stránky jsem implementovala přehledné menu, které nabízí již zmiňované funkce pro práci s databázovým systémem. V horní části obrazovky je uživatel informován, kde se nachází a pod jakým jménem je do systému přihlášen. Pod tímto uživatelským jménem je ovládací prvek s názvem Logout, kterým se lze ze systému odhlásit. To je reálně implementováno pomocí hypertextového odkazu.
51
Obrázek 6 – Uživatelské rozhraní; Zdroj: Autor
8.1.2 Validace dat Před samotným zápisem do SQL databáze je výhodné provádět nad vyplněným formulářem validaci dat tak, aby nebylo možné vložit do databáze chybné údaje. Tato validace probíhá na klientském počítači, a pokud validovaná data nesplňují předepsaný formát, bude uživateli zablokováno tlačítko pro zápis údajů do databáze.
8.1.3 Ovládací prvky V této části práce se zaměřím na popis některých ovládacích prvků, které má uživatel k dispozici.
8.1.3.1 Přidat/odebrat kontakt Tato tlačítka slouží pro možnost přidávání a odebírání dalších kontaktů k firmám či osobám. Jejich funkci jsem implementovala pomocí JavaScriptu, který zpracovává klientský počítač a dynamicky přidává/odebírá vstupní textové pole do formuláře.
52
Obrázek 7 – Přidat/Odebrat kontakt; Zdroj: Autor
8.1.3.2 Přidat/odebrat adresu Tato tlačítka slouží pro možnost přidávání a odebírání dalších adres k firmám. Jejich funkci jsem implementovala pomocí JavaScriptu, který zpracovává klientský počítač a dynamicky přidává/odebírá vstupní textové pole do formuláře. Na rozdíl od přidat/odebrat kontakt nepracuje pouze s jedním řádkem, ale se třemi. Viz. Obrázek.
Obrázek 8 – Přidat/Odebrat adresu; Zdroj: Autor
8.1.3.3 Přidat/odebrat osobu Tato tlačítka slouží pro možnost přidávání a odebírání dalších osob k firmám. Na rozdíl od předchozích tlačítek generují mimo vstupních textových polí i tlačítka přidat/odebrat kontakt ke každé přidané osobě.
53
Obrázek 9 – Přidat/Odebrat osobu; Zdroj: Autor
8.1.3.4 Další/předchozí Tato tlačítka slouží po vyhledávání k posouvání zobrazených záznamů, pokud se tyto záznamy nevejdou na jednu stránku. Jejich funkčnost jsem implementovala pomocí AJAXu za využití metody live s atributem click. Pro lepší pochopení zde popíši jejich implementaci na úrovni kódu.
$("#dal").live("click", function() { document.getElementById('pre').disabled = false; document.getElementById('pozice').value = parseInt(document.getElementById('pozice').value) + 12; $.post('vfs.php', $("#forma").serialize(), function(data) { $('#results').html(data); if (parseInt(document.getElementById('pocet').value) == 12) document.getElementById('dal').disabled = false; else document.getElementById('dal').disabled = true; }); });
Pokud uživatel stiskne tlačítko s identifikátorem dal, odblokuje se tlačítko s identifikátorem pre a ve skrytém poli s identifikátorem pozice se inkrementuje jeho hodnota o 12. Poté se provede PHP skript, který zadá SQL dotaz do databáze a ve výsledku se mimo jiné aktualizuje hodnota ve skrytém poli s identifikátorem počet, které obsahuje počet nalezených záznamů. Pokud je tento počet roven 12, odblokuje se tlačítko s identifikátorem dal, v opačném případě se toto tlačítko zablokuje.
54
$("#pre").live("click", function() { if (document.getElementById('pozice').value > 0) document.getElementById('pozice').value = parseInt(document.getElementById('pozice').value) - 12; if (document.getElementById('pozice').value == 0) document.getElementById('pre').disabled = true; $.post('vfs.php', $("#forma").serialize(), function(data) { $('#results').html(data); if (parseInt(document.getElementById('pocet').value) == 12) document.getElementById('dal').disabled = false; else document.getElementById('dal').disabled = true; }); });
Pokud uživatel stiskne tlačítko s identifikátorem pre a pokud je hodnota skrytého pole s identifikátorem pozice větší než 0, dekrementuje se jeho hodnota o 12. Následně se ověří, jestli je jeho hodnota 0, pokud ano zablokuje se toto tlačítko. Poté se provede PHP skript, který zadá SQL dotaz do databáze a ve výsledku se mimo jiné aktualizuje hodnota ve skrytém poli s identifikátorem počet, které obsahuje počet nalezených záznamů. Pokud je tento počet roven 12, odblokuje se tlačítko s identifikátorem dal, v opačném případě se toto tlačítko zablokuje.
Obrázek 10 – Další/Předchozí; Zdroj: Autor
55
8.2 Serverová část V této části se zaměřím na konkrétní řešení některých vybraných funkcí systému, a to přihlášení uživatele do systému, přidávání nových záznamů do databáze, úpravu uložených záznamů, jejich vyhledávání a odstraňování.
8.2.1 Přihlášení uživatele do systému Na stránce index.htm zadá uživatel své přihlašovací údaje, neboli jméno a heslo a po stisknutí tlačítka login se spustí php skript v souboru login.php, který zadá sql dotaz do databáze ve tvaru: SELECT * FROM Login WHERE jmeno='$jmeno' and heslo='$heslo'
Pokud bude výsledkem dotazu právě jeden řádek v databázi, uživatel bude přesměrován na stránku login_success.php a bude mu umožněn přístup do databáze.
Obrázek 11 – Přihlášení uživatele do systému; Zdroj: Autor
V opačném případě bude uživatel přesměrován na stránku login_error.htm, na které bude vyzván k opětovnému zadání přihlašovacích údajů a upozorněn, že zadal neplatné přihlašovací údaje.
56
Obrázek 12 – Nesprávné přihlášení uživatele do systému; Zdroj: Autor V případě úspěšného přihlášení bude zaregistrován session na jméno uživatele, bez kterého nebude možný přístup k ostatním komponentám databáze. To je reálně implementováno na začátku každého souboru podmínkou, která ověřuje, zda je tento session zaregistrován.
session_start(); if(!session_is_registered(jmeno)){ header("location:index.htm"); } ?>
8.2.2 Funcke přidat Uživatel má možnost přidat firmu, zaměstnance či partnerský program, tyto možnosti závisí na uživatelských právech. Tuto závislost jsem implementovala pomocí SQL dotazu, který zjistí uživatelská práva daného uživatele a na základě výsledku dotazu se uživateli zobrazí menu, které odpovídá jeho přiděleným právům.
8.2.2.1 Přidat firmu Pro vložení nové firmy do systému bude uživatel přesměrován na soubor „pf.php“, který obsahuje formulář pro přidání firmy.
57
Obrázek 13 – Přidat firmu; Zdroj: Autor Po stisknutí tlačítka Vložit se spustí skript „pfs.php“, který obsahuje PHP kód s SQL dotazy. Jelikož je vstupní formulář dynamický a může obsahovat různý počet vstupních textových polí, je důležité nejprve zjistit, kolik údajů uživatel vyplnil. To je možné zajistit buď předáváním hodnoty, která obsahuje počet vyplněných polí, nebo využitím PHP funkce isset(), která vrací true, pokud byl její argument definován. Při implementaci jsem zvolila druhou možnost, jelikož při dynamickém vytváření formuláře přiřazuji vstupním textovým polím jména, která obsahují jejich pozici v tomto formuláři. V samotném PHP skriptu pak zjišťuji pomocí funkce isset() zda byla tato pole definována. Než proběhne samotné uložení firmy do databáze, SQL dotazem zjistím, zda firma s tímto názvem již v databázi neexistuje, snažím se tak zamezit duplicitním záznamům v databázi.
8.2.2.2 Přidat zaměstnance Jelikož funkce přidávat zaměstnance náleží pouze administrátorovi, musela jsem zajistit, aby se pouhým přepsáním adresy v hlavičce prohlížeče nedal tento přístup
58
obejít. Proto se zde nejprve zjišťují práva uživatele a samotný SQL dotaz pro přidání se pošle pouze, pokud na to má daný uživatel oprávnění. Pokud by se neoprávněná osoba snažila přidat zaměstnance, zobrazí se varovná hláška „přidávat zaměstnance může pouze administrátor!“.
Obrázek 14 – Přidat zaměstnance; Zdroj: Autor
8.2.2.3 Přidat partnerský program Přidávání partnerského programu jsem implementovala podobně, jako přidávání zaměstnance.
59
Obrázek 15 – Přidat partnerský program; Zdroj: Autor
8.2.3 Funkce Upravit Tyto funkce uživateli nabízí možnosti úprav firem a zaměstnanců. Možnost upravit partnerský program jsem neimplementovala, z důvodů stability této funkce. Kdyby již několik firem bylo v určitém partnerském programu a ten se v budoucnu změnil, neodpovídal by dřívějším vlastnostem tohoto programu. Před samotnou úpravou je uživateli nabídnuto vyhledávání konkrétního záznamu pro úpravu.
8.2.3.1 Upravit firmu PHP skript, který zpracovává formulář pro úpravu firmy, funguje obdobně jako u přidání nové firmy s tím rozdílem, že musí přesně určit, jaké údaje se mění, jaké se přidávají a jaké se mají z databáze odstranit. To jsem vyřešila předáváním skrytých polí, v nichž jsou tyto informace obsaženy. Na základě těchto informací pak PHP skript generuje SQL dotazy buď typu UPDATE, pro úpravu údajů, INSERT, pro přidání nových záznamů, nebo DELETE pro odstranění záznamů.
8.2.3.2 Upravit zaměstnance Úpravu zaměstnance jsem implementovala obdobně jako funkci přidat zaměstnance. Samotný PHP skript dostane id upravovaného zaměstnance z formuláře ve skrytém poli a do SQL databáze posílá dotaz typu UPDATE.
60
8.2.4 Funkce Vyhledat Uživatel má možnost vyhledat Firmu, Zaměstnance, Partnerský program a Aktivity. Vyhledávání jsem implementovala tak, aby probíhalo po každém přidaném znaku. Zde bylo na výběr několik možností jak tento problém řešit: 1) Jelikož při klasickém předávání formuláře pomocí funkce „Submit“ dojde k aktualizaci stránky, je nezbytné již zadané znaky do vstupního textového pole znovu vyplnit z adresy stránky za využití metody GET. 2) Další možností bylo využití jazyka AJAX, pomocí kterého provádím předání dat z formuláře do PHP skriptu asynchronně, bez nutnosti aktualizace stránky. První metoda je sice z hlediska implementace nenáročnější, avšak z důvodu aktualizace stránky bude po každém přidaném znaku docházet k nepříjemnému problikávání celého obsahu na stránce, proto jsem zvolila druhou možnost. Tu jsem implementovala pomocí AJAXové metody live s atributem keyup, kterou jsem přiřadila všem textovým polím pro hledání. Pro lepší pochopení této části implementace zde uvedu příklad kódu pro vstupní textové pole firma, které umožňuje hledat podle názvu firmy: $("#firma").live("keyup", function() { $.post('vfs.php', $("#forma").serialize(), function(data) { $('#results').html(data); }); });
Jakmile dojde k uvolnění klávesy ve vstupním textovém poli, s identifikátorem firma, spustí se funkce, která provede předání formuláře, s identifikátorem forma, metodou POST do PHP souboru vfs.php, který formulář zpracuje, neboli provede SQL dotaz typu SELECT a výsledek vypíše ve formě tabulky do místa na stránce, které je označeno HTML příkazem div, s identifikátorem results.
8.5 Funkce Odstranit Tato funkce se odvíjí od práv uživatele. Uživatel na pozici administrátora má možnost odstranit „Firmu“, „Zaměstnance“ nebo „Partnerský program“. Uživatel na pozici péče o zákazníky může odstranit pouze „Firmu“.
61
Pro odstranění záznamů z databáze musí uživatel nejprve požadovaný záznam vyhledat a následně po vybrání záznamu z tabulky potvrdit jeho odstranění. Poté se provede PHP skript, který dostane id záznamu a název tabulky, v které se tento záznam nachází. Samotné odstranění proběhne pomocí SQL dotazu typu DELETE.
Obrázek 16 – Odstranit firmu; Zdroj: Autor
62
9 Závěr Cíl práce, tedy návrh a implementaci databázového systému, se povedlo splnit. Uskutečněny jsou i veškeré požadavky stanovené v návrhu databáze.
Během tvorby databáze jsem narazila na některé možnosti, které by se daly vylepšit. Například nemožnost upravovat Partnerský program, optimálnějším řešením by bylo, kdyby se dalo upravovat Partnerský program, pokud ještě nebyl přiřazen žádné firmě. Výhodné by to bylo pro uživatele, který vkládá a navrhuje partnerské programy. Také by bylo dobré propojit tento databázový systém s centrální databází společnosti Zyxel tak, aby pracovníci na pozici péče o zákazníky nemuseli vkládat údaje do obou databází, ale pouze do jedné. K tomu jsem bohužel nedostala oprávnění, a tak je to pouze návrh zlepšení do budoucna.
Jedním z hlavních požadavků bylo vytvořit přehlednou databázi, což si myslím že se mi povedlo uskutečnit. Uživatelské rozhraní je příjemné a nabádá uživatele k intuitivnímu ovládání. Mezi hlavní výhody, mnou implementovaného databázového systému, bezesporu patří rychlé a přehledné vyhledávání, což výrazně urychluje práci s celým databázovým systémem.
63
10 Seznam použité literatury [1] ANNAB, Michael . E. F. Codd: [online]. 2003, 1, [cit. 2011-03-14]. Dostupný z WWW:
.
[2] BRÁZA, Jiří . PHP 4 : učebnice základů jazyka . Grada Publishing a.s., 2002. 224 s. ISBN 80247-0442-0. [3] CANTÚ, Marco . Myslíme v jazyku Delphi 7 : knihovna zkušeného programátora. [s.l.] : Grada Publishing a.s., 2003. 578 s. Dostupné z WWW:
. ISBN 80247-0694-6.
[4] GARRETT , Jesse James . Ajax: A New Approach to Web Applications. 1 [online]. 2005, 1, [cit. 2011-04-25]. Dostupný z WWW:
.
[5] GILFILLAN, Ian . Myslíme v MySQL 4 : knihovna programátora. [s.l.] : Grada Publishing a.s., 2003. 750 s. Dostupné z WWW: . ISBN 80-247-0661-X.
[6] JEWETT, Tom [online]. 2006 [cit. 2011-03-15]. Basic SQL statements: DDL and DML. Dostupné z WWW: .
[7] LOU, Wei [online]. 2011 [cit. 2011-04-25]. Https://developer.mozilla.org. Dostupné z WWW: .
[8] MAJDA, David . Do hlubin implementací JavaScriptu : 1. díl - úvod. 1 [online]. 2008, 1, [cit. 2011-04-25]. Dostupný z WWW: .
[9] PATTON, Susannah ; WAILGUM, Thomas ; TABER, David CRM aneb jak si udržet zákazníky [online]. 2010, 1, [cit. 2011-03-14]. Dostupný z WWW: .
[10] PEDAGOGICKÁ FAKULTA Masarykovi univerzity. 2009 [cit. 2011-03-14]. Http://www.ped.muni.cz/. Dostupné z WWW: .
[11] PHP [online]. 2011 [cit. 2011-03-15]. What is PHP. Dostupné z WWW: .
64
[12] PÍSEK, Slavoj . HTML začínáme programovat : 3., aktualizované vydání. Grada Publishing a.s., 2010. 192 s. ISBN 978-80-247-3117-9.
[13] POUR, Jan ; GÁLA, Libor ; ŠEDIVÁ, Zuzana . Podniková informatika - 2. : přepracované a aktualizované vydání. [s.l.] : Grada Publishing a.s., 2009. 496 s. Dostupné z WWW: . ISBN 978-80-247-2615-1.
[14] POUR, Jan ; TOMAN, Prokop . Podniková informatika : počítačové aplikace v podnikové a medzipodnikové praxi, technologie informačních systémů, řízení a rozvoj podnikové informatiky. Praha : Grada Publishing a.s., 2005. 482 s. Dostupné z WWW: . ISBN 80-247-1278
[15] PROCHÁZKA, David . Oracle.: Grada Publishing a.s., 2009. 168 s. Dostupné z WWW: . ISBN 978-80-247-2762-2.
[16] RAIS, Hanuš. Složitá cesta CRM od informací k inteligenci [online]. 2009, 1, [cit. 2011-0314]. Dostupný z WWW: .
[17] RIORDAN, Rebecca M. Vytváříme relační databázové aplikace. Praha : Computer Press, 2000. 280 s. ISBN 80-7226-360-9.
[18] SATISH, Kumar [online]. 2005 [cit. 2011-03-15]. What are the difference between DDL, DML and DCL commands. Dostupné z WWW: .
[19] Seriál Ruby on Rails 6 : Datové typy. Seriál Ruby on Rails [online]. 2010, 6, [cit. 2011-0315]. Dostupný z WWW: .
[20] SCHNEIDER, Robert D. MySQL : oficiální průvodce tvorbou, správou a laděním databází. : Grada Publishing a.s., 2006. 372 s. Dostupné z WWW: . ISBN 80247-1516-3.
[21] SKŘIVAN, Jaromír . Databáze a jazyk SQL. Databáze a jazyk SQL [online]. 2000, 1, [cit. 2011-03-14]. Dostupný z WWW: . [22] ŠIROKÝ, Jaromír. 2004 [cit. 2011-03-14]. Http://idoc.vsb.cz/cit/servery/homen/. Dostupné z WWW:.
[23] TVRDÍKOVÁ, Milena . Aplikace moderních informačních technologií v řízení firmy : nástroje ke zvyšování kvality informačních systémů. Grada Publishing a.s., 2008. 173 s. Dostupné z WWW: . ISBN 978-80-247-2728-8.
65
[24] WRITER, Staff . Netscape and Sun Unveil JavaScript. 1 [online]. 1995, 1, [cit. 2011-0425]. Dostupný z WWW: .
66
Seznam obrázků Obrázek 1 – 1NF nesprávná; Zdroj: Autor.....................................................................13 Obrázek 2 – 1NF správná; Zdroj: Autor ........................................................................14 Obrázek 3 – Architektura CRM; Zdroj: [15] ...........Chyba! Záložka není definována.18 Obrázek 4 – ERA diagram; Zdroj: Autor........................................................................38 Obrázek 5 – ERA diagram; Zdroj: Autor.....................Chyba! Záložka není definována. Obrázek 6 – Uživatelské rozhraní; Zdroj: Autor ............................................................52 Obrázek 7 – Přidat/Odebrat kontakt; Zdroj: Autor ........................................................53 Obrázek 8 – Přidat/Odebrat adresu; Zdroj: Autor .........................................................53 Obrázek 9 – Přidat/Odebrat osobu; Zdroj: Autor ..........................................................54 Obrázek 10 – Další/Předchozí; Zdroj: Autor .................................................................55 Obrázek 11 – Přihlášení uživatele do systému; Zdroj: Autor .........................................56 Obrázek 12 – Nesprávné přihlášení uživatele do systému; Zdroj: Autor .......................57 Obrázek 13 – Přidat firmu; Zdroj: Autor........................................................................58 Obrázek 14 – Přidat zaměstnance; Zdroj: Autor............................................................59 Obrázek 15 – Přidat partnerský program; Zdroj: Autor ................................................60 Obrázek 16 – Odstranit firmu; Zdroj: Autor ..................................................................62
Seznam příloh Příloha 1 – Obsah přiloženého CD
67
Příloha 1 Obsah přiloženého CD:
-
Zdrojové soubory databázového systému
-
Text bakalářské práce ve formátu .pdf