UNICORN COLLEGE BAKALÁŘSKÁ PRÁCE

Rozměr: px
Začít zobrazení ze stránky:

Download "UNICORN COLLEGE BAKALÁŘSKÁ PRÁCE"

Transkript

1 UNICORN COLLEGE Katedra informačních technologií BAKALÁŘSKÁ PRÁCE Srovnání moţností relačních a objektových databází Autor BP: Hana Vaňásková Vedoucí BP: Ing. Miroslav Žďárský 2012 Praha

2

3

4 - 4 - ČESTNÉ PROHLÁŠENÍ Prohlašuji, ţe svou bakalářskou práci na téma Srovnání moţností relačních a objektových databází jsem vypracovala samostatně pod vedením vedoucího bakalářské práce a s pouţitím odborné literatury a dalších informačních zdrojů, které jsou v práci citovány a jsou téţ uvedeny v seznamu literatury a pouţitých zdrojů. Jako autor uvedené bakalářské práce dále prohlašuji, ţe v souvislosti s vytvořením této bakalářské práce jsem neporušila autorská práva třetích osob, zejména jsem nezasáhla nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědoma následků porušení ustanovení 11 a následujících autorského zákona č. 121/2000 Sb. V... dne Hana Vaňásková

5 - 5 - PODĚKOVÁNÍ Děkuji vedoucímu bakalářské práce Ing. Miroslavu Ţďárskému za podporu, účinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mé bakalářské práce.

6 SROVNÁNÍ MOŢNOSTÍ RELAČNÍCH A OBJEKTOVÝCH DATABÁZÍ COMPARISON OF RELATIONAL AND OBJECT ORIENTED DATABASES - 6 -

7 - 7 - ABSTRAKT Tato bakalářská práce si klade za cíl porovnat moţnosti, které nabízejí v dnešní době nejrozšířenější relační databáze s moţnostmi nabízenými nepříliš prosazenými objektovými databázemi. Za tímto účelem je v první části práce provedena rešerše těchto dvou datových modelů, včetně jejich standardů (SQL, OQL, ODL,...), hlavních rozdílů, výhod a nevýhod. Tato část zahrnuje ukázky kódu a příkazů tak, jak jsou teoreticky definovány samotnými standardy. Představeny jsou také vybrané RDBMS a ODBMS nabízené na trhu. Ve druhé části práce je pak na příkladu fiktivní společnosti Bluedy+ Holding, a. s. navrţena a implementována datová vrstva pro evidenci zaměstnanců, zaměstnaneckých benefitů, klientů a projektů v relační databázi PostgreSQL a objektové databázi db4o. Klíčová slova: relační databáze, objektové databáze, SQL, OQL, ODL, db4o, PostgreSQL

8 - 8 - ABSTRACT This bachelor thesis aims to compare the possibilities offered by nowadays most widespread relational database with the possibilities offered by not too used object-databases. For this purpose in the first part of the work there is carried out searches of these two data models including their standards (SQL, OQL, ODL,...), the main differences, advantages and disadvantages. This part includes sample of source code and commands as they are theoretically defined by standards themselves. Selected RDBMS and ODBMS offered on the market are presented. In the second part there is on the example of a fictitious company Bluedy + Holding, a. s. designed and implemented a data layer for records of employees, employee benefits, clients and projects in the PostgreSQL relational database and object database db4o. Keywords: relational databases, object databases, SQL, OQL, ODL, db4o, PostgreSQL

9 - 9 - OBSAH 1. Úvod Databáze Databáze a databázové systémy Datový model Databázové modely Relační databáze SQL Produkty na trhu Objektové databáze Objektový datový model Objektový model podle ODMG Object Definition Language (ODL) Objektový dotazovací jazyk (OQL) Produkty na trhu Praktická ukázka RDBMS a ODBMS Řešený problém Výběr databází Návrh datové vrstvy Implementace Závěr Conclusion Zdroje Seznam pouţitých pojmů a zkratek Seznam obrázků Seznam tabulek Příloha 1 Datové typy v PostgreSQL... 68

10 ÚVOD V dnešní době při návrhu informačního systému převládá paradigma objektově orientovaného programování. Objektově orientované programovací jazyky umoţňují prezentovat ve zdrojovém kódu objekty jako odraz skutečných věcí a tvorů v reálném ţivotě, umoţňují dědičnost objektů, vytváření atributů a metod jako odraz vlastností a schopností, zapouzdření, polymorfismus. Přesto, kdyţ chceme do databáze uloţit takový objekt, v naprosté většině případů ho mapujeme (měníme) na řádek v tabulce relační databáze, kde se atributy stanou sloupci tabulky. Jen velmi málo aplikací v dnešní době objekty uchovává v databázi v původním formátu, ačkoliv by to v určitých situacích znamenalo jednodušší práci s uloţenými daty. V následujících kapitolách se proto pokusím přiblíţit relační i objektově orientované databáze a srovnat oba přístupy z více pohledů. Nejprve vymezím důleţité pojmy týkající se problematiky databází a krátce představím historický vývoj databázových modelů. Následně detailněji rozeberu teorii nejznámějšího databázového modelu relačního modelu a teorii často opomíjeného objektového modelu. Teorie se však od praxe často liší, a právě objektově orientované databáze jsou toho důkazem, a proto bude část práce věnována implementaci totoţného příkladu v relační databázi PostgreSQL a v objektově orientované databázi db4o. Na závěr doplním vlastní subjektivní srovnání práce s relační a objektovou databází na základě provedené rešerše a implementace. Cílem však není porovnat databáze výkonnostně, to by vyţadovala mnohem rozsáhlejší studii, optimalizace a především několik odlišných problémů k implementaci, které by ukázaly, kde je daný databázový model výhodnější. Mým cílem je porovnat tyto na první pohled protichůdné modely z hlediska moţností vyuţití, rozdílů při návrhu, intuitivní práce s daty a podobně.

11 DATABÁZE Neţ se pustíme do výkladu relačních a objektových databází, podívejme se na několik pojmů, které se v následujícím textu budou často objevovat a pro pochopení celého kontextu je jejich znalost nezbytná. 2.1 Databáze a databázové systémy Pojem databáze by se dal definovat jako prostor paměťového média, ve kterém jsou uloţena data (Procházka, Oracle. Průvodce správou, využitím a programováním mad databázovým systémem. 2009). Součástí databází jsou také softwarové prostředky, které umoţňují v tomto prostoru data vyhledávat podle nejrůznějších parametrů, číst je, mazat, přidávat či upravovat. Tyto softwarové prostředky jsou nazývány database management system (DBMS), v české literatuře se můţete setkat také s označením systém řízení báze dat (SŘBD). Kromě vlastních dat jsou v databázi uloţeny také metadata. Metadata si lze představit jako popisky vlastních dat a databáze. Jsou někdy označovány také jako data o datech, právě kvůli jejich popisnému charakteru. Spojením databáze (DB) a database management system (DBMS) vzniká databázový systém (DBS), který zajišťuje komplexní správu velkého mnoţství dat. Současné databázové systémy kromě jiţ zmiňovaných funkcí obvykle zajišťují také podporu pro datové modely, práci s transakcemi, moţnost manipulace s daty pomocí vyšších programovacích jazyků (SQL, OQL,...), bezpečnost (autentifikace, autorizace) a zotavení z chyb bez ztráty dat. Mezi v současnosti nejpouţívanější databázové systémy patří například Oracle Database, Microsoft SQL Server nebo IBM DB2. Své příznivce však získávají také méně rozšířené DBS jako Gemstone, db4o, Jasmine, OpenIngres, Caché a další. 2.2 Datový model Pro návrh databázových systémů se obvykle pouţívá datový model, coţ je v podstatě abstraktní koncept databázového systému. Jednotlivé typy datových modelů zachycují v různých úrovních abstrakce řešení datové vrstvy konkrétního informačního systému a jsou prostředkem pro komunikaci mezi členy vývojového týmu, popřípadě dalšími zainteresovanými osobami.

12 Zjednodušeně lze říci, ţe datový model je mapa databáze, která zobrazuje pouţité datové struktury (atributy, pohledy apod.) a jejich vzájemné vazby. (Procházka 2009) Typicky při návrhu databáze vzniká více modelů a to postupně od nejvyšší úrovně abstrakce po nejniţší. Typy pouţitých modelů jsou závislé na zvoleném databázovém modelu (hierarchický, síťový, relační, objektově relační, objektově orientovaný). Například při návrhu relační databáze se pouţívají tzv. tři kroky modelování databáze. Jedná se o konceptuální datový model, logický datový model a fyzický datový model. (Oracle Corporation nedatováno) 2.3 Databázové modely Databázový model definuje především používanou abstrakci pro přístup k datům, z té ale často již přímo vyplývají požadavky na způsob uložení dat a jejich vzájemného provázání. (Oracle Corporation nedatováno) Určuje tak architekturu samotné databáze. Jak je jiţ zmíněno v kapitole 2.2 Datový model, rozlišujeme několik databázových modelů, neboli několik typů databází. Většina odborných publikací se shoduje na rozlišení pěti základních typů: hierarchický model, síťový model, relační model, objektově relační model a objektový model. Někteří autoři povaţují za databázové modely také modely fulltextové, hypertextové a modely zaloţené na sémantických sítích. (Merunka 2008) Následují krátké popisy hierarchického a síťového modelu. Ostatní modely budou podrobně popsány v samostatných kapitolách Hierarchický model Data v tomto modelu jsou organizována do stromové struktury s jedním kořenovým záznamem. Vztah mezi záznamy je typu rodič/potomek a platí, ţe kaţdý záznam má libovolné mnoţství potomků, ale pouze jednoho rodiče (aţ na kořenový záznam, který rodiče nemá). Záznam, který nemá potomka, se nazývá list. (Hronek 2007) Kaţdý záznam je v databázi implementován jako kolekce určitého typu datové struktury, často se pouţívají zřetězené seznamy. Navigace mezi kolekcemi probíhá pomocí vzájemných odkazů. (Kocan 2008)

13 Obrázek 1: Schéma hierarchické databáze Kořen A B C D List A.B A.C A.D E F G Navigační odkaz A.B.E A.B.F A.C.G Zdroj: Autorem vytvořeno v aplikaci MS Visio 2010 Použití hierarchického modelu je vhodné tam, kde i zájmová realita má hierarchickou strukturu. (Farana 1995) Tím se myslí data, která mají jednoduché vazby typu rodič/potomek jako například přehled zaměstnanců společnosti nebo seznam jejích poboček a oddělení. Nalezení dat v hierarchické databázi vyţaduje navigaci přes záznamy směrem dolů (potomek), nahoru (rodič) a do strany (další potomek), začíná se však vţdy u kořene. Mezi nevýhody hierarchického modelu patří: absence standardů, v některých případech nepřirozená organizace dat (zejména obtíţné znázornění vztahu M:N, který se řeší např. pomocí virtuálních záznamů), sloţité operace vkládání a rušení záznamů. (Farana 1995) Pravděpodobně nejznámější implementací tohoto modelu byl systém IMS vyvinutý v šedesátých letech společnostmi IBM a NAA, a to pro realizaci skladového hospodářství v rámci projektu Apollo. (Kocan 2008) Síťový model Síťový model je často označován za rozšíření hierarchického modelu. Stejně jako hierarchický model je zaloţen na stromové struktuře typů záznamů, pouze mění terminologii pro popis vztahů mezi záznamy, které označuje vlastník (neboli rodič v hierarchickém modelu) a člen (neboli poto-

14 mek v hierarchickém modelu) a samotný vztah 1:N označuje jako set. V síťovém modelu neplatí omezení na jednoho vlastníka a je tak moţné modelovat i vazby typu M:N. (Hronek 2007) Schéma konkrétní situace můţe vypadat například takto: Obrázek 2: Schéma síťové databáze Manaţer A zaměstnává zaměstnává zaměstnává Set Konkrétní výskyt záznamu Pracovník 1 Pracovník 2 Pracovník 3 pracuje na pracuje na pracuje na Projekt 1 Projekt 2 Projekt 3 Zdroj: Autorem vytvořeno v aplikaci MS Visio 2010 Mezi další výhody síťového modelu patří moţnost přistupovat k datům odkudkoliv. Pokud se například v ukázce na obrázku 2: Schéma síťové databáze snaţíme zjistit, kdo je manaţerem projektu Projekt 3, jednoduše začneme databázi procházet od projektu aţ k manaţerovi. Síťový model byl roku 1972 standardizován výborem Database Task Group (DBTG) a svého, ač krátkého, času byl hojně vyuţívaný, v polovině 80. let ho však rychle nahradily velmi úspěšné a do dnes převládající relační databáze. Mezi známé implementace síťového modelu se zařadili například IDMS, ADABAS nebo DMS (Hronek 2007) Nevýhodou síťového modelu je stejně jako u hierarchického modelu obtíţná změna struktury databáze, kdy je většinou potřeba měnit celou aplikaci. (Farana 1995)

15 RELAČNÍ DATABÁZE Relační model je v současnosti nejpouţívanějším databázovým modelem. Roku 1970 byl navrţen britským vědcem Edgarem Frankem Coddem v práci A relational model of data for large shared data banks a během několika málo let nahradil v té době pouţívaný síťový model. Relační model je zaloţen na matematickém konceptu relace, která je fyzicky reprezentována dvourozměrnou tabulkou. Řádky tabulky odpovídají jednotlivým datovým n-ticím a sloupce tabulky odpovídají atributům. Na rozdíl od hierarchického modelu nedefinuje relační model vztahy mezi záznamy ani způsob přechodu mezi nimi. Vztahy mezi záznamy vznikají aţ při vyhodnocování operací. Následuje výčet nejdůleţitějších vlastností relačních tabulek. Tabulky jsou odlišené jedinečným názvem. Kaţdá buňka tabulky obsahuje právě jednu hodnotu. Nedefinujeme-li hodnotu buňky, její hodnota je automaticky nastavena na null. Kaţdý sloupec tabulky má jedinečný název a pořadí sloupců lze měnit. Všechny hodnoty v jednom sloupci jsou ze stejné domény (mnoţiny přípustných hodnot). Kaţdý řádek tabulky, záznam, je jedinečný a pořadí záznamů lze měnit. (Conolly, Begg a Holowczak 2009) V tabulkách musí vţdy existovat sloupce nebo kombinace sloupců, které zajišťují jedinečnost záznamů. Takové sloupce nebo kombinace označujeme jako klíče relace, těch v jedné tabulce můţe být i více. Ten klíč, který vybereme, aby jedinečně určoval záznamy v tabulce, nazýváme primární klíč takový atribut nesmí nabývat hodnoty null, protoţe kaţdý záznam musí být jednoznačně určený primárním klíčem. Pokud přesto při vytváření tabulky nemáme sloupce vhodné pro primární klíč, vytváří se uměle sloupcem ID, kde obvykle sám systém přiřazuje inkrementálně hodnoty (Conolly, Begg a Holowczak 2009). Kromě primárního klíče můţeme označit v tabulkách cizí klíče, coţ jsou sloupce tabulky odpovídající primárnímu klíči jiné nebo téţe tabulky. Rovnost cizího a primárního klíče slouţí k propojení tabulek a tvoření vztahů typů 1:1, 1:N a M:N, viz obrázek 3: Ukázka relační databáze. (Conolly, Begg a Holowczak 2009) Kromě klíčů relace můţeme u jednotlivých sloupců definovat také integritní omezení, coţ, jak název napovídá, jsou nějaká omezení a pravidla, která definují některé vlastnosti dat. Jsou značnou přidanou hodnotou databází, kontrolují (validací na datové vrstvě), zda uţivatel zadává do databáze smysluplná data. Například atribut primární klíč musí splňovat integritní omezení na jedinečnost a nenullovou hodnotu. Obě omezení jsou vysvětlena výše. Podívejme se na ukázku dvou relací z korporátního prostředí na obrázku 3: Ukázka relační databáze. Relace na obrázku jsou pro ukázku značně zjednodušené, v praxi obsahují relace typicky mnohonásobně více záznamů.

16 Obrázek 3: Ukázka relační databáze Primární klíč Relace (Zaměstnanci) Atributy ID_ZAM Příjmení Jméno Pozice Kancelář 1 Novák Petr Finanční ředitel S.1 2 Dvořáková Dana Sekretářka S.1a 3 Čech Mojmír Obchodní ředitel M.1 4 Zelená Nikola HR manaţer M.23 Cizí klíč Relace (Majetek společnosti) ID_MAJ ID_ZAM Název ID_SMLOUVA Cizí klíč MacBook Air 13' NB Nokia Oro Light MT A8 null MacBook Air 11' null R54J12 1 iphone 4S 64GB černý MT Zdroj: Autorem vytvořeno v aplikaci MS Visio 2010 První relace, Zaměstnanci, obsahuje údaje o identifikačním čísle zaměstnance (ID_ZAM), jménu, příjmení, pozici a umístění v kanceláři. Jediný sloupec vhodný pro primární klíč je zde ID zaměstnance, které ze své povahy musí být pro kaţdý záznam jedinečné. Druhá relace, Majetek společnosti, obsahuje informace o identifikačním čísle majetku (ID_MAJ), ID zaměstnance, který má nějaký majetek zapůjčený, název majetku a ID smlouvy o zapůjčení. Zde jiţ ID zaměstnance jako primární klíč nemůţeme pouţít, protoţe jeden zaměstnanec si můţe zapůjčit více poloţek, v tabulce tedy bude zaznamenán vícekrát se stejným ID zaměstnance a to tím pádem ztrácí svou jedinečnost. Kandidátními klíči jsou tedy ID majetku a ID smlouvy. Na jednu smlouvu si však zaměstnanec můţe vypůjčit více poloţek a nastává tak stejný problém jako u ID zaměstnance. Navíc je v obrázku naznačeno, ţe ID smlouvy je pouţito jako cizí klíč pro další tabulku, která však v obrázku jiţ není zobrazena. Primárním klíčem tedy bude ID majetku, které splňuje integritní omezení na jedinečnost i nenullovou hodnotu. Relace Zaměstnanci a Majetek společnosti jsou ve vztahu 1:N, propojené klíčem ID_ZAM (ID zaměstnance), coţ znamená, ţe kaţdý zaměstnanec můţe mít v zapůjčení několik poloţek, ale kaţdá poloţka můţe být půjčena maximálně jednomu zaměstnanci (nemusí však být půjčena nikomu, jako je tomu u poloţky 0010A8). Relační model má silné teoretické základy a podporu standardizovaného dotazovacího jazyka SQL. Další silnou stránkou tohoto modelu je jeho jednoduchost a vhodnost pro vyuţití v OLTP databázích (Online Transaction Processing). Ale má i své nevýhody. Mezi často zmiňované slabiny aţ nedostatky patří například:

17 nedostatečná reprezentace objektů reálného světa, nedostatečná podpora integritních omezení, obtíţné zpracování rekurzivních dotazů, sémantické přetíţení (neexistuje mechanismus pro rozlišení mezi entitami a relacemi nebo pro rozlišení různých druhů relací). Zmíněné problémy se netýkají výhradně relačního modelu. Ve skutečnosti v relačním modelu není ţádný hlubší problém, coţ také dokazuje jeho úspěšnost. Úspěch relačního datového modelu je však limitován určitými typy aplikací. Při současném rozšiřování a vývoji nových, podstatně sloţitějších, aplikací, se pak uţivatelé setkávají s tzv. relační zdí, neboť RDBMS jiţ nenabízí potřebný výkon a funkčnosti. (Wade 2005) V těchto situacích, kde pouţití relačního modelu není vhodné, se upřednostňují jiné modely, ať jiţ zmiňovaný síťový model pro reprezentaci hierarchické struktury, nebo v současnosti se rozšiřující objektový model, o kterém pojednává kapitola 4. Objektové databáze. 3.1 SQL Se vznikem Coddova schématu relačních databází začala firma IBM pracovat na vývoji jazyka pro ovládání těchto databází. Cílem bylo vymyslet jazyk, který by byl syntakticky co nejvíce podobný anglickému jazyku a byl by tak přístupný také uţivatelům bez hlubšího technického vzdělání. Výsledkem byl jazyk Structured English Query Language (SEQUEL), který byl později při zachování výslovnosti přejmenován na SQL. K vývoji jazyka se přidali i další firmy. V roce 1979 uvedla na trh firma Relational Software, Inc. (dnešní Oracle Corporation) svojí relační databázovou platformu Oracle Database a s ní zveřejnila první komerční verzi SQL. IBM uvedla v roce 1981 nový systém SQL/DS a v roce 1983 systém DB2. Dalšími systémy byly např. Progres, Informix a SyBase. Ve všech těchto systémech se pouţívala varianta jazyka SQL. (Procházka 2009). Ačkoli tedy byla společnost IBM u zrodu relačních databází a jazyka SQL, přišla se svým databázovým systémem o celé dva roky později neţ konkurence. Po tomto rozšíření se jazyk SQL, tehdy ještě nazýván SEQUEL2, stal v roce 1986 de facto standardem (SQL-86) (Oracle Corporation nedatováno) a to i přes snahu amerického institutu ANSI (American National Standards Institute) prosadit jako standard zcela nový jazyk RDL. SQL jako standard byl přijat i organizací ISO/IEC (International Organization for Standardization s přidruţenou International Electrotechnical Commission). Aktuálním standardem je SQL:2008, většina databází však vychází ze starších standardů SQL-92 a SQL-99 a z novějších implementují do svých systémů pouze vybrané části, které se podle jejich usouzení na trhu ujmou a na druhou stranu doplňují vlastní části, které ve standardech obsaţeny nejsou. Výsledkem je tak sloţitější přenositelnost aplikací a větší rozdílnost jednotlivých verzí SQL podle výrobce databáze. Ukázky příkazů v této práci jsou psány v databázi PostgreSQL 9.1.3, převáţná většina z nich vychází ze standardu SQL-92 a měla by proto být přenosná i na ostatní platformy.

18 Jazyk SQL se skládá ze čtyř hlavních, odlišně zaměřených, skupin příkazů: 1. Data Definition Language (DDL), 2. Data Manipulation Language (DML), 3. Data Control Language (DCL) a 4. transakční příkazy. (Oracle Corporation nedatováno) Obrázek 4: Základní příkazy jazyka SQL Zdroj: Autorem vytvořeno v aplikaci MS Visio 2010 Kromě těchto hlavních příkazů zahrnuje SQL také další příkazy pro práci s indexy, pohledy (views), triggery apod. Ty v této práci nepopisuji, neboť cílem není popsat všechny moţnosti databází do hloubky, ale porovnat přístup odlišných databázových modelů a práci s nimi Data Definition Language (DDL) Pomocí DDL definujeme relační schéma databáze. Velmi hezkou definici uvádí ve své publikaci David Procházka (Procházka 2009): Jazyk DDL slouží k definici struktury dat ukládaných do databáze. Pomocí této sekce SQL lze přesně nadefinovat, jaký typ dat budeme do databáze ukládat. Jinými slovy pomocí DDL navrhujeme jednotlivé tabulky, jejich atributy, klíče, vazby, omezení, způsob indexování a další oblasti určující charakter ukládaných dat. Pro ukázku příkazů jazyka DDL vyuţiji schéma relací zobrazené na obrázku 3: Ukázka relační databáze (viz strana 16). Jedná se o dvě relace, Zaměstnanci a Majetek společnosti, ve vztahu 1:N. Pro vytvoření nové tabulky pouţijeme příkaz CREATE TABLE s následující syntaxí (vyhrazené výrazy DDL jsou zvýrazněny modrou barvou a nepovinné údaje jsou ohraničeny [ a ] ):

19 Obrázek 5: Syntaxe příkazu CREATE TABLE Zdroj: Vlastní zpracování Základní syntaxe příkazu CREATE TABLE (a také ALTER TABLE) můţe být rozšířena o takzvaná omezení (constraints). Jejich výčet a stručný popis je uveden v tabulce 1: SQL Integritní omezení. Tabulka 1: SQL - Integritní omezení Omezení NOT NULL UNIQUE CHECK Primary Key Foreign Key Popis Doménové omezení. Daný sloupec nesmí obsahovat hodnotu null. Doménové omezení. Daný sloupec nesmí obsahovat duplicitní hodnoty. Doménové omezení. Hodnoty daného sloupce musí splňovat danému booleovskému výrazu. Entitní omezení. Hodnoty musí splňovat omezení NOT NULL a zároveň UNIQUE. Právě jeden primární klíč (PK) musí být definován v kaţdé tabulce. Typicky se vytváří umělý PK datového typu celé číslo, které je optimálnější při porovnávání (například při operaci JOIN) neţ text. Referenční omezení. Hodnoty sloupce mohou být pouze NULL nebo shodné s jedním primárním klíčem nadřazené tabulky. Toto omezení zajišťuje referenční integritu databáze a definuje akce, které mají nastat při změně odkazovaného záznamu. Zdroj: Dokumentace PostgreSQL (The PostgreSQL Global Development Group nedatováno) Vytvoření relací Zaměstnanci a Majetek společnosti je znázorněno na obrázku 6: Vytváření tabulek v jazyce DDL. U relace Majetek společnosti je záměrně vynechán atribut id_smlouva. Na původním schématu byl zobrazen za účelem znázornění moţnosti evidence více cizích klíčů v jedné tabulce. Pro jeho zahrnutí do tabulky Majetek_Spolecnosti by bylo potřeba doplnit tabulku Smlouvy.

20 Obrázek 6: Vytváření tabulek v jazyce DDL Zdroj: Vlastní zpracování Po spuštění těchto příkazů se v databázi vytvoří prázdné tabulky. V kapitole Data Manipulation Language si ukáţeme, jak tabulky naplnit daty, jak si zobrazit obsah těchto tabulek, včetně projekce, sjednocení, selekce a podobně. Popis pouţitých a dalších často vyuţívaných datových typů je přiloţen v příloze 1: Datové typy v PostgreSQL. Mezi další příkazy jazyka DDL patří příkaz DROP, který smaţe vybranou tabulku a příkaz ALTER, který slouţí pro úpravy tabulek, například přidání/ubrání sloupce nebo změny omezení. Příkaz pro přidání atributu popis do existující tabulky Majetek společnosti a zároveň přidání omezení NOT NULL na atribut název by vypadal takto: Obrázek 7: Úpravy tabulek v jazyce DDL Zdroj: Vlastní zpracování Pomocí příkazu ALTER je moţné nejen měnit sloupce a omezení, ale také měnit názvy sloupců, názvy tabulek nebo datové typy jednotlivých sloupců Data Manipulation Language (DML) Teď, kdyţ máme vytvořené a provázané tabulky, můţeme je naplnit daty. K tomu nepouţijeme jazyk DDL, ale jazyk DML, který slouţí k manipulaci s uloţenými daty, jejich ukládání (příkaz INSERT), mazání (příkaz DELETE), editaci (příkaz UPDATE) a především vyhledání (příkaz SELECT).

21 Syntaxe příkazů INSERT, DELETE a UPDATE není nijak komplikovaná, a proto ji představím rovnou na praktické ukázce v naší relaci Zaměstnanci. Obrázek 8: DML příkazy v jazyce SQL Zdroj: Vlastní zpracování Stejným způsobem naplníme i relaci Majetek společnosti, u které je navíc potřeba při vkládání dat dávat pozor na atribut cizí klíč, kde hodnota musí být shodná z odpovídajícím primárním klíčem v relaci Zaměstnanci nebo musí být null. Ke zjištění hodnoty ID_ZAM některého ze zaměstnanců pouţijeme poslední zmiňovaný příkaz SELECT. Základní syntaxe příkazu SELECT je velmi jednoduchá. Na následujícím obrázku je jiţ doplněná i o nepovinnou klauzuli WHERE, tedy dodatečnou podmínku. Obrázek 9: Syntaxe příkazu SELECT Zdroj: Vlastní zpracování Pokud chceme vypsat všechny atributy relace, můţeme místo výčtu atributů pouţít znak hvězdičky (viz obrázek 10: Příkaz SELECT v jazyce SQL (konzole psql)). Obvykle ale nepotřebujeme data všech atributů a v takovém případě do výčtu atributů zadáme pouze vybrané z nich. Tím provedeme takzvanou projekci. K problematice pouţívání projekce se velmi výstiţně vyjádřil Jaromír Kukal (Kukal 1998) v článku Projekce v databázových systémech: Projekce zajímá především cílevědomé inteligentní jedince, kteří vědí, že důležité je vždy jen něco, zatímco všechno zahlcuje málo inteligentního alibistu. Při projekci máme v příkazu SELECT možnost vyjádřit se o tom, které sloupce relace vlastně chceme vidět. Nepovinná klauzule WHERE pak slouţí k takzvané selekci (někdy označované jako restrikce), neboli výběru pouze těch záznamů relace, které odpovídají dané podmínce. Jedná se tedy o filtrování řádků tabulky (zatímco projekce filtrovala sloupce tabulky). Podívejme se na několik jednoduchých příkladů projekce a selekce psaných v psql konzoli:

22 Obrázek 10: Příkaz SELECT v jazyce SQL (konzole psql) Zdroj: Vlastní zpracování v konzoli psql V posledním příkladu na obrázku výše je pouţitá funkce LIKE, která pracuje s regulárními výrazy. Selekci lze doplnit o mnoho dalších funkcí a klauzulí. Některé z nich jsou popsány níţe u příkladů spojování tabulek. Častěji se setkáme s výběrem dat z více tabulek najednou. K tomu je potřeba nejprve související tabulky propojit pomocí primárních a cizích klíčů a následně provést selekci a projekci. Existuje několik způsobů, jak tabulky propojit.

23 Obrázek 11: Typy JOIN příkazů Zdroj: Obrázek níţe znázorňuje pouţití INNER JOIN příkazu pro získání informací o tom, kteří zaměstnanci mají zapůjčený majetek společnosti. Obrázek 12: Příkaz INNER JOIN v jazyce SQL (psql) Zdroj: Vlastní zpracování v konzoli psql Záznamy byly navíc seřazeny abecedně podle atributu pozice pomocí příkazu ORDER BY. Pomocí agregační funkce COUNT pak můţeme příkaz dále upravit tak, ţe se nám ke kaţdému zaměstnanci vypíše počet vypůjčených předmětů.

24 Obrázek 13: Příkaz LEFT JOIN v jazyce SQL (psql) Zdroj: Vlastní zpraování v konzoli psql Na příkladech byly ukázány pouze základní příkazy. Mezi další často pouţívané funkce patří SUM, ABS, AVG, MAX, MIN, SUBSTRING, TRIM a spousta jiných Data Control Language (DCL) K databázi plné soukromých dat je potřeba doplnit přístupová práva jednotlivým uţivatelům. Jazyk DCL slouţí právě k této správě uţivatelů a práv. Umoţňuje vytvářet, mazat a měnit jak uţivatele, tak jejich práva na vytváření a úpravy tabulek, pohledů i samotných vnitřních dat. Od verze Postgre 8.1 jiţ není moţné vytvářet skupiny uţivatelů a spravovat tak práva více rolím zároveň. Určitým způsobem je obdoba skupin stále moţná (pomocí příkazu IN ROLE), to však nese značná omezení. Skupiny rolí nejsou součástí SQL standardu a tak je nyní moţné vytvářet pouze role/uţivatele. Na jednu stranu je to krok zpět ve správě práv, na druhou stranu tím usnadňuje přenositelnost databáze na jiné platformy. Nově pak do správ uţivatelů přibyl uţitečný příkaz inherit, který slouţí k dědění vlastností mezi rolemi a tak částečně nahrazuje zrušené skupiny. Pro ukázku dalších zajímavých příkazů si vytvořme nyní jednoho uţivatele s přístupem a jednoho administrátora bez přístupu do databáze. Obrázek 14: Vytvoření uţivatele v jazyce DCL Zdroj: Vlastní zpracování Zbývá přidat uţivateli databáze práva. K tomu slouţí příkaz GRANT, naopak zrušit práva umoţňuje příkaz REVOKE. Povaţujme našeho uţivatele za správce majetku společnosti a nastavme práva takto: Obrázek 15: Nastavení práv v jazyce DCL Zdroj: Vlastní zpracování

25 Nyní platí: 1. Uţivatel bude mít veškerá práva na relaci Majetek společnosti. 2. Uţivatel bude mít navíc právo pro přidávání nových zaměstnanců do relace Zaměstnanci. 3. Uţivateli odebereme práva na mazání záznamů z relace Majetek společnosti. 4. Všem uţivatelům nastavíme práva na příkaz SELECT v celé databázi Transakční příkazy (TCC) Transakce jsou nedílnou součástí relačních i objektových databází. Představují ucelenou logickou jednotku, sloţenou z několika SQL příkazů, která se provádí samostatně. Tím zabezpečují integritu dat při provádění změn, a proto jsou nezbytné především u rozsáhlejších příkazů. Pokud bychom například chtěli globálně zvýšit mzdy o 10% a z jakéhokoliv důvodu by se změna nepodařila provést u všech zaměstnanců a aplikace by se po chybě pokusila provést příkaz opakovaně, nastala by situace, kdy zčásti mzdy zvednou o 21% a zčásti jen o 10%. A to pouze v případě, ţe by se příkaz na druhý pokus provedl úspěšně. Z tohoto důvodu je nutné mít moţnost odvolat všechny provedené změny, pokud se kdykoliv vyskytne chyba, tedy pouţít transakce. Kaţdý SQL příkaz ve své podstatě začíná novou transakci. Příkazy DDL a DCL obsahují tzv. auto commit, který potvrdí změny v databázi automaticky po vykonání příkazu. Příkazy DML je nutné potvrdit příkazem COMMIT, aby změny v databázi byly trvalé. Podívejme se na příklad transakce sloţené z více DML příkazů. Obrázek 16: Transakce v jazyce SQL (psql) Zdroj: Vlastní zpracování Transakce na obrázku výše zvyšuje plat zaměstnancům podle osobního hodnocení o 10% nebo 8%, případně 4%. Jedná se o velmi zjednodušený příklad, který slouţí pouze pro demonstraci syntaxe transakcí. V praxi bývají transakce mnohonásobně delší a sloţitější. 3.2 Produkty na trhu Jako nejpouţívanější databázový model mají relační databáze na trhu několik desítek úspěšných systémů pro řízení databází (DBMS). Není moţné jednoznačně určit tu nejlepší databázi, vţdy záleţí na úhlu pohledu, na vyuţití, na potřebách konkrétního informačního systému. V této kapitole jsou představeny nejznámější a nejpouţívanější z nich. Kaţdá databáze můţe být vhodná pro něco jiného, vyuţívaná více v určitém odvětví proto zde neuvádím ani ţebříček oblíbenosti ani srovnání databází z hlediska vyuţívání a podobné statistiky.

26 Oracle Aktuální verzí je Oracle Database 11g, multiplatformní databázový systém dostupný pro všechny platformy také s podporou 64 bitové architektury (kromě neplacené verze Express Edition). Vyuţívá standardizovaný dotazovací jazyk SQL-92, který rozšiřuje o vlastní funkčnosti především pro správu dat (Partitioning Advisor, Automatic Partitioning, Oracle Advanced Compression, materializované pohledy OLAP a další), imperativní programovací jazyk PL/SQL a další moţnosti pro snazší správu a řízení databáze. (Procházka 2009) (Oracle Corporation nedatováno) Oracle databáze je nabízena ve čtyřech verzích: Express Edition je bezplatná základní verze, ale je omezená na 1 jádro CPU, 1GB RAM a 4GB dat a zahrnuje pouze některá moţná Oracle rozšíření pro správu databází. Na serveru je pak moţné současně provozovat pouze jednu instanci databáze. Tato verze je určena pro menší začínající projekty, s jejichţ rozšiřováním je moţné koupit licenci na vyšší verzi Oracle databáze. Standard Edition One omezuje pouze maximální počet procesorových jader, které mohou být aţ dvě. Jedná se jiţ o licencovanou verzi, jejíţ cena se odvíjí především od pouţitých procesorů. Na rozdíl od Express Edition zahrnuje více rozšiřujících Oracle funkčností. Standard Edition se od předchozí verze liší podporou aţ čtyř procesorových jader a zahrnuje více funkčností pro podporu škálovatelnosti. Enterprise Edition jako jediná není omezena ani počtem procesorů ani podporou rozšiřujících Oracle funkčností, z nichţ některé jsou jiţ vestavěné a některé je moţné volitelně dokoupit. (Oracle Corporation nedatováno) Oracle je beze sporu jeden z největších hráčů na trhu databázových řešení. Popis všech funkčností, které Oracle nabízí, by rozsahem vydal na celou publikaci, to však není cílem této práce. Zájemcům doporučuji oficiální stránky společnosti Oracle ( Microsoft SQL Server Aktuální verzí je Microsoft SQL Server 2012, výkonný relační systém, který je povaţován za bezpečný a snadno škálovatelný. (Microsoft Corporation nedatováno) Je nabízený ve třech hlavních edicích: Standard Edition nabízí základní databázové funkčnosti včetně reportování a analytických nástrojů. Tato edice je omezena na 16 procesorových jader. Business Intelligence je zaměřena na rychlé vyhledávání dat (funkce Power View umoţňuje vizuální procházení dat). Enterprise Edition doplňuje k funkčnostem předchozích verzí nové nástroje pro řízení bezpečnosti a vysoké dostupnosti (např. funkce ColumnStore). (Microsoft Corporation 2012)

27 Dále jsou k dispozici edice známé z předchozích verzí Developer (verze Enterprise určená pouze pro účely vývoje a testování), Web (levnější edice určená pro webové aplikace) a Express (verze zdarma pro malé projekty s omezením na jeden procesor, 1GB RAM a 10GB dat). (Microsoft Corporation 2012) Pro někoho můţe být značnou nevýhodou závislost na Microsoftu, tuto databázi lze spustit pouze v operačním systému Windows MySQL Aktuální verzí je MySQL 5.5, coţ je multiplatformní open source databázový systém dostupný jak pod bezplatnou licencí GPL, tak pod komerční placenou licencí. Aktuálně ji vyvíjí společnost Oracle Corporation, která ji získala odkoupením společnosti Sun Microsystems roku (Oracle Corporation nedatováno) Spekulovalo se nad budoucností této databáze pod vedením Oracle Corporation, ale společnost se rozhodla ji dále vyvíjet a podporovat. Získává tak silné postavení na trhu velkých projektů s komerční databází Oracle i na trhu menších, především webových, aplikací s databází MySQL. MySQL je povaţována za velmi rychlou databázi, která však kvůli zaměření na rychlost postrádá mnoţství funkcí nabízených konkurenčními produkty (především PostgreSQL a Firebird). (Zajíc 2005) Je však moţné, ţe tyto nedostatky se odstraní s novým plánem vývoje, který představil Oracle Corporation, tedy s novou verzí přidat méně funkčností, které však budou kvalitněji propracované. Aţ nová verze ale ukáţe, jakým směrem se bude MySQL pod vedením Oracle Corporation ubírat PostgreSQL Nejnovější verzí je PostgreSQL 9.1, multiplatformní open source databázový systém vydávaný pod bezplatnou licencí BSD. Vychází především ze standardu SQL-92 a SQL-99, který, stejně jako ostatní databázové systémy, rozšiřuje o vlastní funkčnosti a procedurální jazyk PL/pgSQL. PostgreSQL je označován za volně dostupný Oracle, především kvůli rozsahu nabízených rozšiřujících funkčností a stabilitě, díky které je vhodný také pro komerční pouţití i u větších aplikací. (Kocan, Databáze dneška podevatenácté 2009) Zahrnuje také většinu datových typů definovaných standardem SQL-2008 a podporuje práci s multimediálními soubory. (The PostgreSQL Global Development Group nedatováno) Komunita okolo této platformy patří mezi největší na světě a za velmi kvalitní lze považovat také dokumentaci. Na druhou stranu bývají nové vlastnosti zapracovávané až v okamžiku jejich faktické potřeby, což není vždy zcela ideální stav. O kvalitách PostgreSQL svědčí nejen nabízená funkčnost, ale také jednotlivá nasazení v rámci České republiky jmenujme například doménový registr CZ.NIC nebo rezervační systém společnosti StudentAgency, ze zahraničních pak systémové aplikace společnosti Skype. (Kocan, Databáze dneška podevatenácté 2009)

28 Firebird Aktuální verzí je Firebird 2.5, open source relační databázový systém od společnosti Borland. Podporuje moderní bezpečnostní mechanismy, 64bitovou architekturu, je multiplatformní a nabízí vysoký výkon při relativně nízkých systémových nárocích. (Firebird Foundation Incorporated nedatováno) Nejčastěji vyhledávanou edicí je Embeded, která je sloţena z několika málo souborů, jeţ obsahují veškerou funkcionalitu. Není tedy potřeba cokoliv instalovat, coţ je pro koncového zákazníka výhodné. Dalšími variantami pak jsou edice SuperServer, která sdílí svoji cache paměť mezi jednotlivými spojeními a pouţívá vlákna pro obsluhu kaţdého spojení, a edice Classic, která spouští nezávislý proces pro kaţdé spojení. (Cantu nedatováno) Velkou nevýhodou Firebirdu je nedostatečná dokumentace. Lze sice za poplatek získat ucelenější dokumentaci, ale všeobecně dokumentace k Firebirdu vzniká i s několikaletým zpoţděním. Moţností pak je pouţít dokumentaci databáze InterBase, ze které se Firebird roku 2000 odštěpil. (Cantu nedatováno) DB2 Aktuální verzí je DB2 9.7, multiplatformní databázový systém nabízený v několika placených i neplacených edicích společností IBM. Zdarma je nabízena edice Express-C, která můţe být pouţita na libovolném serveru, ale vyuţije maximálně dvě procesorová jádra a 2GB RAM. Za poplatek je moţné získat technickou podporu k této edici. Pro malé a střední podniky je určena jiţ placená edice Express, která podporuje aţ čtyři procesorová jádra, 4GB RAM a kromě v dnešní době běţných databázových funkčností také cloud computing a virtualizaci. Edice Workgroup Server na rozdíl od Express edice není omezena počtem procesorových jader ani velikostí operační paměti. Pro velké společnosti je určena edice Enterprise Server zaměřená na škálovatelnost. Edice Advanced Enterprise Server obsahuje pokročilé funkce pro řízení a konfiguraci databází, je zaměřena na jednoduchou správu a vývoj databází, ladění výkonu, zabezpečení dat (pomocí Label Based Access Control), komprese a podobně. (IBM Corp. nedatováno) Platforma DB2 je synonymem pro vysoký výkon a vysokou dostupnost a je povaţována za ideální platformu pro budování a provoz rozsáhlých datových skladů. Bezpečnostní funkce umoţňují šifrování dat i určení přístupových práv aţ na úroveň jednotlivých záznamů i atributů tabulky. (Kocan, Databáze dneška potřinácté 2009)

29 OBJEKTOVÉ DATABÁZE Relační databáze jsou a zřejmě i nadále zůstanou hlavním prostředkem pro správu dat komerčních aplikací, které jsou charakteristické velkým objemem údajů s jednoduchou strukturou. Řada aplikací, například z oblasti designu, multimédií, geografických systémů apod., však potřebuje takový datový model, který umoţní lepší korespondenci mezi sloţitými reálnými daty a jejich reprezentací v databázovém systému (Švec 2003) a proto v 80. letech vznikl tlak na vývoj nových databázových systémů, které by lépe dokázaly pracovat s objekty. Objekty jsou jako stavební jednotky modelující reálný svět lépe neţ relace. Odpovědí jsou objektové databáze, které vznikly na počátku 90. let jako reakce na problémy s ukládáním a zpracováním objektů v relačních databázích. Objektové databáze se začaly objevovat nejprve v oblasti strojírenství, následně ve finančnictví a v oblasti telekomunikací. Aktuálně se objektové databáze uplatňují také na trhu interaktivních a dynamických webových stránek, multimediálních systémech a geografických informačních systémech. (Conolly, Begg a Holowczak 2009) Často se ve svém okolí setkávám s názorem, ţe hlavní slabinou objektových databází je absence standardů, formálního modelu dat, dotazovacího jazyka apod. Tyto výtky však není přesná, neboť několik významných dodavatelů (např. Sun Microsystems, Objectivity Inc., Versant Corporation a další) zaloţilo roku 1991 společenství Object Data Management Group (ODMG), které spojovalo na tři sta komerčních firem, a které jiţ definovalo několik standardů, mezi kterými najdeme např.: Object Model (určuje standardní model sémantiky databázových objektů), Object Query Language (objektový dotazovací jazyk jako nadmnoţina SQL), Object Definition Language (jazyk pro definici objektů), Object-to-Database Mapping (přímé ukládání objektů a mapování objektů na databázi). Problémem však zůstává nerespektování těchto standardů ze strany výrobců. Dalším problémem je jazyk UML, který nepodporuje všechny potřebné konstrukce k modelování objektových databází. Lze je však do UML doplnit. Pod obecným označením objektové databáze se skrývají dva vzájemně odlišné datové modely: a) Objektově relační datový model, který představuje evoluční trend vývoje. Jde o doplnění relačního datového modelu o moţnost práce s některými datovými strukturami, které známe z oblasti objektově orientovaných programovacích jazyků. Většina výrobců velkých relačních databázových systémů (např. Oracle) zvolila tuto variantu a ve skutečnosti tedy dodávají objektově relační databáze (ORDBMS). Objektově relační datový model ale ve svých principech zůstává původním relačním datovým modelem. b) Objektově orientovaný datový model (ODM), který představuje revoluční trend vývoje. Jde o nový datový model, který není postaven jako rozšíření relačního datového modelu.

30 Do jisté míry zde jde o renesanci původního síťového datového modelu, který je doplněn o moţnost práce s objekty tak, jak je známe z objektového programování. Na základě ODM vznikly objektově orientované databáze (OODBMS). (Loomis 1994) V praxi se však označením objektové databáze (ODBMS), není-li uvedeno jinak, myslí pouze druhý zmiňovaný datový model, objektově orientované databáze zaloţené na objektově orientovaném datovém modelu. Mezi hlavní výhody ODM patří rozšířené modelovací moţnosti, moţnost přidávání nových datových typů, odstranění impedančního nesouladu (neboli odlišností mezi objektovým a relačním přístupem), podpora pokročilých databázových aplikací, výrazně bohatší dotazovací jazyk a často se také uvádí zlepšení výkonnosti, na které poukazuje řada výkonnostních testů. Například v letech 1989 a 1990 bylo provedeno testování výkonnosti ODBMS GemStone, Ontos, ObjectStore, Objectivity/DB a Versant proti RDBMS INGRES a Sybase. Výsledky ukázaly v průměru třicetinásobné zvýšení výkonnosti u ODBMS ve srovnání s RDBMS. (Conolly, Begg a Holowczak 2009) Určité často zmiňované nevýhody spojené se standardizací jiţ byly zmíněné výše. Mezi další nevýhody ODM pak můţeme zařadit nedostatek zkušeností ze strany výrobců, sloţitost a také slabší podporu zabezpečení. Výhodou pouţití objektově relačních databází (např. Oracle 8.x, DB/S Extenders) je zachování stávajícího relačního modelu, se kterým jiţ mají uţivatelé zkušenosti. Většina firem tak nemusí investovat nemalé finanční prostředky do nových technologií a do vzdělávání a přesto mohou k datům přistupovat jako k objektům a vyuţívat nástroje objektového přístupu. Zjevnou nevýhodou ORDBMS je pak sloţitost a s tím spojené vyšší náklady. Dalším problém nastává v jisté rivalitě mezi přívrţenci RDSMB a zastánci OODBMS, kteří nepovaţují propojení obou řešení za výhodné, ale spíše naopak, coţ pravděpodobně zapříčinila také změna terminologie, která se liší jak od terminologie objektové tak relační. Vyuţití, výhody a nevýhody OODBMS (dále jen ODBMS) podrobněji rozebírají další kapitoly, které se zaměřují na jednotlivé standardy skupiny ODMG (Object Model, Object Definition Language a Object Query Language). 4.1 Objektový datový model Základní charakteristiky objektového datového modelu lze shrnout do následujících šesti bodů: 1) Podpora více typů kolekcí objektů (relační model podporuje pro uloţení dat pouze jeden typ a to relační tabulku) tak, jak je známe z vyšších programovacích jazyků: pole, spojový seznam, slovník, zásobník a další. Kolekce reprezentuje úloţiště pro objekty, viz tabulku 2: Kolekce definované ODMG ODL v kapitole 4.3 Object Definition Language (ODL). 2) Objekty se skládají z vnitřních datových sloţek (coţ mohou být opět objekty) a z metod, obojí je typem atributu, který známe z relačních databází.

31 - 31-3) Pokud mají objekty společné atributy, jsou polymorfní, i kdyţ jejich třídy mezi sebou nedědí. 4) Kaţdý objekt má systémem přidělený vlastní jednoznačný identifikátor, obvykle označovaný jako OID (Object IDentifier). OID plní úlohu ukazatele do virtuální paměti a pro objekt je neměnný. Díky OID lze rozlišovat mezi rovností a totoţností objektů a navíc odpadá nutnost tvorby primárních klíčů, kterou známe z relačních databází (primární klíče však neslouţí jako ukazatelé do paměti). 5) V databázi lze pracovat i se soustavou objektů, která je sama o sobě aplikací. Objektová databáze pak neslouţí pouze jako úloţiště dat pro externí program, ale část (popřípadě i celek) výpočetního programu můţe být spouštěn v rámci objektového databázového serveru. 6) Jednotliví uţivatelé vidí pouze ty atributy, ke kterým mají přístupová práva. (Merunka 2008) Můţeme si tedy všimnout jistých odlišností oproti objektově orientovaným programovacím jazykům, jako je jiný přístup k polymorfismu a migraci mezi třídami. Pro přehlednost uvádím tabulku porovnávající terminologii relačního a objektového datového modelu.

32 Tabulka 2: Porovnání relační a objektové terminologie Relační datový model Záznam Tabulka Atribut Primární klíč Propojení záznamů Objektový datový model Objekt 1) Třída 2) Kolekce 1) Datová sloţka objektu 2) Metoda objektu OID Skládání objektů Zdroj: (Merunka 2008), upraveno 4.2 Objektový model podle ODMG Tato specifikace objektového modelu vydaná skupinou Object Data Management Group definuje především objekty a literály, atributy, vztahy, objektové typy a předdefinované typy. Tyto základní modelovací primitivy si v této kapitole trochu přiblíţíme Objekty a literály Základními modelovacími prvky jsou objekt a literál. Jak jiţ bylo popsáno v předchozí kapitole, kaţdý objekt má svůj jedinečný identifikátor (OID), který je nejen neměnný, ale ani po smazání objektu jiţ není moţné OID tohoto objektu opětovně pouţít. Identifikátor objektu je automaticky generovaný systémem a pro programátora i koncového uţivatele je obvykle skrytý. Krom OID je objekt označen také jedním nebo více jmény, která by měla být srozumitelná pro uţivatele a slouţit jako vstupní body do databáze. (Cattel a Barry 2000) Druhý modelovací prvek, literál, je definován jako datová entita určitého datového typu. Obvykle se s nimi setkáváme jako s atributy objektů. Je to hodnota atributu, která se během běhu programu nemění a je read-only. Na rozdíl od objektu nemá literál ţádný identifikátor. Hlavní rozdíl mezi objekty a literály je v proměnlivosti neboli schopnosti měnit data bez změny identity. Objekty jsou proměnlivé, takţe kdyţ změníme hodnoty jejich datových sloţek, nezměníme jejich identitu. Literály ale proměnlivé nejsou. (Švec 2003) Další vlastností objektů je doba platnosti, která se stanovuje při vytvoření objektu. Objekt můţe být buď perzistentní anebo transientní. Perzistentní objekty jsou ty, které ukládáme do databáze, protoţe je potřebujeme uchovat i v době, kdy samotný program neběţí. Uloţení perzistentních objektů spravuje ODBMS. Transientní objekty jsou naopak ty dočasné, které program vyuţívá pouze během svého běhu a při vypnutí programu se jejich hodnota ztrácí. Tyto objekty se neukládají do databáze, paměť pro transientní objekty alokuje a uvolňuje sám běhový systém programovacího jazyka. (Merunka 2008) Příkladem můţe být funkce Add To Memory (M+) na kalkulačce, která

33 označí záznam za perzistentní a uloţí ho do paměti, kde je uchován i po vypnutí kalkulačky, zatímco ostatní záznamy se s vypnutím ztrácejí Atributy a vztahy Atribut si lze představit jako vlastnost objektu. Pokud například máme objekt reprezentující jednoho konkrétního člověka (objekt bude instancí třídy Člověk), pravděpodobně bude mít definované atributy jméno, příjmení, datum_narození, rodinný_stav apod. Na rozdíl od atributu, který je vlastností jednoho objektu, je vztah charakteristikou vazby mezi dvěma objekty. Příkladem vztahu mezi dvěma objekty, instancemi třídy Člověk, můţe být například vazba, která určuje příbuzenství konkrétních lidí. Vazby, také označované jako relace, nemají jména, ale tzv. traversal path. Dle standardu ODMG lze pouţít pouze binární vztahy (tedy vztahy právě dvou objektů) s kardinalitou 1:1, 1:N nebo M:N Objektové typy Objektové typy jsou definované třídami a rozhraními, které známe z objektového programování. Rozhraní definuje pouze abstraktní chování (abstraktní operace) objektového typu a není moţné vytvořit jeho instanci (vytvořit podle něj objekt). Rozhraní se typicky pouţívá pro definici abstraktních operací, které budou definovány ve zděděných třídách. Třída pak definuje atributy a chování objektového typu neboli instance dané třídy. ODMG rozšiřuje třídu z OOP o tzv. extent., coţ je automaticky spravovaná kolekce všech objektů dané třídy. Pokud navíc vyuţíváme dědičnosti tříd, bude extent zděděné třídy podmnoţinou extentu rodičovské třídy. Na rozdíl od relačního přístupu, kde se extent vytváří pro kaţdou definovanou relaci, u objektového přístupu je definice extentu nepovinná. (Cattel a Barry 2000) 4.3 Object Definition Language (ODL) Objektové databáze jsou zaloţeny na schématu definovaném pomocí Object Definition Language, coţ je jazyk vytvořený pro definici specifikací objektových typů. ODL je tedy jakýmsi ekvivalentem jazyka DDL, který se pouţívá v RDBMS. ODL se pouţívá obvykle v první fázi návrhu objektové databáze, protoţe je nezávislý na programovacím jazyce. Problémem ovšem zůstává nedodrţování standardů ODMG ze strany výrobců databází a tak se často stává, ţe objektové databáze jazyk ODL (spíše výjimečně také jazyk OQL, viz níţe) nepodporují a jsou doplněny jinými způsoby a metodami pro definici databázových objektů. Často však rozšiřují pouţívané objektové programovací jazyky a práce s databází se pak můţe stát jednodušší a přirozenější, ale ztrácí hlavní přidanou hodnotu jazyka ODL platformovou nezávislost.

34 Na obrázku 17: Definice třídy podle ODMG ODL můţeme vidět, jak ODL definuje třídu v objektových databázích (vyhrazené výrazy ODL jsou zvýrazněny modrou barvou a nepovinné údaje jsou ohraničeny [ a ] ): Obrázek 17: Definice třídy v ODMG ODL Zdroj: Vlastní zpracování Tímto způsobem jazyk ODL specifikuje také rozhraní, datové struktury a v podstatě veškerou moţnou práci s objektovými databázemi. Pokud se vrátíme k příkladu jednoduché třídy Člověk, mohla by definice této třídy v ODL vypadat následovně: Obrázek 18: Definice třídy Person v ODMG ODL Zdroj: Vlastní zpracování Třídě Person jsme přiřadili extent people, kde najdeme všechny vytvořené instance této třídy. Vyhrazené slovo persistent značí, ţe instance této třídy budou perzistentní, ukládané do databáze. Třída má dále atributy name a surname datového typu string neboli textový řetězec, atribut dateofbirth datového typu Date a také atribut MaritalStatus, coţ je výčet všech moţných rodinných stavů (bude tedy moţné k jedné instanci třídy Person zvolit nejvýše jednu ze zadaných

35 moţností Single, Married, Divorced nebo Widowed). Atributy name a surname mají omezení notnull, je tedy nutné při ukládání nového objektu do databáze tyto atributy vţdy vyplnit. Třída Person má definovanou vazbu sama se sebou, kdy instance můţe být s několika dalšími instancemi této třídy ve vztahu children/parents. Označení set a list v definici vazby značí mnoţinu objektů, jedná se proto o vazbu typu M:N. Kromě datových typů string, enum a Date, ODL definuje také následující datové typy (atomické literály): číselné datové typy: long, long long, short, unsigned long, unsigned short, octet, float, double, logický datový typ: boolean, znakový datový typ: char. Speciálním datovým typem je typ any, který značí objekt libovolného datového typu. (Cattel a Barry 2000) ODL definuje také kolekce, coţ jsou mnoţiny literálů nebo objektů. Konkrétně ODL podporuje set, bag, list, array a dictionary (Cattel a Barry 2000). V následující tabulce (Tabulka 3: Kolekce definované ODMG ODL) najdete definice těchto kolekcí. Tabulka 3: Kolekce definované ODMG ODL Kolekce Popis Set Bag List Array Dictionary Neuspořádaná mnoţina prvků stejného typu. Neobsahuje duplikáty. Neuspořádaná mnoţina prvků stejného typu, která můţe obsahovat duplikáty. Uspořádaná mnoţina indexovaných prvků stejného typu. Uspořádaná mnoţina prvků stejného typu, jejichţ pozice je indexována. Na rozdíl od listu má pevnou délku. Neuspořádaná mnoţina dvojic hodnota-klíč, která můţe obsahovat duplikáty. Zdroj: (Hoffer, J.A., 2008, kap. 15 s. 3), upraveno Kromě atomických literálů a kolekcí ODL definuje také strukturované literály, zkráceně struktury. Struktury mají fixní počet elementů, element můţe být jak objekt, tak i literál. ODMG Object Model definuje struktury date, interval, time, timestamp. ODMG Object Model je ale rozšiřitelný, a proto si vývojář můţe definovat vlastní struktury, které potřebuje. Pro tento případ Object Model obsahuje generátor struct. (Cattel a Barry 2000) Pouţití je velmi podobné jako při definici třídy, rozdíl je v tom, ţe struktura můţe obsahovat pouze objekty a literály, nikoliv operace, vazby apod. Definice struktury adresa by mohla vypadat například takto:

36 Obrázek 19: Definice struktury Zdroj: Vlastní zpracování Podle této definice struktury nyní můţeme vytvářet atributy stejným způsobem jako podle jiných datových typů. Podle definice třídy lze v ODL vytvořit instanci jednoduše příkazem: <object_name> <class_name>(<attribute_name>:<value>); Konkrétně u naší třídy Person bychom tedy mohli vytvořit například Petra Nováka a jeho syna Jana Nováka příkazy: NovakPetr84 Person(name Petr, surname Novak, dateofbirth 4/5/84); NovakJan09 Person(name Jan, surname Novak ); NovakPetr84 Person(children NovakJan09); Při vytváření instance nemusí být všechny atributy povinné, záleţí však na návrhu databáze. My máme v definici třídy povinné pouze atributy name a surname. Jak jiţ bylo napsáno v úvodu, v praxi se ODL příliš nepouţívá, neboť k tvorbě databázových objektů lze vyuţít přímo moţnosti vyšších programovacích jazyků. Například ODBMS db4o lze jako knihovnu připojit k projektu psanému v jazyce.net nebo Java a k databázi pak přistupovat metodami psanými pro daný jazyk, coţ je obvyklejší postup, vzhledem k jednoduchosti pouţití. 4.4 Objektový dotazovací jazyk (OQL) Nepostradatelnou součástí kaţdého databázového systému je kvalitní dotazovací jazyk. Dalším standardem vydaným skupinou ODMG je proto objektový dotazovací jazyk OQL Object Query Language. Editoři standardu OQL, kteří se podíleli také na jeho vývoji, popsali OQL slovy: It is complete and simple. (Cattel a Barry 2000). Avšak objektové databáze mají velmi sloţitou datovou strukturu s mnoha objekty provázanými velkým mnoţstvím vazeb. Důsledkem jsou sloţité dotazovací algoritmy a také jejich niţší efektivita v porovnání s relačními databázemi. Další komplikací při zpřístupňování dat vyhledávacím algoritmům je pak typická vlastnost OOP zapouzdření. Vzhledem k těmto vlastnostem ODBMS je dotazovací jazyk OQL pouţíván pouze pro vyhledávání a výběr objektů, neslouţí k manipulaci s daty jako SQL u relačních databází. (Švec 2003) K manipulaci s daty slouţí ODL. Dále je jazyk OQL zaloţen na těchto principech: OQL je přímo závislý na ODMG Object Model.

37 OQL je záměrně velmi podobný SQL-92, který rozšiřuje o objektově-orientovanou notaci. OQL je snadno pouţitelný a přenositelný. OQL poskytuje prostředky pro práci s objekty, mnoţinami, strukturami apod. Výsledek jakéhokoliv dotazu musí odpovídat typu definovanému v datovém modelu. OQL je moţné, podobně jako SQL, pouţít jako samostatný jazyk nebo ve formě vnořeného zápisu do jiných jazyků, pro které je definována vazba na ODMG. (Cattel a Barry 2000) Podporovanými jazyky ze strany OQL jsou Smalltalk, C++ a Java. (Conolly, Begg a Holowczak 2009). V poslední době se však OQL rozšiřuje i mezi jiné technologie a můţeme se tak setkat například s variantou OQL.NET určenou pro jazyk.net, variantou HQL (Hibernate Query Language) určenou pro propojení objektů v jazyce Java s různými databázemi a dalšími implementacemi OQL. I přes toto rozšiřování však standard OQL není plně přijat všemi výrobci a můţeme se tak setkat s objektovými databázemi, které tento dotazovací jazyk nepodporují a obsahují jiné prostředky pro dotazování Syntaxe dotazu Základní operátory pouţívané pro dotazování lze rozdělit do několika skupin: 1. Logické operátory: not, and a or. 2. Aritmetické operátory: +, -, *, /, mod (modulo). 3. Relační operátory: <, >, <=, >=, =,!=. 4. Operátory pro práci s řetězci: (konkatenance), in (testuje přítomnost znaku v řetězci), like (testuje, zda řetězec odpovídá vzoru), s[i] (vrací i-tý znak řetězce), s[l:h] (vrací podřetězec od l-tého znaku po h-tý znak). Dále OQL definuje operace nad kolekcemi exist(element) a unique(element), které vracejí hodnotu true, pokud kolekce obsahuje hledaný prvek aspoň jednou respektive právě jednou. V opačném případě vracejí hodnotu false. (Cattel a Barry 2000) (Švec 2003) Lze pouţít také většinu operací a agregačních funkcí, pouţívaných v SQL jako min(), max(), sum(), union a další. Také samotná syntaxe je jazyku SQL velmi podobná, jak je uvedeno v principech OQL, vychází z jazyka SQL-92. Základní konstrukce dotazu select-from-where vypadá následovně: Obrázek 20: Syntaxe jednoduchého Select dotazu Zdroj: Vlastní zpracování

38 Po vyhrazeném slovu select je nepovinný výraz distinct, který filtruje výsledky a odstraňuje duplicitní záznamy. Lze jej vyuţít například pro změnu mnoţiny výsledků typu bag, kterou funkce distinct změní v mnoţinu typu set. U třídy Person definované v kapitole 4.3 Object Definition Language (ODL) je moţné příkaz select pouţít například pro vyhledání všech lidí s příjmením Novák : Obrázek 21: Vyhledání podle atributu Zdroj: Vlastní zpracování Dalším moţným příkazem je vyhledávání přes vazby. Je například moţné vypsat všechny děti Petra Nováka (viz 4.3 Object Definition Language). Nelze zde pouţít jednoduchý příkaz pro výpis atributu p.children.name, protoţe se jedná o mnoţinu odkazů, proto vyuţijeme opět příkaz select, který vrátí mnoţinu hledaných výsledků: Obrázek 22: Vyhledávání přes vazby Zdroj: Vlastní zpracování Podobně jako v SQL lze i v OQL příkazy skládat a zanořovat do sebe. Následující obrázek zobrazuje strukturu dotazu, který vyhledává adresy dětí všech lidí z ulice Main Street, kteří mají alespoň dvě děti, a nakonec ještě výsledné adresy filtruje a zobrazí jen adresy dětí, které nebydlí ve stejné ulici jako rodiče: Obrázek 23: Agregační funkce a sloţená podmínka Zdroj: Vlastní zpracování Jazyk OQL obsahuje také konstrukce pro vytváření nových objektů a literálů, avšak pouze tranzientních. Ty slouţí pro získání objektů jako výsledků dotazu. Výsledkem dotazu je vţdy objekt, často nějaká kolekce objektů. Na příkladech výše jsou ukázány pouze základní typy konstrukcí, kompletní výčet konstrukcí a ukázky pouţití lze najít například v (Cattel a Barry 2000).

39 Produkty na trhu Ačkoliv objektové databáze nemají takové zastoupení v komerčních produktech jako databáze relační, ukáţeme si v této kapitole, ţe nabídka ze strany objektových databází je také rozmanitá. Všechny zde zmiňované databáze podporují standardní funkčnosti jako transakce (včetně ACID principů), škálování, přístupy více uţivatelů apod Db4o Tato multiplatformní open source objektová databáze od společnosti Versant Corporation je určená pro technologie Java a.net. Aktuální verzí je db4o 8.0. Pro nekomerční produkty a produkty pod licencí GPL je nabízena zdarma, pro komerční produkty je nabízena placená verze s plnou podporou. Součástí obou verzí je plně integrovaná podpora LINQ pro.net a Native Queries, dále podporují Query By Example a SODA Query API. (Versant Corporation nedatováno) Databáze je vhodná i pro středně velké projekty a v embedded verzi ji ocení především začátečníci, pro které je dostupný také podrobný tutoriál. Nabízí IDE plug-in pro vývojové prostředí Eclipse a Microsoft VisualStudio. Nevýhodou však je niţší rychlost při dotazování typu Native Queries a nedostatečná podpora pro práci se soubory (především textovými). (Db4o nedatováno) Tuto databázi vyuţívají pro své projekty například firmy Seagate Technologies, Boeing, IBM, Intel a další. (Versant Corporation nedatováno) Caché Caché je úspěšná multiplatformní databáze od společnosti InterSystems určená především pro webové aplikace a aplikace typu klient-server. Propagována je především její rychlost při zpracovávání SQL, kdy prý dosahuje aţ 5x lepších výsledků neţ relační databáze. Společnost navíc garantuje vrácení peněz za licence v případě nespokojenosti s jejich produktech (platí rok po zakoupení licencí). Nejnovější verzí je Caché (InterSystems Corporation nedatováno) Tato platforma zaloţená na standardu ODMG umoţňuje vyvíjet jak aplikace zaloţené na objektovém přístupu, tak pouţívat zaţité postupy ze světa relačních databází. Při tom všem navíc nabízí stabilitu, rozšiřitelnost a bezpečnost v podobě přístupových práv, rolí a šifrování dat. (Kocan, Databáze dneška popatnácté nedatováno) Mezi společnosti, které vyuţívají databázi Caché, patří například IKEM, IBM a Chess Logistics Technology. (InterSystems Corporation nedatováno) Versant Object Database Multiplatformní objektovou databázi Versant vyvíjí společnost Versant Corporation. Aktuální verze je Versant Jedná se o komerční produkt, nikoliv o open source databázi jako db4o (také vyvíjenou společností Versant Corporation). Primárně podporuje jazyky C++, Java a.net a lze ji pořídit jako embedded databázi.

40 Základní funkčnosti rozšiřuje mimo jiné o řízení ţivotního cyklu objektu, vlastní dotazovací jazyk VQL podpobný SQL-92, multithreading a podporu JDO. (Versant Corporation nedatováno) Objectivity/DB Aktuální verzí je Objectivity/DB 10.2, komerční multiplatformní ODBMS od společnosti Objectivity Inc. Zdarma je poskytována pouze zkušební verze trial na 60 dní, je tedy vhodná spíše pro komerční vyuţití. Nabízena je jak ve verzi 32bit tak 64bit pro všechny platformy. Má široký výběr API - pro C++, Javu, Python, Smalltalk a obecný ODBC. Pro.NET technologie nabízí integrovanou podporu LINQ. (Objectivity, Inc. nedatováno) Objectivity/DB pouţívají společnosti Siemens, Ericsson a další. (Objectivity, Inc. nedatováno) GemStone/S GemStone/S je multiplatformní objektová databáze vyvíjená od poloviny 80. let (původně jako rozšíření jazyka Smalltalk) společností GemStone Systems. Obsahuje rozhraní pro jazyky Smalltalk, Java, C a C++. (Merunka 2008) Pro svou speciální verzi dotazovacího jazyka Smalltalk DB tuto databázi ocení především příznivci tohoto čistě objektového jazyka. Aktuální verze GemStone/S 6.6 nabízí pesimistické i optimistické řízení transakcí, připojitelnost na externí zdroj dat přes rozhraní pro relační databáze podle standardu SQL, správu přístupových práv a další. Stejně jako jiné databázové systémy nabízí Gemstone/S bezplatnou verzi, avšak pouze pro operační systémy Linux a s omezením na jeden procesor, 4GB dat a 1GB RAM. (Merunka 2008) Tuto databázi vyuţívají pro své projekty například společnosti Orient Overseas Container Line (OOCL) a Navigant International/Northwest. (GemStone Systems nedatováno) VelocityDB Tento nově vznikající (od roku 2011) objektově orientovaný databázový systém je určen pro jazyk C#.NET. Lze ho tedy spustit v OS Windows 7, případně ve frameworku Mono. Aktuální verze je zdarma nabízena pouze jako trial verze, která ale není hardwarově limitována. Kromě distribuované verze je k dispozici také embedded verze. (VelocityDB nedatováno) Zatím nelze mluvit o přínosné dokumentaci, natoţ pak tutoriálech a podpůrné komunitě. Na druhou stranu je však potřeba zdůraznit, ţe za pouhý rok vývoje tato databáze splňuje poţadavky pro nasazení nejen u malých projektů. Kromě základních funkčností nabízí komprese, šifrování, funkci automatického zotavení, integraci s Windows Authentication, podporu jazyka LINQ a další doplňky. (VelocityDB nedatováno)

41 PRAKTICKÁ UKÁZKA RDBMS A ODBMS V této kapitole si na příkladu fiktivní společnosti Bluedy+ Holding, a. s. ukáţeme práci s relačním i objektovým přístupem v praxi. Nejprve si stručně představíme řešenou úlohu a vybereme databázové systémy, se kterými budeme pracovat. Následně navrhneme perzistentní (datovou) vrstvu, kterou se pokusíme implementovat ve vybraných databázích. 5.1 Řešený problém Cílem je navrhnout jednoduchý databázový model pro fiktivní firmu Bluedy+ Holding, a. s., která se profiluje v oblasti stavebnictví převáţně na zateplování panelových a rodinných domů a výstavbu pasivních a nízkoenergetických budov. Firma Bluedy+ Holding, a. s. má sídlo v Praze, kde zaměstnává cca 100 lidí na různých pozicích (management, obchod, apod.). Dále má tři dceřinné společnosti: 1. BluedyStav společnost zajišťující všechny stavitelské práce. Tato společnost dodává všechny potřebné lidské zdroje. Zaměstnává přibliţně 200 lidí a sídlí v Ústí nad Labem. 2. BluedyMat společnost zajišťující potřebné materiály. Tato společnost dodává všechny potřebné materiální zdroje a to primárně společnosti BluedyStav. Zaměstnává přibliţně 50 lidí a sídlí v Mostě. 3. BluedyFin společnost zajišťující účetnictví a další podpůrné sluţby celé firmě Bluedy+ Holding, a. s. Zaměstnává přibliţně 30 lidí a sídlí v Teplicích. Firma momentálně plánuje otevření nových poboček na Moravě a v Německu. Při návrhu databáze je proto potřeba počítat s moţností rozšíření aţ o 100% v následujících dvou letech. Kaţdý zaměstnanec holdingu získává sluţební výhody, které se řídí jistými pravidly. Získání těchto výhod závisí na individuálním posouzení, dále se přihlíţí na společnost, ve které zaměstnanec pracuje, na uzavřené smlouvě a také na době, po jakou zaměstnanec ve firmě pracuje. Základní prehled nabízených benefitů zobrazuje následující tabulka.

42 Tabulka 4: Zaměstnanecké výhody Bludy+ Holdingu, a. s. a dceřinných společností Bluedy+ Holding, a. s. BluedyStav BluedyMat, BluedyFin < 2 měsíce Notebook, Mobil, Stravenky Stravenky Stravenky 2 6 měsíců Automobil Mobil Mobil 6 12 měsíců Penzijní připojištění Penzijní připojištění Penzijní připojištění > 12 měsíců ipad2, Ţivotní pojištění Ţivotní pojištění ipad2 Zdroj: Vlastní zpracování Tento prehled není striktní, zaměstnavatelé se ho nemusí drţet. Je ale třeba na aplikační vrstvě vyřešit notifikace pro případ, ţe zaměstnavatel udělí výhodu mimo jeho rozsah. Řízení projektů znázorňuje obrázek 24: Business model společnosti Bluedy+ Holding, a. s. Všichni zaměstnanci jsou obsazováni do projektů a za kaţdý projekt je kompetentní jedna osoba z Bluedy+ Holdingu, a. s. Manaţerem/obchodníkem se zaměstnanec stává pouze na dobu řešení projektu, poté je přeřazen opět do zaměstnanců Bluedy+ Holdingu, a. s., odkud můţe být najmut jako manaţer nového projektu. Jeden zaměstnanec můţe současně pracovat na více projektech najednou. Kaţdý projekt patří právě jednomu zákazníkovi. O zákaznících se uchovávají základní kontaktní údaje, navíc aţ dvě kontaktní osoby. U kaţdého zákazníka se dají dohledat všechny námi aktuálně i v minulosti zpravované zakázky. Obrázek 24: Business model společnosti Bluedy+ Holding, a. s. Zdroj: Vlastní zpracování v Microsoft Visio 2010

43 Výběr databází Pro účely porovnání objektového a relačního přístupu vyuţijeme databáze, které jsou dostupné zdarma, ideálně pak bez hardwarových a jiných limitů. Z relačních databází tak přichází v úvahu open source databáze z tzv. velké trojky Firebird, MySQL, PostgreSQL. Pro výbornou dokumentaci a podpůrnou komunitou volím relační databázi PostgreSQL. Pro svou ebmedded verzi pro jazyk C# a propracovanou dokumentaci včetně tutoriálů je pro naši aplikaci vhodná objektová databáze db4o. 5.3 Návrh datové vrstvy V této kapitole provedeme analýzu poţadavků na perzistentní vrstvu aplikace a navrhneme řešení této vrstvy. Ukáţeme si také rozdílné metody a přístupy při návrhu datové vrstvy pro relační databáze a pro objektové databáze. Pro modelování diagramů existuje několik různých notací. Ve všech příkladech níţe je pouţita notace podle standardu UML, která se pouţívá nejen pro návrh datové vrstvy, ale také při objektové analýze a návrhu celého IS Relační návrh Typicky se při návrhu RDBMS postupuje takzvaným stylem shora dolů, kdy postupnou transformací, začínající u business zadání, vznikají tři modely lišící se abstrakcí pohledu na datovou vrstvu. Z business zadání nejprve vzniká konceptuální model, jeho zpřesněním logický model a nakonec platformně specifický fyzický model. Konceptuální model znázorňuje základní objekty (entity) a vztahy mezi nimi včetně multiplicit. Popisuje data statická, nezabývá se operacemi, které budou s daty probíhat. Můţe nabývat více podob, v příkladech je pouţit E-R model s UML notací.

44 Obrázek 25: Konceptuální model relační databáze Zdroj: Vlastní zpracování v Enterprise Architect 8.0 Konceptuální model na výše lze popsat následujícími body: 1. Společnost tedy nabízí 0 aţ N zaměstnaneckých výhod, zaměstnává jednoho aţ N zaměstnanců a získává zákazníky. 2. Speciálním typem zaměstnance je manaţer/obchodník (vztah generalizace), který řídí vţdy jeden tým. Nemá-li manaţer projektový tým, který by řídil, stává se z něj zaměstnanec Bluedy+ Holdingu, a. s.. Kaţdý zaměstnanec můţe vyuţívat 0 aţ N zaměstnaneckých výhod. 3. Tým pracuje vţdy na jedné zakázce, tedy pro kaţdou zakázku se sestavuje nový tým s novým označením týmu a novým manaţerem. 4. Zakázka je zadávána zákazníkem, přičemţ kaţdý zákazník můţe zadat více zakázek. Transformací konceptuálního modelu na model logický získáme konkrétní tabulky, které budou v relační databázi implementované, zatím se však jedná o platformně nezávislý model. Transformace má několik kroků. Nejprve je potřeba doplnit entitám konceptuálního modelu atributy. Vícenásobné atributy (například telefonní číslo) je potřeba nahradit pevným počtem opakování nebo je extrahovat do nové tabulky s vazbou 1:N. Nakonec je potřeba rozvrhnout tabulky propojené vazbou generalizace/specializace, tedy spojit je do jedné tabulky, nebo rozdělit atributy a přidat vhodnou vazbu, a nebo tabulky zcela oddělit. (Conolly, Begg a Holowczak 2009) Logický model tedy znázorňuje základní implementované atributy relačních tabulek a jejich integritní omezení. Vše je stále platformově nespecifické. Na obrázku níţe je ukázáno, jak by logický model pro Bluedy+ Holding, a. s. mohl vypadat. U kaţdé tabulky byly doplněny atributy, přičemţ podtrţený atribut značí omezení na jedinečnost (unique)

45 a znak hvězdičky omezení na povinnou hodnotu (not null). PK je označení primárního klíče, FK značí cizí klíč. Datové typy jsou zatím platformně nezávislé a rozlišují pouze text, dlouhý text (poznámka) a číslo. Vazba generalizace/specializace z konceptuálního modelu byla nahrazena vazbou tak, ţe kaţdý manaţer/obchodník musí odkazovat na právě jednoho zaměstnance, jemuţ je rozšířením a kaţdý zaměstnanec můţe odkazovat aţ na jednoho manaţera/obchodníka jako vedoucího týmu. Obrázek 26: Logický model relační databáze Zdroj: Vlastní zpracování v Enterprise Architect 8.0 Posledním krokem v návrhu RDBMS je rozšíření logického modelu na fyzický model, který je jiţ platformně specifický. K tomu je v případě návrhu pro Bluedy+ Holding, a. s. potřeba provést dvě hlavní změny. 1. Nahradit datové typy tak, aby odpovídaly databázi PostgreSQL. 2. Upravit vazby M:N pomocí vazební tabulky na vazby 1:N.

46 Výsledný fyzický model pro databázi PostgreSQL je zobrazen na následujícím obrázku. Obrázek 27: Fyzický model relační databáze Zdroj: Vlastní zpracování v Enterprise Architect 8.0 Fyzický model je doslovnou předlohou pro výslednou implementaci relační databáze, proto je obvykle dodáván jiţ v anglickém jazyce. Fyzický model databáze Bluedy+ Holding, a. s. je značně zjednodušený a nevystihuje všechny moţnosti PostgreSQL ani moţnosti relačních databází obecně. Pro účel srovnání s objektovým modelem (více v následující kapitole) je však dostačující Objektový návrh Pro návrh objektové databáze existuje několik metodik a doporučení, zatím však ţádné řešení není všeobecně přijato. Obvykle se při návrhu objektové databáze vychází z třídního diagramu samotné aplikace a návrh je podřízen zkušenostem s objektově orientovanými programovacími jazyky. Je možné převzít relační techniky, ale potom dostaneme jen relační databázi v objektovém prostředí a nevyužijeme všechny vlastnosti, které ODM má. Jinou možností je převzít schéma objektů a tříd tak, jak jsou navrženy v aplikaci, která má s databází pracovat. To už je lepší, protože právě proto byl objektový datový model vyvinut. Jenomže struktura objektů výhodná pro aplikaci může komplikovat jejich efektivní databázové zpracování. (Merunka 2008)

47 Návrh objektové databáze společnosti Bluedy+ Holding, a. s. popsaný v této kapitole vychází částečně z metodiky BORM (Business Object Relation Modeling). Jedná se o původně českou metodiku orientovanou na podporu vývoje systémů zaloţených na čistě objektově orientovaných programovacích jazycích a nerelačních objektových databázích. (Merunka 2008) U objektové analýzy budeme postupovat podle metodiky BORM, která pro business analýzu a návrh aplikace vyuţívá tři různé objektové modely business model, konceptuální model a softwarový model. Během transformace modelů se mění také význam pojmu objekt. Zpočátku se jedná o objekty reálného světa tak, jak je chápe zadavatel. V konceptuálním modelu jiţ obsahují základní pojmy objektově orientovaného paradigmatu, jako například polymorfismus, zapouzdření a podobně. V závěrečné fázi modelování se pracuje s platformně závislými objekty, které obsahují pojmy přímo odpovídající konstrukcím z objektově orientovaných programovacích jazyků. (Merunka 2008) Business model společnosti Bluedy+ Holding, a. s. by mohl vypadat takto: Obrázek 28: Business model objektové databáze Zdroj: Vlastní zpracování v Microsoft Visio 2010 Podle metodiky BORM se při transformaci na konceptuální model vyberou z business modelu ty objekty a vazby, které mají smysl pro datovou vrstvu aplikace. Navíc je doplněn o atributy a metody objektů, které jsou zatím platformně nezávislé. Výsledný konceptuální model s multiplicitami je zobrazen na obrázku níţe.

48 Obrázek 29: Konceptuální model objektové databáze Zdroj: Vlastní zpracování v Architect Enterprise 8.0 V ideálním případě se od sebe konceptuální a softwarový model liší pouze datovými typy, které jsou u softwarového modelu platformně specifické. Takové případy jsou ale spíše výjimečné, neboť téměř vţdy zákazník pouţívá nějakou databázi nebo nástroj pro uchování elektronických dat a návrh databáze se musí přizpůsobit formátu těchto jiţ existujících záznamů, případně databázi, se kterou bude nová databáze propojena. V takovém ideálním případě bude softwarový model databáze Bluedy+ Holding, a. s. oproti konceptuálnímu modelu zobrazovat navíc pouze datové typy atributů, přičemţ se jedná o platformně specifický model přizpůsobený objektově orientovanému programovacímu jazyku C#. Obrázek 30: Softwarový model objektové databáze Zdroj: Vlastní zpracování v Enterprise Architect 8.0

49 Softwarový model je, stejně jako fyzický model u RDBMS, přímou předlohou pro implementaci databáze, proto je návrh modelován v anglickém jazyce. Oproti relačnímu návrhu není potřeba nahrazovat vazbu generalizace/specializace ani vazby typu M:N. Dalším rozdílem, kromě samotného přístupu k návrhu databáze, pak je absence definic primárních a cizích klíčů u objektového návrhu (princip vazeb u objektových databází je popsán v kapitole 4. Objektové databáze) a propojení se samotným programovacím jazykem aplikace datové typy odpovídají objektově orientovanému programovacímu jazyku C# a není nutné znát jako v případě RDBMS jiné datové typy. 5.4 Implementace Implementace v PostgreSQL Veškerý DDL kód pro vytvoření tabulek databáze, včetně atributů, omezení, vazeb a základních indexů, byl vygenerován CASE nástrojem Enterprise Architect 8.0, ve kterém byl vytvořen fyzický model (viz obrázek 27). Kompletní kód je k nahlédnutí na přiloţeném CD (platí pro všechny kódy vytvořené v rámci praktické části této práce), pro ukázku uvádím kód pro vytvoření relace Client. Obrázek 31: Create table Client Zdroj: Generováno z CASE nástroje Enterprise Architect 8.0 Pro relaci Client byla vytvořena sekvence Client_id_client_seq, která umoţňuje částečně automatizovanou správu primárního klíče id_client. Ten je moţné při vkládání nového záznamu do relace nedefinovat a pak je doplněn automaticky sekvencí, která je chová stejně jako autoinkrementační datový typ serial. Pro vytvoření testovacích dat byl pouţit nástroj pro generování textů dostupný na internetové adrese a jednoduchý generátor vlastního zpracování (není předmětem této práce a proto není součástí přiloţených materiálů).

50 Princip vkládání dat do relační databáze byl představen jiţ v kapitole Data Manipulation Language (DML). Pro ukázku proto přikládám pouze část kódu pro naplnění relace Client. Obrázek 32: Insert into table Client Zdroj: Vlastní zpracování Pro přiblíţení práce s daty uloţenými v relační databázi bylo vytvořeno několik příkazů na získávání, úpravu a mazání dat. Stejné příkazy byly pro moţnost porovnání práce s daty implementovány také v objektové databázi (viz kapitola Implementace v db4o). První dotaz s projekcí atributu surname zobrazí abecedně seřazené všechny zaměstnance, jejichţ příjmení začíná písmenem A. Obrázek 33: Vyhledávání zaměstnanců podle příjmení (psqů) Zdroj: Vlastní zpracování v konzoli psql Druhý dotaz zobrazí ke kaţdé společnosti počet zaměstnanců (sloupec count) a celkovou sumu jejich platů (sloupec sum). Pro správné pouţití agregačních funkcní count() a sum() je nutné doplnit klauzuli GROUP BY, která vymezí záznamy, ze kterých se bude součet/suma počítat.

51 Obrázek 34: Získání informací o společnostech (psql) Zdroj: Vlastní zpracování v konzoli psql Třetí dotaz vyhledá všechny zaměstnance, kteří nejsou součástí ţádného týmu, a z těch vypíše deset zaměstnanců s nejniţším platem. Obrázek 35: Vyhledání volných pracovních sil (psql) Zdroj: Vlastní zpracování v konzoli psql Následující ukázka znázorňuje transakční zpracování zvýšení mezd o 10 % těm zaměstnancům, kteří pracují alespoň v jednom týmu nebo jsou manaţery alespoň jednoho týmu, a kteří mají plat niţší neţ 310. Obrázek 36: Transakce pro zvýšení mezd (psql)

52 Zdroj: Vlastní zpracování v konzoli psql Poslední ukázka zobrazuje jednu z moţností, jak mazat záznamy ze vzájemně propojených tabulek. Další moţností pak v PostgreSQL je nastavení omezení DELETE CASCADE na cizí klíče tabulek. Pak se smazáním záznamu s odkazovaným primárním klíčem smaţou také záznamy, které na tento klíč odkazovaly. Obrázek 37: Smazání benefitu (psql) Zdroj: Vlastní zpracování v konzoli psql Všechny výše uvedené příkazy by měly být s minimálními úpravami přenositelné i na jiné RDBMS, které podporují SQL. To je výhoda, kterou ODBMS nenabízejí a v dohledné době podle mého názoru ani nabízet nebudou. Výhody ODBMS představuje následující kapitola Implementace v db4o Na rozdíl od relačních databází, kde se v databázi vytváří struktura relací, se v objektových databázích vyuţívá těsného propojení databáze s programovacím jazykem a jeho vývojovým prostředím. Implementace je tak postavená na definici tříd a jejích atributů. Stejně tak je to u databáze db4o, která navíc podporuje tvorbu takzvaných Native Queries (NQ) (db4o Tutorial nedatováno), neboli tvorbu dotazů v nativním programovacím jazyce (zde C#). Pro implementaci objektové databáze, včetně metod pro práci s objekty uloţenými v databázi, byl vyuţit program Microsoft Visual Studio Co zůstává stejné pro relační i objektové databáze je moţnost generování hrubého zdrojového kódu z CASE nástrojů (zde pouţit Enterprise Architect 8.0). Stejně jako byl pro relační databázi vygenerován DDL kód, byl vygenerován i kód v jazyce C# pro vytvoření struktury tříd odpovídající softwarovému modelu objektové databáze. Pro ukázku uvádím kód třídy Team, jiţ doplněný o konstruktor třídy.

53 Obrázek 38: Třída Team Zdroj: Generováno z CASE nástroje Enterprise Architect 8.0, upraveno v MS Visual Studio 2010 Pro připojení databáze k projektu psaném v prostředí Microsoft Visual Studio 2010 stačí připojit knihovnu Db4object.Db4o.dll do referencí projektu. Pro samotnou práci s databází byla v projektu vytvořena nová třída ObjectDatabase, jejíţ metody zajišťují vytvoření objektů na základě dat z přiloţených textových souborů a následné uloţení objektů do databáze pomocí metody Store(object) volané nad databází. Jedna z metod této třídy je znázorněna na obrázku níţe. Vytváří instance třídy Company, která reprezentuje klienta společnosti. Informace o klientech (neboli atributy instance) jsou načítány ze zdrojového souboru, ve kterém je kaţdý klient uloţen na jednom řádku ve stejném formátu, který je zobrazen na obrázku 32: Insert into table Client.

54 Obrázek 39: Metoda ObjectDatabase.InsertCompany() Zdroj: Vlastní zpracování v MS Visual Studio 2010 Následuje ukázka několika metod pro získávání uloţených dat z databáze, jejich úpravy a mazání. Jak bylo předesláno jiţ v úvodu kapitoly, pro dotazování se vyuţívá především NQ (kromě NQ lze vyuţít dotazy typu Query by Example a SODA Query API (db4o Tutorial nedatováno)) a metody pro vyhledávání objektů jsou tak postavené na programovacím jazyce C#. Všechny příklady níţe odpovídají příkladům z kapitoly Implementace v PostgreSQL, aby lépe demonstrovaly rozdíly v přístupu k datům u relační a objektové databáze. U vybraných metod byl navíc přidán výpis počtu nalezených záznamů, který konzole psql zobrazuje automaticky po kaţdém dotazu. První metoda vypíše do konzole abecedně seřazená příjmení všech zaměstnanců, jejichţ příjmení začíná řetězcem example (v příkladu platí: example = A ).

55 Obrázek 40: Vyhledání zaměstnanců podle příjmení (db4o) Zdroj: Vlastní zpracování v MS Visual Studio 2010 Metoda Companies_Info na obrázku níţe vypíše do konzole postupně název společnosti, počet jejích zaměstananců a celkové náklady na platy zaměstnanců. Obrázek 41: Získání informací o společnostech (db4o) Zdroj: Vlastní zpracování v MS Visual Studio 2010 Třetí metoda najde všechny zaměstnance, kteří nepracují v ţádném týmu, seřadí je dle platu a vypíše deset nejlevnějších volných pracovních sil.

56 Obrázek 42: Vyhledání volných pracovních sil (db4o) Zdroj: Vlastní zpracování v MS Visual Studio 2010 Následující metoda na příkladu zvyšování platů zobrazuje pouţití transakcí v db4o. Transakce v této databáze vzniká při kaţdém přístupu do databáze a jejím zavřením se implicitně potvrzuje. V metodě RaiseSalary je potvrzení vynuceno po zvýšení platů všech zaměstnanců, kteří pracují alespoň v jednom týmu nebo alespoň jeden tým vedou a kteří mají plat niţší neţ 310. Obrázek 43: Transakce pro zvýšení mezd (db4o) Zdroj: Vlastní zpracování v MS Visual Studio 2010

Databázové systémy trocha teorie

Databázové systémy trocha teorie Databázové systémy trocha teorie Základní pojmy Historie vývoje zpracování dat: 50. Léta vše v programu nevýhody poměrně jasné Aplikace1 alg.1 Aplikace2 alg.2 typy1 data1 typy2 data2 vytvoření systémů

Více

Databázové systémy úvod

Databázové systémy úvod Databázové systémy úvod Michal Valenta Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze c Michal Valenta, 2016 BI-DBS, LS 2015/16 https://edux.fit.cvut.cz/courses/bi-dbs/

Více

Databáze 2013/2014. Konceptuální model DB. RNDr. David Hoksza, Ph.D.

Databáze 2013/2014. Konceptuální model DB. RNDr. David Hoksza, Ph.D. Databáze 2013/2014 Konceptuální model DB RNDr. David Hoksza, Ph.D. http://siret.cz/hoksza Osnova Organizace Stručný úvod do DB a DB modelování Konceptuální modelování Cvičení - ER modelování Náplň přednášky

Více

Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz

Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Databázové systémy Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Vývoj databázových systémů Ukládání dat Aktualizace dat Vyhledávání dat Třídění dat Výpočty a agregace 60.-70. léta Program Komunikace Výpočty

Více

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen 18.5.1974

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen 18.5.1974 základní informace Databázové systémy Úvodní přednáška předměty: KI/DSY (B1801 Informatika - dvouoborová) KI/P502 (B1802 Aplikovaná informatika) ukončení: Zápočet + Zkouška / 5kb ki.ujep.cz termínovník,

Více

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev Úvod do databází Modelování v řízení Ing. Petr Kalčev Co je databáze? Množina záznamů a souborů, které jsou organizovány za určitým účelem. Jaké má mít přínosy? Rychlost Spolehlivost Přesnost Bezpečnost

Více

8.2 Používání a tvorba databází

8.2 Používání a tvorba databází 8.2 Používání a tvorba databází Slide 1 8.2.1 Základní pojmy z oblasti relačních databází Slide 2 Databáze ~ Evidence lidí peněz věcí... výběry, výpisy, početní úkony Slide 3 Pojmy tabulka, pole, záznam

Více

Databáze II. 1. přednáška. Helena Palovská palovska@vse.cz

Databáze II. 1. přednáška. Helena Palovská palovska@vse.cz Databáze II 1. přednáška Helena Palovská palovska@vse.cz Program přednášky Úvod Třívrstvá architektura a O-R mapování Zabezpečení dat Role a přístupová práva Úvod Co je databáze Mnoho dat Organizovaných

Více

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE 2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE Studijní cíl Tento blok je věnován základní syntaxi příkazu SELECT, pojmům projekce a restrikce. Stručně zde budou představeny příkazy

Více

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc. 1 Kurz Databáze Zpracování dat Doc. Ing. Radim Farana, CSc. Obsah Druhy dotazů, tvorba dotazu, prostředí QBE (Query by Example). Realizace základních relačních operací selekce, projekce a spojení. Agregace

Více

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče. Primární a cizí klíč Kandidát primárního klíče (KPK) Je taková množina atributů, která splňuje podmínky: Unikátnosti Minimálnosti (neredukovatelnosti) Primární klíč (Primary Key - PK) Je právě jedna množina

Více

Úvod do databázových systémů. Ing. Jan Šudřich

Úvod do databázových systémů. Ing. Jan Šudřich Ing. Jan Šudřich jan.sudrich@mail.vsfs.cz 1. Cíl předmětu: Úvod do databázových systémů Poskytnutí informací o vývoji databázových systémů Seznámení s nejčastějšími databázovými systémy Vysvětlení používaných

Více

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů - 1.1 - Kapitola 1: Úvod Účel databázových systémů Pohled na data Modely dat Jazyk pro definici dat (Data Definition Language; DDL) Jazyk pro manipulaci s daty (Data Manipulation Language; DML) Správa

Více

Databáze SQL SELECT. David Hoksza http://siret.cz/hoksza

Databáze SQL SELECT. David Hoksza http://siret.cz/hoksza Databáze SQL SELECT David Hoksza http://siret.cz/hoksza Osnova Úvod do SQL Základní dotazování v SQL Cvičení základní dotazování v SQL Structured Query Language (SQL) SQL napodobuje jednoduché anglické

Více

Databázové systémy úvod

Databázové systémy úvod Databázové systémy úvod Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2011 BI-DBS, ZS 2011/12 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal

Více

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel Obsah přednášky Databázové systémy Konceptuální model databáze Codd a návrh relační databáze fáze návrhu pojem konceptuální model základní pojmy entity, relace, atributy, IO kardinalita, 2 historie: RDBMS

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 8 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování Entita Entitní typ

Více

RELAČNÍ DATABÁZOVÉ SYSTÉMY

RELAČNÍ DATABÁZOVÉ SYSTÉMY RELAČNÍ DATABÁZOVÉ SYSTÉMY VÝPIS KONTROLNÍCH OTÁZEK S ODPOVĚDMI: Základní pojmy databázové technologie: 1. Uveďte základní aspekty pro vymezení jednotlivých přístupů ke zpracování hromadných dat: Pro vymezení

Více

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Základy informatiky. 08 Databázové systémy. Daniela Szturcová Základy informatiky 08 Databázové systémy Daniela Szturcová Problém zpracování dat Důvodem je potřeba zpracovat velké množství dat - evidovat údaje o nějaké skutečnosti. o skupině lidí (zaměstnanců, studentů,

Více

Databázové systémy úvod

Databázové systémy úvod Databázové systémy úvod Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2012/13 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal

Více

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů. Modely datové Existují různé úrovně pohledu na data. Nejvyšší úroveň je úroveň, která zachycuje pouze vztahy a struktury dat samotných. Konceptuální model - E-R model. Další úrovní je logická úroveň Databázové

Více

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal Databázové systémy - SQL * definice dat * aktualizace * pohledy Tomáš Skopal Osnova přednášky definice dat definice (schémat) tabulek a integritních omezení CREATE TABLE změna definice schématu ALTER TABLE

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází 1 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Požadavky kreditového systému. Relační datový model, relace, atributy,

Více

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23 Stručný obsah 1. Stručný úvod do relačních databází 13 2. Platforma 10g 23 3. Instalace, první přihlášení, start a zastavení databázového serveru 33 4. Nástroje pro administraci a práci s daty 69 5. Úvod

Více

Databázové a informační systémy

Databázové a informační systémy Databázové a informační systémy 1. Teorie normálních forem Pojem normálních forem se používá ve spojitosti s dobře navrženými tabulkami. Správně vytvořené tabulky splňují 4 základní normální formy, které

Více

Databázové systémy. Cvičení 6: SQL

Databázové systémy. Cvičení 6: SQL Databázové systémy Cvičení 6: SQL Co je SQL? SQL = Structured Query Language SQL je standardním (ANSI, ISO) textovým počítačovým jazykem SQL umožňuje jednoduchým způsobem přistupovat k datům v databázi

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování 4 fáze vytváření

Více

Databáze I. 5. přednáška. Helena Palovská

Databáze I. 5. přednáška. Helena Palovská Databáze I 5. přednáška Helena Palovská palovska@vse.cz SQL jazyk definice dat - - DDL (data definition language) Základní databáze, schemata, tabulky, indexy, constraints, views DATA Databáze/schéma

Více

Informační systémy ve zdravotnictví. 6. cvičení

Informační systémy ve zdravotnictví. 6. cvičení Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Informační systémy ve zdravotnictví 6. cvičení Ing. Petr Lukáš petr.lukas@nativa.cz Ostrava, 2014 Opakování Relace

Více

Jazyk SQL databáze SQLite. připravil ing. petr polách

Jazyk SQL databáze SQLite. připravil ing. petr polách Jazyk SQL databáze SQLite připravil ing. petr polách SQL - úvod Structured Query Language (strukturovaný dotazovací jazyk 70. léta min. století) Standardizovaný dotazovací jazyk používaný pro práci s daty

Více

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant Základy informatiky 06 Databázové systémy Kačmařík/Szturcová/Děrgel/Rapant Problém zpracování dat důvodem je potřeba zpracovat velké množství dat, evidovat údaje o nějaké skutečnosti: o skupině lidí (zaměstnanců,

Více

Použití databází na Webu

Použití databází na Webu 4IZ228 tvorba webových stránek a aplikací Jirka Kosek Poslední modifikace: $Date: 2010/11/18 11:33:52 $ Obsah Co nás čeká... 3 Architektura webových databázových aplikací... 4 K čemu se používají databázové

Více

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např. 2 přednáška 2 října 2012 10:32 Souborově orientované uchování dat Slabý HW Není možné uchovávat "velká data" - maximálně řádově jednotky MB Na každou úlohu samostatná aplikace, která má samostatná data

Více

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Autor: Číslo: Anotace: Inovace a zkvalitnění výuky prostřednictvím ICT Databáze Základní seznámení s MySQL

Více

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška Databázové systémy Datová integrita + základy relační algebry 4.přednáška Datová integrita Datová integrita = popisuje pravidla, pomocí nichž hotový db. systém zajistí, že skutečná fyzická data v něm uložená

Více

1 Úvod. J. Zendulka: Databázové systémy - 1 Úvod 1

1 Úvod. J. Zendulka: Databázové systémy - 1 Úvod 1 1 Úvod 1.1. Intuitivní vymezení pojmu databáze... 2 1.2. Historie vývoje zpracování dat... 6 1.3. Základní pojmy... 9 1.4. Abstrakce pohledu na data v databázi... 11 1.5. Datové modely... 13 1.6. Schéma

Více

DUM 12 téma: Příkazy pro tvorbu databáze

DUM 12 téma: Příkazy pro tvorbu databáze DUM 12 téma: Příkazy pro tvorbu databáze ze sady: 3 tematický okruh sady: III. Databáze ze šablony: 7 Kancelářský software určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie vzdělávací

Více

Databázové a informační systémy

Databázové a informační systémy Databázové a informační systémy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Jak ukládat a efektivně zpracovávat

Více

Ukázka knihy z internetového knihkupectví www.kosmas.cz

Ukázka knihy z internetového knihkupectví www.kosmas.cz Ukázka knihy z internetového knihkupectví www.kosmas.cz U k á z k a k n i h y z i n t e r n e t o v é h o k n i h k u p e c t v í w w w. k o s m a s. c z, U I D : K O S 1 8 1 1 4 5 Oracle průvodce správou,

Více

37. Indexování a optimalizace dotazů v relačních databázích, datové struktury, jejich výhody a nevýhody

37. Indexování a optimalizace dotazů v relačních databázích, datové struktury, jejich výhody a nevýhody 37. Indexování a optimalizace dotazů v relačních databázích, datové struktury, jejich výhody a nevýhody Využití databázových indexů Databázové indexy slouží ke zrychlení přístupu k datům a měly by se používat

Více

J. Zendulka: Databázové systémy - 1 Úvod Intuitivní vymezení pojmu databáze

J. Zendulka: Databázové systémy - 1 Úvod Intuitivní vymezení pojmu databáze 1 Úvod 1.1. Intuitivní vymezení pojmu databáze... 2 1.2. Historie vývoje zpracování dat... 6 1.3. Základní pojmy... 9 1.4. Abstrakce pohledu na data v databázi... 11 1.5. Datové modely... 13 1.6. Schéma

Více

Michal Krátký, Miroslav Beneš

Michal Krátký, Miroslav Beneš Databázové a informační systémy Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava 5.12.2005 2005 Michal Krátký, Miroslav Beneš Databázové a informační systémy 1/24 Obsah

Více

Úvod do databázových systémů. Lekce 1

Úvod do databázových systémů. Lekce 1 Úvod do databázových systémů Lekce 1 Sylabus Základní pojmy DBS Životní cyklus DB, normalizace dat Modelování DBS, ER diagram Logická úroveň modelu, relační model Relační algebra a relační kalkul Funkční

Více

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013 OBJECT DEFINITION LANGUAGE Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013 ODL a OQL ODL Objektové Object Definition Language popis objektového schéma SQL DDL Relační Data Definition Language příkazy CREATE,

Více

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Šablona 32 VY_32_INOVACE_038.ICT.34 Tvorba webových stránek SQL stručné minimum OA a JŠ Jihlava, VY_32_INOVACE_038.ICT.34 Číslo

Více

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph) Marketingová komunikace Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph) 2. soustředění Mgr. Pavel Vávra 9103@mail.vsfs.cz http://vavra.webzdarma.cz/home/index.htm Minulé soustředění úvod

Více

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky Otázka 20 A7B36DBS Zadání... 1 Slovníček pojmů... 1 Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky... 1 Zadání Relační DB struktury sloužící k optimalizaci

Více

Databáze I. 1. přednáška. Helena Palovská

Databáze I. 1. přednáška. Helena Palovská Databáze I 1. přednáška Helena Palovská palovska@vse.cz Co je databáze Mnoho dat Organizovaných používá se model uspořádání Řízený přístup k datům přijímá požadavky v jazyce modelu umožňuje sdílení dat

Více

Databázové a informační systémy Jana Šarmanová

Databázové a informační systémy Jana Šarmanová Databázové a informační systémy Jana Šarmanová Obsah Úloha evidence údajů, způsoby evidování Databázové technologie datové modely, dotazovací jazyky. Informační systémy Datové sklady Metody analýzy dat

Více

Operátory ROLLUP a CUBE

Operátory ROLLUP a CUBE Operátory ROLLUP a CUBE Dotazovací jazyky, 2009 Marek Polák Martin Chytil Osnova přednášky o Analýza dat o Agregační funkce o GROUP BY a jeho problémy o Speciální hodnotový typ ALL o Operátor CUBE o Operátor

Více

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS 7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13

Více

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS 7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13

Více

VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL

VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL Petr Štefan Václav Trunec, KP-sys, Čacké 155, Pardubice 1 Úvod Firma KP-SYS spol. s r. o. dodává na náš trh integrované

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL 4 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, datové typy, klauzule SELECT, WHERE, a ORDER BY. Doporučená

Více

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata Databáze Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu Bedřich Košata K čemu jsou databáze Ukládání dat ve strukturované podobě Možnost ukládat velké množství dat

Více

TRANSFORMACE RELAČNÍHO DATOVÉHO MODELU NA OBJEKTOVÝ TRANSFORMATION OF RELATIONAL TO OBJECT DATA MODEL

TRANSFORMACE RELAČNÍHO DATOVÉHO MODELU NA OBJEKTOVÝ TRANSFORMATION OF RELATIONAL TO OBJECT DATA MODEL TRANSFORMACE RELAČNÍHO DATOVÉHO MODELU NA OBJEKTOVÝ TRANSFORMATION OF RELATIONAL TO OBJECT DATA MODEL Vít Holub Anotace Článek poskytne čtenáři základní přehled v datových modelech, ukáže výhody a nevýhody

Více

Databáze v MS ACCESS

Databáze v MS ACCESS 1 z 14 19.1.2014 18:43 Databáze v MS ACCESS Úvod do databází, návrh databáze, formuláře, dotazy, relace 1. Pojem databáze Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele,

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR): Mezi příkazy pro manipulaci s daty (DML) patří : 1. SELECT 2. ALTER 3. DELETE 4. REVOKE Jaké vlastnosti má identifikující relace: 1. Je relace, která se využívá pouze v případě modelovaní odvozených entit

Více

Geografické informační systémy p. 1

Geografické informační systémy p. 1 Geografické informační systémy Slajdy pro předmět GIS Martin Hrubý hrubym @ fit.vutbr.cz Vysoké učení technické v Brně Fakulta informačních technologií, Božetěchova 2, 61266 Brno akademický rok 2004/05

Více

Databázové systémy a SQL

Databázové systémy a SQL Databázové systémy a SQL Daniel Klimeš Autor, Název akce 1 About me Daniel Klimeš Vzdělání: Obecná biologie PGS: onkologie Specializace: klinické databáze Databáze ORACLE klimes@iba.muni.cz Kotlářská 2,

Více

Analýza a modelování dat. Přednáška 5

Analýza a modelování dat. Přednáška 5 Analýza a modelování dat Přednáška 5 Objektově orientované databáze Relační databáze data uložena v logicky provázaných tabulkách přes cizí klíče výhoda jednoduchost, intuitivnost, naplnění myšlenky oddělení

Více

POKROČILÉ POUŽITÍ DATABÁZÍ

POKROČILÉ POUŽITÍ DATABÁZÍ POKROČILÉ POUŽITÍ DATABÁZÍ Barbora Tesařová Cíle kurzu Po ukončení tohoto kurzu budete schopni pochopit podstatu koncepce databází, navrhnout relační databázi s využitím pokročilých metod, navrhovat a

Více

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Autor: Číslo: Anotace: Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní

Více

1. Webový server, instalace PHP a MySQL 13

1. Webový server, instalace PHP a MySQL 13 Úvod 11 1. Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS Relační databázový model Databázové (datové) modely základní dělení klasické databázové modely relační databázový model relační databázový model Základní konstrukt - relace relace, schéma relace atribut,

Více

Databázové systémy I. 1. přednáška

Databázové systémy I. 1. přednáška Databázové systémy I. 1. přednáška Vyučující a cvičení St 13:00 15:50 Q09 Pavel Turčínek St 16:00 18:50 Q09 Oldřich Faldík Čt 10:00 12:50 Q09 Jan Turčínek Pá 7:00 9:50 Q08 Pavel Turčínek Pá 10:00 12:50

Více

Maturitní témata Školní rok: 2015/2016

Maturitní témata Školní rok: 2015/2016 Maturitní témata Školní rok: 2015/2016 Ředitel školy: Předmětová komise: Předseda předmětové komise: Předmět: PhDr. Karel Goš Informatika a výpočetní technika Mgr. Ivan Studnička Informatika a výpočetní

Více

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph) Marketingová komunikace Kombinované studium Skupina N9KMK3PH (vm3aph) 2. a 3. soustředění Mgr. Pavel Vávra 9103@mail.vsfs.cz http://vavra.webzdarma.cz/home/index.htm Co nás čeká: 2. soustředění 16.1.2009

Více

Databázové systémy Cvičení 5.2

Databázové systémy Cvičení 5.2 Databázové systémy Cvičení 5.2 SQL jako jazyk pro definici dat Detaily zápisu integritních omezení tabulek Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako

Více

Databázové systémy BIK-DBS

Databázové systémy BIK-DBS Databázové systémy BIK-DBS Ing. Ivan Halaška katedra softwarového inženýrství ČVUT FIT Thákurova 9, m.č. T9:311 ivan.halaska@fit.cvut.cz Stránka předmětu: https://edux.fit.cvut.cz/courses/bi-dbs/parttime/start

Více

Databázové systémy. Ing. Radek Holý

Databázové systémy. Ing. Radek Holý Databázové systémy Ing. Radek Holý holy@cvut.cz Literatura: Skripta: Jeřábek, Kaliková, Krčál, Krčálová, Kalika: Databázové systémy pro dopravní aplikace Vydavatelství ČVUT, 09/2010 Co je relační databáze?

Více

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou: Relační databáze Pojem databáze, druhy databází Databází se myslí uložiště dat. V době začátků využívání databází byly tyto členěny hlavně hierarchicky, případně síťově (rozšíření hierarchického modelu).

Více

KIV/ZIS cvičení 5. Tomáš Potužák

KIV/ZIS cvičení 5. Tomáš Potužák KIV/ZIS cvičení 5 Tomáš Potužák Úvod do SQL (1) SQL (Structured Query Language) je standardizovaný strukturovaný dotazovací jazyk pro práci s databází Veškeré operace v databázi se dají provádět pomocí

Více

S databázemi se v běžném životě setkáváme velmi často. Uvádíme běžné použití databází velkého rozsahu:

S databázemi se v běžném životě setkáváme velmi často. Uvádíme běžné použití databází velkého rozsahu: Úvod do databází Základní pojmy Databáze je množina záznamů, kterou shromažďujeme za nějakým konkrétním účelem. Databáze používáme zejména pro ukládání obsáhlých informací. Databázové systémy jsou k dispozici

Více

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi.

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi. Databáze Základní pojmy Pojem databáze označuje obecně souhrn informací, údajů, dat o nějakých objektech. Úkolem databáze je hlídat dodržení všech omezení a dále poskytovat data při operacích. Objekty

Více

04 - Databázové systémy

04 - Databázové systémy 04 - Databázové systémy Základní pojmy, principy, architektury Databáze (DB) je uspořádaná množina dat, se kterými můžeme dále pracovat. Správa databáze je realizována prostřednictvím Systému pro správu

Více

Nerelační databázové modely. Helena Palovská

Nerelační databázové modely. Helena Palovská Nerelační databázové modely Helena Palovská palovska@vse.cz Různé modely pro databázovou strukturu databázové modely 1960 SŘBD hierarchický, síťový relační 1970 1980 hierarchické, síťové relační objektový

Více

Analýza dat a modelování. Přednáška 3

Analýza dat a modelování. Přednáška 3 Analýza dat a modelování Přednáška 3 Hierarchický model Hierarchical Data Manipulation Language - HDML manipulace s daty (vyhledávání) pomocí příkazů HDML v hierarchickém SŘBD připomíná princip práce se

Více

Data v informačních systémech

Data v informačních systémech Data v informačních systémech Vladimíra Zádová, KIN 6. 5. 2015 Obsah přednášky informační systémy (IS) vztah dat a informačních systémů databáze, databázový systém základní dělení IS, trendy pojmy (terminologie)

Více

DATABÁZE, ATRIBUTY. SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 3.ročník

DATABÁZE, ATRIBUTY. SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 3.ročník SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 3.ročník DATABÁZE, ATRIBUTY historie databáze modely databází relační databáze SQL dotazy atributy Historie databází papírové kartotéky uspořádávání

Více

Databáze MS-Access. Obsah. Co je to databáze? Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová

Databáze MS-Access. Obsah. Co je to databáze? Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová Databáze MS-Access Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová Obsah Principy a možnosti databází. Uložení dat v databázi, formáty dat, pole, záznamy, tabulky, vazby mezi záznamy. Objekty databáze

Více

Hierarchický databázový model

Hierarchický databázový model 12. Základy relačních databází Když před desítkami let doktor E. F. Codd zavedl pojem relační databáze, pohlíželo se na tabulky jako na relace, se kterými se daly provádět různé operace. Z matematického

Více

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307 Stručný obsah část I Přehled jazyka SQL Kapitola 1: Úvod 27 Kapitola 2: Stručný úvod do jazyka SQL 37 Kapitola 3: Jazyk SQL z širšího pohledu 45 Kapitola 4: Relační databáze 69 Část II Získávání dat Kapitola

Více

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Web Jaroslav Nečas Obsah přednášky Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Co to je web HTTP protokol bezstavový GET POST HEAD Cookies Session HTTPS

Více

Úvod do GIS. Atributy a jejich vztah k prostoru. Pouze podkladová prezentace k přednáškám, nejedná se o studijní materiál pro samostatné studium.

Úvod do GIS. Atributy a jejich vztah k prostoru. Pouze podkladová prezentace k přednáškám, nejedná se o studijní materiál pro samostatné studium. Úvod do GIS Atributy a jejich vztah k prostoru Pouze podkladová prezentace k přednáškám, nejedná se o studijní materiál pro samostatné studium. Karel Jedlička Atributy a jejich vztah k prostoru Atributová

Více

DUM 11 téma: Databázové jazyky a servery

DUM 11 téma: Databázové jazyky a servery DUM 11 téma: Databázové jazyky a servery ze sady: 3 tematický okruh sady: III. Databáze ze šablony: 7 Kancelářský software určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie vzdělávací

Více

6. blok část B Vnořené dotazy

6. blok část B Vnořené dotazy 6. blok část B Vnořené dotazy Studijní cíl Tento blok je věnován práci s vnořenými dotazy. Popisuje rozdíl mezi korelovanými a nekorelovanými vnořenými dotazy a zobrazuje jejich použití. Doba nutná k nastudování

Více

Business Intelligence

Business Intelligence Business Intelligence Josef Mlnařík ISSS Hradec Králové 7.4.2008 Obsah Co je Oracle Business Intelligence? Definice, Od dat k informacím, Nástroj pro operativní řízení, Integrace informací, Jednotná platforma

Více

1 Webový server, instalace PHP a MySQL 13

1 Webový server, instalace PHP a MySQL 13 Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Database Research Group Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz

Více

Úvod do databázových systémů 6. cvičení

Úvod do databázových systémů 6. cvičení Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů 6. cvičení Ing. Petr Lukáš petr.lukas@nativa.cz Ostrava, 2012 Modelování databází [1]

Více

Databázové systémy úvod

Databázové systémy úvod Databázové systémy úvod Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze Michal.Valenta@fit.cvut.cz c Michal Valenta, 2010 BIVŠ DBS I, ZS 2010/11 https://users.fit.cvut.cz/

Více

A5M33IZS Informační a znalostní systémy. O čem předmět bude? Úvod do problematiky databázových systémů

A5M33IZS Informační a znalostní systémy. O čem předmět bude? Úvod do problematiky databázových systémů A5M33IZS Informační a znalostní systémy O čem předmět bude? Úvod do problematiky databázových systémů Co se dozvíte? Návrh datových struktur (modelování relačních dat) Relační modelování úlohy z oblasti

Více

4IT218 Databáze. 4IT218 Databáze

4IT218 Databáze. 4IT218 Databáze 4IT218 Databáze Osmá přednáška Dušan Chlapek (katedra informačních technologií, VŠE Praha) 4IT218 Databáze Osmá přednáška Normalizace dat - dokončení Transakce v databázovém zpracování Program přednášek

Více

Úvod, terminologie. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 1

Úvod, terminologie. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 1 Úvod, terminologie Ing. Michal Valenta PhD. Katedra softwarového inºenýrství Fakulta informa ních technologií ƒeské vysoké u ení technické v Praze c Michal Valenta, 2010 Databázové systémy BI-DBS ZS 2010/11,

Více

Objektově orientované databáze. Miroslav Beneš

Objektově orientované databáze. Miroslav Beneš Objektově orientované databáze Miroslav Beneš Obsah přednášky Motivace Vlastnosti databázových systémů Logické datové modely Nevýhody modelů založených na záznamech Co potřebujeme modelovat? Identifikace

Více

Objektově relační databáze a ORACLE 8

Objektově relační databáze a ORACLE 8 Objektově relační databáze a ORACLE 8 Ludmila Kalužová VŠB - TU Ostrava, Ekonomická fakulta, Katedra informatiky v ekonomice, Sokolská 33, 701 21 Ostrava 1 Abstrakt V současné době existuje velký počet

Více

Databáze I. Přednáška 4

Databáze I. Přednáška 4 Databáze I Přednáška 4 Definice dat v SQL Definice tabulek CREATE TABLE jméno_tab (jm_atributu typ [integr. omez.], jm_atributu typ [integr. omez.], ); integritní omezení lze dodefinovat později Definice

Více