Bc. David Gešvindr MCSA | MSP | MCTS | MCITP | MCPD 1. Podpora XML v databázi 2. Generování XML 3. Konverze XML na relační data 4. Dotazování nad XML Ne na vše je relační podoba dat vhodná Převod dat z XML do relační podoby jen kvůli uložení nemusí být výhodný XML je univerzální formát pro výměnu dat Zjednodušení importu a exportu dat Od verze 2005 Uložení XML do tabulky Datový typ XML (XML index) Podpora XML schémat XML document / XML fragment Generování XML z relačních dat Konverze XML na relační data Použití xquery v dotazech FOR XML Rozšiřuje příkaz SELECT Nastavitelný formát výstupu Několik režimů AUTO, EXPLICIT, RAW, PATH Výhody Klient obdrží přímo XML Velmi rychlý export do XML Výhodné pro import XML XML je převedeno na tabulku se kterou je možné pracovat Postup: 1. sp_XML_preparedocument 2. OPENXML 3. sp_xml_removedocument Xquery Dostupné metody: Value Exists Query Nodes Výhody: Omezení síťového provozu Vyšší bezpečnost Lepší výkon 1. V ISu jsou podklady ke cvičení Prostudujte si způsob práce s XML 2. Navrhněte co nejjednodušší DB pro uložení XML „produkty.xml“ Tabulka Products Tabulka MeasureUnits Produkt má vždy určenou měrnou jednotku Tabulka Categories Produkt je zařazen pouze do jedné kategorie Doporučení: Pracujte s vlastními novými identifikátory (ProductID, CategoryID, MeasureUnitID) VYBER – ignorujte RADA – číselné ID kategorie SKUPINA – název hlavní kategorie KOD – kód produktu (text) NAZEV – název produktu JEDNOTKA – měrná jednotka POZNAMKA – stručný popis STAV – počet MJ skladem SLEVA – uplatnit slevu ANO/NE Vytvořte uloženou proceduru, která v jedné transakci zpracuje vstupní XML Název uložené procedury: uspImportProducts Vstupní parametr @InputXML typu XML Uložená procedura Doplní chybějící měrné jednotky Aktualizuje nebo doplní kategorie dle ID (neodstraňuje chybějící) Aktualizuje seznam produktů, přidá chybějící, opraví změněné, odstraní ty produkty, které nejsou v XML Nastudujte a použijte příkaz MERGE Vytvořte tabulku, která bude ukládat změny v ceně produktu ProductPriceHistory Odkaz na produkt Datum změny Původní cena Tabulka bude automaticky plněna AFTER UPDATE triggerem nad tabulkou Products Tip: Funkce Update() umí v triggeru detekovat změnu ve sloupci Tip: Pracujte s virtuální tabulkou DELETED