LAB OF SOFTWAREARCHITECTURES AND INFORMATION SYSTEMS FACULTY OF INFORMATICS MASARYK UNIVERSITY 5.XMLvdatabázi Obsah 1. Podpora XML v databázi 2. Generování XML 3. Konverze XML na relační data 4. Dotazování nad XML PročXML v databázi? • 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 PodporaXML v rámciMSSQL • 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 GenerováníXML zrelačníchdat • 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 KonverzeXML na relační data • 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 Dotazování nadXML • Xquery • Dostupné metody: • Value • Exists • Query • Nodes • Výhody: • Omezení síťového provozu • Vyšší bezpečnost • Lepší výkon Úkol 1: Import datzXML 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) Úkol 1: Import datzXML • 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 Úkol 1: Import datzXML • 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 Úkol 1: Bonus • 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 LAB OF SOFTWAREARCHITECTURES AND INFORMATION SYSTEMS FACULTY OF INFORMATICS MASARYK UNIVERSITY 6.Geografickádatavdatabázi Geografická data • Microsoft SQL Server 2008 • Možnost uložení geografických a geometrických dat • Data jsou ukládána jako serializované instance geografických objektů • Pokročilé možnosti dotazování • Dobrý výkon – spatial indexy Geografická data • Dostupné statické metody • STPointFromText / STPointFromWKB • STLineFromText / STLineFromWKB • STPolyFromText / STPolyFromWKB • Dostupné metody • STArea, STAsText, STDistance, STIntersects, STLength, STUnion, STEquals Úkol 1:Geografická data 1.Stáhněte si podklady ke cvičení • Projděte si ukázku práce s geografickými daty 2.Vytvořte jednoduchou tabulku pro uložení informací o zastávce MHD • Identifikátor zastávky • Jméno zastávky • Zóna • Poloha (typ GEOGRAPHY) 3.Vytvořte uloženou proceduru, která importuje seznam zastávek z XML Úkol 2:Geografická data • Vytvořte uloženou proceduru uspGetBusStops, jenž má následující vstupní parametry: • @Latitude (desetinné číslo) • Aktuální zeměpisná šířka • @Longitude (desetinné číslo) • Aktuální zeměpisná délka • @Distance (celé číslo) • Maximální vzdálenost do které vyhledat nejbližší zastávky Úkol 3:Geografická data • Napište dotaz, kterým naleznete 10 nejvzdálenějších zastávek v databázi