• Nie Znaleziono Wyników

Dokumenty XML w relacyjnych bazach danych

N/A
N/A
Protected

Academic year: 2021

Share "Dokumenty XML w relacyjnych bazach danych"

Copied!
86
0
0

Pełen tekst

(1)

XML w relacyjnych bazach danych

Na przykładzie SQL Server 2008

1

(2)

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

informatyka +

(3)

• Podstawowa znajomość SQL

• Podstawowa znajomość SQL Server

• Podstawowa znajomość dowolnego języka opartego o znaczniki (XML, HTML itp.)

• Chęć do nauki ;-)

Wymagania wstępne

3

(4)

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

informatyka +

(5)

Historia XML w pigułce

• Początki prac nad XML (Extensible Markup Language) – 1996 rok

• Specyfikacja XML 1.0 – 1998 rok (http://www.w3c.org) • Cechy XML

5

informatyka +

oFormat tekstowy (przenaszalność) oProste reguły dotyczące składni oCzytelny dla człowieka

oBrak zdefiniowanego zbioru elementów (nie jak HTML) oProstszy od SGML, a wyparł go z większości zastosowań oOd powstania – coraz szerzej stosowany

oBogate wsparcie ze strony narzędzi (parsowanie, walidacja, manipulowanie)

(6)

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 6

informatyka +

(7)

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/> (brak zawartości – można stosować skróconą formę )

• Elementy mogą być zagnieżdżone:

<email><wartosc> Jan </wartosc></email>

• Elementy nie mogą się „przecinać”:

<email><wartosc> Jan </email></wartosc>

7

(8)

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: – &lt; zastępującą znak <

– &gt; zastępującą znak > – &quot; zastępującą znak ” – &apos; zastępującą znak ‘ – &amp; zastępującą znak &

8

informatyka +

(9)

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)

9

(10)

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 10

informatyka +

(11)

XML alternatywą dla relacyjnych baz danych ?

Jeśli patrzeć na to od strony teoretycznej – czemu nie?

11

informatyka +

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ć

(12)

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

12

(13)

Wynik wojny XML-SQL

• Pomimo tego, że XML jest pewną alternatywą dla relacyjnych baz danych – wybrano najlepsze

rozwiązanie

13

informatyka +

(14)

Przykład uproszczenia schematu relacyjnej bazy danych z wykorzystaniem XML

14

informatyka +

(15)

Przykład uproszczenia schematu relacyjnej bazy danych z wykorzystaniem XML

15

informatyka +

Schemat dokumentu XML zawierającego opis adresów i kontaktów!

(16)

Przykład uproszczenia schematu relacyjnej bazy danych z wykorzystaniem XML

16

informatyka +

… i zamiast pięciu tabel mamy tylko jedną - i wszystkie potrzebne dane mogą być zapisane

Kolumna typu XML

przechowująca dane zgodne ze schematem XML

pokazanym na wcześniejszym slajdzie

(17)

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 17

informatyka +

(18)

Struktura bazy danych dla dalszych przykładów

18

informatyka +

Zaznaczone kolumny są typu XML i będą przechowywać złożone dane

(19)

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

19

(20)

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

20

(21)

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:

21

(22)

No tak. Ale potrzebujmy te dane w postaci XML!

• Nie ma problemu – skorzystamy z klauzuli FOR XML • Zaczniemy od najprostszego wariantu : FOR XML RAW

22

(23)

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!

23

informatyka +

<dane>

(24)

Klauzula FOR XML RAW z opcją ROOT

• Oczywiście da się to poprawić

24

informatyka +

(25)

Klauzula FOR XML RAW z opcją ROOT

• Opcja RAW także dopuszcza podanie w nawiasie nazwy elementu

25

(26)

Klauzula FOR XML RAW z opcją ELEMENTS

• Aplikacja potrzebuje elementów a nie atrybutów! Co wtedy?

26

(27)

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

27

(28)

Klauzula FOR XML AUTO - przykład

28

informatyka +

Wpływa na hierarchię!

(29)

Klauzula FOR XML AUTO - przykład

29

informatyka +

Tym razem po ID zamówienia

(30)

Coraz więcej możliwości:) Co jeszcze da się zrobić?

30

informatyka +

• 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

(31)

Klauzula FOR XML EXPLICIT

31

informatyka +

• 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

(32)

Klauzula FOR XML EXPLICIT

32

informatyka +

• Spróbujmy sklecić przykład (podobny do tego z trybu AUTO)

(33)

Klauzula FOR XML EXPLICIT

33

informatyka +

(34)

Klauzula FOR XML EXPLICIT

34

informatyka +

(35)

Klauzula FOR XML EXPLICIT – fajna ale żmudna

35

informatyka +

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

(36)

Klauzula FOR XML PATH i język XPath

36

informatyka +

• 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

(37)

Klauzula FOR XML PATH i język XPath

37

informatyka +

Wyrażenie: /dane/adres/pocztowy/ulica

wskazuje na element ulica i jego zawartość.

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

(38)

Klauzula FOR XML PATH i język XPath

38

informatyka +

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

(39)

Klauzula FOR XML PATH

39

informatyka +

• 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

(40)

Klauzula FOR XML PATH

40

informatyka +

• Obsługuje opcje znane z trybu RAW i AUTO

(41)

Klauzula FOR XML PATH

41

informatyka +

Opcja TYPE!

(42)

Klauzula FOR XML PATH – przykład 2

42

(43)

Klauzula FOR XML – inne opcje

43

informatyka +

• 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

(44)

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 44

informatyka +

(45)

Typ danych XML

45

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)!

(46)

Typ danych XML

46

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

(47)

Typ danych XML

47

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ł

(48)

Typ danych XML - Stosowanie typu xml

48

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

(49)

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

informatyka +

(50)

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

50

(51)

Metody typu danych XML - przykłady

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

51

(52)

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)

52

(53)

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 53

informatyka +

(54)

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

54

(55)

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

55

(56)

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

56

(57)

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

57

(58)

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”

58

(59)

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

59

(60)

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 60

informatyka +

(61)

Metody typu danych XML –modify() [insert]

61

informatyka +

Efekt wykonania polecenia insert:

Tylko element

(62)

Metody typu danych XML –modify() [insert]

62

informatyka +

Efekt wykonania polecenia insert:

Zmienna typu XML Wstawienie zmiennej do zawartości dokumentu

(63)

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

63

(64)

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

64

(65)

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 65

informatyka +

(66)

Typ danych XML – co to jest XML Schema?

66

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

(67)

Typ danych XML – co to jest XML Schema?

67

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

(68)

Korzystanie z XML Schema – istotne fakty

68

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

(69)

Korzystanie z XML Schema

69

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:

(70)

Korzystanie z XML Schema

70

informatyka +

• Po utworzeniu kolekcji schem jest ona widoczna w oknie

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

(71)

Korzystanie z XML Schema

71

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:

(72)

Korzystanie z XML Schema

72

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

(73)

Korzystanie z XML Schema

73

informatyka +

(74)

Korzystanie z XML Schema

74

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

(75)

Korzystanie z XML Schema

75

informatyka +

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

(76)

Korzystanie z XML Schema

76

informatyka +

Kolejna próba – dokument z adresem email

(77)

Korzystanie z XML Schema

77

informatyka +

Kolejna próba – dokument z dwoma adresami (pocztowym i email)

(78)

Korzystanie z XML Schema

78

informatyka +

Kolejna próba – dokument z adresem pocztowym (błędny kod)

Polecenie spowoduje błąd, gdyż dokument nie spełnia ograniczenia wynikającego ze schemy.

(79)

Korzystanie z XML Schema

79

informatyka +

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.

(80)

Korzystanie z XML Schema

80

informatyka +

Kolejna próba – dokument z nadprogramowym elementem

(81)

Korzystanie z XML Schema

81

informatyka +

Kolejna próba – dokument z brakującym elementem (adresik zamiast adres)

Polecenie spowoduje błąd, gdyż dokument nie zawiera wymaganego elementu „adres”

(82)

Korzystanie z XML Schema

82

informatyka +

Kolejna próba – dokument z brakującym znacznikiem zamykającym

Polecenie spowoduje błąd, gdyż dokument nie jest poprawnie sformułowany.

(83)

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 83

informatyka +

(84)

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)

84

(85)

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 )

85

(86)

…czy są pytania?

86

informatyka +

Cytaty

Powiązane dokumenty

• nazwy znaczników muszą rozpoczynać się od litery lub znaku podkreślenia (dalsza część: litery, cyfry, znaki podkreślenia, kropki, myślniki). • w nazwach znaczników

• Oddzielenie danych od szablonu prezentacji. • Odpowiednia szczegółowość

Karta wykorzystania samochodu słuŜbowego Dane samochodu:. Numer katalogowy: PG 2044

- wewnątrz elementów prostych występuje tylko jeden typ danych, wewnątrz złoŜonych nie moŜemy dokładnie określić liczby wystąpień elementu. XML Schema – zastępuje

group Defines a group of elements to be used in complex type definitions import Adds multiple schemas with different target namespace to a document include Adds multiple schemas

This declaration means that the appearance of a country attribute in an instance document is optional (the default value of use is optional), although if the attribute does appear,

a) tylko przez kod działający po stronie serwera b) tylko przez skrypt po stronie przeglądarki c) zarówno po stronie serwera jak i przeglądarki. d) tworzenie i zapis tylko

http://www.woodgrovebank.com/services/bank.asmx?wsdl wsdl /l:VB /protocol:HttpGet /out:Bank.vb