informatyka + Wymagania wstępne Podstawowa znajomość SQL Podstawowa znajomość SQL Server



Podobne dokumenty
Model semistrukturalny

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Dokumenty XML w relacyjnych bazach danych czyli wojna światów. Andrzej Ptasznik Warszawska Wyższa Szkoła Informatyki aptaszni@wwsi.edu.

Rola języka XML narzędziem

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

Relacyjne bazy danych a XML

Wykład 5. SQL praca z tabelami 2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

15. Funkcje i procedury składowane PL/SQL

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Oracle PL/SQL. Paweł Rajba.

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

29. Poprawność składniowa i strukturalna dokumentu XML

extensible Markup Language, cz. 1 Marcin Gryszkalis, mg@fork.pl

Wszechnica Popołudniowa: Bazy danych Dokumenty XML w relacyjnych bazach danych czyli wojna światów

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Oracle11g: Wprowadzenie do SQL

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

OBSŁUGA TYPU DANYCH XML W MS SQL SERVER 2008

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Oracle PL/SQL. Paweł Rajba.

252 Bazy danych. Praca z językiem XML

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

XML extensible Markup Language 7

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Wykład 8. SQL praca z tabelami 5

Systemy GIS Tworzenie zapytań w bazach danych

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Przykładowy dokument XML

Microsoft SQL Server Podstawy T-SQL

Dlaczego GML? Gdańsk r. Karol Stachura

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Bloki anonimowe w PL/SQL

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

XML extensible Markup Language. Paweł Chodkiewicz

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Relacyjne bazy danych. Podstawy SQL

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Ref. 7 - Język SQL - polecenia DDL i DML

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Przestrzenne bazy danych Podstawy języka SQL

Przykładowa baza danych BIBLIOTEKA

Bazy danych - wykład wstępny

Ministerstwo Finansów

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Bazy danych i strony WWW

Język SQL, zajęcia nr 1

CREATE USER

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

1 XML w bazach danych

P o d s t a w y j ę z y k a S Q L

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

DB2 XML w relacyjnych bazach danych wstęp do wprowadzenia. Kuba Pochrybniak

Projektowanie systemów baz danych

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Hurtownie danych wykład 5

Relacyjne bazy danych. Podstawy SQL

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

CENTRUM PROJEKTÓW INFORMATYCZNYCH MINISTERSTWA SPRAW WEWNĘTRZNYCH I ADMINISTRACJI

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Oracle PL/SQL. Paweł Rajba.

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

PHP: bazy danych, SQL, AJAX i JSON

Monitoring procesów z wykorzystaniem systemu ADONIS. Krok po kroku

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

1 Podstawy c++ w pigułce.

Bazy danych dokumentów XML wykład 3 modyfikacja dokumentów

Kuźnia Talentów: Bazy danych Wykorzystanie XML w relacyjnych bazach danych

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

QUERY język zapytań do tworzenia raportów w AS/400

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

GML w praktyce geodezyjnej

Wykład I. Wprowadzenie do baz danych

Podstawy JavaScript ćwiczenia

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

Cele. Definiowanie wyzwalaczy

Składowane procedury i funkcje

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Transkrypt:

Agenda Podstawy XML Historia XML w pigułce Struktura dokumentu XML XML a bazy danych Alternatywa dla relacyjnych baz danych? XML w SQL Server 2008 Klauzula FOR XML polecenia SELECT Typ danych XML Metody typu XML Korzystanie z XML Schema Podsumowanie 2

Wymagania wstępne Podstawowa znajomość SQL Podstawowa znajomość SQL Server Podstawowa znajomość dowolnego języka opartego o znaczniki (XML, HTML itp.) Chęć do nauki ;-) 3

Agenda Podstawy XML Historia XML w pigułce Struktura dokumentu XML XML a bazy danych Alternatywa dla relacyjnych baz danych? XML w SQL Server 2008 Klauzula FOR XML polecenia SELECT Typ danych XML Metody typu XML Korzystanie z XML Schema Podsumowanie 4

Wstęp i historia XML lata 60 - poszukiwanie standardu dla dokumentów drukarskich 1978 - ANSI rozpoczyna prace nad norma 1983 - szósta wersja - SGML - staje się standardem Urzędu Kontroli Skarbowej USA 1969 - IBM zaproponowali GML wraz z hierarchiczna struktura oznaczeń

Wstęp i historia XML 1985 - SGML standardem Komisji UE oraz Departamentu Obrony USA 1986 SGML w wersji ISO 9979:1986 Dziś mamy nowe standardy ISO oraz HTML, XML, XSL i inne - wszystko na podstawie założeń GML/SGML

Rozwój języków uogólnionego znakowania tekstu 1969: GML Generalized Markup Language (IBM; Goldfarb, Mosher, Laurie). 1986: SGML Standard Generalized Markup Language, ISO 8879:1986. 1991: powstaje World Wide Web. 1994: HTML 2.0 zdefiniowany jako zastosowanie SGML-a. 1998: XML Extensible Markup Language, World Wide Web Consortium.

Cele jakie sobie założono przy tworzeniu XML XML powinien być bezpośrednio używalny w Internecie. XML powinien wspierać wiele różnorodnych aplikacji. XML powinien być kompatybilny z SGML-em. Pisanie programów przetwarzających dokumenty XML powinno być proste. Liczba opcjonalnych cech XML-a powinna być ograniczana do absolutnego minimum, najlepiej zera. Dokumenty XML powinny być czytelne dla ludzi i przejrzyste. Projekt XML-a powinien zostać przygotowany szybko. Projekt XML-a powinien być formalny i zwięzły. Dokumenty XML powinny być łatwe do stworzenia.

Cechy języka XML XML nie jest nowy powstało wiele aplikacji,systemów, publikacji dotyczących tego języka XML jest językiem tekstowym(dokumenty XML są plikami tekstowymi) XML jest rozszerzalny można dodawać własne znaczniki i tworzyć własne standardy XML jest elastyczny - łatwo można zmieniać strukturę dokumentu XML XML jest międzynarodowy zalecane jest stosowanie standardu Unicode XML sam się opisuje nazwy znaczników mogą interpretować zawartość

Cechy języka XML XML to rodzina języków i technologii ilość standardów związanych z XML ciągle rośnie XML jest standardem otwartym XML jest nielicencjonowany!!!!!! XML jest niezależny od platformy sprzętowej i programowej XML jest łatwy w użyciu (chociaż początki mogą być trudne) XML może być sformalizowany poprzez definicje DTD lub XSD XML jest hierarchiczny - co umożliwia modelowanie złożonych struktur

Agenda Podstawy XML Historia XML w pigułce Struktura dokumentu XML XML a bazy danych Alternatywa dla relacyjnych baz danych? XML w SQL Server 2008 Klauzula FOR XML polecenia SELECT Typ danych XML Metody typu XML Korzystanie z XML Schema Podsumowanie 11

Reguły tworzenia dokumentów XML Dokument XML składa się z elementów, które mogą zawierać atrybuty wraz z ich wartościami, tekst oraz inne elementy Dokument XML musi zawierać dokładnie jeden element główny (tzw. root), który zawiera w sobie pozostałe elementy Element składa się ze znaczników (otwierającego i zamykającego): <kodpocztowy> zawartość </kodpocztowy > <budynek/> formę ) (brak zawartości można stosować skróconą Elementy mogą być zagnieżdżone: <email><wartosc> Jan </wartosc></email> Elementy nie mogą się przecinać : <email><wartosc> Jan </email></wartosc> 12

Reguły tworzenia dokumentów XML c.d. Elementy mogą zawierać atrybuty, które muszą posiadać wartość (ujętą w apostrofy lub cudzysłów): <wartosc typkomunikatora="skype"> janeknowak </wartosc> Wielkość liter ma znaczenie <budynek>124a</budynek> Do wykorzystania w treści dokumentu w miejscu znaków specjalnych (mogących powodować problemy z interpretacją dokumentu) przeznaczono tzw. encje: < zastępującą znak < > zastępującą znak > " zastępującą znak &apos; zastępującą znak & zastępującą znak & Błąd 13

Reguły tworzenia dokumentów XML c.d. Dokument spełniający wszystkie wymagania odnośnie swojej struktury jest dokumentem poprawnie sformułowanym (well formed document) Z racji prostoty reguł łatwo jest stworzyć narzędzie weryfikujące poprawność sformułowania dokumentu. Istnieje wiele takich narzędzi (parserów XML) Jeżeli chcemy oprócz samej składni narzucić dodatkowe reguły, to trzeba skorzystać z dodatkowych technologii i narzędzi. DTD (Document Type Definition) XML Schema Relax NG Parsery walidujące Jeżeli dokument XML jest poprawnie sformułowany i spełnia wymagania opisane w DTD lub XML Schema to jest dokumentem poprawnym (valid document) 14

Agenda Podstawy XML Historia XML w pigułce Struktura dokumentu XML XML a bazy danych Alternatywa dla relacyjnych baz danych? XML w SQL Server 2008 Klauzula FOR XML polecenia SELECT Typ danych XML Metody typu XML Korzystanie z XML Schema Podsumowanie 15

XML alternatywą dla relacyjnych baz danych? Jeśli patrzeć na to od strony teoretycznej czemu nie? ohierarchiczna struktura oraz stosowanie atrybutów pozwala modelować relacje oxml Schema pozwala modelować dodatkowe ograniczenia omodelowanie może być bardziej pracochłonne i nie każdy rodzaj ograniczeń da się zaimplementować 16

XML alternatywą dla relacyjnych baz danych? C.d. W praktyce jednak pojawiają się problemy Wzrost rozmiaru pliku -> spadek wydajności Jednoczesny dostęp wielu użytkowników do pliku Transakcyjność i odporność na awarie Zamiast alternatywy uzupełnienie możliwości baz danych Przechowywanie danych o zróżnicowanej strukturze Zwracanie wyników zapytań w formie XML Manipulowanie zawartością XML 17

Wynik wojny XML-SQL Pomimo tego, że XML jest pewną alternatywą dla relacyjnych baz danych wybrano najlepsze rozwiązanie Dwie konkurencyjne technologie zmuszono do współpracy! 18

Przykład uproszczenia schematu relacyjnej bazy danych z wykorzystaniem XML Fragment poprawnie zaprojektowanej relacyjnej bazy danych! 19

Przykład uproszczenia schematu relacyjnej bazy danych z wykorzystaniem XML Schemat dokumentu XML zawierającego opis adresów i kontaktów! 20

Przykład uproszczenia schematu relacyjnej bazy danych z wykorzystaniem XML A może uprościć to tak!!!!!!! Kolumna typu XML przechowująca dane zgodne ze schematem XML pokazanym na wcześniejszym slajdzie i zamiast pięciu tabel mamy tylko jedną - i wszystkie potrzebne dane mogą być zapisane 21

Agenda Podstawy XML Historia XML w pigułce Struktura dokumentu XML XML a bazy danych Alternatywa dla relacyjnych baz danych? XML w SQL Server 2008 Klauzula FOR XML polecenia SELECT Typ danych XML Metody typu XML Korzystanie z XML Schema Podsumowanie 22

Struktura bazy danych dla dalszych przykładów Zaznaczone kolumny są typu XML i będą przechowywać złożone dane 23

Dane w postaci XML potrzebne od zaraz Problem : Jak pobrać z bazy danych informacje od razu w postaci XML? A po co akurat XML? Bo aplikacja potrafi takie dane od razu przetworzyć Bo takie są wymagania biznesowe naszego klienta Bo system, z którym współpracujemy potrafi pracować tylko z danymi XML Bo łatwo takie dane potem przetworzyć na dowolna inna potrzebną postać (HTML, PDF, RTF, SVG ) Ok. Wiemy po co. Ale jak? Klauzula XML w zapytaniu SELECT:) 24

Klauzula FOR XML polecenia SELECT Dodana do dowolnego polecenia SELECT powoduje zwrócenie jego wyniku w formie dokumentu lub fragmentu dokumentu XML Kilka trybów generowania XML RAW AUTO EXPLICIT PATH Tryby RAW i AUTO dają możliwość generowania wartości kolumn jako atrybutów lub elementów Tryby EXPLICIT i PATH dają największe możliwości Tryb XPATH korzysta z wyrażeń języka XPath Tryb EXPLICIT korzysta z tabeli uniwersalnej 25

Dane do obróbki lista klientów W przykładowej bazie mamy tabelę z danymi klientów Załóżmy, że chcemy zwrócić właśnie te dane. Nic prostszego: 26

No tak. Ale potrzebujmy te dane w postaci XML! Nie ma problemu skorzystamy z klauzuli FOR XML Zaczniemy od najprostszego wariantu : FOR XML RAW 27

Oooops! To nie jest dokument XML! Klauzula FOR XML RAW zwróciła nam fragment dokumentu XML. Nie do końca nadaje się on do dalszej obróbki po stronie aplikacji, gdyż żaden szanujący się parser nie przymknie oka na brak elementu głównego! <dane> </dane> 28

Klauzula FOR XML RAW z opcją ROOT Oczywiście da się to poprawić Zmieńmy jeszcze row na coś milszego dla oka 29

Klauzula FOR XML RAW z opcją ROOT Opcja RAW także dopuszcza podanie w nawiasie nazwy elementu 30

Klauzula FOR XML RAW z opcją ELEMENTS Aplikacja potrzebuje elementów a nie atrybutów! Co wtedy? 31

Klauzula FOR XML RAW to za mało! FOR XML Raw jest OK, ale potrzebujemy nieco więcej możliwości! Jak generować dokument XML z hierarchią elementów? Np.: lista klientów i ich zamówień Odpowiedź : klauzula FOR XML AUTO Domyślnie generuje dla wiersza element o nazwie takiej jak tabela Dla kolumn tworzone są atrybuty o nazwach takich jako kolumny Przeznaczona do zapytań operujących na wielu tabelach Potrafi tworzyć proste hierarchie (heurystycznie poprzez analizowanie kolejnych wierszy i porównywanie wartości kolumn) Obsługuje wszystkie opcje omawiane przy FOR XML RAW 32

Klauzula FOR XML AUTO - przykład Wpływa na hierarchię! 33

Klauzula FOR XML AUTO - przykład Tym razem po ID zamówienia 34

Coraz więcej możliwości:) Co jeszcze da się zrobić? Da się zrobić wszystko. Kwestia czasu i nakładu pracy. Do tej pory podejście do generowania XML polegało na: Dodaniu do DOWOLNEGO zapytania klauzuli FOR XML (AUTO lub RAW) Skorzystaniu z ich opcji do dopracowania postaci dokumentu Gdy to za mało sięgamy po FOR XML EXPLICIT Specjalnie skonstruowane zapytanie Złożona konstrukcja. Trudne modyfikowanie Ogromne możliwości 35

Klauzula FOR XML EXPLICIT Największe możliwości w zakresie budowania złożonych struktur XML Precyzyjne wymagania co do struktury wyniku zapytania, które ma być przetworzone na XML (tabela uniwersalna) Skomplikowany mechanizm definiowania tabeli uniwersalnej dla uzyskania konkretnej struktury XML 36

Klauzula FOR XML EXPLICIT Spróbujmy sklecić przykład (podobny do tego z trybu AUTO) 37

Klauzula FOR XML EXPLICIT Rezultat zapytania z poprzedniego slajdu (bez klauzuli FOR XML): 38

Klauzula FOR XML EXPLICIT Rezultat zapytania z poprzedniego slajdu (z klauzulą FOR XML): 39

Klauzula FOR XML EXPLICIT fajna ale żmudna Jest jakiś sposób na uniknięcie jej stosowania? TAK:) Klauzula FOR XML PATH O wiele przyjemniejsza w stosowaniu Porównywalne możliwości Łatwiejsze modyfikowanie (znacznie lepsza czytelność zapytań) Wady? A owszem Trzeba poznać język XPath (chociaż trochę) 40

Klauzula FOR XML PATH i język XPath Język XPath służy do wskazywania węzłów lub grup węzłów w dokumencie XML Wyrażenia XPath można porównać do ścieżek w systemie plików. Wyrażenie: \dane\adres\pocztowy\ulica wskazuje na katalog ulica i jego zawartość. 41

Klauzula FOR XML PATH i język XPath <dane> <adres> <email> <wartosc>jan.nowak@pocza.pl</wartosc> </email> </adres> <adres> <pocztowy> <kodpocztowy>00-950</kodpocztowy> <miejscowosc>warszawa</miejscowosc> <ulica>marszałkowska</ulica> <budynek>23</budynek> <lokal>1</lokal> </pocztowy> </adres> </dane> Wyrażenie: /dane/adres/pocztowy/ulica wskazuje na element ulica i jego zawartość. 42

Klauzula FOR XML PATH i język XPath Przykłady wyrażeń XPath /dane/adres/email[2]/wartosc Element wartosc drugiego elementu email będącego dzieckiem elementu adres, będacego dzieckiem elementu głównego dane //email Elementy email występujące w dowolnym miejscu w dokumencie //adres/*/@typ Atrybuty @typ dowolnych elementów będących dziećmi elementu adres /dane/adres/*[@typ= skype ]/text() Zawartośc tekstowa dowolnego elementu, który ma atrybut typ o wartości skype, będącego dzieckiem elementu adres, będącego dzieckiem elementu głównego dane 43

Klauzula FOR XML PATH Kompromis pomiędzy możliwościami a prostotą korzystania Znacznie łatwiejsza od EXPLICIT Pozwala na definiowanie złożonych struktur przy wykorzystaniu odpowiednich nazw kolumn (przypominających wyrażenia XPath) Pozwala na zagnieżdżanie zapytań i uzyskiwanie tą droga złożonej struktury XML Istotna jest kolejność kolumn (najpierw te definiujące atrybuty, potem kolejne elementy) Możliwość wykorzystania znaku * (gwiazdka) jako nazwy kolumny 44

Klauzula FOR XML PATH Obsługuje opcje znane z trybu RAW i AUTO Istotna jest kolejność kolumn w zapytaniu (najpierw atrybuty, potem elementy) 45

Klauzula FOR XML PATH Opcja TYPE! 46

Klauzula FOR XML PATH przykład 2 47

Klauzula FOR XML inne opcje Wszystkie warianty klauzuli FOR XML zawierają jeszcze jedną istotna opcję TYPE Pozwala ona na traktowanie zwróconej wartości jako zmiennej typu XML, co ułatwia zagnieżdżanie wyniku zapytania w innym i budowanie złożonych hierarchii Podobna sytuacja występuje przy opcji XSNIL. Powoduje ona,że w przypadku gdy element ma wartość null to i tak będzie umieszczony w wynikowym dokumencie 48

Agenda Podstawy XML Historia XML w pigułce Struktura dokumentu XML XML a bazy danych Alternatywa dla relacyjnych baz danych? XML w SQL Server 2008 Klauzula FOR XML polecenia SELECT Typ danych XML Metody typu XML Korzystanie z XML Schema Podsumowanie 49

Typ danych XML Kolumna w tabeli może być typu XML Pozwala na przechowanie bezpośrednio dokumentu XML o wielkości do 2 GB Z kolumną można skojarzyć kolekcję dokumentów XML Schema definiujących dopuszczalną zawartość kolumny XML (walidacja zgodności z XML Schema-mi) Typed XML (skojarzony z kolekcją XML Schema) może zapewnić większą wydajność ze względu na określenie typów danych oraz często mniejszy rozmiar pliku wynikowego Dokument nie jest przechowywany w oryginalnej postaci (normalizacja)! Do XML Schema wrócimy pod koniec wykładu 50

Typ danych XML Deklarowanie typu kolumny jako XML (untyped) Kolumna może zawierać dokumenty lub fragmenty dokumentów XML Przy zapisie weryfikowana jest jedynie składnia dokumentu XML Dopuszczalne odstępstwo może być wiele elementów najwyższego poziomu (w przypadku fragmentu dokumentu XML) 51

Typ danych XML Deklarowanie typu kolumny jako XML (typed) Korzystanie z możliwości XML Schema do definiowania dodatkowych ograniczeń dla postaci dokumentu Automatyczna walidacja danych zapisywanych w bazie Sposób na definiowanie niektórych rodzajów reguł biznesowych w postaci kolekcji schem 52

Typ danych XML - Stosowanie typu xml Przechowywanie danych o złożonej strukturze, które obsługiwane są przez aplikację. Baza jest tylko prostą przechowalnią. Modelowanie złożonych struktur danych połączone z rezygnacją z tworzenia wielu tabel w bazie. Wymiana danych z systemami zewnętrznymi Przechowywanie i umożliwienie modyfikowania złożonych struktur w ramach kolumny w tabeli\ Duże pliki XML = słabsza wydajność! Można próbować sobie z tym radzić poprzez stosowanie Indeksów XML 53

Agenda Podstawy XML Historia XML w pigułce Struktura dokumentu XML XML a bazy danych Alternatywa dla relacyjnych baz danych? XML w SQL Server 2008 Klauzula FOR XML polecenia SELECT Typ danych XML Metody typu XML Korzystanie z XML Schema Podsumowanie 54

Metody typu danych XML Typ danych XML udostępnia szereg metod służących do manipulowania zawartością dokumentu W przykładowej bazie danych stosujemy XML do przechowywania danych teleadresowych klientów. Unikamy w ten sposób tworzenia co najmniej czterech tabel w bazie Dane teleadresowe zawierać będą adresy pocztowe, email-e i identyfikatory z komunikatorów internetowych Na początku nie będziemy stosować kolekcji schem. Przyjdzie na to czas pod koniec wykładu 55

Metody typu danych XML - przykłady Wszystkie przykłady korzystania z metod typu danych XML będą przeprowadzane w oparciu o dokument XML: 56

Metody typu danych XML value() Jak pobrać konkretną wartość z dokumentu XML? Odpowiedzią jest metoda value() Wywołuje się ją z dwoma prametrami Wyrażeniem XQuery (właściwie zwykle jest to wyrażenie XPath) Docelowym typem danych Zwracana jest wartość skalarna, skonwertowana do typu określonego w wywołaniu: SELECT @dane.value( (//email/wartosc)[1], varchar(100) ) Zwróci wartość pierwszego elementu wartosc będącego dzieckiem elementu email, który występuje gdziekolwiek w hierarchii dokumentu. Wartość ta będzie skonwertowana do typu varchar(100) 57

Metody typu danych XML value() Metoda value() powinna być stosowana tylko gdy faktycznie chcemy pobrać wartość z dokumentu XML Jest to spowodowane tym, że nie jest ona zbyt wydajna Zastosowanie do sprawdzenia jakiegoś warunku nie jest dobrym pomysłem: SELECT CASE WHEN ISNULL(@dane.value( (//email/wartosc)[1], varchar(100, ) = THEN 0 ELSE 1 END as czyzawieraemail 58

Metody typu danych XML exist() Metoda exist () służy do sprawdzania czy wskazany węzeł istnieje Zapewnia wyższą wydajność Nie wymaga konwertowania węzła do docelowego typu: SELECT @dane.exist( //email/wartosc ) as czyzawieraemail SELECT @dane.exist('//email[position()>1]') as czyzawieraemaile 59

Metody typu danych XML query() Metoda query () służy do pobierania z dokumentu XML zbiorów elementów zdefiniowanych poprzez wyrażenie XQuery. Zwracany zbiór jest także typu XML. Zwykle stosowana w połączeniu z wyrażeniami XPath: Lub XQuery (FLWOR): 60

Metody typu danych XML query() XQuery jest językiem służącym do odpytywania dokumentu XML. Jest specyfikacją rozwijaną, a jakże, przez konsorcjum W3C. Wyrażenia FLWOR to akronim od słów for, let, where, order by, return Pozwalają na złożone definiowanie reguł pobierania węzłów z dokumentu XML. Stosowane są raczej w przypadku bardziej złożonych struktur dokumentów XML Porównywane do polecenia SELECT z SQL 61

Metody typu danych XML nodes() Metoda nodes() zapewnia funkcjonalność odwrotną do klauzuli FOR XML. Pozwala na wyłuskanie wartości elementów lub atrybutów z dokumentu XML i, w połączeniu z operatorem CROSS APPLY, na zwrócenie tych danych w postaci zbioru wierszy Wywołanie: kolumnaxml.nodes( [XQuery] ) Zastosujmy ją tym razem do tabeli Klient, dla klientów, którzy posiadają uzupełnione dane teleadresowe (jest ich czworo): 62

Metody typu danych XML nodes() Problem: potrzebna jest lista klientów i ich adresów pocztowych (w formie zwykłego zbioru rekordów) CROSS APPLY oraz nodes() powodują dodanie do każdego rekordu wynikowego dodatkowej kolumny zawierającej zmienną typu xml, którą z kolei traktujemy metodą value() w celu pobrania poszczególnych wartości (pól) adresu Znak. (kropka) w wyrażeniu XPath oznacza bieżący element. W tym przypadku będzie to każdy znaleziony element pocztowy 63

Metody typu danych XML modify() Operacje na danych typu XML nie kończą się oczywiście na różnych wariantach ich odczytu Pozostaje jeszcze kwestia modyfikowania struktury dokumentu XML: Dodawania nowych węzłów Modyfikacji zawartości węzłów Usuwania węzłów XQuery nie zawiera żadnych możliwości manipulowania zawartością dokumentu W SQL Server wprowadzono XML DML, który uzupełnia ten brak Metoda modify() wywoływana jest z jednym parametrem jednym z poleceń: insert, delete, replace value of 64

Metody typu danych XML modify() [insert] Polecenie insert umożliwia dodawanie nowych węzłów do dokumentu XML. Składnia : insert [zawartosc] [położenie] [cel] Przykład: insert <lokal>12</lokal> as last into (//pocztowy)[1] Położenie można określać jako: as first into as last into before after 65

Metody typu danych XML modify() [insert] Efekt wykonania polecenia insert: Tylko element główny 66

Metody typu danych XML modify() [insert] Efekt wykonania polecenia insert: Zmienna typu XML Wstawienie zmiennej do zawartości dokumentu 67

Metody typu danych XML modify() [delete] Polecenie delete umożliwia usuwanie węzłów z dokumentu XML. Składnia : delete [cel] Przykład: delete //adres[email] usuń wszystkie elementy adres zawierające w sobie element email [cel] może wskazywać zarówno pojedynczy element jak i grupę elementów /atrybutów 68

Metody typu danych XML modify() [replace value of] Polecenie replace value of umożliwia zmianę zawartości węzła dokumentu XML na wskazaną. Składnia : replace value of [cel] with [zawartosc] Przykład: replace value of (//pocztowy/budynek/text())[1] with nieznany" zmień zawartość tekstową pierwszego napotkanego elementu budynek na nieznany [cel] może wskazywać co najwyżej jeden element lub atrybut 69

Agenda Podstawy XML Historia XML w pigułce Struktura dokumentu XML XML a bazy danych Alternatywa dla relacyjnych baz danych? XML w SQL Server 2008 Klauzula FOR XML polecenia SELECT Typ danych XML Metody typu XML Korzystanie z XML Schema Podsumowanie 70

Typ danych XML co to jest XML Schema? XML Schema pozwala na narzucenie dodatkowych ograniczeń na zawartość dokumentu XML Dokument XML Schema.to też dokument XML Ogromne możliwości modelowania zawartości dokumentów Stworzona i rozwijana przez konsorcjum W3C ( http://www.w3.org/xml/schema ) Dużo wiedzy do rozpoznania i przyswojenia :-) a i tak zdarzają się sytuacje, gdy nie ma możliwości zamodelowania tego co chcemy osiągnąć 71

Typ danych XML co to jest XML Schema? Dokument XML Schema może być rozumiany jako formalna specyfikacja jakiegoś dokumentu XML Jeżeli otrzymam od kogoś plik z XML Schema to wiem, jak ma wyglądać dokument XML spełniający stawiane wymagania. Ten mechanizm jest powszechnie stosowany W SQL Server XML Schema jest stosowana do nakładania ograniczeń na zawartość kolumn typu XML. Pozwala to przenieść umiejętności ze świata XML do relacyjnych baz danych 72

Korzystanie z XML Schema istotne fakty Kolumna typu xml przyjmie każdy poprawnie sformułowany dokument XML lub fragment dokumentu XML. Nałożenie ograniczeń na dopuszczalną strukturę i zawartość dokumentów XML poprzez XML Schema Collection XML Schema Collection może zawierać jedną lub więcej schem opisujących dopuszczalne struktury dokumentów XML Ograniczenie nakłada się przy deklarowaniu typu kolumny przez podanie w nawiasie nazwy kolekcji schem Przy każdej próbie zapisu wartości XML do kolumny z nałożonymi ograniczeniami następuje jej walidacja ze schemami z kolekcji. Jeżeli jest zgodna z którąś ze schem zapis dochodzi do skutku Korzystanie z kolekcji schem może poprawić wydajność zapytań operujących na zawartości XML (chociażby przez fakt, że znane mogą być typy danych zawartych w poszczególnych elementach i atrybutach) 73

Korzystanie z XML Schema Korzystanie z XML Schema Collection składa się z dwóch etapow Utworzenie kolekcji schem Deklarowanie w tabelach kolumn jako xml(?) gdzie? Jest nazwą kolekcji schem: Adresy xml(daneadresowe) not null 74

Korzystanie z XML Schema Po utworzeniu kolekcji schem jest ona widoczna w oknie object browser (narzędzia SQL Server Management Studio): CREATE XML SCHEMA COLLECTION DaneAdresowe AS N'<xs:schema ( ) 75

Korzystanie z XML Schema Deklaracja kolumny typu xml korzystającej z kolekcji schem: [DaneTeleadresowe] [xml](document [dbo].[daneadresowe]) NULL W naszym przykładzie użyjemy jej w tabeli z danymi klientów: 76

Korzystanie z XML Schema Sam proces tworzenia dokumentu XML Schema jest na tyle złożony, że zasługuje na osobny wykład lub dwa :-) Omówiony zostanie pokrótce, żeby zrozumieć zasadę działania a nie wdawać się w niuanse modelowania dokumentów XML. Cel modelowania: Dane teleadresowe mogą się składać z dowolnej liczby adresów pocztowych i email. Adres email składa się tylko z jednej wartości ciągu zawierającego sam adres Adres pocztowy składa się z obowiązkowych pól miejscowość i kod pocztowy oraz z opcjonalnych: poczta, ulica, budynek i lokal. Dodatkowo kod pocztowy składa się z dwóch cyfr, znaku myślnika i trzech cyfr Adres email musi zawierać znak @ i jedną kropkę. 77

Korzystanie z XML Schema Struktura schemy dla opisanego problemu (diagram z XML Spy) 78

Korzystanie z XML Schema Dodatkowe ograniczenia widoczne są dopiero w kodzie XML schema: Definiują one kodpocztowy jako szablon ##-### gdzie # oznacza cyfrę Definiują one wartość adresu email jako ciąg zawierajacy w sobie znak @ oraz kropkę 79

Korzystanie z XML Schema Spróbujmy teraz sprawdzić działanie kolekcji schem poprzez dodanie kilku wpisów do kolumny xml. Zacznijmy od wpisu z adresem pocztowym: Polecenie wykonało się poprawnie, gdyż dokument jest zgodny ze schemą 80

Korzystanie z XML Schema Kolejna próba dokument z adresem email Polecenie wykona się poprawnie, gdyż dokument jest zgodny ze schemą 81

Korzystanie z XML Schema Kolejna próba dokument z dwoma adresami (pocztowym i email) Polecenie wykona się poprawnie, gdyż dokument jest zgodny ze schemą 82

Korzystanie z XML Schema Kolejna próba dokument z adresem pocztowym (błędny kod) Polecenie spowoduje błąd, gdyż dokument nie spełnia ograniczenia wynikającego ze schemy. 83

Korzystanie z XML Schema Kolejna próba dokument z adresem email (błędna wartość adresu email) Polecenie spowoduje błąd, gdyż dokument nie spełnia ograniczenia wynikającego ze schemy. 84

Korzystanie z XML Schema Kolejna próba dokument z nadprogramowym elementem Polecenie spowoduje błąd, gdyż dokument zawiera dodatkowy element bonus 85

Korzystanie z XML Schema Kolejna próba dokument z brakującym elementem (adresik zamiast adres) Polecenie spowoduje błąd, gdyż dokument nie zawiera wymaganego elementu adres 86

Korzystanie z XML Schema Kolejna próba dokument z brakującym znacznikiem zamykającym Polecenie spowoduje błąd, gdyż dokument nie jest poprawnie sformułowany. W tym przypadku nie doszło do walidacji za pomocą schemy! 87

Agenda Podstawy XML Historia XML w pigułce Struktura dokumentu XML XML a bazy danych Alternatywa dla relacyjnych baz danych? XML w SQL Server 2008 Klauzula FOR XML polecenia SELECT Typ danych XML Metody typu XML Korzystanie z XML Schema Podsumowanie 88

Podsumowanie XML znajduje zastosowanie w świecie relacyjnych baz danych Nie jest dla nich alternatywą, raczej uzupełnia ich możliwości Z racji popularności XML serwery baz danych zaczynają go wspierać (wcześniej tylko jako BLOB lub CLOB) 89

Podsumowanie SQL Server 2008 posiada szereg wygodnych mechanizmów pozwalających na korzystanie z XML przy: Przechowywaniu danych w bazie (typ danych xml) Zwracaniu wyników zapytań w postaci XML (klauzula FOR XML) Odpytywaniu dokumentu XML (metody value(),exist(),nodes() ) Nie wspomniano przy tej okazji chociażby o indeksach XML poprawiających wydajność zapytań korzystających z danych XML Modyfikowaniu struktury dokumentu XML (metoda modify() ) Definiowaniu ograniczeń dopuszczalnej struktury dokumentów XML (XML Schema Collection ) 90

<Koniec /> czy są pytania? 91