• Nie Znaleziono Wyników

informatyka + • 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)!

Typ danych XML

51

informatyka +

• 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

Typ danych XML

52

informatyka +

• 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ł

Typ danych XML - Stosowanie typu xml

53

informatyka +

• 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ść !

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

informatyka +

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

informatyka +

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

informatyka +

Metody typu danych XML –modify() [insert]

66

informatyka +

Efekt wykonania polecenia insert:

Tylko element

Metody typu danych XML –modify() [insert]

67

informatyka +

Efekt wykonania polecenia insert:

Zmienna typu XML Wstawienie zmiennej do zawartości dokumentu

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

informatyka +

Typ danych XML – co to jest XML Schema?

71

informatyka +

• 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ąć

Typ danych XML – co to jest XML Schema?

72

informatyka +

• 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

Korzystanie z XML Schema – istotne fakty

73

informatyka +

• 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

Korzystanie z XML Schema

74

informatyka +

• 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:

Korzystanie z XML Schema

75

informatyka +

• Po utworzeniu kolekcji schem jest ona widoczna w oknie

object browser (narzędzia SQL Server Management Studio):

Korzystanie z XML Schema

76

informatyka +

• 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:

Korzystanie z XML Schema

77

informatyka +

• 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

Korzystanie z XML Schema

78

informatyka +

Korzystanie z XML Schema

79

informatyka +

• 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

Korzystanie z XML Schema

80

informatyka +

Spróbujmy teraz sprawdzić działanie kolekcji schem poprzez dodanie kilku wpisów do kolumny xml. Zacznijmy od wpisu z adresem pocztowym:

Korzystanie z XML Schema

81

informatyka +

Powiązane dokumenty