Z3104 GEODATABÁZE úvod Definice databáze ¨je určitá uspořádaná množina informací (dat) uložená na paměťovém médiu. V širším smyslu jsou součástí databáze i softwarové prostředky, které umožňují manipulaci s uloženými daty a přístup k nim. Tento software se v české odborné literatuře nazývá systém řízení báze dat (SŘBD). Běžně se označením databáze – v závislosti na kontextu – myslí jak uložená data, tak i software (SŘBD). Relační databáze ¨Relační databáze je databáze založená na relačním modelu. Často se tímto pojmem označuje nejen databáze samotná, ale i její konkrétní softwarové řešení. ¨ ¨Relační databáze je založena na tabulkách, jejichž řádky obvykle chápeme jako záznamy a eventuálně některé sloupce v nich (tzv. cizí klíče) chápeme tak, že uchovávají informace o relacích mezi jednotlivými záznamy v matematickém slova smyslu. ¨ Primární klíč ¨Primární klíč je jednoznačný identifikátor záznamu, řádku tabulky. Primárním klíčem může být jediný sloupec či kombinace více sloupců tak, aby byla zaručena jeho jednoznačnost. Pole klíče musí obsahovat hodnotu, tzn. nesmí se zde vyskytovat nedefinovaná prázdná hodnota NULL. Cizí klíč ¨Slouží pro vyjádření vztahů, relací, mezi databázovými tabulkami. Jedná se o pole či skupinu polí, která nám umožní identifikovat, které záznamy z různých tabulek spolu navzájem souvisí. Integrita databáze ¨Integrita databáze znamená, že data v ní uložená jsou konzistentní vůči definovaným pravidlům. Lze zadávat pouze data, která vyhovují předem definovaným kritériím (např. musí respektovat datový typ nastavený pro daný sloupec tabulky, či další omezení hodnot přípustných pro daný sloupec). Integritní omezení ¨K zajištění integrity slouží integritní omezení. Jedná se o nástroje, které zabrání vložení nesprávných dat či ztrátě nebo poškození stávajících záznamů v průběhu práce s databází. Například je možné zajistit mazání dat, která již ztratila svůj význam - například smažeme-li uživatele, odstraní se i zbytek jeho záznamů v ostatních databázových tabulkách. Integritní omezení ¨Entitní integritní omezení – povinné integritní omezení, které zajišťuje úplnost primárního klíče tabulky; zamezí uložení dat, která neobsahují všechna pole sdružená do klíče, nebo data, jež by v těchto polích byla stejná jako v nějakém jiném, již zapsaném, řádku tabulky ¨Doménová integritní omezení – zajišťují dodržování datových typů/domén definovaných u sloupců databázové tabulky ¨Referenční integritní omezení – zabývají se vztahy dvou tabulek, kde jejich relace je určena vazbou primárního a cizího klíče ¨Aktivní referenční integrita – definuje činnosti, které databázový systém provede, pokud jsou porušena některá pravidla Vztahy mezi tabulkami - kardinalita ¨mezi daty v tabulkách není žádná spojitost, proto nedefinujeme žádný vztah. ¨1:1 používáme, pokud záznamu odpovídá právě jeden záznam v jiné databázové tabulce a naopak. Takovýto vztah je používán pouze ojediněle, protože většinou není pádný důvod, proč takovéto záznamy neumístit do jedné databázové tabulky. Jedno z mála využití je zpřehlednění rozsáhlých tabulek. Jako ilustraci je možné použít vztah řidič - automobil. V jednu chvíli (diskrétní časový okamžik) řídí jedno auto právě jeden řidič a zároveň jedno auto je řízeno právě jedním řidičem. ¨1:N přiřazuje jednomu záznamu více záznamů z jiné tabulky. Jedná se o nejpoužívanější typ relace, jelikož odpovídá mnoha situacím v reálném životě. Jako reálný příklad může posloužit vztah autobus - cestující. V jednu chvíli cestující jede právě jedním autobusem a v jednom autobuse může zároveň cestovat více cestujících. ¨ ¨ Vztahy mezi tabulkami - kardinalita ¨M:N je méně častým. Umožňuje několika záznamům z jedné tabulky přiřadit několik záznamů z tabulky druhé. V databázové praxi bývá tento vztah z praktických důvodů nejčastěji realizován kombinací dvou vztahů 1:N a 1:M, které ukazují do pomocné tabulky složené z kombinace obou použitých klíčů (třetí resp. tzv. vazební tabulka). Příkladem z reálného života by mohl být vztah výrobek - vlastnost. Výrobek může mít více vlastností a jednu vlastnost může mít více výrobků. Normální formy ¨Slouží k optimalizaci návrhu databází/tabulek ¨Čím více jich DB splňuje, tím lépe (efektivněji) je navržena 0. normální forma ¨tabulka v nulté normální formě obsahuje alespoň jeden sloupec (atribut), který může obsahovat více druhů hodnot. 1. normální forma ¨tabulka je v první normální formě, pokud všechny sloupce (atributy) nelze dále dělit na části nesoucí nějakou informaci neboli prvky musí být atomické, tj. jeden sloupec neobsahuje složené hodnoty. 1. normální forma Jméno a příjmení Adresa Jan Nový Palackého 5, Brno, 621 00 Petr Zbořil Bezručova 15, Brno, 602 00 Tomáš Zelený Mánesova 7, Brno, 612 00 Antonín Tupý Sokolova 10, Brno, 619 00 Jméno Příjmení Ulice Č. o. Město PSČ Jan Nový Palackého 5 Brno 621 00 Petr Zbořil Bezručova 15 Brno 602 00 Tomáš Zelený Mánesova 7 Brno 612 00 Antonín Tupý Sokolova 10 Brno 619 00 2. normální forma ¨tabulka je v druhé normální formě, pokud obsahuje pouze atributy (sloupce), které jsou závislé na celém klíči. ¨2. NF se týká pouze tabulek, kde je primární klíč tvořen více položkami, u ostatních (tj. těch, kde je primární klíč tvořen jen jedním sloupcem) je tato podmínka splněna automaticky ¨slouží jako prevence rendundance dat a aktualizačních anomálií 2. normální forma Zboží Cena Kč Počet ks Výrobce Tel. výrobce Oplatky 30 100 Opavia 603 182 359 Jogurt 20 50 Danone 738 297 141 Sušenky 15 230 Opavia 603 182 359 Čokoláda 50 170 Orion 727 571 971 Kakao 40 50 Nestle 605 149 357 Puding 10 200 Danone 738 297 141 Primární klíč Pole závislé jen na části PK – v rozporu s 2. NF 2. normální forma Zboží Cena Kč Počet ks ID výrobce Oplatky 30 100 1 Jogurt 20 50 2 Sušenky 15 230 1 Čokoláda 50 170 4 Kakao 40 50 3 Puding 10 200 2 ID výrobce Název výrobce Tel. výrobce 1 Opavia 603 182 359 2 Danone 738 297 141 3 Nestle 605 149 357 4 Orion 727 571 971 Řešení: dekompozice relačního schématu = rozdělení na více tabulek 3. normální forma ¨tabulka je ve třetí normální formě, pokud neexistují žádné závislosti mezi neklíčovými atributy (sloupci) ¨ 3. normální forma Jméno Příjmení Funkce Plat Kč Pracoviště Petr Novák ředitel 100 000 ústředí Lenka Lysá sekretářka 20 000 odd. nákupu Tomáš Sedláček náměstek 75 000 ústředí Pavel Mezera vedoucí odd. 50 000 odd. nákupu Jiří Šulc náměstek 75 000 ústředí Zdena Vlková sekretářka 20 000 odd. prodeje Adam Jakubec vedoucí odd. 50 000 odd. prodeje Závislost mezi neklíčovými atributy - rozpor se 3. NF 3. normální forma ID zam. Jméno Příjmení 1 Petr Novák 2 Lenka Lysá 3 Tomáš Sedláček 4 Pavel Mezera 5 Jiří Šulc 6 Zdena Vlková 7 Adam Jakubec ID zam. ID funkce Pracoviště 1 1 ústředí 2 4 odd. nákupu 3 2 ústředí 4 3 odd. nákupu 5 2 ústředí 6 4 odd. prodeje 7 3 odd. prodeje ID funkce Jméno Plat Kč 1 ředitel 100 000 2 náměstek 75 000 3 vedoucí odd. 50 000 4 sekretářka 20 000 Řešení – opět rozložení na více provázaných tabulek 4. a 5. normální forma ¨Nebudeme potřebovat J ¨Kdo chce, ať si nastuduje… SQL ¨Structured Query Language ¨standardizovaný dotazovací jazyk používaný pro práci databázemi ¨Databázové systémy ¤MySQL ¤PostgreSQL Základní příkazy SQL ¨CREATE TABLE – vytvoří prázdnou tabulku ¨ ¨ ¨ ¤CREATE TABLE zamestnanci (prijmeni TEXT, mesto VARCHAR(10), vek INT); Datové typy sloupců Názvy sloupců Název tabulky Základní příkazy SQL ¨ALTER TABLE – upraví tabulku, např. přidá sloupec ¨ ¨ ¨ ¤ALTER TABLE zamestnanci ADD COLUMN jmeno TEXT; Jméno nového sloupce Příkaz na přidání sloupce Název tabulky Datový typ nového sloupce Základní příkazy SQL ¨INSERT INTO – vloží hodnotu do tabulky ¨ ¨ ¨ ¤INSERT INTO zamestnanci (jmeno, prijmeni, mesto, vek) VALUES('Jan', 'Novak', 'Brno', 62); Vkládané hodnoty Názvy sloupců Název tabulky Základní příkazy SQL ¨SELECT FROM – vybere z tabulky hodnoty, které splňují zadanou podmínku ¨ ¨ ¨ ¤SELECT jmeno FROM zamestnanci WHERE prijmeni = 'Novak'; Podmínka Název tabulky Sloupec, z něhož chceme získat nějaký údaj Použité zdroje ¨Wikipedie ¨http://www.linuxsoft.cz/article_list.php?id_kategory=232 ¨http://interval.cz/clanky/databaze-a-jazyk-sql/ ¨ ¨