UNICORN COLLEGE BAKALÁŘSKÁ PRÁCE Datové modelování
Transkript
UNICORN COLLEGE Katedra informačních technologií BAKALÁŘSKÁ PRÁCE Datové modelování Autor BP: Anatoliy Kybkalo Vedoucí BP: Ing. Miroslav Žďárský 2013 Praha Čestné prohlášení Prohlašuji, že jsem svou bakalářskou práci na téma datové modelování vypracoval samostatně, pod vedením vedoucího bakalářské práce a s použitím výhradně odborné literatury a dalších informačních zdrojů, které jsou v práci citovány a jsou také uvedeny v seznamu literatury a použitých zdrojů. Jako autor této bakalářské práce dále prohlašuji, že v souvislosti s jejím vytvořením, jsem neporušil autorská práva třetích osob a jsem si plně vědom následků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb. V Praze dne 1. 5. 2013 …….…………………………… (Anatoliy Kybkalo) Poděkování Děkuji vedoucímu bakalářské práce Ing. Miroslavu Žďárskému za účinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mé bakalářské práce. Datové modelování Data modeling 5 Abstrakt Datové modelování je oborem, který se zabývá návrhem struktury a organizace dat. Je to proces, při kterém převádíme reálné objekty na objekty datové, s cílem zachytit v datovém modelu realitu, o které si chceme uchovávat informace. Návrh správné databáze není vždy jednoduchý úkol a mnoho databázových architektů se potýká s problémy již v počátcích projektu, kdy je potřeba identifikovat základní entity, které budou obsazeny v databázi. Při návrhu databáze není pouze jedno správné řešení, ale je jich hned několik. Tato bakalářská práce se zabývá datovým modelováním a popisuje postupy a praktiky, pomocí kterých se dá dosáhnout nejvhodnějších možností realizace databáze. V první části bakalářské práce je popsán a vysvětlen konceptuální a E-R diagram, který se používá v počátcích modelování. Dále je popsán UML jazyk a design patterny v datových modelech. Následně jsou podrobně rozebrány databázové modely (síťový, hierarchický, objektový a relační). Také jsou představeny nástroje, které mohou být využity pro datové modelování např. Enterprice Architect, Microsoft Visio a další. V druhé části bakalářské práce je příklad z reálného života, kde klientská firma chce vytvořit na míru ušitý software a je potřeba navrhnout databázi, která bude sloužit jako úložiště informací pro tento program. Pro tuto business problematiku je zpracován návrh pro všechny zmiňované databázové modely. Klíčová slova: konceptuální model, E-R diagram, UML jazyk, design pattern, síťový model, objektový model, relační model, hierarchický model. 6 Abstract Data modelling is specialization dealing with design of the structure and data organization. It is a process, in which we transfer real object to data objects to transcribe the reality into data model. Designing the right database is not always an easy task and most of the database architects are dealing with problems since beginning of the project, when it is needed to identify basis entities that we will use in the database. There is not just one correct solution to designing database, there are many. This work covers data modelling and describes procedures and practices, which can be used to reach the best possibilities for implementing a database. The first part of this work describes and explains conceptual and E-R diagram that is used in the beginnings of data modelling. Further we explain UML language and design patterns in data modelling. Furthermore this work analyses database models (network, hierarchical, relational and object). Also we introduce tools that can be used for data modelling, for example Enterprice Architect, Microsoft Visio and more. The second part of this work is real life example, in which client company wants software tailored and we have to suggest database, that will be used as a data storage for this program. We suggest design in all of the mentioned database models for this business issue. Keywords: Conceptual model, E-R diagram, UML language, design pattern, network model, object model, relational model, hierarchical model. 7 Obsah 1. Úvod ..................................................................................................................................... 11 2. Zpracování dat...................................................................................................................... 12 2.1. Data a informace .............................................................................................................. 12 2.2. Informace ......................................................................................................................... 12 2.3. Data .................................................................................................................................. 12 2.4. Data a jejich význam ........................................................................................................ 13 2.5. Význam dat v databázích ................................................................................................. 13 2.6. Agendové zpracování dat ................................................................................................. 13 3. Definice databáze................................................................................................................. 14 3.1. Aplikační úloha ................................................................................................................. 14 3.2. Databáze a její oddělení od programu ............................................................................. 14 4. Princip tří architektur ........................................................................................................... 15 5. Konceptuální model ............................................................................................................. 16 5.1. Lineární zápis .................................................................................................................... 16 5.2. E-R diagram ...................................................................................................................... 16 6. Logicky datový model........................................................................................................... 17 7. Fyzický datový model ........................................................................................................... 18 8. Modelovací prostředky ........................................................................................................ 19 8.1. Modelovací jazyk UML ..................................................................................................... 19 8.2. Historie UML .................................................................................................................... 19 8.3. Význam UML .................................................................................................................... 20 8.4. Diagramy UML.................................................................................................................. 21 8.5. Doménový diagram .......................................................................................................... 21 8.6. Class diagram ................................................................................................................... 22 8.6.1. Třída ......................................................................................................................... 22 8.6.2. Asociační vazba ........................................................................................................ 23 8.6.3. Multiplicita ............................................................................................................... 23 9. Databázové modely.............................................................................................................. 24 10. Hierarchický databázový model ........................................................................................... 25 10.1. Uzly a jejich propojení .................................................................................................. 25 10.2. Způsoby ukládaní dat v hierarchické struktuře ............................................................ 26 10.3. Hierarchická databáze v současnosti. .......................................................................... 27 8 11. Síťový databázový model ..................................................................................................... 27 11.1. Uzly a jejich propojení .................................................................................................. 27 11.2. Síťový model v současnosti .......................................................................................... 28 12. Relační databázový model ................................................................................................... 28 12.1. Historie relačního databázového modelu .................................................................... 28 12.2. Relace ........................................................................................................................... 29 12.3. Atomická hodnota ........................................................................................................ 30 12.4. Primární klíč.................................................................................................................. 30 12.5. Propojování tabulek ..................................................................................................... 31 12.6. Cizí klíč .......................................................................................................................... 31 12.7. Vazební tabulka ............................................................................................................ 32 12.8. Normalizace relační databáze ...................................................................................... 32 12.9. Boyce coddova normální forma – BCNF....................................................................... 33 13. Objektově orientované databáze......................................................................................... 34 13.1. Objektový databázový model....................................................................................... 35 13.2. Postup tvorby objektové databáze .............................................................................. 37 13.3. Objektová normalizace ................................................................................................ 38 13.4. Tří objektové normální formy – ONF ........................................................................... 38 13.4.1. 1ONF......................................................................................................................... 38 13.4.2. 2ONF......................................................................................................................... 39 13.4.3. 3ONF......................................................................................................................... 40 14. Best practices v datovém modelování ................................................................................. 41 15. Návrhové vzory – (design patterns) ..................................................................................... 42 15.1. Definice návrhového vzoru .......................................................................................... 42 15.2. Příklady návrhových vzorů ........................................................................................... 43 15.2.1. Hierarchická struktura dat ........................................................................................... 43 15.2.2. Dědičnost tříd ........................................................................................................... 44 15.2.3. Předem neznáma struktura dat ............................................................................... 48 15.2.4. Číselník ..................................................................................................................... 50 16. CASE nástroje pro datové modelování................................................................................. 52 17. Praktická část ....................................................................................................................... 55 18. Business zadáni .................................................................................................................... 55 19. Tvorba konceptuálního modelu ........................................................................................... 56 19.1. Tvorba lineárního zápisu .............................................................................................. 58 9 19.2. Tvorba E-R diagramu .................................................................................................... 59 Tedy E-R diagram v našem případě by mohl vypadat takto: ....................................................... 60 20. Tvorba logického modelu relační databáze ......................................................................... 63 21. Tvorba fyzického modelu relační databáze.......................................................................... 67 21.1. Další možnost zakreslení .............................................................................................. 74 22. Tvorba logického modelu objektové databáze .................................................................... 78 23. Tvorba fyzického modelu objektové databáze .................................................................... 80 24. Tvorba modelu hierarchické databáze................................................................................. 83 25. Tvorba modelu sítové databáze ........................................................................................... 87 25.1. Pravidla pro definování setu ........................................................................................ 88 26. Závěr..................................................................................................................................... 92 27. Conclusion ............................................................................................................................ 93 28. Seznam použitých knižních zdrojů ....................................................................................... 94 29. Seznam použitých internetových zdrojů .............................................................................. 95 30. Seznam obrázků ................................................................................................................... 96 31. Seznam tabulek .................................................................................................................... 98 32. Seznam příloh....................................................................................................................... 99 10 Bakalářská práce Datové modelování Data modeling 1. Úvod O datovém modelování bylo napsáno nespočet světových publikací. Jedná se o problematiku, která se rozvíjí už přes dvacet let. Ve většině dosavadní literatuře je předpokládáno, že struktura datových entit je předem známá a postačí ji jen správně namodelovat. Avšak častým problémem je onu strukturu najít a z určité reality ji abstrahovat. Proto jedním z cílů této práce, je začít modelovat databázi od samotného počátku, kdy je nám předloženo business zadání od zákazníka a naším úkolem je naleznout entity, vytvořit jejich strukturu a několik databázových modelů (hierarchický, síťový, relační, objektový). V praktických projektech současnosti datové modelování dosahuje metodické úrovně. Výjimkou mohou být projekty malého rozsahu, kde vývojáři přistupují rovnou k tvorbě např. relační struktury, spoléhajíc na svou zkušenost. Vzniklý model nemusí být špatný a může fungovat, ovšem jeho kvalita je závislá na kvalitě zkušeností jeho tvůrce. Takovýto přístup při tvorbě velkých IS není možný, protože se musí řešit velké množství datových prvků a vazeb mezi nimi. Z těchto důvodů je vhodné využít metodicky čistý přístup. Dalším cílem tedy bude představit jednu z metodik, zvanou principem tří architektur. Datové modelování trpí často nejednoznačnou terminologií, je to způsobeno různými překlady terminů z původního anglického jazyka. Často se setkáváme s odlišnou interpretací významů některých termínů. Přímo ukázkovým příkladem je „relace“. Tento termín označuje dvojrozměrnou datovou strukturu, ale často se zaměňuje s „relationship“, což v překladu znamená „vztah“. Proto je cílem bakalářské práce nastolit pořádek v terminologii týkající se datového modelování. Na začátku práce bude kapitola věnována právě pro vysvětlení některých základních pojmů, které je nutno znát před začátkem modelování. Další důležité termíny budou vysvětleny v rámci příslušných kapitol. Pokud chceme vytvořit funkční databázi, je nutné znát principy námi zvoleného databázového modelu. Cílem této práce bude představit a podrobně popsat čtyři v dnešní době nejznámější modely. Dále uvést nástroje, modelovací jazyky, design patterny a best practices, které je možno využit nejen pro jejich tvorbu, ale i v průběhu celého procesu modelování. 11 Bakalářská práce Datové modelování Data modeling 2. Zpracování dat Před samotným modelováním je vhodné si uvědomit, s čím budeme pracovat. Proto je nezbytné si odpovědět na základní otázky. Jaký je rozdíl mezi daty a informacemi? Jaký je význam dat? Jak jsou data ukládána? Jakým způsobem můžeme pracovat s daty? 2.1. Data a informace Data jsou základem veškerých počítačových systémů. Pro chod počítačů jsou data naprosto klíčová a bez nich by nemohly fungovat. Daty je tvořen jak operační systém, tak i aplikace. Dokonce i na internet můžeme nahlížet jako na soustavu organizovaných dat. Pro mnoho lidí slova data a informace mají stejný význam. Opak je pravdou. [1]1 2.2. Informace Informace je výsledkem porovnávání, spojování nebo počítání s daty. Nejedná se tedy o data jako taková. Informace dávají smysl a jako lidské bytosti jsme schopni je vyhodnotit a pochopit podstatu jejich sdělení. Příkladem mohou být školní testy. Pokud uchováme číselné výsledky všech studentů, můžeme se dopočítat k průměru třídy nebo určit průměr celé školy. Převádíme tedy statistické údaje (uložená data) na použitelnou informaci. [1] 2.3. Data Spojená data dohromady do smysluplné podoby, jsme schopni vyhodnotit a vidět v nich informaci, kterou nesou. Pokud se budeme bavit o nespojitých datech, která jsou separována a samostatně stojící, pak se jedná o způsob zápisu informace. Pro porovnání může posloužit již zmiňovaný příklad testů. Kdybychom viděli jen číslo 25, tak je to pro nás osamocený údaj, který sám o sobě nic neříká. Ale pokud bychom spojili více údajů dohromady např., že jsou to body z testu určitého žaka, najednou jsme schopni vnímat jistou informaci, kterou tyto spojená data přinášejí. [1] 1 David PROCHÁZKA: Oracle - průvodce správou, využitím a programováním. Strana 17-23. 12 Bakalářská práce Datové modelování Data modeling 2.4. Data a jejich význam Význam dat je nedoceněn. Není vhodné vnímat data jen jako stavební prvky informací. Data jsou nedílnou součástí každé činnosti počítače. Pokaždé, když provedeme s počítačem nějakou akci, data se posílají skrze zařízení, pomocí jedniček a nul. Dokonce i vývojáři mnohdy své zdrojové kódy ukládají jako datové soubory. A to jen potvrzuje všudypřítomnost dat v počítačovém světě. Pokud opustíme abstraktní svět jedniček a nul, se kterým se běžný uživatel ve většině případů nedostane do styku, protože tyto data jsou pro něj neviditelná, dostaneme se k databázovým systémům, kde jsou ukládána konkrétní data, která nesouvisí s počítači jako takovými. [1] 2.5. Význam dat v databázích V rámci datových struktur pracujeme s konkrétními daty. Nejčastějším případem, o kterém se jedná, jsou evidence zboží, osob, poboček, aut a různého dalšího majetku. Tyto data jsou využívána mnoha systémy. Poskytují schopnost efektivního vyhledávání, výpočetní funkce, sestavy a podobné operace. Databázi si můžeme představit jako jednu knihovnu, ve které jsme schopni se orientovat a efektivně vyhledávat knihy podle různě zvolených kritérií. [1] 2.6. Agendové zpracování dat Přesto, že první generace počítačů vznikla hlavně pro matematické výpočty, nedlouho na to, se začaly používat i pro zpracování dat pro jiné účely. Od prvních počítačů až po dnešní, se úlohy evidence dat programovaly pomocí dostupných programovacích jazyků. Protože ve většině případů se nejednalo o jeden, ale o celou sadu programů, které řešily konkrétní úlohy neboli agendy, nazývají se počáteční etapy úloh tohoto typu agendové zpracování dat. Později byla vyvinuta databázová technologie pro zpracování dat a i přes výhody, které přinášela, se objevují nové implementace agendového zpracování. Nevýhodou oproti databázovým technologiím je plná závislost dat a programu, kde každý program se musí starat, jak o svůj aplikační problém, tak i o formát fyzického uložení dat na média. Dávkované zpracování agendy probíhalo tak, že se data zaznamenala na počítačové medium, což mohl být štítek, magnetická páska nebo disketa. Po vložení do počítače, data byla načtena do paměti a následně byla zpracována pomocí výpočtů, třídění atd. [1] 13 Bakalářská práce Datové modelování Data modeling 3. Definice databáze Databáze představuje paměťové médium, kde je uložena uspořádaná množina dat. Součástí je také software, který umožňuje přístup k těmto datům a jejich editací. Tento systém se nazývá DBMS – Database Management System. V závislosti na kontextu, použitím slova databáze se myslí data i software zároveň. Součásti databáze jsou prvky, které mohou být tabulkově nebo objektově zaměřené. Data, která jsou v těchto prvcích uložena, se nazývají záznamy. Části těchto záznamů jsou pak jednotlivé položky. [1] 3.1. Aplikační úloha Je to konkrétní program, který je vytvořen za použití prostředků DBMS nad konkrétní databázi. Ucelený systém těchto aplikačních úloh nad společnou databázi můžeme nazvat databázovým informačním systémem. Jedná se o celek, který je naprogramovaný v jednom DBMS a jeho datové struktury jsou navržené tak, aby všechny aplikační úlohy měly k těmto strukturám optimální přístup. Řeší vyhledání, zpracování, uložení informací, a také jejich úpravu do čitelné podoby pro uživatele. Jinými slovy databázový systém je DBMS a báze dat dohromady. [1] 3.2. Databáze a její oddělení od programu Databázová technologie se liší od programování hlavně tím, že je oddělená datová struktura od programů. Díky vlastnostem DBMS se dají datové struktury definovat samostatně a nezávisle na programových. Přínosem je, že při rozhodnutí změnit datovou strukturu není nezbytné měnit i program a naopak při změně programu není nutno měnit i datovou strukturu, se kterou pracuje. [1] Obrázek 1 - Oddělení datové struktury od programu. Zdroj – vlastní zpracování. 14 Bakalářská práce Datové modelování Data modeling 4. Princip tří architektur Před samotným začátkem vytváření datového modelu, je nutné vědět, jakou část reality chceme zobrazit a jakým způsobem budeme v konečné fázi vývoje s daty pracovat. Zpravidla pro popis procesu vývoje těchto modelů se využívá princip tří architektur, též známý pod zkratkou P3A. Právě tato metodika umožňuje rozdělit problematiku návrhu datové základny na části, které jsou na různé úrovni abstrakce. Jak již vyplívá z názvu P3A je složena ze tří úrovní [2]: Konceptuální úroveň – Na této úrovni je definován předmětný obsah datové základny. Konceptuální návrh se nezabývá způsobem implementace, ale určuje, co je obsahem databáze. Technologická úroveň – Zde je tvořen model, který znázorňuje technologickou koncepci řešení. Model ukazuje, jak jsou data v databázi organizována. Například při volbě relační databáze se používá relační schéma. Implementační úroveň – Tato úroveň se zabývá otázkou výběru konkrétní databázové platformy, která bude sloužit pro vytvoření navrhnuté datové základny. Zde jsou využívaná různá specifika vývojového prostředí a programovacího jazyka. Tato úroveň definuje čím je technologické řešení realizováno.2 Důvodem takového rozdělení, je docílení pružnosti případných změn databáze. Před zpracováním každé změny je zjištěno, jaké úrovni náleží. Konceptuální změny mohou být např. přidání další nové entity. Technologické – přechod z relační databáze na objektovou. Implementační – změna platformy z Oracle na MS SQL. Obrázek 2 - Sled úrovní P3A. Zdroj – vlastní zpracování. 2 Melichar, J. (5. 4 2002). Datové modelování poprvé. Navštíveno 16. 3. 2013 http://www.dbsvet.cz/view.php?cisloclanku=2002040501 15 Bakalářská práce Datové modelování Data modeling 5. Konceptuální model Návrh databáze často vychází z business zadání. V tomto dokumentu jsou zákazníkem shrnuté požadavky na systém. Zadání ve většině případů nesděluje, co by mělo být obsahem systému, ale spíše klientská očekávaní, neboli jak by měl systém podle jejich představ fungovat. Úkolem databázového architekta je identifikovat ze zadání základní entity. Jsou to prvky, které jsou z databázového hlediska zajímavé, protože se o nich musejí udržovat data. Model, který obsahuje výčet těchto entit a jejich vazeb, je znám jako konceptuální. [3] Na začátku tvorby datového modelu je obvykle vytvořen konceptuální model jako první a dále se postupuje podle obecně známého doporučení postupovat od shora dolů. To znamená, že modelování probíhá od toho nejobecnějšího zobrazení po to nejdetailnější. 5.1. Lineární zápis Konceptuální model může být vyjádřen dvěma způsoby. Jednou z variant je tzv. lineární zápis, který popisuje entity a vazby textem. [3] ENTITA_1 (atribut_1, atribut_2) ENTITA_2 (atribut_1, atribut_2) VZTAH (ENTITA_1, ENTITA_2, vztahovy_atribut_1, vztahovy_atribut_2) 5.2. E-R diagram Druhou variantou je E-R diagram, pomocí kterého je možno entity a jejich vazby zakreslit graficky. Tento způsob je preferovanější, jelikož při velkém počtu prvků, je přehlednější než textová podoba. V tomto diagramu je použito tří hlavních grafických prvků [3]:3 Obdélník – Vyjadřuje entitu a její název se nachází uvnitř tohoto uzlu. Kosočtverec – Uzel vyjadřující mezi entitní vztah. Oval – Reprezentuje atribut dané entity. 3 Žďárský, M.(2. 3 2009). RDB Tvorba modelů. Navštíveno 2. 4. 2013 https://uu.unicornuniverse.eu/ues/sesm?SessFree=ues:UCL-BT:RDB.CZ/LEC03/GL 16 Bakalářská práce Datové modelování Data modeling Obrázek 3 - Ukázka E-R diagramu. Zdroj – http://www.zdrojak.cz/wp-content/uploads/2010/03/kino-film-1.png 6. Logicky datový model Tento model je využíván v technologické úrovni P3A a představuje prostřední úroveň abstrakce a jakýsi mezikrok mezi konceptuálním a fyzickým modelem, kde je datová struktura popisována v obecné rovině bez závislosti na konkrétním databázovém stroji. V tomto modelu též nenajdeme informace o tom, jakým způsobem budou data ukládaná. Výhodu přináší všude tam, kde není dopředu známá cílová databázová platforma, nebo vytvářená databáze bude nasazena na více serverech, od různých dodavatelů, přičemž výskyt druhé zmiňované situace je čím dál častější, protože tvůrci aplikací jsou nuceni dodržovat firemní technologické standardy nebo již existující prostředí zákazníka. Pokud by byl použit rovnou fyzický datový model, pro dodavatele aplikace by to znamenalo navrhnout datový model pro každou platformu zvlášť a to přináší značnou neefektivnost. Logický model tedy přináší určité zobecnění, pomocí kterého získáme nezávislost modelu na konkrétním databázovém systému, tzn. že není závislý na databázové platformě, avšak i nadále zůstává schopnost převést tento model do implementačního prostředí. Kdybychom tvořili datovou strukturu na míru už od začátku analýzy rovnou pro databázový systém Oracle, tak při pozdějším rozhodnutí zákazníka přejít na jinou databázi např. MySQL, museli bychom nejspíš vytvářet celý návrh znova. Proto je výhodnější vytvořit nejdříve logický datový model, který bude obecnější a na tomto základě dále navrhovat strukturu pro konkrétní databázový systém. Příkladem takového logického modelu muže byt relační schéma. Principy relačních a dalších databází jsou představeny v následujících kapitolách. 17 Bakalářská práce Datové modelování Data modeling Obrázek 4 - Příklad logického modelu. Zdroj – http://ondramandik.com/article/1/relation_scheme_1.png 7. Fyzický datový model Pod fyzickým modelem si můžeme představit logický model rozšířený o specifické informace pro konkrétní databázovou platformu např. datové typy. Tento model se drží nejnižší úrovně abstrakce a používá se v implementační fázi P3A. Značné ulehčení přinášejí CASE nástroje, které umožňují přímo vygenerovat z modelu např. SQL skript pro vytvoření databázové struktury. [3] Obrázek 5 - Příklad fyzického modelu. Zdroj – http://www.sparxsystems.com/enterprise_architect_user_guide/9.0/images/erdgentrans.png 18 Bakalářská práce Datové modelování Data modeling 8. Modelovací prostředky Modelovací jazyk je uměle vytvořeným jazykem, který slouží k předání informací nebo popisu systému, za pomocí struktury, která je definována souborem pravidel. Modelovací jazyk se dělí na dva druhy: Textový – Vyjadřování pomocí klíčových slov, které jsou standardizované. Vizuální – Toto grafické zobrazení používá k popisu problematiky diagramy, ve kterých se nacházejí symboly. Ty jsou pak spojeny vazbami vyjadřující vztahy mezi nimi. V dnešní době je aktivně používáno kolem 20 grafických modelovacích jazyků, např. BPMN - Business Proccess Modeling Notation, Petriho sítě a další. Pro datové modelování, je také možné využit jazyk UML, použití kterého je v České republice velice rozšířené. [4]4 8.1. Modelovací jazyk UML Unified Modeling Language neboli v překladu sjednocený modelovací jazyk, je univerzálním standardem už od roku 1997 a slouží pro vizuální modelování. Velice hojně se využívá při modelování objektově orientovaných softwarových systémů, ale díky zabudovaným rozšiřujícím mechanismům, je vhodný také pro modelování databází. Tento jazyk slouží pro sjednocení a spojení dosavadních modelovacích postupů v softwarovém inženýrství. Krátce po představení začalo UML být podporováno většinou výrobců modelovacích nástrojů. Obsahem jazyka UML nejsou v žádném případě metodiky modelování. Neříká nám nic o tom, jak bychom měli systém navrhovat. UML jako celek poskytuje jen standard pro popis modelu a jejich zobrazení. [4] 8.2. Historie UML Po tom co se OOP jazyk rozšířil, začaly se hledat způsoby jak nahlížet na informační systém různými pohledy a již roku 1988 existovalo nespočet různých standardů a specifikací, pomocí kterých se zakreslovaly objekty nebo jiné součásti aplikace. V roce 1994 mezi nejznámější patřily OMT – Object Modeling Technique od autora J. Rumbaugha a Boochová metoda jejímž autorem byl G. Booch. Téhož roku společně přicházejí do firmy Rational Software (Rational Software byla koupená firmou IBM), s cílem sjednotit své metody a vytvořit jednotný jazyk. Roku 1995 se k nim přidal Ivar Jacobson s metodologií OOSE a o dva roky později se jim společně podařilo vytvořit standard UML. [5]5 4 Čapka, D. (14. 6 2012). 1. díl - Úvod do UML. Získáno 27. 2. 2013 http://www.devbook.cz/uml-uvod-historie-vyznam-adiagramy 5 Vojtěch MERUNKA, Antonín CARDA, Jiří POLÁK: Datové modelování. Strana 44. 19 Bakalářská práce Datové modelování Data modeling Postupem času se projevil zvýšený zájem velkých korporací o existenci a údržbu takového standardu. Důvodem je bezpochybně usnadnění dokumentace a zajištění komunikace v rámci různých projektů. V roce 1997 mezinárodní konsorcium s názvem OMG – Object Management Group schvaluje UML jako první otevřený objektové orientovaný modelovací jazyk a od té doby dohlíží na jeho specifikace. OMG je otevřená instituce, ve které figurují významné a velké firmy jako IBM, Oracle, Microsoft, HP a další. Roku 2005 byl tento jazyk upraven pomocí výraznějších změn a nyní se nabízí ve verzi UML 2.0. [5] 8.3. Význam UML Známým faktem je, že komplexnost informačních systémů s postupem času vzrůstá. Ještě před nedávnem jeden člověk byl schopen naprogramovat cely systém, avšak tyto doby jsou nenávratně pryč. Protože dnešní velké systémy jsou opravdu složité, je vhodné nejprve vytvořit jejich návrh, ne si sednout a hned začít psát kód programu. Po fázi navrhování přichází implementace, kde jeden člověk na to nestačí, proto je potřeba pracovat v týmu několika programátorů. Dalším problémem, se kterým se můžeme setkat v průběhu tvorby IS, jsou změny v zadání klienta, na které jsme nucení reagovat. UML je nástroj, který pomáhá se s těmito problémy vypořádat. Můžeme ho využít v počátcích projektu pří analýze, kdy je komunikováno se zákazníkem a zjišťováno, co vlastně budeme vytvářet nebo ve fázi designu, kde řešíme, jakým způsobem bude systém vytvořen. [4] Jazyk UML je možné použít třemi způsoby: Jako náčrt – Diagramy se mohou používat v zjednodušené podobě jako náčrty, které jsou často kreslené ručně na papír, při jednání se zákazníkem nebo při diskutování nad určitým problémem v týmu. Je to mnohdy rychlejší způsob předání informací mezi lidmi, než popisovat problematiku textem. Důležitou vlastností diagramů je jejich abstrakce. Každý diagram muže znázorňovat systém vždy pod jiným uhlem pohledu. To znamená, že jsme schopni zanedbat zbytek systému a rozkreslit jen tu část, která je důležitá. Použitím UML diagramů se snižuje riziko špatného navržení systému, protože nebudeme schopni něčemu dobře porozumět. Jako plán – Tento diagram je podstatně detailnější, než náčrt. Je tvořen pomocí CASE nástroje a využívá se jako implementační plán pro programátory systému. Tím se zlepšuje týmová komunikace a ulehčuje průběh celé implementace, jelikož programátoři se v systému lépe orientují. Po tom, co vývoj systému je dokončen, mohou být tyto diagramy zahrnuty do dokumentace. A protože UML je standardem, měl by se v systému vyznat i člověk, který se nepodílel na jeho tvorbě. Jako programovací jazyk – Třetím a posledním způsobem jakým je možno UML využít je programovací jazyk. Pokud vytvoříme detailní diagram, lze z něj vygenerovat kódovou šablonu, která se stává základem pro implementaci. Např. v databázovém prostředí je často využíváno těchto modelů pro generování zakládacích skript. 20 Bakalářská práce Datové modelování Data modeling 8.4. Diagramy UML Na danou chvíli se UML skládá z čtrnáctí diagramů, viz obrázek. [6]6 Obrázek 6 - Rozdělení UML diagramů. Zdroj – http://www.devbook.cz/images/5/uml/diagrams.png Jelikož v této práci je řešena problematika modelování databází, zaměříme se hlavně na větev diagramů struktury a to konkrétně na Class diagram, pomocí kterého je možno namodelovat jak logický, tak i fyzický datový model, zejména u relačních a objektových databází. 8.5. Doménový diagram Jedná se o zjednodušenou formu class diagramu, kde základním prvkem je třída, která představuje ukládaný element. Neobsahuje metody a má pouze důležité atributy. Zde je možno pojmenovávat identifikátory např. názvy tříd nebo atributů s diakritikou. Diagram je platformově nezávislý a případné atributy jsou pouze obecné, tudíž nemají žádný datový typ. Hodí se zejména pro tvorbu logického modelu některých databází. Přiklad můžete vidět na obr. 4 v předchozí kapitole. 6 Vojtěch MERUNKA, Antonín CARDA, Jiří POLÁK: Datové modelování. Strana 45. 21 Bakalářská práce Datové modelování Data modeling 8.6. Class diagram Class diagram se využívá při implementaci systému. V databázovém odvětví se používá k tvorbě fyzických datových modelů. Tento diagram je odlišný od doménového tím, že musí být úplný a obsahovat všechny entity, které budou uloženy v databázi. U každé třídy jsou uvedeny veškeré její atributy a metody. Class diagram je platformově závislý, to znamená, že atributům je určen jejich datový typ pro danou databázi a také se již nevyskytuje diakritika v názvech. [6] 8.6.1. Třída Třídou je reprezentován soubor objektů, které mají stejné vlastnosti a chovaní, jedná se tedy o jakousi šablonu, ve které je zachycena struktura objektu. Obrázek 7 - Třída. Zdroj – vlastní zpracování. Atribut je strukturální vlastnost třídy, která nese nějakou informaci o tomto objektu, např. jméno, příjmení atd. Grafická podoba těchto prvků je obdélníkového tvaru rozdělena na tři vodorovné části. Nahoře je umístěn název, v prostřední části se nalézají její atributy a v dolní jsou zapsány její metody. Stereotyp umožňuje klasifikovat třídy, díky čemuž jsme schopni např. vytvořit tabulku, kterou použijeme ve fyzickém datovém modelu pro relační databázi. [7]7 Obrázek 8 - Příklad třídy se stereotypem tabulky. Zdroj – vlastní zpracování. 7 Varga, M. (16. 7. 2009). OAD Úvod do modelování IS. Získáno 24. 3. 2013 https://uu.unicornuniverse.eu/ues/sesm?SessFree=ues:UCL-BT:OAD.CZ/LEC05/GL 22 Bakalářská práce Datové modelování Data modeling 8.6.2. Asociační vazba Tato vazba reprezentuje vztah mezi dvěma entitami. V diagramech je znázorněna rovnou, případně lomenou nepřerušovanou čárou, která spojuje ikony. [8] Obrázek 9 - Základní asociační vazba. Zdroj – vlastní zpracování. Ve výchozím nastavení je směr na obě strany, tudíž obě entity mají na sebe odkaz. Toto chování může být změněno přidáním šipky, která oboustranný směr upravuje a vyjadřuje, že odkaz má jen entita, na kterou nesměřuje šipka. [8]8 Obrázek 10 - Usměrněná asociační vazba. Zdroj – vlastní zpracování. 8.6.3. Multiplicita Touto násobností je definován počet instancí třídy vůči vazbě, a tím pádem je omezen celý vztah dvou entit. Nejlépe pochopitelnou ukázkou je příklad s letadlem. Letadlo obsahuje 200 míst. Obrázek 11 - Multiplicita. 200 1 Letadlo Sedadlo Zdroj – vlastní zpracování. Multiplicita se zapisuje po obou stranách vztahu a definuje číselné omezení vyjadřující počet objektů příslušné třídy. Pokud není zadaná, znamená to výchozí stav, tedy hodnotu 1. Multiplicita může byt zapsána pomocí čísla, výčtem čísel, intervalem nebo speciálním znakem a v případě nutností je možné tyto varianty kombinovat. Při kombinovaní 8 Vojtěch MERUNKA, Antonín CARDA, Jiří POLÁK: Datové modelování. Strana 46. 23 Bakalářská práce Datové modelování Data modeling musí být dodržená disjunkce, to znamená, že se číselné hodnoty nesmějí překrývat, viz následující obrázek. [7] Obrázek 12 - Příklady multiplicity. Třida 0..1 0 nebo 1 Třida 1..N 1 až N Třida 0..* 0 až N Třida 1..50 1 až 50 Třida 0 až N toto použití je schodne s 0..* * Třida 1 Právě 1 Třida Pokud není uvedena žádná násobnost, je výchozí multiplicitou 1 Třida 4,5..9 Omezení výčtem: 4,5 až 9 Zdroj – vlastní zpracování. 9. Databázové modely Databázový model konkretizuje strukturu dat v informačních systémech. Při tvorbě tohoto modelu se vychází z konceptuálního návrhu. Proces, během kterého se navrhuje tato struktura, je nazýván modelováním dat. Výsledkem tohoto procesu je databázové schéma, ve kterém jsou deklarovány datové typy. Způsobů, jak uložit data a jejich vazby v databázi, je hned několik. Během vývoje, kterým databáze prošly, byly vyvinuty tyto 4 základní databázové modely. Samozřejmě existují i další, např. pro ukládání souborů nebo kombinace relační a objektové databáze. Nicméně v rámci této práce budou rozebraný pouze následující modely: 24 Bakalářská práce Datové modelování Data modeling Obrázek 13 - Seznam databázových modelů. Zdroj – vlastní zpracování. Nejstaršími jsou modely hierarchický a síťový. Podle Jaroslava Klechrela tyto v dnešní době, již zastaralé modely, nejsou schopny vyhovět nárokům, které jsou na databáze kladené. Proto v drtivé většině, informační systémy pro ukládání dat využívají novější relační a objektové databáze.9 Já se na základě získaných poznatků během psaní této práce s jeho názorem ztotožňuji. 10. Hierarchický databázový model „Pro hierarchický databázový model nebyl ustanoven žádný standard“9. Tento model byl nejvíce používán v tehdejších sálových počítačích, a to v jeho nejpopulárnější verzi pod označením IMS – Information Management System. Vývojem prvních verzí se zabývaly firmy North American Aviation a IBM na konci 60. let pro americký program pilotovaných kosmických letů, známého jako Apollo. Data jsou uspořádaná do hierarchické struktury a jsou vyobrazená v podobě převraceného stromu. Nejvýše postavenou je prvek nazývaný kořenem, z kterého následně vycházejí větve. 10.1. Uzly a jejich propojení Obsahem uzlu je souhrn záznamů. Vztahy mezi uzly jsou reprezentovány termíny rodič a jeho potomek. Kde uzel s označením rodič může být sdružen s více než jedním uzlem označovaným jako potomek, ale na druhou stranu potomek může být sdružen pouze s jedním rodičem. Přístup k hledaným záznamům probíhá od kořene a dále ve směru hierarchie, tedy po vybrané větvi až k listům. 9 KLECHREL, J: Inženýrské zpracování dat – databáze. 2001. Strana 2. http://audis.ic.cz/Access.pdf 25 Bakalářská práce Datové modelování Data modeling Uzly je možné rozdělit do několika kategorií podle toho, kde se ve stromu nacházejí. Kořen – Je to uzel, který nemá nad sebou žádného rodiče. Větev – Uzel, mající nad sebou svého rodiče a pod sebou svého potomka. List – Jedná se o uzel, který je v hierarchii stromu jako úplně poslední, tudíž má nad sebou rodiče, ale nemá pod sebou svého potomka. Obrázek 14 - Obecné uspořádání uzlů v hierarchickém modelu. Zdroj – vlastní zpracování. Díky existenci přímého propojení mezi uzly je získání dat velice rychlé. V hierarchickém modelu je též automaticky prosazována referenční integrita, kterou je zajištěno, že záznam v potomkovi musí nezbytně mít vazbu se záznamem v rodiči. Pokud tedy bude smazán rodič, budou smazáni všechny jeho potomci. V hierarchické databázi není podporována tvorba komplexních vztahů. Proto se často objevují redundantní data. 10.2. Způsoby ukládaní dat v hierarchické struktuře Jedním ze způsobů jak lze uložit hierarchickou strukturu je formát XML, který poskytuje velikou výhodu v tom, že záznam je čitelný jak pro počítače, tak i pro uživatele. Data, která jsou uložena tímto způsobem, využívají pro své hierarchické rozděleni uzlů, elementy a jejich vnořováni. Informace o elementu je možné uložit do jeho atributů. Další elegantní, avšak při velkém počtu dat pro člověka méně přehlednou metodou jak takovou strukturu uložit, je pomocí jednoduchého seznamu, ve kterém se udržuje informace o rodiči u každého řádku. 26 Bakalářská práce Datové modelování Data modeling 10.3. Hierarchická databáze v současnosti. Navzdory tomu, že tento druh databáze je nejstarší a pochází z konce 60. let, zhodnotil bych jeho možnost použití v dnešní době jako stále aktuální téma. Ovšem je vhodný jen pro vybranou problematiku reálného světa. Více o tomto modelu a hlavně jeho ukázky naleznete v praktické časti. 11. Síťový databázový model Síťová databáze byla z historického hlediska vyvinuta jako druhá v pořadí za hierarchickou. Vývoj byl zahájen už v šedesátých letech minulého století. Avšak první oficiální specifikace síťového modelu byla představena roku 1971 na konferenci CODASYL (Conference on Date System Languages), výborem DTG (Database Task Group). Základem modelu se stal ukazatel, který vyjadřuje vztah mezi jednotlivými položkami v databázi. Pomocí těchto vztahů, které mohou být jak lineární, tak i cyklické, lze v síťovém modelu poměrně snadno realizovat složitější vazby mezi uzly. Na rozdíl od hierarchické databáze, síťová přináší výhodu v ještě rychlejším přístupu k datům. Vyhledání konkrétních nebo odvozených údajů není nijak složité, protože je možno začít kdekoli v rámci modelu. Uživateli je umožněno se dotazovat mnohem komplexnějšími dotazy, než v modelu hierarchickém. Značným omezením při práci s množinovými strukturami je nutnost znát strukturu této databáze. Výrazným nedostatkem, kterým síťový model trpí, jsou omezení při změnách jeho struktury, kdy v mnoho případech není jiná možnost nežli vytvořit celý model od znova. 11.1. Uzly a jejich propojení Uzel představuje souhrn záznamů. Pomocí množinové struktury, kterou jsou reprezentovány vztahy v síťové databázi, je umožněno vytvořit vztah mezi dvěma uzly tak, že jeden z nich je formulován jako vlastník a druhý uzel jako člen. Tato metoda přináší značnou změnu oproti vztahu rodič a potomek, který je znám z hierarchického modelu. Konkrétně v tom, že záznam v členovi může být provázán s více záznamy v uzlu typu vlastník. Vzniká tedy možnost připojit uzle nejen v různých úrovních, ale též na úrovni stejné. Přestože se v následujících letech síťový model dále rozšiřoval, v dnešní době by se větší komerční dostupná implementace hledala těžko. Důvodem byl velký zájem o relační databázový model, který byl uveden na počátku 80. let. 27 Bakalářská práce Datové modelování Data modeling Obrázek 15 - Obecné uspořádání uzlů v síťovém modelu. Zdroj – vlastní zpracování. 11.2. Síťový model v současnosti Otázkou je, proč se ještě vůbec zabývat síťovým modelem v současnosti, když se až na pár starších systémů nepoužívá a zda-li jeho principy nejsou zastaralé. Z mého pohledu je užitečné znát některé metody, které jsou zabudovány do standardu síťového modelu, i dnes. Aktuální metodou i na dnešní dobu jsou: použití unikátního databázového klíče, realizace vazeb pomocí setů, atd. Ukázky síťového modelu jsou v praktické části této práce. 12. Relační databázový model 12.1. Historie relačního databázového modelu Tento model je z historického hlediska nejmladší. Vznikl o trochu později než modely hierarchický a síťový. Jako první ho představil matematik Dr. Codda, v odborném článku firmy IBM, který vyšel v roce 1971. Teoretická definice tohoto modelu se opírala o pojem matematické relace. Dr. Codda též uvedl matematickou definici pojmů entita, vazba a atribut, včetně jejich typů a hodnot. Zavedl též pojmy, které se týkaly množiny atributů a jejich funkčních závislostí. A jelikož tyto závislosti ovlivňují správnost entitních struktur, stanovil tímto pravidla, pomocí kterých se dá rozpoznat správná struktura databáze. Následně uvedl jazyk pro manipulaci s daty, a hlavně vyhledávání informací v relační databázi. 28 Bakalářská práce Datové modelování Data modeling 12.2. Relace Pod pojmem relace je vhodné si představit dvourozměrnou tabulku, kde atributy jsou reprezentovány sloupci a záznamy řádky. Názvy těchto atributů (neboli názvy sloupců) musí být unikátní v rámci celé tabulky. Obrázek 16 - Obecný příklad relace. Zdroj – vlastní zpracování. V relačním modelu je tedy často uchylováno k záměně pojmů relace za tabulku. Rozdíl mezi matematickými a databázovými relacemi je ten, že databázové jsou proměnné v čase. Změny, které nastávají v reálném světě, jsou pak zachyceny pomocí aktualizací, které mění hodnoty vybraných atributů nebo přímo upravují prvky relace. Vlastnosti tabulky, které vyplývají z definice relace, jsou následující: Na pořadí řádku nezáleží, protože relace je množinou. Každý údaj musí být atomickou položkou. Na pořadí sloupců nezáleží, neboť atributy také tvoří množinu. Každý řádek v tabulce musí být jednoznačně identifikovatelný. Musí být dodržena homogenita sloupců (hodnoty odpovídají příslušné doméně). Konkrétnější pravidla mohou být definována integritním omezením atributů: Check – Definuje specifická omezení hodnoty, přičemž ta jsou konkrétnější než samotná omezení datového typu sloupce. Příkladem budiž omezení číselného rozmezí 0-100. Not null – Je přípustné vynechání některých položek při vkládání dat do tabulky. Pokud se tak stane, prázdné místo je nahrazeno objektem pod názvem null, který reprezentuje nevyplněnou hodnotu. V situaci, kdy vzniká potřeba, aby údaje 29 Bakalářská práce Datové modelování Data modeling v příslušném atributu byly vyplněny, je nutno využít integritního omezení not null, které zakazuje jejich nevyplnění. Unique – Znamená, že hodnota určitého atributu musí být v rámci tabulky jedinečná, tudíž se nesmí opakovat. Pokud např. máme relaci osob a sloupci jméno nastavíme unique, můžeme jméno Anatoliy do tabulky vložit pouze jednou. 12.3. Atomická hodnota Je to taková hodnota, kterou nelze dále z logického pohledu dělit. Například pokud hodnota je Anatoliy Kybkalo, tak je patrné, že tuto informaci lze determinovat na menší logické části. Proto do tabulky se musí uložit do dvou různých sloupců. Pravděpodobně pojmenovaných jako Jméno a Příjmení. 12.4. Primární klíč Jelikož je relace množinou, kde pořadí jednotlivých řádků není určeno, není také zajištěná adresace těchto řádků, pomocí které bychom byli schopni určitý řádek nalézt. Z těchto důvodů se do relačního modelu přidává další speciální konstrukce, která umožňuje jednotlivé řádky jednoznačně očíslovat. Tato konstrukce se nazývá primárním klíčem, kde hodnoty musí být unikátní, aby při dotazu na konkrétní řádek nebylo vráceno řádků více. Tabulka 1 - PK v relaci. ID 1 2 ATRIBUT_1 Hodnota Hodnota ATRIBUT_2 Hodnota ….. Zdroj – vlastní zpracování. Primární klíč může být jak jednotlivý atribut, tak i soustava více atributů. V praxi se vybírají hodnoty, které v rámci celé tabulky nemohou být stejná. Např. v případě evidence osob může jako PK být vybráno rodné číslo, protože se nemůže stát, že dvě osoby budou mít toto číslo stejné. Určování, který atribut bude sloužit jako PK, přináší několik úskalí, se kterými se musí počítat. Např. pokud se bude jednat o mezinárodní databázi lidí, tak čeští občané sice mohou mít rodné číslo, ale občané jiných států nemusí. V případě, kdy nejsme schopni zajistit unikátnost PK, se do tabulky přidává atribut ID, který slouží jako číselník a každému řádku přidělí neopakovatelné číslo v rámci celé tabulky. 30 Bakalářská práce Datové modelování Data modeling 12.5. Propojování tabulek Při návrhu relační databáze je potřeba určit i logické vazby, pomocí kterých jsou tabulky provázané. Před samotným vytvořením této vazby je potřeba pochopit jak ten vztah vypadá. Například pokud by se jednalo o vztah fotbalového tymu a hráčů. Můžeme bezpečně prohlásit, že v jednom týmu hraje více hráčů, ale jeden hráč hraje pouze v jednom týmu. Z tohoto popisu se dále stanovuje kardinalita, která je definovaná násobností každého konce vazby. Pro určení kardinality jsou k dispozici tyto tři základní možnosti. 1:1 – Tato kardinalita stanovuje, že jeden záznam v jedné tabulce má vazbu s právě jedním záznamem v tabulce druhé. 1:N – Záznam v rámci jedné tabulky muže mít vazbu s více záznamy z tabulky druhé. M:N – V jedné tabulce se může vyskytovat vice záznamů, které mají vazbu s více záznamy v tabulce druhé. 12.6. Cizí klíč Cizí klíč se používá k provázání záznamů, které se nacházejí v různých tabulkách a mají spolu určitý vztah. Tento způsob provázání poskytuje možnost definovat akce, které nastanou při smazání nebo změně jednotlivých záznamů v cizí tabulce. Této možnosti je vhodné využít v případě, že je potřeba při editaci záznamu v jedné tabulce, editovat záznam v tabulce druhé. Nejjednodušší formou provázání záznamů v relacích s kardinalitou 1:1 nebo 1:N, je vytvoření nového speciálního atributu ve vhodné relaci. Tento nově vytvořený sloupec symbolizuje cizí klíč a je do něj umístěn primární klíč záznamů z tabulky jiné. Obrázek 17 - Propojení tabulek cizím klíčem. Zdroj – vlastní zpracování. 31 Bakalářská práce Datové modelování Data modeling 12.7. Vazební tabulka Pokud se bude jednat o kardinalitu N:M, přidáním nového atributu do jedné z tabulek, nemůžeme docílit správného propojení záznamů. V takovém případě se používá vazební tabulka. Skládá se ze dvou a více atributů, do kterých se umisťují primární klíče propojených relací. Obrázek 18 - Vazební tabulka. Zdroj – vlastní zpracování. 12.8. Normalizace relační databáze Jedná se o proces, při kterém je optimalizována struktura databázové tabulky, s cílem vytvořit takovou relaci, která nebude obsahovat redundantní data a práce s nimi bude co nejefektivnější. Normální forma (NF) je pravidlo, které by měla data splňovat. Čím na vyšší úrovni NF relace je, tím víc je optimalizována pro práci s daty v ní. Formy jsou seřazené vzestupně a každá následující zahrnuje formu předchozí. [10]10 0NF – Aby relace splňovala tuto nultou normu, je nezbytní aby obsahem této tabulky byl alespoň jeden sloupec, který je schopný obsahovat neatomické hodnoty. 1NF – Pokud všechny sloupce v tabulce obsahují hodnoty, které nelze dále logicky dělit, tedy jsou to prvky atomické, relace je v první normální formě. 2NF – Tabulka je v této normě, pokud obsahuje pouze takové atributy, které jsou závislé na celém klíči. Tím je myšleno, že veškeré hodnoty se vztahují k PK. 3NF – Jestliže je absence závislostí mezi neklíčovými sloupci, relace splňuje třetí normální formu. 4NF – V této formě je relace tehdy, pokud obsahuje sloupce, které popisuji pouze jednu souvislost nebo jeden fakt. 5NF – Pokud se do relace přidá nový atribut, následkem čehož by se tabulka rozpadla na tabulky dvě, splňuje tato relace pátou formu. 10 Žďárský, M. (16. 2 2009). RDB Relační model. Získáno 26. 2 2013, https://uu.unicornuniverse.eu/ues/sesm?SessFree=ues:UCL-BT:RDB.CZ/LEC02/GL 32 Bakalářská práce Datové modelování Data modeling Obrázek 19 - Normální formy. Zdroj – vlastní zpracování. 12.9. Boyce coddova normální forma – BCNF Byla vytvořena roku 1974 Dr. Coddem a Dr. Boycem s cílem rozšířit třetí normální formu. Důvodem byly anomálie vyskytující se při použití složených klíčů. Podstata této formy je, že nesmí existovat funkční závislost mezi dvěma klíči. [11]11 Aby byla tato normální forma porušena, musí nastat tyto specifické okolnosti: V obsahu relace se nalézá více než jeden kandidátní klíč. Minimálně dva z těchto klíčů, musí být složené z více jak jednoho atributů. Společný atribut se musí nalézat aspoň ve dvou z těchto složených kandidátních klíčích. Každá relace, která splňuje BCNF, musí zákonitě splňovat i NF3, avšak ne každá relace, která spadá do NF3, musí splňovat BCNF. Příkladem může být tabulka rozvrhu, která má atributy Prednaska, Ucitel, Mistnost a Hodina. Dále máme dva složené klíče (Hodina, Ucitel) a (Mistnost, Hodina). 11 Skřivánek, F. (23. 10. 2008). Datové modelování poprvé. Navštíveno 7. 3. 2013 http://www.dbsvet.cz/view.php?cisloclanku=2008102302 33 Bakalářská práce Datové modelování Data modeling Tabulka 2 - Rozvrh v NF3. Prednaska EHT EHT SEC Ucitel Jančích Jančích Hartman Mistnost 1.1 0.1 DK Hodina 14:00 17:00 12:30 Zdroj – vlastní zpracování. Přesto že se tato relace nalézá v NF3, jméno učitele se neustále v tabulce opakuje. Proto není v Boyce coddove normální formě. Řešením je rozděleni rozvrhu na dvě tabulky takto: Tabulka 3 - První tabulka v BCNF. Prednaska EHT SEC Ucitel Jančích Hartman Zdroj – vlastní zpracování. Tabulka 4 - Druha tabulka v BCNF. Prednaska EHT EHT Mistnost 1.1 0.1 Hodina 14:00 17:00 Zdroj – vlastní zpracování. 13. Objektově orientované databáze Motivem pro vývoj OODB – Objektově Orientovaných Databázi byla neschopnost relačních databázi uložit a dále zpracovávat objekty podle specifických potřeb aplikací. RDM – Relační Datový Model není vždy vyhovující pro aplikace, které jsou vytvořené pomocí objektově orientovaného přístupu, protože je v nich ukládání dat příliš jednoduché. Také je odlišnost relační struktury v databázi od struktury samotné aplikace a je vynuceno podnikat řadu mezikroků pro zajištění spolupráce relační databáze s objektově orientovanou aplikací. Tyto mezikroky nejen, že zbytečně zesložiťují aplikaci a mohou snižovat výkon, ale také zvyšují pravděpodobnost výskytu chyby. Tyto nedostatky byly impulsem pro vývoj nové konstrukce databáze, která by byla schopná pracovat s objekty lépe, než RDB – Relační databáze. Nicméně OODB není náhradou RDB, protože vhodnost použití závisí na specifické oblasti nasazení. Využívají se zejména tam, kde relační databáze svoji jednoduchosti nepřípustně zjednodušují realitu, jelikož disponují malou modelovací schopností. Odděluji totiž chování od objektu a podporují jen jednoduché datové typy. Proto relační platformy jsou vhodnou volbou v případě potřeby spravovat velký objem jednoduchých dat. 34 Bakalářská práce Datové modelování Data modeling Pojem „objektové databáze“ ve skutečnosti muže vyjadřovat dva zcela odlišné datové modely: Objektově relační datový model – Jedná se o evoluci ve vývoji, kdy byla doplněna do relačního modelu možnost práce s datovými strukturami, které jsou využívány v oblasti objektově orientovaného programovacího jazyka. Velcí výrobci RDB systémů jako např. Oracle zvolili právě tuto možnost rozšířeni. Principy tohoto modelu však stále pocházejí z modelu relačního. Objektově orientovaný datový model – Je to zcela nový datový model, který nemá s relační databázi nic společného. Do jisté míry je možno na něj nahlížet jako na rozšíření modelu síťového, kterému byla přidaná možnost pracovat s objekty tak, jak je zvykem v objektovém programování. 13.1. Objektový databázový model Odlišnost ODM od RDM je nezanedbatelně veliká, avšak jednou z možnosti jak uložit data v ODM je pomocí tabulek. Nicméně jejich struktura se podoba spíše síťovým databázím, jak můžeme vidět např. v IDMS - Integrated Database Management Systém. Při určité úrovní abstrakce můžeme uvést tento vztah takto: „Síťový databázový model + objektové typy dat + polymorfismus = objektový databázový model.“12 ODM je možno charakterizovat následovně: 12 V některých objektových databázích je podporováno až několik desítek typu objektových kolekcí, které můžeme najít v knihovnách OO programovacího jazyka. Příkladem budíš Dictionary, List, Array a mnoho dalších. V OODB jsou zavedeny pojmy jako kolekce a třída objektů. Zatímco třída pouze realizuje datový typ objektu, kolekce slouží jako jeho uložiště. Proto je možné se v praxi setkat s více množinami obsahujícími objekty stejného typu a na druhou stranu není problém realizovat jednu kolekci, která obsahuje objekty různých tříd. Za podmínky, že tyto objekty mají několik společných atributů, můžeme je udržovat pohromadě v kolekci a následně různě selektovat. V RDB není možno docílit nezávislosti mezi druhem dat a jejím uložištěm, protože tabulka vystupuje v roli kolekce i třídy zároveň. Složení objektu se dělí na dvě části. V první jsou umístěné datové složky. To mohou být např. informace o objektu nebo jiné objekty. Druhá část obsahuje metody, které slouží pro manipulaci právě s výše uvedenými datovými složkami. Muže Vojtěch MERUNKA, Antonín CARDA, Jiří POLÁK: Datové modelování. 2007. Strana 114. 35 Bakalářská práce Datové modelování Data modeling se jednat jak o jednoduché operace např. čtení hodnot nebo jejich zápis do datových složek, tak i o složitější operace, při kterých jsou vypočítávány data, která v objektu nejsou uložena. Objekty jsou polymorfní, pokud obsahují společné atributy. Proto pro vznik polymorfismu není nutno, aby třidy mezi sebou bezpodmínečně dědily. Tak jako v relační databázi každý záznam v rámci jedné tabulky musí mít svůj primární klíč, tak i v objektové databázi je tomu podobně. V rámci jednoho paměťového prostoru má každý objekt svou jednoznačnou identitu. Tento unikátní identifikátor je automaticky přiřazován systémem a je znám pod zkratkou OID – Objekct IDentifier. OID plní funkci pomyslného ukazatele na objekt v paměti. Po přiřazení ukazatele danému objektu, zůstává tento intenzifikátor po celou dobu neměnny, i v případě, že se změní struktura objektu nebo jeho umístění v paměti, kde je uložen. Díky koncepci OID jsme schopní vnímat rozdíl pojmů totožnost objektů a rovnost dat v nich. Pokud máme dva objekty s naprosto stejnými daty, neznamená to, že jsou tyto objekty totožné. Často se v ODB tyto identifikátory skrývají pod rozhráním DBMS, proto je uživatele nemusí vždy nutně vidět. Na objektovou databázi lze nahlížet i jinač než jako na pouhé uložiště dat pro nějaký program. V ODM muže byt vytvořena taková soustava objektů, která se bude sama o sobě chovat jako aplikace. Některé programové algoritmy mohou byt uloženy jako metody v objektech rovnou v databázi. Tím se tvorba aplikace, která bude tuto databázi využívat, velice zjednoduší, protože se v podstatě bude jednat jen o rozhrání, pomocí kterého se budou prezentovat výsledky výpočtů provedených v rámci ODB serveru. V ODB je umožněno migrovat objekty mezi několika třídami, a tudíž systém může obsahovat více než jednu verzi té samé třídy. V praxi to slouží např. k rozdělení přístupového oprávněni, kdy různí uživatele mají na stejném objektu dostupné různé atributy. 36 Bakalářská práce Datové modelování Data modeling Obrázek 20- Porovnání RDM a ODM. Zdroj – vlastní zpracování. 13.2. Postup tvorby objektové databáze Při tvorbě RDB máme k dispozici datovou normalizaci, metody datového rozkládání a metody spojování atributů. Avšak jak již bylo zmíněno ODM není žádnou nadstavbou RDM a při jeho tvorbě nastává otázkou jakou metodu návrhu zvolit. Problém tkví v tom, že doposud neexistuje žádná všeobecně uznávaná technika pro postup návrhu objektového modelu, která by byla standardně používaná. Je tu samozřejmě možnost využit relačních technik, ale výsledkem návrhu nebude nic jiného nežli „relační databáze v objektovém prostředí“, kde nebudou využity vlastnosti ODM kvůli kterým byl tento druh modelu vyvinut. Další možnosti je převzetí navrhovaného schématu osahujícího třídy a objekty, rovnou ze softwarové aplikace, pro kterou budeme tvořit databázi. Jenže struktura, která je použita v aplikaci není vždy vhodná pro strukturu datovou. Důvodem je, že spousta programových struktur jsou postaveny na dynamickém chování, kdy velké kolekce objektů jsou ukládaný do externí paměti a to si v databázích nemůžeme tak jednoduše dovolit. Pokročilé techniky jako např. objektová normalizace je analytiky téměř neznámý pojem. Proto jsme při tvorbě ODB odkázáni na zkušenosti expertů z praxe, kteří popisují postup návrhu objektové databáze takto: Prvním krokem je vytvoření konceptuálního modelu, kde budou namodelovány pouze množiny a nebudou znázorněny zbytečné detaily ohledně softwarové implementace. K tomu je vhodné použít diagram tříd v jazyce UML. V tomto kroku se též rozpoznají atributy objektů. V druhém kroku je potřeba najit k namodelovaným množinám potřebné třídy a následně je normalizovat. V rámci třetího kroku je nutno provést rozhodnutí ohledně toho, které atributy budou datovými složkami a které bude potřeba napsat jako metody. 37 Bakalářská práce Datové modelování Data modeling Na závěr je nezbytné otestovat správnost modelu, proto se databáze naplní testovacími daty, tak že se vytvoří konkrétní instance třid a uloží se do vybraných množin. 13.3. Objektová normalizace Je potřeba věnovat značnou pozornost formálním technikám, pomocí kterých se navrhují datové struktury. I přesto, že bylo publikováno několik prací zabývajících se touto tematikou, oblast OODB je v tomto směru teprve na počátku vývoje. Od objektové normalizace spousta analytiků očekává tyto tři základní vlastnosti [13]: 13 Musí byt splněna co největší možná srozumitelnost, přesnost a jednoduchost. Pro naplnění těchto vlastnosti by mělo byt použito minimální množství pojmu, tak jak tomu je např. v normalizacích relačních databází. Zaměření normalizace by mělo byt soustředěno hlavně na návrh databází. Tím je myšlena samotná struktura objektů pomoci, které jsou ukládaná data v databázových systémech. Do této struktury by neměli patřit objekty, které zodpovídají za provoz aplikace. V případě že by se OO přístup stal univerzálním i pro modelování relačních nebo entitně-relačních modelu, bylo by vhodné, aby z objektových normalizací šlo nějakým způsobem odvodit normalizace relační. 13.4. Tří objektové normální formy – ONF Jedna se o postup, pomocí kterého předejdeme nevhodným úvahám o použití vazeb mezi objekty nebo jejich skládaní a dědění. 13.4.1. 1ONF Třída se nalézá v první objektové normální formě, pokud v obsahu objektů této třídy nejsou opakující se atributy. V případě, že se tak stane, je nezbytné vytvořit novou třídu, do jejíhož objektu budou takové atributy přemístěný. Takto se opakování atributů nahradí jedinou vazbou na kolekci objektu v nové třídě. Celé schéma splňuje 1ONF pokud, tuto normu splňují všechny třídy v něm. Pro úplné pochopeni podstaty této NF poslouží následující přiklad: 13 Vojtěch MERUNKA, Antonín CARDA, Jiří POLÁK: Datové modelování. 2007. Strana 90-95. 38 Bakalářská práce Datové modelování Data modeling Obrázek 21 - Nenormalizované třídy. Zdroj – vlastní zpracování. Na tomto obrázku je patrný nenormalizovaný tvar dvou různých objektů obsahujících skupinu opakujících se atributů. Takové řešení je naprosto nesmyslné a v případě, že součásti objednávky bude stovka produktů, stává se i nepřehledným. Nyní si zobrazíme přehledné, čisté a elegantní zakresleni struktury podle NF. Obrázek 22 - Třídy v 1ONF. Zdroj – vlastní zpracování. 13.4.2. 2ONF Třída je v této normální formě, pokud v jejích objektech nejsou sdílené atributy. Pokud několik objektů obsahuje totožný atribut nebo dokonce celou skupinu atributů, je potřeba je přemístit do nového objektu nové třídy a následně sdílené atributy v původních objektech nahradit vazbou na objekt nově vzniklý. Pokud všechny třídy ve schématu splňuji 2ONF, je toto schéma v druhé objektové normální formě. Pro názornou ukázku budeme pokračovat v příkladu, který již splňuje 1ONF. 39 Bakalářská práce Datové modelování Data modeling Objednávka a dodávka je v rámci stejné zakázky, proto jejich atributy jsou sdílené a stejná data jsou zbytečně uložena na dvou místech současně. Jedná se o konkrétní atributy jako jméno, příjmení a adresa dodavatele apod. Řešením jak předejít redundantním datum, je vytvořit novou třídu Kontakt a přemístit atributy do objektu této třidy. Obrázek 23 - Třídy v 2ONF Zdroj – vlastní zpracování. 13.4.3. 3ONF Třída splňuje třetí objektově normální formu, pokud v jejích objektech nejsou atributy, které jsou nezávislé na objektu, ve kterém se nacházejí. Za předpokladu, že takové atributy existuji, je nutné je přemístit do objektu nově vytvořené třídy a objektům, ve kterých byly původně, přiřadit jen vazby na tento nový objekt. Znova budeme rozšiřovat schéma z předchozí NF. Jak si můžeme všimnout třída Kontakt obsahuje atributy, které mají samostatný význam. Např. jméno a příjmení osoby nebo adresa. Proto, aby tato třida splňovala 3ONF je nezbytné ji rozdělit, tak jak je zachyceno na následujícím schématu. Obrázek 24 - Třídy v 3ONF. Zdroj – vlastní zpracování. 40 Bakalářská práce Datové modelování Data modeling Se zde uvedeným přístupem přichází spousta otázek a námětu, jakým směrem by se měl rozvoj těchto normálních forem uchylovat. Jednou z otázek je např. jak do tohoto přístupu může být zahrnut vztah dědění nebo jiné vazby používané k propojení objektů. V dnešní době se diskutuje právě o tom, že by se touto tématikou měla zabývat čtvrtá ONF. 14. Best practices v datovém modelování Není povinností tyto praktiky dodržovat, poněvadž se jedná jen o doporučení. Je na nás jakým způsobem si budeme např. pojmenovávat tabulky v naší databázi. Avšak komunita tvůrců se dlouhá léta snaží vytvořit určité konvence, které vycházejí z dlouhodobé zkušenosti. Pokud je budeme dodržovat nejen, že zajistíme přehledný stav databáze a tím pádem ulehčíme orientaci lidem, kteří ji netvořili, ale potřebuji s ní pracovat, ale také se vyhneme případným problémům v budoucnu. V rámci této práce bylo shromážděno několik nejznámějších best practices pro návrh a prací s databází. [14]14 Použijte dobře definované a konzistentní názvy jak pro tabulky, sloupce tak třeba i pro třídy. Název by měl být jednoznačný a pochopitelný např. škola, student, předmět atd. Při pojmenování používejte jednotné číslo. Tabulky nebo třídy jsou souborem subjektů, není třeba jim dávat plurálové označení. To znamená, že pokud budeme chtít vytvořit tabulku, která bude obsahovat záznamy studentů, tak ji pojmenujeme Student a nikoli Studenti. Snažte se vyhnout mezerám v názvech. Pokud kupříkladu budeme mít atribut RodneCislo, můžeme se vyhnout případným problémům při pozdějším přístupu k tomuto atributu. V případě výskytu mezery bude potřeba při sepsání dotazu na tento atribut zabalit jeho název do speciálních znaků. Nepoužívejte zbytečně předpony nebo přípony v názvech (tzn. použit Student místo TbStudent nebo StudentTabulka atd.). Používejte vždy celočíselný atribut ID. Pokud v současné době není potřeba, může se hodit v budoucnu např. pro vytvoření vazeb nebo indexovaní. 14 Basaraner, C. (11. 4 2012). 20 Database Design Best Practices. Získáno 10. 3. 2013, http://architects.dzone.com/articles/20-database-design-best 41 Bakalářská práce Datové modelování Data modeling Zkontrolujte integritní omezení primárního klíče, aby bylo nastaveno not null, jinak mohou nastat problémy při propojovaní tabulek. Zajistěte, aby byla pro všechny případy k dispozici databázová dokumentace. Uchovejte své databázové návrhy včetně E-R schématu a případně dalších komentářů použitých v diagramových popisech. Pro navýšení bezpečí udržujte hesla v zašifrované podobě a dešifrujte pouze v případě potřeby. 15. Návrhové vzory – (design patterns) Mezi výbavou každého profesionála, který se pohybuje tam, kde se vytváří software, musí byt znalost návrhových vzoru. Umění používat návrhové vzory pro modelování databázi nabývá stejné důležitosti, jako znalost syntaxe programovacího jazyka, ve kterém tvoříme aplikaci. Návrhové vzory popisují elegantní a nespočetněkrát vyzkoušena řešení jednotlivých problémů při tvorbě modelu. Tyto vzory byly vytvářený dlouhodobou praktickou zkušenosti, kdy tvůrci byli vynuceni několikrát předělávat své modely, než řešení bylo správné a elegantní. 15.1. Definice návrhového vzoru Návrhový vzor popisuje problém a jeho řešení. Struktura vzoru muže obsahovat tyto části: Název – Jedná se o krátké nebo jednoslovní označeni vzoru. Protože návrhové vzory slouží také pro usnadnění komunikace, není žádoucí, aby docházelo k dlouhému a složitému vysvětlování použitého pojmu v názvu. Popis problému – Předmětná definice toho co dany vzor řeší. Podmínky – Soupis veškerých okolností a jevů, které musí být brány v potaz, neboť mohou ovlivňovat použití konkrétního vzoru. Některé jevy mohou být prospěšné použitému řešení, jiné mohou přinášet nežádoucí konflikty. Proto návrhový vzor by měl popisovat okolnosti, při kterých je vhodné ho použít a na druhou stranu okolnosti, které nějakým způsobem jeho použití omezují. V popisu muže být zahrnuto i např. nastavení systému, které je nutno před použitím vzoru uskutečnit. Řešení – Je to soubor pokynů, pravidel a vztahů pomoci, ve kterých je popsán postup řešení problému, krok za krokem. Zde se nejčastěji využívá kombinace psaného textu s vizuálními diagramy, obrazy nebo schématy, na kterých je objasněn princip vzoru. 42 Bakalářská práce Datové modelování Data modeling Příklady – V každém návrhovém vzoru by měl být uveden alespoň jeden příklad, který znázorňuje praktické použití tohoto vzoru, a tím pomáhá uživateli lépe pochopit a osvojit předávanou myšlenku. Výsledek – Jedná se o shrnutí vyřešených problémů pomocí aplikovaného vzoru a stav systému po jeho použití. Po aplikování vzoru se mohou objevit pobočné efekty, které brání dosáhnout požadovaného stavu. Tyto efekty jsou ve většině případů řešené dalšími doplňujícími návrhovými vzory. Související vzory – Jak už bylo nakousnuto, mnohdy problém nevyřeší jeden jediný návrhový vzor, ale je třeba jich využít hned několik. V takových případech vstupní podmínky pro použití popisovaného vzoru jsou právě výsledky vzoru předchozího. Než se dosáhne požadovaného cíle, mohou takto byt zřetězeny až desítky vzorů. Reference – Souhrn situací, kde vzor byl již použit na reálných systémech. Tím se může případně zvyšovat důvěryhodnost vzoru. V katalozích profesionálních publikací můžeme najít desítky různých návrhových vzorů. Nejčastěji jsou tříděny do třech kategorií. V datovém modelování se využívají hlavně strukturální vzory (Structural patterns), které popisuji jak správně vytvořit strukturu objektů, aby byly splněny veškeré jejich požadované vlastnosti. 15.2. Příklady návrhových vzorů Cílem této práce není uvést veškeré návrhové vzory, které jsou v dané chvíli známé, proto v této kapitole bude uvedeno jen pár vybraných, které řeší nejčastější problémy, se kterými se můžeme setkat při modelování databáze. [15]15 15.2.1. Hierarchická struktura dat Často se stává, že je potřeba uložit stromovou strukturu ideálně v rámci jedné tabulky. Příkladem může být seznam zaměstnanců, kdy je nutné uložit informaci o tom, kdo je nadřízený a kdo podřízený. 15 Ždárský, M. (2. 3 2009). RDB Tvorba modelů. Získáno 2. 4 2013, https://uu.unicornuniverse.eu/ues/sesm?SessFree=ues:UCL-BT:RDB.CZ/LEC03/GL 43 Bakalářská práce Datové modelování Data modeling Obrázek 25 - Struktura zaměstnanců v podniku. Zdroj – vlastní zpracování. Elegantním řešením pro uložení takové struktury v relační databázi, je vytvořit atribut (sloupec) navíc v tabulce zaměstnanců, kde bude ukládán identifikátor nadřízené osoby viz následující tabulka. Tabulka 5 - Databázová tabulka zaměstnanců v podniku. Jméno Osoba_1 Osoba_2 Osoba_3 Osoba_4 Osoba_5 ID 1 2 3 4 5 ID nadřízeného 1 1 2 2 Zdroj – vlastní zpracování. Na každém řádku je uložena informace o uzlu včetně toho, kdo je jeho hierarchický předchůdce. Podmínkou je, že předchůdce může být pouze jeden. Z příkladové tabulky lze jednoznačně identifikovat kořen stromu, protože hodnota jeho atributu určující nadřízenou osobu je nevyplněna. Jinými slovy, je to ta nejvýše postavena osoba v rámci společnosti. 15.2.2. Dědičnost tříd Při vytváření aplikace v OOP jazyce, je často použita hierarchická struktura tříd, jejichž instance jsme většinou nuceni ukládat v relační databázi. Tyto instance můžeme ukládat třemi způsoby, které si ukážeme na následujícím přikladě. 44 Bakalářská práce Datové modelování Data modeling Obrázek 26 - Dědičnost v OOP. Zdroj – vlastní zpracování. Prvním přístupem je Table per class hierarchy, kde pro uložení instancí všech tříd slouží jedna tabulka. Takže počet sloupců v tabulce se bude rovnat počtu atributů v celé hierarchické struktuře. Pro zvolený příklad bude tabulka vypadat následovně. Obrázek 27 - Přístup Table per class. Zdroj – vlastní zpracování. 45 Bakalářská práce Datové modelování Data modeling Můžeme si všimnout, že všechny atributy, kromě náležících třídě Osoba, nemusejí být vyplněny. Tudíž při vložení instance každé třídy, budou vyplněny jen sloupce, které odpovídají atributům této třidy a do zbylých se vloží hodnota NULL. Tabulka též obsahuje sloupec TypTridy, ve kterém je uložena informace o tom, do jaké třídy určitý řádek patří. Tento přístup přináší výhodu v tom, že data jsou pohromadě na jednom místě a přístup k nim je velice snadný. Na druhou stranu je zde i několik nevýhod, např. v případě velkého počtu atributů se tabulka stává méně přehlednou a navíc může být překročen maximální počet sloupců, který je u každé databáze jiný. Druhou nevýhodou je, že převážná část sloupců v řádcích obsahuje hodnotu NULL, a tudíž je diskový prostor obsazován zbytečně. Další nevýhodou je absence možnosti nastavit některým sloupcům NOT NULL constrainty a zajistit tak integritu dat na úrovni databáze. Druhým přístupem je Table per subclass, kde každá třída má svoji tabulku, která obsahuje atributy pouze této třídy a ne tříd nadřazených. Řádky mezi tabulkami jsou provázaný pomoci stejného ID. Tudíž platí vztah (OsobaID = ZamestnanecID = ProdejceID). Obrázek 28 - Přístup Table per subclass. Zdroj – vlastní zpracování. 46 Bakalářská práce Datové modelování Data modeling Výhoda takového to přístupu je v tom, že nedochází k uložení nepotřebných NULL hodnot a pokud to je nutné, můžeme nastavovat jednotlivým sloupcům NOT NULL constrainty a tím si vynutit jejich vyplnění. Mezi nevýhody patří komplikace při získávaní dat o konkrétní instanci, kdy je potřeba načíst data z několika tabulek. Pokud bychom chtěli získat veškeré informace o řidiči, musíme projít a spojit tabulky Ridic, Zamestnanec, Osoba, Kontakt. Třetím a posledním přístupem je Table per Class, kde se vytváří tabulka pro každou třídu, která je neabstraktní. V těchto tabulkách jsou uloženy, kromě vlastních atributů též atributy nadřazených tříd. Obrázek 29 - Přístup Table per Class. Zdroj – vlastní zpracování. Výhody tohoto přístupu jsou velmi podobné jako v předchozím případu. Data jednotlivé instance lze snadno a rychle získat, protože jsou uložena v jedné tabulce. Každému sloupci můžeme nastavit NOT NULL constrainty v závislosti na tom, jestli jsou potřeba. K nevýhodám patři neexistence centrální evidence identifikátorů, a pokud tedy chceme hledat instanci třídy jen pomoci ID, je potřeba prohledat všechny tabulky. Při jakékoli úpravě atributů, ať názvu nebo typu, je nutné provádět úpravy v několika tabulkách najednou. V případě, že je hierarchická struktura rozsáhla a jedná se o změnu atributů v kořenové třídě, může takový proces být komplikovaný, protože je potřeba změnit atributy ve všech tabulkách. Jak můžeme vidět způsobů jak vyřešit problém je hned několik, proto pro správnou volbu je velmi důležité znát požadované vlastnosti databáze. Nejsme omezeni jen na jednu variantu je možné popsané přístupy kombinovat např. pro první tři úrovně použít Table per subclass a pro následující úrovně Table per Class. 47 Bakalářská práce Datové modelování Data modeling 15.2.3. Předem neznáma struktura dat Dalším častým problémem, je uložení dat, jejichž struktura při tvorbě aplikace není známá. Příkladem může být systém spravování chyb, kde uživatel definuje typ chyby a její atributy, které se musejí uložit. Tento problém můžeme řešit pomocí metamodelu. Metamodelem se myslí pevný datový model, který je složen ze čtyř tabulek a lze ho využit pro ukládání dat libovolné struktury. Tyto 4 tabulky se dále dělí na dvě skupiny. Obrázek 30 - Rozdělení metamodelu. Data Metadata Record Record type Value Atributte Zdroj – vlastní zpracování. Metadata obsahují informace popisující vlastní data, která jsou v metamodelu uložena. Do skupiny metadat patří tyto dvě tabulky: Record type – Zde je uveden pro každý typ dat jeden řádek, který o něm obsahuje základní informace a to minimálně ID a logický název typu. Attribute – V této tabulce je uveden seznam veškerých atributů pro každý typ dat. Měl by zde být uveden název atributu jeho ID a ID typu, na který se tento atribut váže. Druhou skupinou jsou vlastní data, obsahující též dvě tabulky. Record – Zde je pro každý záznam uveden jeden řádek obsahující atribut, který odkazuje na typ záznamu v tabulce Record type. Value – V této tabulce je uveden jeden řádek pro každý atribut datového záznamu a v obsahu tohoto řádku je odkaz na typ atributu v tabulce Attribute a datový záznam v tabulce Record. 48 Bakalářská práce Datové modelování Data modeling Pro lepší představu jak metamodel funguje si pojďme ukázat příklad s dvěma velice jednoduchými tabulkami Zákazníka a jeho Bydliště. Obrázek 31 - Tabulky zákazníka a jeho bydliště Zdroj – vlastní zpracování. Nyní se pojďme podívat, jak bude vypadat struktura v metamodelu. Obrázek 32 - Tabulky metamodelu Zdroj – vlastní zpracování. 49 Bakalářská práce Datové modelování Data modeling V record type je vložen řádek pro každou tabulku. Tedy jsou zde dva záznamy jeden pro zákazníka a druhy pro bydliště. Dále jsou v tabulce attribute uloženy řádky pro každý atribut v tabulce zákazníka a bydliště. Vlastní data jsou pak uložena v tabulce value a record. Přinos metamodelu je v tom, že umožnuje do pevně definovaných tabulek ukládat strukturovaná data libovolné struktury. Přináší však i několik nevýhod: Velké množství uložených dat – Pro každý ukládaný atribut je v tabulce value uložen jeden řádek. Složité operace pro datovou manipulaci – Abychom načetli jeden záznam, je nezbytné načíst přinejmenším jeden řádek z tabulky record a podle počtu atributů v záznamu, načíst stejný počet řádků z tabulky value. S podobnou složitosti se setkáváme i při zápisu dat. Na ukládaná data nelze aplikovat integritní omezení. Složitější dotazování – Každý dotaz prováděný nad metamodelem je značně složitější než nad „klasickým“ datovým modelem. Sloupec value, který se nalézá v tabulce value, obsahuje hodnoty různých atributů, které patří různým záznamům, tato skutečnost výrazně omezuje optimalizaci databázových operaci a tabulky Value a Record se mohou stát „úzkým hrdlem aplikace“. Dalším v této práci nepopsaným přístupem pro ukládání předem neznámé struktury dat je ukládání binárních dat a dynamické generování datového modelu za běhu aplikace. 15.2.4. Číselník Představme si situaci, kdy je potřeba u každého záznamu uchovávat jistou informaci, která je stejná u více záznamů v rámci celé tabulky. Příkladem může být tabulka s lidmi, kde musí být u každé osoby definováno zda-li se jedná o prodejce, manažera nebo řidiče. Jednou z možnosti je vytvořit atribut Hodnost přímo v tabulce osob. 50 Bakalářská práce Datové modelování Data modeling Tabulka 6- Relace osob. ID_osoba 1 2 3 4 5 6 Jmeno Anatoliy Michal Tomáš Josef Alexandr Martin Hodnost Manažer Manažer Prodejce Prodejce Prodejce Řidič Zdroj – vlastní zpracování. Nebo můžeme využit číselník a propojit relace pomoci ID_hodnost. Tabulka 7 - Relace osob s použitím číselníku. ID_osoba 1 2 3 4 5 6 Jmeno Anatoliy Michal Tomáš Josef Alexandr Martin ID_hodnost 1 1 2 2 2 3 Zdroj – vlastní zpracování. Tabulka 8 - Číselník. ID_hodnost 1 2 3 Popis Manažer Prodejce Řidič Zdroj – vlastní zpracování. Při vzniklé potřebě editovat nějakou hodnost, není nutno projíždět každou osobu ale postačí upravit pouze jeden záznam v tabulce hodností. Např. pokud se firma rozhodne, že z prodejců udělá skladníky. Bude se editovat atribut Popis u hodnosti s ID_hodnost 2 (dva). Z uvedeného příkladu můžeme vypozorovat výhodu v jednoduché editaci. Nevýhoda spočívá v potřebě vytvořit další tabulku a vazbu na tabulku předchozí. Další nevýhodou je složitější přístup k datům, než v předchozí variantě. Nyní abychom zjistili, jakou má osoba hodnost, musíme projít dvě tabulky místo jedny. 51 Bakalářská práce Datové modelování Data modeling 16. CASE nástroje pro datové modelování Nástroje používané při vývoji softwarových aplikací se nazývají CASE – Computer Aided Software Engineering. Těmito nastrojí je podporován jak strukturální, tak i objektově orientovaný vývoj. CASE nástroje pomáhají člověku zajistit souvislosti, které sám není schopen mentálně pojmout. Jejich použití nám nezaručuje bezchybný vývoj, protože se jedná o nástroj, který nám může pomoct při modelování, to však neznamená, že budeme modelovat problematiku správně. Pro návrh databáze se dá vybrat hned několik vhodných kandidátů z cele řady CASE nástrojů, které nás budou provázet od počátku vývoje až do konce. Vzniká tedy otázka, který nástroj je lepší. Na to se nedá jednoduše odpovědět, protože v dnešní době většina těchto programů umožnuje vytvářet stejné výstupy a tím se rozdíl mezi nimi stírá. V začátcích modelování, kdy je potřeba identifikovat základní entity, ve většině případů pouhé business zadání nestačí, proto je nutné komunikovat s klientem pro získání doplňujících informací. Pro tento účel můžeme použít software Microsoft Visio16 a modelovací jazyk UUBML17 - Unicorn Unified Business Modeling Language, který vyvíjí česká firma Unicorn a. s. a popisuje ho takto: „Cílem jeho používání je usnadnění prezentace myšlenek a zlepšení komunikace mezi lidmi - ať ve vztahu s okolím podniku (zákazníci, partneři atd.) nebo uvnitř pracovního týmu (a samozřejmě i mimo business). Což ve výsledku napomáhá vyhnout se rizikům vzájemného nedorozumění.“18 Tento jazyk obsahuje velký balík grafických prvků, pomocí kterých můžeme podpořit proces identifikace databázových entit a rychlou komunikaci mezi zaměstnanci v následovném vývoji. Jak takový model vypadá, je ukázáno v praktické časti této práce. Modely vytvořené pomoci UUBML mohou sloužit i jako konceptuální modely na vysoké úrovni abstrakce. 16 Odkaz na domovskou stránku výrobce: http://office.microsoft.com/en-us/visio/business-and-softwarediagrams-visio-professional-FX103472299.aspx 17 Odkaz na domovskou stránku výrobce: https://unicornuniverse.eu/cz/modelovaci-jazyk-uubml.html 18 Buchlák, P. (11. 2. 2010). CIT Konceptuální modelování. Získáno 3. 4. 2013 https://uu.unicornuniverse.eu/ues/sesm?SessFree=ues:UCL-BT:CIT.CZ/LEC09/GL 52 Bakalářská práce Datové modelování Data modeling Obrázek 33 - Microsoft Visio. Zdroj – vlastní zpracování. Pokud vytváříme konceptuální model v podobě E-R diagramu, tak jak byl představen v předchozích kapitolách, můžeme využit nástroj SmartDraw19. Obrázek 34 - SmartDraw. Zdroj – vlastní zpracování. 19 Odkaz na domovskou stránku výrobce: http://www.smartdraw.com/specials/ppc/smartdraw.htm?id=104640&gclid=COzAuMqvrrYCFREfzQodbWE ABA 53 Bakalářská práce Datové modelování Data modeling Pro modelování logického a fyzického modelu může posloužit Enterprice Architect nebo PowerDesigner21 a jazyk UML. 20 Obrázek 35 - Enerprice Architect. Zdroj – vlastní zpracování. Jak si můžete všimnout z náhledů, všechny tyto CASE nástroje jsou si podobné a práce v nich je často velmi intuitivní. Přestože existuje daleko více těchto nástrojů, v této kapitole jsou ukázány pouze ty, které jsou využity v praktické časti této bakalářské práce. 20 Odkaz na domovskou stránku výrobce: http://www.sparxsystems.com/ Odkaz na domovskou stránku výrobce: http://www.sybase.com/products/modelingdevelopment/powerdesigner 21 54 Bakalářská práce Datové modelování Data modeling 17. Praktická část Po té, co v teoretické části byly zmíněny veškeré podstatné věci pro to, abychom mohli vytvořit funkční databázi, přichází praktická část, kde si to předvedeme v praxi. Pro tento účel bylo vymyšleno zadání, ve kterém fiktivní firma požaduje na míru vytvořený informační systém. Z hlediska toho, že tato bakalářská práce je věnována datovému modelování, to pro nás není tak zajímavá informace. Pokud se ale zamyslíme pečlivěji, zjistíme, že pro tento IS bude potřeba vytvořit databázi. Samozřejmě, že projekt nezačíná hned tvorbou konkrétních datových struktur, jakmile přijdeme z první schůzky s klientem, ale důkladnou analýzou prostředí firmy, požadavkem FURPS+, identifikací procesu probíhajících ve firmě atd. Jelikož zpracování celého projektu od počátku do konce by bylo nad rámec této práce, omezíme se pouze na návrhu databáze podle business zadání a upřesňujících informaci od analytiků. Pro demonstraci nejefektivnějšího řešení tohoto konkrétního případu, budou vytvořeny čtyři datové modely a to pro databázi relační, objektovou, hierarchickou a síťovou. Následně budou porovnány výhody a nevýhody těchto modelu pro tento specificky příklad. 18. Business zadáni Firma Unifest, s.r.o. je novým členem na trhu poskytovatelů plastových oken. Protože tento trh je bohatý na konkurenci, firma se rozhodla vložit svou první investici do informačního systému, který by firmě zajišťoval lepší schopnost řídit podnik, a firma by mohla získat konkurenci schopnost na trhu. Byla provedena základní analýza, kde byly zjištěny základní požadavky firmy na systém. Firma Unifest má několik poboček po celé ČR a jejich síť se nadále rozrůstá. Organizace potřebuje systém, který by evidoval a umožňoval práci s informacemi o pobočkách, služebních autech, zaměstnancích, zákaznících, smlouvách, dodavatelích, službách a nabízeném zboží. Unifest se potýká s problémem v komunikaci mezi pracovníky, která probíhá pouze prostřednictvím osobních emailu a telefonu. Toto je velice efektivní řešení, protože jak víme, telefonická domluva je nejrychlejší, avšak v případech nutnosti naprosto nedohledatelná. Proto bude nutné zajistit komunikaci pomoci systémových zpráv. 55 Bakalářská práce Datové modelování Data modeling 19. Tvorba konceptuálního modelu Již z takového krátkého zadání jsme schopni určit většinu základních entit, o kterých bude potřeba uchovávat nějaká pro firmu zajímavá data. V prvním kroku může být vytvořen model na velmi vysoké úrovni abstrakce, pomocí kterého můžeme dolaďovat s klientem jeho požadavky na data, která budou v databázi uložena. Obrázek 36 - Konceptuální model na vysoké úrovní abstrakce. Zdroj – vlastní zpracování. Tento model byl představen vedení firmy za účelem projednání konkrétnějších informací. Všimnete si, příjemného vzhledu jednotlivých ikon, které mohou být pro běžného člověka, který se nevyzná v datovém modelování o hodně pochopitelnější nežli E-R diagram, tak jak ho známe. Tento způsob zachycení entit může o hodně zlepšit orientaci zákazníka v celé struktuře. Na základě předchozího modelu byly zjištěny dodatečné poznatky, které mohou ovlivnit strukturu dat v databázi. Byly tedy doplněny podrobnosti o některých entitách. 56 Bakalářská práce Datové modelování Data modeling Zaměstnanci společnosti jsou rozděleny do hierarchické struktury. Nejvýše postaveným je majitel firmy, který je zároveň ředitelem. Dále ve vedení firmy jsou dva manažeři, kteří zodpovídají za chod firmy a účetní řešící finanční problematiku. V rámci pobočky je jeden vedoucí a několik běžných pracovníků. Následující obrázek zachycuje firemní hierarchickou strukturu zaměstnanců. Obrázek 37 - Firemní hierarchie. Zdroj – vlastní zpracování. Dalším upřesněním je, že firma sice potřebuje vést evidenci automobilů, ale do tohoto pojmu zahrnovaly i jakýsi záznam jízd, kde bude jasně napsáno kdo, kdy a kolik s autem najel kilometrů. Tímto je zjištěna nová entita, kterou bude potřeba v databázi zachytit. Obrázek 38 - Záznam jízdy. Zdroj – vlastní zpracování. 57 Bakalářská práce Datové modelování Data modeling 19.1. Tvorba lineárního zápisu Dále bylo s vedením klientské firmy projednáno, jaká data budou chtít o jednotlivých entitách ukládat. Tyto požadavky můžeme zachytit na lineárním zápisu konceptuálního modelu podobajícího se seznamu, který bychom jinak stejně museli nějakým způsobem sepsat. POBOČKA (název, adresa, datum založeni) PRODUKT (název, výrobce, cena, popis, počet skladovaných kusů) SLUŽBA (název, cena, popis) ZAMĚSTNANEC (jméno, příjmení, rodné číslo, bydliště, plat, osobní telefon, pracovní telefon, email, hodnost, číslo bankovního účtu, pobočka) ZÁKAZNÍK (jméno, příjmení, rodné číslo, telefon, email, bydliště, bankovní spojení, číslo účtu, název společnosti, sídlo, IČ, DIČ, název společnosti) AUTOMOBIL (výrobce, značka, datum výroby, datum pořízení, počet najetých kilometrů, datum vypršení platnosti STK, popis, pobočka, SPZ) ZÁZNAM JÍZDY (zaměstnanec, automobil, datum převzetí, datum odevzdaní, počet najetých kilometrů, popis provedeného poškození) ZÁZNAM KOMUNIKACE (odesílatel, příjemce, datum, název, obsah zprávy) DODAVATEL (název společnosti, sídlo, jméno jednajícího, příjmení jednajícího, IČ, DIČ, bankovní spojení, číslo účtu, telefon, email) SMLOUVA (představitel jedné strany, představitel druhé strany, účel smlouvy, předmět smlouvy, kupní cena a platební podmínky, doba plnění, místo plnění, způsob plnění, sankční ujednání, odpovědnost za vady zboží a záruka, trvaní smlouvy, vyčet produktu, vyčet služeb, datum uzavření, počet kusu)22 Po výčtu těchto entit též můžeme zaznamenat jejich vztahy, avšak tento postup bych osobně volil v případě grafického zobrazení, protože při velkém počtu vazeb nezkušeny člověk se může lehce zamotat. Pro ukázku zápis některých vztahu by vypadal takto: PRACUJE (ZÁKAZNÍK, POBOČKA) UŽÍVÁ (ZÁKAZNÍK, AUTOMOBIL) DODÁVÁ (DODAVATEL, PRODUKT) 22 Smlouva může být jak s dodavatelem tak i se zákazníkem, podle toho se též odvíjí její položky, např. smlouva s dodavatelem nebude nikdy obsahovat výčet služeb atd. 58 Bakalářská práce Datové modelování Data modeling 19.2. Tvorba E-R diagramu Stejně jako v případě lineárního zápisu, kdy při velkém počtu vazeb se stává nepřehledným, i E-R diagram muže trpět stejným problémem, tentokrát však ne kvůli vazbám, ale velkému počtu atributů. Jako příklad si ukažme, jak by vypadal diagram, který obsahuje všechny atributy. Obrázek 39 - Příklad E-R diagramu se všemi atributy. Zdroj – vlastní zpracování. Jak je patrné, zatím jsou zobrazeny pouze dvě entity, ale grafických prvků je tam daleko více. Nyní si představme, že by se diagram skládal z desítek nebo stovek entit, a každá z nich by měla desítky atributů. Samozřejmě, že není problém takový diagram vytvořit, ale musíme brát na vědomí, že čím víc je model komplexnější, tím víc je složitější se v něm vyznat. Z uvedených důvodů bych volil postup, při kterém se zaznamenají veškeré atributy pomocí lineárního zápisu a následně se vytvoří E-R diagram, kde budou zachyceny hlavně vazby mezi entitami a pouze některé jejich atributy. 59 Bakalářská práce Datové modelování Data modeling Tedy E-R diagram23 v našem případě by mohl vypadat takto: Obrázek 40 - E-R diagram firmy Unifest. Zdroj – vlastní zpracování. Model může doprovázet popis entit, ale pro databázové účely nás spíš zajímá, co se o každý entitě bude ukládat a jak budou provázaný, než její chování, které je důležité spíše pro tvorbu informačního systému. Navíc diagram se tvoří proto, aby bylo všechno přehledné a na první pohled jasné, tudíž aby nebyl důvod popisovat problematiku dlouhým textem. Pro ještě větší zjednodušení je možné celý E-R diagram rozdělit do jednotlivých částí, které budou obsahovat pouze některé entity. 23 Diagram v plné velikosti je v příloze pod názvem „E-R_DIAGRAM“. 60 Bakalářská práce Datové modelování Data modeling Obrázek 41 - E-R detail pobočky, zaměstnance, automobilu a záznamů. Zdroj – vlastní zpracování. Na pobočce pracuje zaměstnanec, který může posílat zprávy ostatním zaměstnancům v rámci systému. Na pobočce může též být automobil, který zaměstnanci mohou využívat pro pracovní účely. Musejí však zaznamenávat svou jízdu v jistém záznamů kde vyplňují, o jaký automobil se jednalo, počet najetých km a tak dále. Obrázek 42 - E-R detail dodavatelské smlouvy. Zdroj – vlastní zpracování. 61 Bakalářská práce Datové modelování Data modeling Zaměstnanec uzavírá s dodavatelem smlouvu za účelem koupě produktu, který firma Unifest bude následně nabízet zákazníkům. V systému je pak vytvořena karta s dodavatelskými údaji. Obrázek 43 - E-R detail zákaznické smlouvy. Zdroj – vlastní zpracování. Zákazník se zaměstnancem firmy Unifest uzavírá smlouvu s cílem koupit produkt, službu nebo kombinaci obojího. Pokud tak učiní je v systému vytvořena jeho karta s osobními údaji. Pokud máme vytvořeny E-R diagram a jsme si jisti, že nebyla vynechána žádná entita, můžeme přistoupit k tvorbě Logického modelu. 62 Bakalářská práce Datové modelování Data modeling 20. Tvorba logického modelu relační databáze Výchozím bodem pro tvorbu logického modelu bude model konceptuální, a to jak v podobě lineárního zápisu, tak i v podobě E-R diagramu. Jelikož logický model zachycuje hlavně databázovou strukturu, je nutné se rozhodnout, kterou databázi budeme modelovat. Protože v dnešní době je převážně v IS používaná relační databáze, namodelujeme si ji jako první. Jeden z příkladů jak může vypadat logický model24 pro zvolený příklad: Obrázek 44 - Logicky model. Zdroj – vlastní zpracování. Jak je patrné, tabulky jsou provázané pomocí ID klíčů a tudíž je možné je spojovat. Např. pokud bychom objevili vadný výrobek na skladě a chtěli zjistit, jaká firma nám ho dodala, případně jim zavolat, podíváme se do smlouvy, která obsahuje tento produkt a následně zjistíme dodavatele a jeho kontakt. Procházíme tedy tabulky (Produkt, ProduktDodavatelskaSmlouva, DodavatelskaSmlouva, Dodavatel, Kontakt). Dále si můžete všimnout, 24 Model v plné velikosti je v příloze pod názvem „LOGICKY_MODEL_RELACNI_DATABAZE“. 63 Bakalářská práce Datové modelování Data modeling že byl použit pattern, který byl popsán v teoretické části, na tabulku zaměstnance pro udržení informace o tom, kdo je jeho nadřízený a pattern číselníku na tabulku hodnosti. Model též obsahuje několik vazebních tabulek, které zajištují spojení N:M. Vazby mezi entitami čteme takto: jeden zaměstnanec může uzavřít žádnou až nekonečno smluv, ale v každé smlouvě je uveden pouze jeden zaměstnanec. Pojďme si pro lepší přehlednost celkový model rozdělit do několika částí. Obrázek 45 - Detail zákazníka. Zdroj – vlastní zpracování. Údaje o zákazníkovi jsou rozděleny do několika tabulek a samotný záznam zákazníka v tabulce Zakaznik se skládá pouze z cizích klíčů, které odkazuji na všechny ostatní záznamy. Obdobným způsobem je řešen i dodavatel. Obrázek 46 - Detail dodavatele. Zdroj – vlastní zpracování. 64 Bakalářská práce Datové modelování Data modeling Obsahem každé smlouvy může být více produktů a zároveň jeden produkt může být obsažen ve více smlouvách, proto je potřeba vazby mezi smlouvami řešit pomocí vazebních tabulek a stejně tak postupovat i v případě služeb. Obrázek 47 - Detail smluv, produktu a služeb. Zdroj – vlastní zpracování. 65 Bakalářská práce Datové modelování Data modeling Údaje o zaměstnanci se ukládají stejně jako u dodavatele či zákazníka, rozdíl je v tom, že zaměstnanec může být obsažen jak v dodavatelské smlouvě tak i v zákaznické, navíc je mu přidělena hodnost, plat a jeho záznam udržuje informaci o tom, kdo je jeho nadřízený, což je zajištěno vazbou na vlastní tabulku. Obrázek 48 - Detail zaměstnance. Zdroj – vlastní zpracování. Obrázek 49 - Detail pobočky, automobilu a záznamů. Zdroj – vlastní zpracování. 66 Bakalářská práce Datové modelování Data modeling 21. Tvorba fyzického modelu relační databáze Na základě logického modelu je navrhnut fyzický model, který obsahuje veškeré potřebné náležitosti pro vytvoření databáze. To znamená, že je definován typ atributů, jsou zvoleny primární a cizí klíče, je určeno jaké atributy budou v rámci tabulky unikátní, případně které nemohou zůstat s hodnotou NULL a na závěr jsou vytvořené tabulkové vazby. Jelikož v tomto příkladu nehraje roli, pro jakou platformu bude model vytvořen, zvolil jsem si SQL Server 2008. Z náhledu můžeme vidět, že fyzický model25 je na nejnižší možné úrovni abstrakce a oproti logickému modelu značně komplexnější. Obrázek 50 - Fyzický model relační databáze. Zdroj – vlastní zpracování. 25 Model v plné velikosti je v příloze pod názvem „FYZICKY_MODEL_RELACNI_DATABAZE“. 67 Bakalářská práce Datové modelování Data modeling Pomocí CASE nástroje Enterprice Architect, ve kterém byl model tvořen, můžeme převést grafickou podobu databáze na zakládací skript. Přínosem je velké usnadnění a časová úspora, protože nemusíme vytvářet databázi manuálně v jazyce SQL. Zde je vhodné též model rozdělit na menší kusy, aby se zlepšil přehled entitních vazeb. Obrázek 51 - Detail zákazníka. Zdroj – vlastní zpracování. 68 Bakalářská práce Datové modelování Data modeling Obrázek 52 - Detail dodavatele. Zdroj – vlastní zpracování. 69 Bakalářská práce Datové modelování Data modeling Obrázek 53 - Detail smluv, produktu a služeb. Zdroj – vlastní zpracování. 70 Bakalářská práce Datové modelování Data modeling Obrázek 54 - Detail zaměstnance. Zdroj – vlastní zpracování. 71 Bakalářská práce Datové modelování Data modeling Obrázek 55 - Detail pobočky, automobilu a záznamů. Zdroj – vlastní zpracování. 72 Bakalářská práce Datové modelování Data modeling Automaticky vygenerovaný skript na založení tabulky automobilů z tohoto fyzického modelu relační databáze vypadá takto: CREATE TABLE Automobil ( ID_automobil int NOT NULL, ID_pobocka int NOT NULL, Vyrobce varchar(50) NOT NULL, Znacka varchar(50) NOT NULL, Datum_vyroby datetime NOT NULL, Datum_porizeni datetime NOT NULL, Pocet_najetych_km int NOT NULL, Datum_STK datetime NOT NULL, Popis text, SPZ varchar(10) NOT NULL ); Následujícím kusem kódu je definován primární klíč tabulky. ALTER TABLE Automobil ADD CONSTRAINT PK_Automobil PRIMARY KEY CLUSTERED (ID_automobil); Poslední kus kódu, který je zde uveden definuje cizí klíč pobočky. ALTER TABLE Automobil ADD CONSTRAINT FK_Automobil_Pobocka FOREIGN KEY (ID_pobocka) REFERENCES Pobocka (ID_pobocka); Ukázali jsme si, jak by se dala založit jedna tabulka v jazyce SQL, ovšem náš model obsahuje mnohem více relací a vazeb. Kompletní skript vygenerovaný nástrojem Enterprise Architect je v příloze26. 26 Zakládací skript v jazyce SQL pro model na obrázku 50 se nachází v příloze pod názvem „ZAKLADACI_SKRIPT_SQL“. 73 Bakalářská práce Datové modelování Data modeling 21.1. Další možnost zakreslení Nemůžeme tvrdit, že model v této kapitole je jedinou správnou možností zakreslení. Další variantou je podrobit model27 určitému stupni denormalizace např. takto: Obrázek 56 - Druhý logicky model relační databáze. Zdroj – vlastní zpracování. Je patrné, že počet relací se značně zmenšil. Na druhou stranu se ale zvětšil počet atributů v jednotlivých tabulkách. To znamená, že např. pro kontakty, již neexistuje pouze jedna centrální tabulka, ale uvádějí se u dodavatele, zákazníka a zaměstnance zvlášť. Toto řešení není nesprávné a záleží jen na požadavcích na databázi, které variantě dáme přednost. Přínosem tohoto řešení je snazší přístup k datům, protože při dotazování nemusíme procházet tolik tabulek jako v předchozím případu. Také zde chybí použití číselníku a hodnost zákazníka je vkládaná rovnou do jeho tabulky. Nyní si pojďme ukázat, jak by vypadal fyzický model28 této denormalizované datové struktury. 27 Model v plné velikosti je v příloze pod názvem „LOGICKY_MODEL_RELACNI_DATABAZE_DENORMALIZOVANY“. 28 Model v plné velikosti je v příloze pod názvem „FYZICKY_MODEL_RELACNI_DATABAZE_DENORMALIZOVANY“. 74 Bakalářská práce Datové modelování Data modeling Obrázek 57 - Dodavatelská smlouva. Zdroj – vlastní zpracování. 75 Bakalářská práce Datové modelování Data modeling Obrázek 58 - Zákaznická smlouva. Zdroj – vlastní zpracování. 76 Bakalářská práce Datové modelování Data modeling Obrázek 59 - Pobočka, automobil, záznamy. Zdroj – vlastní zpracování. 77 Bakalářská práce Datové modelování Data modeling 22. Tvorba logického modelu objektové databáze Tento model29 je velice podobný logickému modelu relační databáze, který jsme viděli v předchozí kapitole na obrázku 44. Stejně jako tam, i v tomto případě vycházíme z konceptuálního E-R diagramu a lineárního zápisu. Struktura dat v ODB a aplikaci napsanou pomocí OOP by měla být co nejvíce podobná, co se entit a jejich vazeb týče. Proto přece byla tato databáze vymyšlena, aby objekt, se kterým pracuje aplikace, byl uložen beze změny a odpadl problém s jeho transformací do tabulkové podoby pro relační databázi. Díky ukazatelům OID, které řeší samotná databázová platforma, již se nemusíme zabývat přidáváním nových ID atributu. Též odpadá potřeba řešit M:N vazby pomocí spojovacích entit, jak tomu bylo v relačním modelu, kde tuto funkci zastupovaly spojovací tabulky. Dle mého názoru je to značný krok kupředu v databázovém vývoji, protože proces tvorby datových modelu se podstatně zjednodušil a diagramy jsou přehlednější než v RDB. Pojďme se tedy podívat na možnou strukturu dat objektové databáze znázorněnou na logické úrovni. Obrázek 60 - Logický model objektové databáze. Zdroj – vlastní zpracování. 29 Model v plné velikosti je v příloze pod názvem „LOGICKY_MODEL_OBJEKTOVE_DATABAZE“. 78 Bakalářská práce Datové modelování Data modeling Výraznou změnou je vytvoření jedné kupní smlouvy namísto dodavatelské a zákaznické zvlášť. Jedná se o další možnou variantu zakreslení. Smlouva má vždy dvě strany a to kupujícího a prodávajícího, to jestli se to bude týkat zákazníka nebo dodavatele, nebo jestli bude zaměstnanec firmy kupující nebo prodávající, bude řešeno samotnou aplikací a do databáze se budou ukládat jen ty atributy, které se smlouvy opravdu týkají. Dále si všimněte, že třídy Zakaznik a Dodavatel jsou prázdné, není to však chyba. Toto rozdělení může posloužit pro případné rozšíření v budoucnu. Třídy mohou obsahovat i metody, které vypočítávají potřebné informace z ostatních atributů a tím odlehčují samotné aplikaci. Obrázek 61 - Přiklad metod v objektové databázi. Zdroj – vlastní zpracování. U osoby je možno spočítat její věk z rodného čísla. U automobilu lze rychle spočítat kolik zbývá času do skončení platnosti STK. U kontaktu je možno zjistit operátora z prvního trojčíslí telefonu. Stejně tak může být vypočítaná celková částka ve smlouvě pomocí sečtení cen veškerých položek, ať už služeb nebo produktů. Tyto metody jsou ukázány jen pro demonstraci toho, co může být s jejich pomocí řešeno. Propojení tříd je zajištěno pomocí speciálních relationships setu. Jak zápis takového setu vypadá je předvedeno v následující kapitole, kde je ukázán příklad kódu v jazyce OQL. 79 Bakalářská práce Datové modelování Data modeling 23. Tvorba fyzického modelu objektové databáze Z logického modelu můžeme přikročit k tvorbě modelu fyzického. To přináší potřebu rozhodnout se jaký typy atributů budou v databázi podporovány. Pokud aplikace bude napsaná pomocí programovacího jazyka C# nebo java, je vhodné si zvolit databázovou platformu, která tento jazyk podporuje též a ukládat do databáze objekty se stejnými typy atributů jako v aplikaci. Pro naši databázi si tedy zvolíme jazyk C#. Obrázek 62 - Fyzický model objektové databáze. Zdroj – vlastní zpracování. Jak můžeme vidět v tomto modelu30 jsou již definovány typy všech atributů a vazby jsou popsány dvojitě. Takovýto způsob popisu je potřeba pro tvorbu relationships setů, které zajištují propojení tříd. Pojďme se znova podívat na detailnější zobrazení tohoto modelu. 30 Model v plné velikosti je v příloze pod názvem „FYZICKY_MODEL_OBJEKTOVE_DATABAZE“. 80 Bakalářská práce Datové modelování Data modeling Obrázek 63 - Detail osoby. Zdroj – vlastní zpracování. Obrázek 64 - Detail smlouvy. Zdroj – vlastní zpracování. 81 Bakalářská práce Datové modelování Data modeling Obrázek 65 - Detail pobočky, auta, zaměstnance a záznamů. Zdroj – vlastní zpracování. Nyní si ukážeme, jak by vypadal zápis jedné z třídy pomocí jazyka OQL. Další dle mého názoru kvalitní přiklad, jak funguje objektová databáze můžeme naleznout zde31. Bohužel pouze v anglickém jazyce. class Automobil { attribute string vyrobce; attribute string znacka; attribute int najeteKm; … relationship (Pobocka) je_prirazen inverse Pobocka::vlastni; … kolikZbyvaCasu( ); }; Aby vazba automobilu a pobočky byla kompletní, je potřeba umístit do třídy Pobocka druhou stranu spojení tedy takto: relationship list (Automobil) vlastni inverse Automobil::je_prirazen; Znamená to, že objekt pobočky bude vlastnit list nebo-li „seznam“ objektů typu automobil. 31 Dokument vysvětlující principy objektové databáze a jazyka OQL http://wps.prenhall.com/wps/media/objects/3310/3390076/hoffer_ch15.pdf 82 Bakalářská práce Datové modelování Data modeling 24. Tvorba modelu hierarchické databáze Nyní přichází na řadu tvorba hierarchického modelu. Hned na začátku je potřeba vyřešit, pomocí kterého jazyka a nástroje ho budeme modelovat. Jelikož hierarchické databáze jsou téměř zapomenuty a jejich použití v IS zastíněno relačními, dnešní CASE nástroje nejsou na jejich tvorbu zaměřené a tudíž nám nezbývá nic jiného než tvorbu simulovat pomocí jiných nástrojů a modelovacích jazyků, které v době slávy hierarchických databází ani neexistovala. Abychom se vyhnuli dlouhé diskuzi o tom, který nastroj je lepší, použijeme rovnou stejný jako v předchozích modelech, tedy Enterprise Architect a jazyk UML. Hierarchicky model firmy Unifest by mohl vypadat následovně a v plné velikosti je možné ho vidět v příloze32. Obrázek 66 - Logický model hierarchické databáze. Zdroj – vlastní zpracování. Jako kořenový element byla zvolena samotná entita firmy. Do tohoto elementu se můžou uložit důležité informace o společnosti. Pokud se spustíme na druhou úroveň, nic extra divného nezaznamenáme. Jsou zde entity, které byly identifikovaný v rámci této společnosti, ale ve chvíli, kdy se podíváme na třetí úroveň, zjistíme, že entity se začínají opakovat. Důvody proč tomu tak je, jsou popsány v teoretické časti, ale přesto si zde vysvětlíme tuto problematiku ještě jednou na tomto konkrétním příkladu. 32 Model v plné velikosti se nalézá v příloze pod názvem „LOGICKY_MODEL_HIERARCHICKE_DATABAZE“. 83 Bakalářská práce Datové modelování Data modeling Pravidla hierarchické databáze říkají, že pokud bude odstraněn rodič, bude odstraněn i potomek. Pro lepší pochopení, proč tedy dochází ke zdvojení záznamů, se zaměříme na izolovanou část tohoto modelu. Firma vlastní pobočku, na které pracují zaměstnanci a jsou k ní přiřazeny automobily. Zde je vše v pořádku. Pokud se firma rozhodne zrušit pobočku, zaměstnanec a automobil bude jednoduše přeřazen na jinou a pobočka bude smazána z databáze. Nyní se pojďme podívat na záznam jízdy, ve kterém je nutno zachytit, kdo dopravní prostředek řídil a o jaký automobil se jednalo. Zde se znova opakují záznamy automobilů a zaměstnance, a tak nastává otázka, jestli bychom nemohli pozměnit strukturu a navázat záznam jízdy např. na automobil takto: Obrázek 67 - Další možné řešeni izolované části. Zdroj – vlastní zpracování. Odpověď na tuto otázku nemůže být jednoznačná, protože zaleží na požadavcích firmy. V případě, že automobil bude odstraněn z databáze, budou smazány i všechny jeho záznamy jízd. Pokud firma po prodání automobilu, nechce mít k dispozici informace o jízdách, je toto řešení v pořádku. Představme si však situaci, že firma během roku automobil prodá a tím ztratí i záznamy jízd a na konci téhož roku bude chtít vedení firmy zjistit, který zaměstnanec ujel nejvíce kilometrů. Samozřejmě, že to bude možné, ale některé záznamy budou chybět a tak výsledek reportu nebude přesný. 84 Bakalářská práce Datové modelování Data modeling V hlavním modelu je entita zákazníka, na kterou je navázaná entita smlouvy. V tomto případě takovou vazbu je možné provést bez větších diskuzí, protože osoba, která s firmou uzavře alespoň jednu smlouvu, je evidovaná jako zákazník a je nepravděpodobné, že bude smazána. Z těchto důvodu můžeme ponechat vazbu tak jak je, protože pokud bude vytvořen nový zákazník, musí byt vytvořena i smlouva. Dále je nutné, aby smlouva měla vazbu s firemním pracovníkem, který ji uzavřel a produktem nebo službou, které se smlouva týká , proto zde musíme znova vytvořit duplikované záznamy, které již existují v databázi na jiném místě. Stejným způsobem je řešen též dodavatel a smlouvy s ním. Na tomto praktickém přikladu můžeme pozorovat velkou nevýhodu hierarchické databáze v její neschopnosti udržovat entitní vazby N:M. Proto většina tvůrců informačních systémů se uchyluje k použití novějších typu databází, kde nemusejí tento problém řešit pomocí duplikace záznamů. Často fyzický model ani nebyl kreslen a rovnou se z tohoto logického zobrazení a doprovodného seznamu atributů přistupovalo k ruční tvorbě databáze např. pomocí seznamu. Proto se můžeme pouze domnívat, jak by následující fyzický model mohl vypadat. Pravděpodobně by se moc od logického nelišil. Na rozdíl od něj by obsahoval navíc jen atributy, které by byly umístěny v příslušných uzlech. Pokud databáze bude tvořena seznamem, mezi atributy by měly také patřit ID záznamů a ID nadřazeného záznamu. Jak by mohl takový fyzický model hierarchické databáze33 vypadat je možné vidět na následujícím obrázku. Obrázek 68 - Fyzický model hierarchické databáze. Zdroj – vlastní zpracování. 33 Model v plné velikosti se nalézá v příloze pod názvem „FYZICKY_MODEL_HIERARCHICKE_DATABAZE“. 85 Bakalářská práce Datové modelování Data modeling Data podle vytvořených modelu mohou být uložena následujícími způsoby: Tabulka 9 - Uloženi hierarchické databáze. id 1 2 3 4 5 6 7 idNad 0 0 1 1 1 2 2 nazevPobocky Edenská Skalská - mesto Praha Brno Praha Praha Praha Brno Brno ulice U Slavie Prosecká Bratislavská Veselská Beranových Dobratická Tupolevova jmeno Anatoliy Jan Božena Petr Rudolf prijmeni Kybkalo Novák Savková Krejcárek Dub … … … … … … … … Zdroj – vlastní zpracování. Jedná se o seznam, který obsahuje tolik sloupců kolik je atributů všech entit. U každého řádku jsou vyplněny jen ty, které se ho týkají a zbytek zůstává prázdný. První dva záznamy jsou pobočky a jejich atribut ID_nad je vyplněn hodnotou 0 což je identifikátor kořenového elementu. Dále následují zaměstnanci a jejich ID_nad obsahuje ID pobočky na které pracuji. Druhou variantou je uloženi v jazyce XML. … <Pobocka nazevPobocky=“ Edenská“ mesto=“Praha“ ulice=“ U Slavie“ …> <Zamestnanec jmeno=“ Anatoliy“ prijmeni=“Kybkalo“ …></Zamestnanec> <Zamestnanec jmeno=“ Jan“ prijmeni=“ Novák“ …></Zamestnanec> <Zamestnanec jmeno=“ Božena“ prijmeni=“ Savková“ …></Zamestnanec> </Pobocka> <Pobocka nazevPobocky=“ Skalská“ mesto=“ Brno“ ulice=“Prosecká“ …> <Zamestnanec jmeno=“ Petr“ prijmeni=“ Krejcárek“ …></Zamestnanec> <Zamestnanec jmeno=“ Rudolf“ prijmeni=“ Dub“ …></Zamestnanec> </Pobocka> … Jak bylo naznačeno pro firmu Unifest je použití této databáze možné, avšak naprosto nevhodné. Otázka tedy zní: Pro který případ, je hierarchická databáze vhodnější? Pojďme si uvést jiný příklad z reality, na který by se tato databáze dala uplatnit lépe. 86 Bakalářská práce Datové modelování Data modeling Obrázek 69 - Hierarchická databáze vysoké školy. Zdroj – vlastní zpracování. Vysoka škola je rozdělena na fakulty, které mají své katedry a děkany. Jednotlivé katedry mají své vedoucí a zaměstnance. Pokud bude zrušena jedna fakulta, nebude už existovat její děkan ani příslušné katedry se zaměstnanci. Zde nedochází k žádné duplicitě záznamu, proto dle mého názoru je to ideální příklad pro použití hierarchické databáze. 25. Tvorba modelu sítové databáze Pro grafické zobrazení prvku této databáze můžeme využít konceptuální model ale poněkud v jiné podobě než je E-R diagram. Tento postup zobrazení se používal převážné v dobách, kdy byl síťový model vymyšlen a E-R zobrazení jak ho známe nyní, neexistovalo. 87 Bakalářská práce Datové modelování Data modeling Obrázek 70 - Prvky v modelu síťové databáze. Zdroj – vlastní zpracování. 25.1. Pravidla pro definování setu Záznam může být členem jednoho setu a zároveň vlastníkem setu jiného. V následujícím obrázku se tedy jedná o Pobočku. Obrázek 71 - Záznam jako člen a vlastník. POBOCKA-ZAMESTNANEC FIRMA-POBOCKA Firma Pobočka Zdroj – vlastní zpracování. 88 Zaměstnanec Bakalářská práce Datové modelování Data modeling Jeden záznam může být členem libovolneho počtu setů. Obrázek 72 - Záznam jako členem vice setu. Zaměstnanec Automobil Záznam Jizdy AUTOMOBIL-ZÁZNAMJIZDY ZAMĚSTNANEC-ZÁZNAMJIZDY Zdroj – vlastní zpracování. Jeden záznam může být vlastníkem libovolného počtu setů. Obrázek 73 - Záznam jako vlastník vice setu. POBOČKA-AUTOMOBIL POBOČKA-ZAMĚSTNANEC Pobočka Zaměstnanec Automobil Zdroj – vlastní zpracování. Stejně jako v relačních databázích i zde nelze vytvořit vztah M:N napřímo. Pro tento účel slouží spojovací typ záznamu a dvě vazby typu 1:M. Obrázek 74 - Záznamy a vztah M:N. Produkt Smlouva Spojeni SMLOUVA-SPOJENI PRODUKT-SPOJENI Zdroj – vlastní zpracování. 89 Bakalářská práce Datové modelování Data modeling Pojďme se podívat, jak by síťový model mohl vypadat jako celek pro firmu Unifest. Obrázek 75 - Datová struktura síťové databáze. Zákazník Pobočka 1 1 0..* 0..* 0..* Zaměstnanec Automobil 1 ZAM-ZS Zákaznická smlouva 1 0..* ZAM-ZJ 0..* ZS-S1 DOD-DS Spojeni1 PRO-S3 SLU-S2 ZS-S2 ZAM-ZK ZAM-DS 0..* 0..* Záznam Jizdy 0..* 0..* 1 1 a_z 1 PRO-S1 1..* p_z p_a 1 1 ZAK-ZS Služba Produkt Dodavatel ZáznamKomunikace 1..* 1..* Dodavatelská smlouva 1 DOD-S3 1..* Spojovaci3 0..* Spojeni2 Zdroj – vlastní zpracování. Na tento obrázek můžeme nahlížet zároveň jako na logický model a je velice pravděpodobné, že z tohoto zobrazení a ze seznamu všech potřebných atributů, byla rovnou vytvářena databáze. Dle mého názoru nemá cenu se pokoušet vytvářet fyzický model pomocí jazyka UML, protože stejně nebudeme moci automaticky vygenerovat zakládací skript, jak tomu bylo v relační databázi. Navíc nejedná se o nezbytnost, bez které bychom nedokázali pochopit datovou strukturu tohoto příkladu. Hlavním rozdílem oproti relačnímu datovému modelu je v realizaci vztahů. Stejně jako u RDM, jsou i zde vztahy realizovány vazbou s kardinalitou 1:M, ale vztah je zaznamenán pomocí ukazatele na vazební entitu. K datovým tabulkám je připojena systémová část, kde se nachází tolik odkazů, ke kolika jiným záznamům je záznam v tabulce vázán. Na následujícím příkladu, se pokusím názorně vysvětlit podstatu ukládání dat v síťové databázi. Obrázek 76 - Obecné propojení záznamů v síťové databázi. Zdroj – vlastní zpracování. 90 Bakalářská práce Datové modelování Data modeling Tedy pokud stejný princip aplikujeme na náš příklad, bude to vypadat takto: Obrázek 77 - Konkrétní propojení záznamů v síťové databázi. Zdroj – vlastní zpracování. Pokud bychom potřebovali přiřadit další automobil první pobočce, postačí ho umístit do tabulky automobilů. Tento záznam bude mít DBK 345 a číslo 26, tudíž je nutné automobilu s číslem 25 změnit p_a na 345 a novému automobilu pod číslem 26 stanovit p_a na 102. Stejným způsobem bude zajištěno propojení pobočky a zaměstnanců setem p_z. Pokud srovnávám síťovou databázi s relační, docházím k závěru, že principy novější relační databáze jsou pro mě jednodušší na pochopení, proto i složitější propojení záznamů mi připadají méně „zamotané“ jako v síťové databázi. 91 Bakalářská práce Datové modelování Data modeling 26. Závěr Tato bakalářská práce měla několik základních cílů. Jedním z nich bylo představit problematiku datového modelování a základní postupy pro tvorbu databáze. Modelování databáze může být mnohdy náročný proces, proto jsem v teoretické části popsal postup návrhu, modely, které je možno využít a jazyk UML, pomocí kterého lze tyto modely vytvořit. Dále jsou popsány čtyři databáze, jejichž principy je nezbytné znát v případě jejich výběru pro aplikování na určitý případ. Na konci této časti, jsou též popsány design patterny, které řeší několik z nejčastěji vyskytovaných problémů, co se struktury dat týče a best practices, které dopomáhají stanovit určitou konvenci v modelování. Člověk může přečíst nespočet teorie a přesto danou problematiku nepochopit do hloubky, proto jsem v praktické části této bakalářské práce předvedl postup návrhu databáze od samotného business zadání, kde jsou identifikovány základní databázové entity, pomocí konceptuálních modelů na různé úrovni abstrakce a následně vytvořil logické a fyzické modely pro různé typy databáze. Jelikož ve světě dnešních informačních systémů je relační databáze nejpopulárnější, uznal jsem za vhodné pro ní předvést více než jednu ukázku datové struktury. Pokud chcete začít modelovat databázi, zaměřte se hlavně na: Co nejvčasnější odhalení veškerých entit, protože čím později se na ně přijde, tím bude více práce s předěláváním nebo s případným začleněním do datového modelu. Vhodnou volbu typu databáze ještě před zahájením tvorby logického modelu. Jak jsme si ukázali, ne vždy může být zvolena databáze ideální pro danou datovou strukturu. Zjištění, zda-li neexistuje pattern, který popisuje řešení vašeho problému, protože s největší pravděpodobností, už se s tímto problémem někdo setkal a vy, byste objevovali již objevené. Dodržování alespoň těch základních best practices. Není to sice povinností, ale zlepšíme tím orientaci lidem, kteří mají též co dočinění s tvorbou vaší databáze a jsou s patterny obeznámeny. Během psaní této práce jsem si potvrdil, že neexistuje pouze jedno správné zobrazení jakéhokoli modelu. Vždy je hned několik možností jak „obrázek“ může vypadat a pomocí požadavků na databázi můžeme zhodnotit, jestli je vyhovující. Dále mi tato práce pomohla „udělat si pořádek“ v názvosloví, které se v databázích využívá. Domnívám se, že informace zpracované v této práci, mohou být přínosem pro širší veřejnost zabývající se databázovou problematikou, protože podle mého názoru je nedostatek publikací, ve kterých je zpracován průběh návrhu od začátku do konce pro více typu databází na jednom místě a zejména v českém jazyce. 92 Bakalářská práce Datové modelování Data modeling 27. Conclusion This bachelor work had several primary objectives. One of them was to present the issue of data modelling and basic procedures for database creation. Database modelling can often be a difficult process, that is why I have described the procedure of designing models that can be used and language UML, that can be used to create these models, in the theoretical part. I also described four database whose principles are necessary to know if they are selected for application for given case. At the end of this section there are also described design patterns, that solve some of the most frequent problems that occur in data structure and some best ways to establish a convention in modelling. One can read countless publications and still misunderstand the whole issue. Having this in mind I showed the design process from business assignments itself, where we identify basic database entities by using conceptual models at different levels of abstraction and then we create logical and physical models, to different types of databases. Because in today's world of information systems the relational database is the most popular one, I found it appropriate to show more than one example of data structure for it. If you want to start database modelling, you need to focus mainly on: To find all entities as soon as possible, because the later they come the harder it will be to add them or to remake the data model. To choose the appropriate type of database before starting working on logic model. As we have seen, the selected database may not always be ideal for a particular data structure. To determine whether there already is a pattern that describes the solution to your problem, because most likely, you are not the first to encounter this problem and you would try to solve already solved issues. To respect at least the most basic best practices. It is not the rule, but it will improve orientation of people who also have something to do with the creation of your database and are familiar with patterns. During the writing of this work I have confirmed for myself, that there is not only one correct view of any model. There are always several ways that "picture" may look and we can evaluate whether the one we chose is adequate for the requirements. This work also helped me "to sort out" the terminology that is used in databases. I believe that the information processed in this study may be of benefit to the general public dealing with database problems. Because in my opinion there is a lack of publications that process the design from beginning to the end for multiple database types in one place and especially in the Czech language. 93 Bakalářská práce Datové modelování Data modeling 28. Seznam použitých knižních zdrojů MERUNKA, Vojtěch. CARDA, Antonín. POLÁK, Jiří. Datové modelování. 1. vyd. Praha: Alfa Publishing, 2006, 177 s. Informatika studium. ISBN 80-868-5154-0. HERNANDEZ, Michael J. Návrh databází. 1. vyd. Praha: Grada, 2006, 408 s. Informatika studium. ISBN 80-247-0900-7. SCHNEIDER, Robert D. MySQL: oficiální průvodce tvorbou, správou a laděním databází. 1. vyd. Praha: Grada Publishing, 2006, 372 s. Informatika studium. ISBN 80-247-1516-3. CONOLLY, Thomas, Carolyn E BEGG a Richard HOLOWCZAK. Mistrovství - databáze: profesionální průvodce tvorbou efektivních databází. 1. vyd. Brno: Computer Press, 2009, 584 s. Informatika studium. ISBN 978-80-251-2328-7. BRYLA, Bob, Kevin LONEY a Richard HOLOWCZAK. Mistrovství v Oracle Database 11g: profesionální průvodce tvorbou efektivních databází. 1. vyd. Brno: Computer Press, 2009, 700 s. Informatika studium. ISBN 978-80-251-2189-4. KOFLER, Michael, Kevin LONEY a Richard HOLOWCZAK. Mistrovství v MySQL 5: profesionální průvodce tvorbou efektivních databází. 1. vyd. Překlad Jan Svoboda, Ondřej Baše, Jaroslav Černý. Brno: Computer Press, 2007, 805 s. Informatika studium. ISBN 97880-251-1502-2. LACKO, Ľuboslav, Kevin LONEY a Richard HOLOWCZAK. 1001 tipů a triků pro SQL: profesionální průvodce tvorbou efektivních databází. 1. vyd. Překlad Jan Svoboda, Ondřej Baše, Jaroslav Černý. Brno: Computer Press, 2011, 416 s. Informatika studium. ISBN 97880-251-3010-0. STANEK, William R, Kevin LONEY a Richard HOLOWCZAK. Microsoft SQL Server 2005: kapesní rádce administrátora. 1. vyd. Překlad Luděk Horčička. Brno: Computer Press, 2006, 542 s. Informatika studium. ISBN 80-251-1211-X. SOLAŘ, Tomáš, Kevin LONEY a Richard HOLOWCZAK. Oracle Database 11g: hotová řešení. 1. vyd. Překlad Luděk Horčička. Brno: Computer Press, 2010, 288 s. K okamžitému použití. ISBN 978-80-251-2886-2. PROCHÁZKA, David, Steven MORRIS a Peter ROB. Oracle: průvodce správou, využitím a programováním nad databázovým systémem. 1. vyd. Praha: Grada Publishing, 2009, 168 s. K okamžitému použití. ISBN 978-80-247-2762-2. SIMSION, Graeme C, Steven MORRIS a Peter ROB. Data Modeling: theory and Practice. 1. vyd. Bradley Beach, NJ: Technics Publications, c2007, xiv, 400 p. K okamžitému použití. ISBN 09-771-4001-6. 94 Bakalářská práce Datové modelování Data modeling 29. Seznam použitých internetových zdrojů Basaraner, C. (11. 4 2012). 20 Database Design Best Practices. Získáno 10. 3 2013, z architects.dzone: http://architects.dzone.com/articles/20-database-design-best Buchlák, P. (11. 2 2010). CIT Konceptuální modelování. Získáno 3. 4 2013, z unicornuniverse: https://uu.unicornuniverse.eu/ues/sesm?SessFree=ues:UCLBT:CIT.CZ/LEC09/GL Čapka, D. (14. 6 2012). 1. díl - Úvod do UML. Získáno 27. 2 2013, z devbook: http://www.devbook.cz/uml-uvod-historie-vyznam-a-diagramy Klechrel, J. (2001). audis.ic.cz/Access.pdf. Získáno 18. 3 2013, z Audis: http://audis.ic.cz/Access.pdf Melichar, J. (5. 4 2002). Datové modelování poprvé. Získáno 16. 3 2013, z dbsvet: http://www.dbsvet.cz/view.php?cisloclanku=2002040501 Varga, M. (2009). OAD Class diagram. Získáno 24. 3 2013, z unicornuniverse: https://uu.unicornuniverse.eu/ues/sesm?SessFree=ues:UCLBT:OAD.CZ/LEC05/GL Žďárský, M. (16. 2 2009). RDB Relační model. Získáno 26. 2 2013, z unicornuniverse: https://uu.unicornuniverse.eu/ues/sesm?SessFree=ues:UCLBT:RDB.CZ/LEC02/GL Žďárský, M. (2. 3 2009). RDB Tvorba modelů. Získáno 2. 4 2013, z unicornuniverse: https://uu.unicornuniverse.eu/ues/sesm?SessFree=ues:UCLBT:RDB.CZ/LEC03/GL 95 Bakalářská práce Datové modelování Data modeling 30. Seznam obrázků Obrázek 1 - Oddělení datové struktury od programu...................................................................... 14 Obrázek 2 - Sled úrovní P3A. ............................................................................................................ 15 Obrázek 3 - Ukázka E-R diagramu. ................................................................................................... 17 Obrázek 4 - Příklad logického modelu. ............................................................................................ 18 Obrázek 5 - Příklad fyzického modelu. ............................................................................................. 18 Obrázek 6 - Rozdělení UML diagramů.............................................................................................. 21 Obrázek 7 - Třída. ............................................................................................................................. 22 Obrázek 8 - Příklad třídy se stereotypem tabulky. ........................................................................... 22 Obrázek 9 - Základní asociační vazba. .............................................................................................. 23 Obrázek 10 - Usměrněná asociační vazba........................................................................................ 23 Obrázek 11 - Multiplicita. ................................................................................................................. 23 Obrázek 12 - Příklady multiplicity. ................................................................................................... 24 Obrázek 13 - Seznam databázových modelů. .................................................................................. 25 Obrázek 14 - Obecné uspořádání uzlů v hierarchickém modelu. .................................................... 26 Obrázek 15 - Obecné uspořádání uzlů v síťovém modelu. .............................................................. 28 Obrázek 16 - Obecný příklad relace. ................................................................................................ 29 Obrázek 17 - Propojení tabulek cizím klíčem. .................................................................................. 31 Obrázek 18 - Vazební tabulka. ......................................................................................................... 32 Obrázek 19 - Normální formy........................................................................................................... 33 Obrázek 20- Porovnání RDM a ODM................................................................................................ 37 Obrázek 21 - Nenormalizované třídy. .............................................................................................. 39 Obrázek 22 - Třídy v 1ONF. .............................................................................................................. 39 Obrázek 23 - Třídy v 2ONF ............................................................................................................... 40 Obrázek 24 - Třídy v 3ONF. .............................................................................................................. 40 Obrázek 25 - Struktura zaměstnanců v podniku. ............................................................................. 44 Obrázek 26 - Dědičnost v OOP. ........................................................................................................ 45 Obrázek 27 - Přístup Table per class. ............................................................................................... 45 Obrázek 28 - Přístup Table per subclass. ......................................................................................... 46 Obrázek 29 - Přístup Table per Class................................................................................................ 47 Obrázek 30 - Rozdělení metamodelu. .............................................................................................. 48 Obrázek 31 - Tabulky zákazníka a jeho bydliště ............................................................................... 49 Obrázek 32 - Tabulky metamodelu .................................................................................................. 49 Obrázek 33 - Microsoft Visio. ........................................................................................................... 53 Obrázek 34 - SmartDraw. ................................................................................................................. 53 Obrázek 35 - Enerprice Architect. .................................................................................................... 54 Obrázek 36 - Konceptuální model na vysoké úrovní abstrakce. ...................................................... 56 Obrázek 37 - Firemní hierarchie....................................................................................................... 57 Obrázek 38 - Záznam jízdy. .............................................................................................................. 57 Obrázek 39 - Příklad E-R diagramu se všemi atributy. ..................................................................... 59 Obrázek 40 - E-R diagram firmy Unifest. .......................................................................................... 60 Obrázek 41 - E-R detail pobočky, zaměstnance, automobilu a záznamů. ....................................... 61 96 Bakalářská práce Datové modelování Data modeling Obrázek 42 - E-R detail dodavatelské smlouvy. ............................................................................... 61 Obrázek 43 - E-R detail zákaznické smlouvy. ................................................................................... 62 Obrázek 44 - Logicky model. ............................................................................................................ 63 Obrázek 45 - Detail zákazníka. ......................................................................................................... 64 Obrázek 46 - Detail dodavatele........................................................................................................ 64 Obrázek 47 - Detail smluv, produktu a služeb. ................................................................................ 65 Obrázek 48 - Detail zaměstnance. ................................................................................................... 66 Obrázek 49 - Detail pobočky, automobilu a záznamů. .................................................................... 66 Obrázek 50 - Fyzický model relační databáze. ................................................................................. 67 Obrázek 51 - Detail zákazníka. ......................................................................................................... 68 Obrázek 52 - Detail dodavatele........................................................................................................ 69 Obrázek 53 - Detail smluv, produktu a služeb. ................................................................................ 70 Obrázek 54 - Detail zaměstnance. ................................................................................................... 71 Obrázek 55 - Detail pobočky, automobilu a záznamů. .................................................................... 72 Obrázek 56 - Druhý logicky model relační databáze........................................................................ 74 Obrázek 57 - Dodavatelská smlouva. ............................................................................................... 75 Obrázek 58 - Zákaznická smlouva. ................................................................................................... 76 Obrázek 59 - Pobočka, automobil, záznamy. ................................................................................... 77 Obrázek 60 - Logický model objektové databáze. ........................................................................... 78 Obrázek 61 - Přiklad metod v objektové databázi. .......................................................................... 79 Obrázek 62 - Fyzický model objektové databáze. ............................................................................ 80 Obrázek 63 - Detail osoby. ............................................................................................................... 81 Obrázek 64 - Detail smlouvy. ........................................................................................................... 81 Obrázek 65 - Detail pobočky, auta, zaměstnance a záznamů. ......................................................... 82 Obrázek 66 - Logický model hierarchické databáze......................................................................... 83 Obrázek 67 - Další možné řešeni izolované části. ............................................................................ 84 Obrázek 68 - Fyzický model hierarchické databáze. ........................................................................ 85 Obrázek 69 - Hierarchická databáze vysoké školy. .......................................................................... 87 Obrázek 70 - Prvky v modelu síťové databáze. ................................................................................ 88 Obrázek 71 - Záznam jako člen a vlastník. ....................................................................................... 88 Obrázek 72 - Záznam jako členem vice setu. ................................................................................... 89 Obrázek 73 - Záznam jako vlastník vice setu.................................................................................... 89 Obrázek 74 - Záznamy a vztah M:N. ................................................................................................ 89 Obrázek 75 - Datová struktura síťové databáze............................................................................... 90 Obrázek 76 - Obecné propojení záznamů v síťové databázi. ........................................................... 90 Obrázek 77 - Konkrétní propojení záznamů v síťové databázi......................................................... 91 97 Bakalářská práce Datové modelování Data modeling 31. Seznam tabulek Tabulka 1 - PK v relaci. ..................................................................................................................... 30 Tabulka 2 - Rozvrh v NF3. ................................................................................................................. 34 Tabulka 3 - První tabulka v BCNF. .................................................................................................... 34 Tabulka 4 - Druha tabulka v BCNF. ................................................................................................... 34 Tabulka 5 - Databázová tabulka zaměstnanců v podniku. ............................................................... 44 Tabulka 6- Relace osob. ................................................................................................................... 51 Tabulka 7 - Relace osob s použitím číselníku. .................................................................................. 51 Tabulka 8 - Číselník........................................................................................................................... 51 Tabulka 9 - Uloženi hierarchické databáze. ..................................................................................... 86 98 Bakalářská práce Datové modelování Data modeling 32. Seznam příloh Přílohy se nalézají na přiloženém CD. Toto medium obsahuje modely v plné velikosti, které jsme mohli vidět v praktické části. Modely jsou uložené ve formátu PNG. Číslo přílohy 1 2 3 4 5 6 7 8 9 10 Název souboru E-R_DIAGRAM FYZICKY_MODEL_HIERARCHICKE_DATABAZE FYZICKY_MODEL_OBJEKTOVE_DATABAZE FYZICKY_MODEL_RELACNI_DATABAZE FYZICKY_MODEL_RELACNI_DATABAZE_DENORMALIZOVANY LOGICKY MODEL_HIERARCHICKE_DATABAZE LOGICKY_MODEL_OBJEKTOVE_DATABAZE LOGICKY_MODEL_RELACNI_DATABAZE LOGICKY_MODEL_RELACNI_DATABAZE_DENORMALIZOVANY ZAKLADACI_SKRIPT_SQL 99
Podobné dokumenty
zpravodaj prosinec 2011
taktovkou Magdy Mlejnkové. Vánoční strom byl v letošním roce
obohacen o další nové svítící ozdoby a dekory (stroboskopické
žárovky a velkou svítící vločku). Při rozsvícení stromu bylo vidět,
jak se...
UNICORN COLLEGE BAKALÁŘSKÁ PRÁCE
umožňujícího kontrolu pravopisu pro data uložená v Unicorn Universe
vypracoval samostatně pod vedením vedoucího bakalářské práce a s použitím výhradně odborné literatury a dalších informačních zdro...
Energetické využití odpadů
dojde pravděpodobně až při přípravě nového zákona o odpadech,
průběhu následujících dvou let.
Sborník anotací 2015
nabídek a poptávek na realitním trhu v čtvrtletním horizontu – kvůli co nejvyšší míře aktuálnosti příspěvku bylo zvoleno
následující srovnávací období: 1. 12. 2014 - 28. 2. 2015. Věci nemovité jsou...
Uèební text - střední škola elektrotechnická, ostrava, na jízdárně 30, po
orientaci na konkrétní programovací jazyk. Na konkrétní programovací jazyk je již napsáno
množství kvalitních výukových skript a na internetu lze nalézt dostatek návodů a diskuzních
fór. Tento text...
Dynamips, Dynagen, GNS3
true | false
Redukuje vytížení fyzické paměti způsobem, že
tentýž IOS je mezi více routery v paměti nahrán a
sdílen pomocí paměťových map
true | false
Redukuje vytížení virtuální paměti jednotlivýc...
DATOVÉ MODELOVÁNÍ
vyrobit na míru. To je především vlastnost podnikových informačních systémů
a vůbec všech programů na zpracování dat.
Proto by měl kvalifikovaný uživatel vědět, jak svůj hotový program přizpůsobit
...
UNICORN COLLEGE BAKALÁŘSKÁ PRÁCE
Prohlašuji, že jsem svou bakalářskou práci na téma Google - střet teorie a praxe v řízení a
motivaci pracovníků vypracoval samostatně pod vedením vedoucí bakalářské práce a s
použitím výhradně odbo...