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. dat). [10] Databáze se skládá ze dvou základních prvků, dat a SŘBD (systém řízení báze 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 kandidátními klíči nesmí být žádná funkční závislost. [17, 38] překrývat. Mezi 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: [16] - 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) 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
[16] 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) 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ě. a dobropisy. Účetní pracovníci mají na starosti účetnictví, mzdové účetnictví, veškeré faktury 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
zákazníků. Servisní pracovníci se starají o veškeré servisní problémy, jak ve firmě, tak u 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 Firma - název firmy ICO - ičo firmy DIC - dič firmy - identifikační číslo tabulky 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