kurs wykorzystanie xml w relacyjnych bazach danych

background image
background image

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 +

background image

• 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

informatyka +

background image

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 +

background image

•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

background image

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
z

ałożeń GML/SGML

Wstęp i historia XML

background image

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.

background image

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.

background image

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

background image

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

background image

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

informatyka +

background image

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>

12

informatyka +

background image

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 &

13

informatyka +

Błąd

background image

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

informatyka +

background image

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

informatyka +

background image

XML alternatywą dla relacyjnych baz danych ?

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

16

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ć

background image

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

informatyka +

background image

Wynik wojny XML-SQL

• Pomimo tego, że XML jest pewną alternatywą dla

relacyjnych baz danych – wybrano najlepsze
rozwiązanie

18

informatyka +

Dwie konkurencyjne technologie „zmuszono” do współpracy!

background image

Przykład uproszczenia schematu relacyjnej
bazy danych z wykorzystaniem XML

19

informatyka +

Fragment poprawnie zaprojektowanej relacyjnej bazy danych!

background image

Przykład uproszczenia schematu relacyjnej
bazy danych z wykorzystaniem XML

20

informatyka +

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

background image

Przykład uproszczenia schematu relacyjnej
bazy danych z wykorzystaniem XML

21

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

A może uprościć to tak !!!!!!!

background image

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

informatyka +

background image

Struktura bazy danych dla dalszych
przykładów

23

informatyka +

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

background image

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

informatyka +

background image

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

informatyka +

background image

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

informatyka +

background image

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

informatyka +

background image

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

!

28

informatyka +

<dane>

</dane>

background image

Klauzula FOR XML RAW z opcją ROOT

• Oczywiście da się to poprawić

29

informatyka +

• Zmieńmy jeszcze „row” na coś milszego dla

oka…

background image

Klauzula FOR XML RAW z opcją ROOT

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

30

informatyka +

background image

Klauzula FOR XML RAW z opcją ELEMENTS

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

31

informatyka +

background image

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

informatyka +

background image

Klauzula FOR XML AUTO - przykład

33

informatyka +

Wpływa na

hierarchię!

background image

Klauzula FOR XML AUTO - przykład

34

informatyka +

Tym razem

po

ID

zamówienia

background image

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

35

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

background image

Klauzula FOR XML EXPLICIT

36

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

uniwersalnej dla uzyskania konkretnej struktury XML

background image

Klauzula FOR XML EXPLICIT

37

informatyka +

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

trybu AUTO)

background image

Klauzula FOR XML EXPLICIT

38

informatyka +

• Rezultat zapytania z poprzedniego slajdu (bez klauzuli FOR

XML):

background image

Klauzula FOR XML EXPLICIT

39

informatyka +

• Rezultat zapytania z poprzedniego slajdu (z klauzulą FOR

XML):

background image

Klauzula FOR XML EXPLICIT – fajna ale
żmudna

40

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…

– Trzeba poznać język XPath (chociaż trochę)

background image

Klauzula FOR XML PATH i język XPath

41

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

wskazuje na katalog ulica i jego zawartość.

background image

Klauzula FOR XML PATH i język XPath

42

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>

background image

Klauzula FOR XML PATH i język XPath

43

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”

background image

Klauzula FOR XML PATH

44

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

background image

Klauzula FOR XML PATH

45

informatyka +

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

background image

Klauzula FOR XML PATH

46

informatyka +

Opcja

TYPE!

background image

Klauzula FOR XML PATH – przykład 2

47

informatyka +

background image

Klauzula FOR XML – inne opcje

48

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

background image

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 +

background image

Typ danych XML

50

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

• Do XML Schema wrócimy pod koniec wykładu

background image

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

najwyższego poziomu (w przypadku fragmentu dokumentu
XML)

background image

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ł

biznesowych – w postaci kolekcji schem

background image

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ść !
• Można próbować sobie z tym radzić poprzez stosowanie Indeksów XML

background image

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 +

background image

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

informatyka +

background image

Metody typu danych XML - przykłady

• Wszystkie przykłady korzystania z metod typu danych XML

będą przeprowadzane w oparciu o dokument XML:

56

informatyka +

background image

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

informatyka +

background image

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 +

background image

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

informatyka +

background image

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

informatyka +

background image

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

informatyka +

background image

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

informatyka +

background image

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

informatyka +

background image

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

informatyka +

background image

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 +

background image

Metody typu danych XML –modify() [insert]

66

informatyka +

Efekt wykonania polecenia insert:

Tylko

element

główny

background image

Metody typu danych XML –modify() [insert]

67

informatyka +

Efekt wykonania polecenia insert:

Zmienn

a typu

XML

Wstawienie

zmiennej do

zawartości

dokumentu

background image

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

informatyka +

background image

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

informatyka +

background image

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 +

background image

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

background image

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 relacyjnych baz danych

background image

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

background image

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:

Adresy xml(DaneAdresowe) not null

background image

Korzystanie z XML Schema

75

informatyka +

• 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

(…)

background image

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:

background image

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

– Adres email musi zawierać znak @ i jedną kropkę.

background image

Korzystanie z XML Schema

78

informatyka +

• Struktura schemy dla opisanego problemu (diagram z XML

Spy)

background image

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 znak @ oraz kropkę

background image

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:

Polecenie wykonało się poprawnie, gdyż dokument jest zgodny ze
schemą

background image

Korzystanie z XML Schema

81

informatyka +

Kolejna próba – dokument z adresem email

Polecenie wykona się poprawnie, gdyż dokument jest zgodny ze
schemą

background image

Korzystanie z XML Schema

82

informatyka +

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

Polecenie wykona się poprawnie, gdyż dokument jest zgodny ze
schemą

background image

Korzystanie z XML Schema

83

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.

background image

Korzystanie z XML Schema

84

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.

background image

Korzystanie z XML Schema

85

informatyka +

Kolejna próba – dokument z nadprogramowym elementem

Polecenie spowoduje błąd, gdyż dokument zawiera dodatkowy element
„bonus”

background image

Korzystanie z XML Schema

86

informatyka +

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

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

background image

Korzystanie z XML Schema

87

informatyka +

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!

background image

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

informatyka +

background image

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

informatyka +

background image

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

informatyka +

background image

…czy są pytania?

91

informatyka +

<Koniec />


Document Outline


Wyszukiwarka

Podobne podstrony:
Dokumenty XML w relacyjnych bazach danych czyli wojna swiatow OKLADKA zew indd dokumenty XML w rela
egz, Pytania na egzamin testowy, Pytania na egzamin testowy, Relacyjne bazy danych 2002
Projekt BD Relacyjne Bazy Danych obligat ET II II 01
podstawy relacyjnych baz danych wyklad cz1 architektura
Relacyjne bazy danych
kurs-asembler-zlotowicz, [ Algorytmy: Szyfrowanie danych ]
2009 02 Relacyjna baza danych HSQLDB [Bazy Danych]
WPROWADZENIE DO RELACYJNYCH BAZ DANYCH POJECIA PODSTAWOWE
podstawy relacyjnych baz danych wyklad cz3 projektowanie
[03] Bazy Danych Relacyjny Model Danych
API, kurs-api-robal, [ Algorytmy: Szyfrowanie danych ]
helion relacyjne bazy danych GUR6WE4GX5KXMQXHUR6X4BY2FZ6BIT5VOOO27YQ
Przewodnik Relacyjne bazy danych 2008-2009, Ogrodnictwo 2011, INFORMATYKA, informatyka sgg, MS Acces
Obiektowe rozszerzenia relacyjnych baz danych
Zestaw 1, Wprowadzenie do relacyjnych baz danych
Bezpieczeństwo w bazach danych

więcej podobnych podstron