Přednáška 8 INDEXY, POHLEDY.

Slides:



Advertisements
Podobné prezentace
Téma: Využití Accessu pro tvorbu evidence našeho podnikání Vypracovala: Jana Wasserbauerová.
Advertisements

Kuchařka na práci s mnohočleny Matematika pro ZŠ Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je David Salač. Dostupné z Metodického portálu.
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Kateřina Raichová. Materiál je publikován pod licencí Creative Commons. ze sady:3tematický.
Inf Používání a tvorba databází. Výukový materiál Číslo projektu: CZ.1.07/1.5.00/ Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT.
Období vzniku: duben _inovace_FG.9.48 Autor : Vladimír TesaříkČlověk a svět práce, finanční gramotnost, nové auto.
Tabulkový procesor Formuláře – interaktivní prvky v Excelu Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Růžena Hynková. Dostupné z Metodického.
Využití informačních technologií při řízení obchodního řetězce Interspar © Ing. Jan Weiser.
Hromadná korespondence 1 Word Předmět: Informační a komunikační technologie Autor: Milan Franek.
Univerzita třetího věku kurz Znalci Databáze 2.
ZAL – 5. cvičení Martin Tomášek Pole - opakování Základní datový typ. V poli držíme více elementů (jednoho typu) S elementy v poli můžeme manipulovat.
Číslo projektuCZ.1.07/1.5.00/ Číslo materiáluVY_32_INOVACE_30-03 Název školy Střední průmyslová škola stavební, České Budějovice, Resslova 2 AutorRNDr.
Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen.
Inf Vizualizace dat a tvorba grafů. Výukový materiál Číslo projektu: CZ.1.07/1.5.00/ Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím.
Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Šablona 32 VY_32_INOVACE_036.ICT.34 Tvorba webových stránek – databáze úvod.
Kritéria dotazů II Access (10). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro.
Databáze © Mgr. Petr Loskot
Úvod do databází MS Access (1).
Prezentace k finanční gramotnosti. Co je to banka. Autor
Microsoft Excel verze 2010 Mgr. Přemysl Kejzlar.
Název projektu: ZŠ Háj ve Slezsku – Modernizujeme školu
Databázové systémy I Přednáška 7 Databázové systémy 1 – KIT/IDAS1
Název: PowerPoint DUM:VY_32_INOVACE_VII_3_12
Výukový materiál zpracován v rámci projektu
Bohumil Havel MoodleMoot.cz 2016
Počet čísel Počet hodnot
Dotazovací jazyk SQL I.
Vytvořil: Robert Döring
Tvorba jednoduché tabulky - rozvrh
Postup pro aktualizaci seznamu doporučené literatury a učitelů uvedených u předmětu ve studijní agendě STAG.
Evaluace předmětů studenty (Anketky)
Databázové systémy a SQL
Databázové systémy a SQL
Uživatelem definované datové typy
Číslo projektu CZ.1.07/1.4.00/ Název sady materiálů
TIPY A RADY PRO PRÁCI S DATABÁZÍ SCOPUS
Windows – WordPad VY_32_INOVACE_32_649
Excel – tabulkový procesor
ADT zásobník - příklad Prakticky aplikovatelný příklad využití ADT zásobník je vyhodnocování aritmetických výrazů v Postfixové notaci: Pro zápis aritmetických.
Inf Tabulkový procesor - formátování
Databáze MS ACCESS 2010.
Výzkum přírodních geochemických a remediačních procesů a jejich využití pro sanace po těžbě nerostů GEOCHEM Kontrolní den ‘04 GEOCHEM – KD 2004.
Název projektu: ZŠ Háj ve Slezsku – Modernizujeme školu
Název: Práce s tabulátory Autor: Hokr Jan
Vkládání dat MS Access (5).
Vytvoření databázového dotazu z více tabulek
Novinky v Záznamníku učitele
Databázové systémy, datové modelování
Číslo projektu CZ.1.07/1.4.00/ Název sady materiálů
BIBS Informatika pro ekonomy přednáška 2
Informatika pro ekonomy přednáška 8
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Pozn. Zaměřeno na práci v MS PowerPoint
Počítačová cvičení z předmětu Datové sklady
Microsoft Office Access
Dotazovací jazyk SQL I.
Materiál byl vytvořen v rámci projektu
VY_32_INOVACE_VJ36.
A5M33IZS – Informační a znalostní systémy
MS Access Tabulka letní semestr 2013.
Přednáška 6 SQL – spojení tabulek.
Přednáška 10 Uložené procedury.
Věcné učení První pomoc
Přednáška 5 Úvod do SQL.
Informatika – Základní operace s buňkami
Pořádek slov v české větě
Relační databáze na příkladu aplikace Microsoft Access
Transkript prezentace:

Přednáška 8 INDEXY, POHLEDY

INDEXY INDEX je databázový seznam řazení (sloupce nebo sloupců tabulky), sloužící ke zrychlení vyhledávacích a dotazovacích procesů v databázi, definování unikátní hodnoty sloupce tabulky nebo optimalizaci fulltextového vyhledávání. Tabulka: Index prijmeni: id jmeno prijmeni 1 Marek Vondráček 2 Daniela Poláková 3 Andrea Janišová 9 Jiří Brdička 11 Jan Folprecht Brdička Folprecht Janišová Poláková Vondráček

Funkce indexu Vytvořením indexu MySQL zarezervuje pro požadovaný index určitou část paměťového prostoru a uloží do něj informace o rozmístění hodnot indexovaných sloupců v tabulce. Pokud dojde k dotazu (SELECT), který se týká indexovaných sloupců, není tabulka prohledávána podle toho, jak jsou za sebou řádky uloženy, ale pomocí informací uložených v paměťovém prostoru indexu je přistupováno přímo k relevantním řádkům tabulky. Viz předchozí ukázka.

Druhy indexů v MySQL MySQL podporuje následující indexy: primární klíč, jedinečný (unikátní) index, fulltextový index a ordinální index. CREATE TABLE studenti ( id int(8) NOT NULL auto_increment, jmeno varchar (30) NOT NULL, prijmeni varchar (30) NOT NULL, PRIMARY KEY (id), INDEX (prijmeni) );

Primární klíč Je indexem na poli, kde je každá hodnota jedinečná a žádná z hodnot není NULL. Funkci primárního klíče může zároveň plnit více polí, jejichž kombinace tak vždy musí být jedinečná (např. vazební tabulka). Pokud nemůžeme vybrat jeden nebo více sloupců, jež mohou sloužit jako primární klíč, je dobré jednoduše vytvořit jeden numerický sloupec a nechat MySQL, aby jej naplňoval unikátními daty (AUTO INCREMENT). Primární klíč na sloupci (sloupcích) vytvoříme při tvorbě tabulky. V PHPMyAdmin stačí ve výběrovém rozbalovacím poli Index zvolit hodnotu PRIMARY. Pozor, toto pole nesmíte volit nikdy jako nulové.

Ordinální index Index, který není unikátní - povoluje duplicitní hodnoty. Vždy je dobré jej vytvořit již při vytváření tabulky. Ordinální index by se měl volit v těch případech, kdy se počítá s velkým vytížením tabulky na mnoho záznamů, a u pole, které bude často využíváno za podmínkou WHERE. Ordinální index řadí data alfanumericky. Mohutnost indexu Unikátnost hodnot sloupce (sloupců) indexu. Mohutnost by měla vždy co největší, ideálně 100%.

Unikátní index Fulltextový index Jedinečný (UNIQUE) index nepovoluje žádné duplikáty. Oproti primárnímu klíči, může být v tabulce více unikátních indexů. Používá se pro identifikační záznamy, např. email registrovaného zákazníka. Fulltextový index V tabulkách MyISAM můžeme vytvářet fulltextové indexy na polích typu CHAR, VARCHAR nebo TEXT. Fulltextový index slouží k jednoduchému hledání klíčových slov v textových polích rozsáhlých tabulek.

Vytváření indexů z části pole Pro ordinální indexy je možno: V případě sloupců typu VARCHAR, CHAR, BLOB a TEXT nám MySQL umožňuje vytvořit index, který nepoužívá celé takové pole. Třebaže příjmení studenta může obsahovat až 20 znaků je pravděpodobné, že všechna příjmení se budou lišit již v pěti prvních znacích. Když pro index použijeme tak jen prvních pět znaků, index bude datově menší. Tím by se zrychlila aktualizace i vkládání a navíc to nebude mít žádný vliv na rychlost příkazu SELECT.

Volba indexů - zásady Indexy vytváříme na sloupcích, kde se budou vykonávat nějaké dotazy (nejčastěji na polích v podmínce WHERE). Vytváříme indexy na polích, které slouží pro spojení s jinými tabulkami. Vytváříme indexy, které vracejí co nejmenší možný počet řádků (zde je nejlepší primární klíč, protože primární klíč je přiřazen jednomu záznamu). Jinak řečeno, vytváříme indexy s co možná největší mohutností. Pokud je to možné, lépe volit numerické indexy (ve srovnání s řetězcovými) umožňují rychlejší přístup k datům. Používáme krátké indexy (indexujeme např. jen prvních 10 znaků jména a nikoli celé pole). Nevytváříme příliš mnoho indexů. Index zvětšuje čas, potřebný pro aktualizaci a vložení záznamu. Pokud daný index slouží jen zřídkakdy používanému dotazu, který klidně může běžet trochu pomaleji, zvažte možnost takový index vůbec nevytvářet.

POHLEDY Pohled je jakýmsi přechodem (uloženou definicí výběrových dotazů SELECT) mezi trvalou základní tabulkou a odvozenou tabulkou. Pro jednoduchost si lze pohled představit jako výsledek výběrového dotazu, který je trvale uložen v databázi a obsahuje vždy aktuální data podkladových tabulek. Podkladová (zdrojová) tabulka – klasická tabulka databáze. Pohled může obsahovat data z jedné či více tabulek a může obsahovat i odvozené atributy, které se přímo v podkladových tabulkách nevyskytují (např. agregační funkce).

Proč POHLEDY Jednou z hlavních výhod pohledu je to, že můžeme definovat složité dotazy a uložit je v definici pohledu. Takto můžeme podle potřeby volat pohledy místo opětovného vytváření dotazů. Prezentace dat uživatelům bez potřeby poskytování nadbytečných nebo nežádoucích dat. To znamená vytvořit pohled takový, který vrací pouze ty sloupce, které jsou nezbytné pro aktuální zobrazení. Shrnutí: Omezení počtu vracených sloupců Omezení počtu vracených řádků Omezení neefektivních spojení Jednodušší aktualizace s kontrolou integrity

Vytvoření pohledu Syntaxe: CREATE [OR REPLACE] VIEW jmeno_pohledu [(seznam_atributu_pohledu)] // jaké bude mít pohled sloupce AS dotaz_vybirajici_data [WITH [CASCADED │ LOCAL] CHECK OPTION] Seznam atributů představuje výčet sloupců, které chceme do pohledu zařadit. Pojmenovat je můžeme různě, ovšem jejich počet musí být shodný s počtem vybíraných atributů z podkladových tabulek. Za klauzulí AS následuje výběrový dotaz, který může obsahovat i složitá spojení z více tabulek.

Příklad pohledu Podkladová tabulka zbozi: Tabulka zobrazuje více sloupců, které mohou být zbytečné. Uvažujme velmi zjednodušený příklad. Skladník potřebuje v daný moment znát pouze regál, ve kterém se zboží nachází, název zboží a počet. Vytvoříme pro něj tedy triviální pohled: zbozi_id regal nazev var_nazev pocet 1 4 Nůž NULL 1500 2 5 Lžíce 1660 3 6 Vidlička

Pohled CREATE VIEW prehled (polozka, regal, pocet) AS SELECT nazev, regal, pocet FROM zbozi; POHLED prehled: polozka regal pocet Nůž 4 1500 Lžíce 5 1660 Vidlička 6

Aktualizovatelné pohledy Některé pohledy jsou aktualizovatelné. Jinými slovy můžeme pohled používat k úpravám dat v podkladové tabulce, z níž je pohled odvozen. Za jistých okolností (nejčastěji v případě, že pohled je vytvořen pouze z jedné podkladové tab.) tak můžeme používat i příkazy INSERT, UPDATE a DELETE. Uvažujme předchozí příklad: Jaké operace bychom teoreticky mohli provádět? Pole zbozi_id je automaticky inkrementované.

Příklad Tabulka sklady: Tabulka zbozi: sklad_id nazev dvere 1 Kuchyňské potřeby A55 2 Čistící prostředky C10 3 Zahradní doplňky H122 Tabulka sklady: Tabulka zbozi: zbozi_id sklad_id nazev var_nazev pocet 10 1 Nože NULL 1000 20 Vidličky 1100 30 Lžičky 40 2 Savo 200 50 3 Hadice 60 Motyky

Úkol Napište SQL kód pro vytvoření pohledu prehled, který bude skladníkovi uvádět data v následující struktuře: Pohled prehled: zbozi dvere_sklad pocet Nože A55 – Kuchyňské potřeby 1000 Vidličky 1100 Lžičky Savo C10 – Čistící prostředky 200 Hadice H122 – Zahradní doplňky 40 Motyky 10

SQL kód CREATE VIEW prehled (zbozi, dvere_sklad, pocet) AS SELECT zbozi.nazev, CONCAT(dvere, ' - ', sklady.nazev), pocet FROM zbozi NATURAL JOIN sklady Otázka: Je tento pohled aktualizovatelný?

Aktulizace pohledů Pokud pohled odvozuje data z více než jedné podkladových tabulek, nelze na něm provádět operace vložení INSERT ani odstranění DELETE. V některých případech lze ale provádět operace UPDATE. Kontrolu aktualizace dat v definici pohledu s klauzulí WHERE můžeme zajistit přidáním další klauzule WITH CHECK OPTION. Více ve skriptech a doplňku k přednášce.

Zapamatujte si Co je to INDEX Typy INDEXŮ v MySQL Primární klíč, Unikátní index, Ordinální index, Fulltextový index Zásady volby indexů Pohledy Vytvoření pohledu Účel pohledu Aktualizovatelnost pohledu Klauzule WITH CHECK OPTION