Tabulky a relace

Tvorba tabulek lesního hospodářského plánu (LHP) a jejich propojení prostřednictvím relací

1.) Tvorba tabulky relační databáze LHP
2.) Spojení tabulek v relaci – tvorba jednoduchého relačního datového modelu
3.) Vytvoření databázové struktury do úrovně porostu
4.) Napojení rozbalovacího seznamu 


Detailní postup řešení …

1.)  Tvorba tabulky relační databáze LHP

Ve cvičeních budeme pracovat s programem Microsoft Access, který v současné době asi nejlépe vyhovuje našim výukovým účelům a umožní vám pochopit základní principy relačních databází a práce s nimi.

Prvním krokem tedy bude spuštění programu MS Access. Klikněte na tlačítko Start – Programy – MS Office – MS Access. Nyní klikněte vlevo nahoře na nabidku Soubor – Nový a v nabídce na pravé straně obrazovky vyberte nabídku Prázdná databáze. Do dialogu zapište jméno budoucí databáze a kam ji chcete uložit.

Nyní máte možnost začít vytvářet první tabulku databáze. Můžete si vybrat jeden ze tří způsobů jak to učinit. Začněme prvním z nich. Klikněte tedy na „Vytvořit tabulku v návrhovém zobrazení“ a poté vlevo nahoře na tlačítko „Otevřít“.

step_1

Tento způsob umožňuje vaši naprostou kontrolu nad tím, které údaje se v tabulce objeví, v jakém pořadí, jaký budou mít formát atd. Všechny tyto skutečnosti jsou pro vytvoření databáze velmi důležité. Začneme tedy s vyplňováním návrhové tabulky. Pozor, nejde o vyplňování tabulky vlastní, zde pouze definujeme, jak bude tabulka vypadat a jaké bude mít vlastnosti, které kolonky bude obsahovat a co ji bude spojovat s tabulkami dalšími. V následujícím dialogu této tabulky vidíte tři sloupce:

  • Název pole
  • Datový typ
  • Popis
step_2_500

Do názvu pole vyplníte názvy sloupců tabulky tak, jak se pak budou v databázi objevovat. Většinou se používá jednoduchá výstižná zkratka, tedy například pro dřevinu DR, nebo DREV, popřípadě DREVINA. Můžete používat i háčky a čárky. Název pole by ale v žádném případě neměl vypadat následovně: ZÁSOBA DŘEVINY V METRECH KRYCHLOVÝCH NA HEKTAR . Něco takového můžete pak uvést do Popisu, který slouží pro vaši snazší orientaci v rozsáhlých tabulkách. Nejdůležitější je ale kolonka Datový typ. Vy, kteří často pracujete s Excelem již víte, že občas je účelné definovat pro oblast buněk typ dat (text, číslo, datum a podobně.) V Accessu (a všech ostatních databázově orientovaných aplikacích) je definování datového typu alfou a omegou bezchybného fungování databáze a jejího dalšího smysluplného využívání. Následující obrázek je příkladem jednoduché tabulky připravené na editaci dat. Vytvořte ji podle níže uvedeného vzoru a uložte pod názvem „ODD“. Při ukádání budete dotázáni na to, zda chcete vytvořit primární klíč? Potvrďte toto volbou ANO.

step_3_500

Když kliknete na ikonku „Zobrazit“ pod nabídkou Soubor, ukáže se tabulka tak, jak jste ji vytvořili. Vypadá stejně jako tabulka v Excelu, jen její možnosti jsou daleko širší

step_4

Nyní si můžete zkusit editaci několika záznamů do tabulky. Políčko „ID“ s datovým typem „automatické číslo“ nevyplňujte, program jej vyplňuje sám postupným přidáváním hodnot po jedné. Poté tabulku zavřete kliknutím na křížek v jejím pravém horním rohu.

Nyní si vytvoříme ještě jednu tabulku, budoucí podřízenou tabulku pod oddělením. Tato tabulka se bude týkat informací o dílci, podřízené jednotce základního rozdělení.

Postupujeme obdobně:
Opět klikneme na odkaz „Vytvořit tabulku v návrhovém zobrazení“ a poté vlevo nahoře na tlačítko „Otevřít“.
Založte si pole tabulky podle následujícího vzoru a uložte tabulku pod označením „DIL“ s programem definovaným primárním klíčem.

step_5

Nakonec klikněte na ikonku „Zobrazit“ pod nabídkou Soubor, ukáže se tabulka tak, jak jste ji vytvořili.

step_6

Do tabulky už nevyplňujte žádné záznamy. Protože to bude tabulka podřízená, je třeba nejdříve vytvořit napojení na tabulku nadřazenou.

2.)  Spojení tabulek v relaci – tvorba relačního datového modelu

Současné lesní hospodářské plány jsou zpracovávány na principu tzv. relačních databází. Relační databáze je taková databáze, která se skládá z většího počtu tabulek, navzájem propojených relačními vazbami.  Při velkých objemech dat, což je dozajista případ lesních hospodářských plánů, jsou relační databáze ve srovnání s klasickými daleko rychlejší, efektivnější a přehlednější.

Pod tímto odkazem se můžete podívat, jak vypadá systém propojených tabulek konkrétního lesního hospodářského plánu.  Uvidíte systém tabulek a jejich vzájemného propojení. Součástí databáze nejsou jen tabulky obsahující informace plánu, ale také takové, které slouží pro jeho snadnou editaci, tzv. rozbalovací nabídky. Potkáváte se s nimi velice často, a neuvědomujete si to.

K vytvoření jednoduché relační databáze potřebujeme minimálně dvě tabulky, o kterých víme, že obsahují alespoň jeden společný prvek, pole se shodným datovým typem. My jsme si již v první části vytvořili dvě tabulky, které obsahují pole, které se budou na sebe pojit. Je to pole ID z tabulky ODD a pole ODD_ID z tabulky DIL.  Otevřte si nyní tabulku ODD, přepněte se do návrhového zobrazení tabulky kliknutím na tuto ikonu v levém horním rohu obrazovky button1.

step_7

Když kliknete na řádek s polem ID, objeví se v kartě „Obecné“ nabídka, která umožní detailně definovat datový typ pole. Tabulka musí být vyplněna podle výše uvedeného vzoru. Velikost pole bude „dlouhé celé číslo“ a záznamy se budou indexovat bez duplicity. Nyní tabulku zavřete a otevřete si druhou tabulku DIL. Klikněte na ikonku návrhového zobrazení a dále na řádek s polem ODD_ID.

step_8

Ujistěte se, že pole ODD_ID má nastavenou velikost pole na dlouhé celé číslo a že se bude indexovat s povolenou duplicitou (tj. indexovat ano – duplicita povolena).  Jistě vás zajímá, co je to indexování s duplicitou a bez duplicity.  Obojí vysvětlíme za okamžik. Nyní zavřete tabulky a v okně MS Access klikněte vpravo nahoře vpravo na liště ikon na  ikonku „relace“ – označena kroužkem:

step_9

Objeví se prázdná obrazovka. Klikněte pravým tlačítkem myší na plochu a vyberte „Zobrazit tabulku“. Z nabídky vyberte obě dvě vámi vytvořené tabulky (dvojím kliknutí myši). Nyní se dostáváme k základu relačních databází, tedy k propojení tabulek.

step_10

Musíte programu definovat, která políčka se na sebe budou vázat.  Již víme, že ODD_ID z tabulky DIL se bude vázat na ID z tabulky ODD. Klikněte tedy myší na pole ODD_ID, držte tlačítko a přeneste pole na ID v tabulce ODD.

step_11

Zatrhněte políčka „Zajistit referenční integritu“, „Aktualizace souvisejících polí“ a „Odstranění souvisejících polí“. Pokud máte, klikněte na tlačítko „Vytvořit“.

step_12

Vidíte, že:

  • program spojil tabulky pojítkem, přičemž pojítko vede mezi polemi ID a ODD_ID
  • že u vazby je definován typ 1: nekonečno, nebo jinak 1:N, což znamená, že k jednomu záznamu v tabulce ODD se může pojit několik záznamů v tabulce DIL, což je pravda. Oddělení má téměř vždy více dílců, Dílec má několik porostů, porost má několik porostních skupin a tak dále…

Zaškrtli jste také, že program má zajistit referenční integritu, což znamená, že se bude starat o to, aby se daný dílec nezatoulal do jiného oddělení, ale že bude vždy v tom oddělení, do kterého ho naeditujete. Postará se také o to, aby, když smažete oddělení, smazal taky, automaticky bez vašeho přičinění, všechny podřízené záznamy v tabulce DIL. Podívejme se, jak teď vazba funguje. Uložte relace, buď stisknutím kláves Ctrl+S, nebo kliknutím na ikonu diskety v nabídce v levém horním rohu. Zavřete okno a otevřete tabulku ODD. Když jste tabulku vytvářeli, zkusili jste si do ní cvičně naeditovat pár oddělení. Nyní si všimněte, že se v tabulce vytvořil úplně vlevo samostatný sloupeček s rozbalovacími tlačítky (+). Když na některé z nich kliknete, objeví se záznamy podřízené tabulky, tedy dílce.

step_13

Nyní si můžete vyzkoušet editovat několik dílců do různých oddělení. Můžete si také vyzkoušet mazat záznamy. Všimněte si, že se pole s automatickými čísly vyplňují samy.  Nyní je čas na vystvětlení pojmu indexování s duplicitou a bez duplicity. Představte si lesní majetek a zamyslete se, zda se na něm mohou vyskytnout dvě oddělení se stejným číslem. Pokud jste si odpověděli „NE“, bylo to správně. Nyní to samé zkuste s dílci. Mohou na lesním majetku být dva, nebo více dílců s označením A? Správná odpověď je „ANO“. Každý ale patří do toho svého, správného oddělení. Nadřazený záznam se tedy vždy indexuje bez duplicity a podřízený s duplicitou. Je to princip vazby 1:N prvkům.

3.) Vytvoření databázové struktury do úrovně porostu

Vytvořte tabulku POR, která bude obsahovat kolonky přesně definované ve výukovém informačním standardu, tedy pole POR, KATEGORIE, PAS_OHR, LES_OBL, ZVL_STATUT, POR_TEXT a dále identifikační pole ID a pole pro napojení na nadřazenou tabulku DIL_ID. Po vytvoření bude tabulka v návrhovém zobrazení vypadat následovně:

step1

Pokud máte tabulku takto vytvořenou, zavřete ji kliknutím na křížek v jejím pravém horním rohu a otevřete okno relací. Pravým tlačítkem vyvolejte kontextovou nabídku, zvolte „Zobrazit tabulku“, dvojím kliknutím vložte tabulku POR do okna.

Napojte tabulku na nadřazenou tabulku DIL. Pokud jste vše udělali správně, musí se u pojítka mezi tabulkami objevit příznak 1 : ∞.

step2

Nyní zavřete okno relací a správnost fungování vazby si vyzkoušejte otevřením tabulky ODD a kontrolou, zda jsou tabulky skutečně propojeny do úrovně porostů.

 step3v

4.) Napojení rozbalovacího seznamu

Občas se potřebujeme vyhnout zdlouhavému editování údajů, které se pořád opakuje. Například pokud bychom teď chtěli vyplňovat tabulku POR, museli bychom neustále vypisovat  ke každému záznamu kódy kategorie lesů, lesních oblastí atd. Existuje druhá cesta, kdy si k databázi připojíme číselník, nebo jinak rozbalovací seznam, a využijeme jej při editaci dat.

Prvním krokem je vytvoření číselníku. Můžeme jej naeditovat ručně, nebo odněkud importovat. My se rozhodneme pro druhou možnost a využijeme již vytvořeného číselníku, který je součástí informačního standardu LH. Začneme třeba s číselníkem kategorií lesa. Stáhnout si jej můžete ve formátu MS excel z tohoto odkazu. Pozor, číselník kategorií se nachází na listu č. 14.

Existuje několik způsobů, jak číselník v programu MS Access založit. My si vypomůžeme například prostým kopírováním. Vyberte do bloku první dva sloupce tabulky bez hlavičky sloupců a poté stiskněte klávesovou zkratku Ctrl+C:

step4

Poté otevřete MS Access, klikněte na odkaz „vytvořit tabulku vložením dat“.

step5

Vyberte do bloku první dva sloupce prázdné tabulky a stiskněte Ctrl+V.  Pokud nevyberete první dva sloupce do bloku, program data nevloží a postěžuje si, že se pokoušíte vložit do buňky příliš dlouhý text. Tedy ještě jednou, před vložením dat vyberte do bloku první dva sloupce tabulky. Data se vloží do tabulky bez názvů sloupců. V jejich záhlaví zůstane původní nápis Pole1 a Pole2:

step6

Nyní klikněte na záhlaví polí a pojmenujte je KOD a SUBKATEGORIE (viz následující obrázek):

 step7

Tabulku uložte bez definování primárního klíče pod názvem KATEGORIE a zavřete ji.

Nyní otevřete tabulku POROST (POR) v návrhovém zobrazení a označte řádek KATEGORIE. Ve vlastnostech pole se přepněte do karty „Vyhledávání“.

step8_500

Když kliknete v této kartě na nápis „Textové pole“, objeví se vpravo od něj šipečka s rozbalovacím seznamem, ze kterého vyberte „Pole se seznamem“. Objeví se širší nabídka:

  • jako typ zdroje řádků definujte „tabulka či dotaz“.
  • jako zdroj řádků definujte tabulku KATEGORIE (pokud jste si ji pojmenovali jinak, zadejte jméno tabulky dle vás)
  • jako vázaný sloupec definujte sloupec 1. (první sloupec tabulky KATEGORIE)
  • počet slouců nastavte na 2 (oba dva sloupce tabulky KATEGORIE).
  • šířky sloupců nastavte na 1,5 cm.
  • šířku celého seznamu nastavte na 18 cm.

step9_500

Nabídku zavřete, tabulku uložte stiskem kláves Ctrl+S a zavřete ji. Nyní se přesvědčíme, jestli nám rozbalovací seznam funguje. Otevřete tabulku oddělení (ODD), rozbalovacími tlačítky se dostaňte až na porosty (POR) a klikněte na první buňku ve sloupci KATEGORIE.

step10

Pokud jste pracovali správně, nabídka vám bude fungovat podobně jako na výše uvedeném příkladu. Úspěšně jste prošli částí týkající se vytvoření jednoduché databáze. S tímto problémem se však v životě často nesetkáte. Častěji se setkáte se situací, kdy budete mít k dispozici již vytvořenou, naplněnou databázi LHP. Její data budete muset umět zpracovat a analyzovat…