Relacyjne bazy danych a XML Anna Pankowska aniap@amu.edu.pl Internet, SQLiXMLwbiznesie Internet nieoceniony sposób komunikacji z klientami, pracownikami i partnerami handlowymi przyspiesza transakcje finansowe umożliwiadotarciedoogromnejrzeszy klientów ułatwia klientom wyszukanie najlepszej oferty Anna Pankowska - I&E 2
Internet, SQL ixmlwbiznesie przetwarzanie danych kluczowa część aplikacji biznesowych relacyjne systemy baz danych efektywne zarządzanie, przechowywanie, przetwarzanie i wymiana danych relacyjne bazy danych wykorzystywane przez większość firm Anna Pankowska - I&E 3 Internet, SQL ixmlwbiznesie Klienci encje Produkty Anna Pankowska - I&E 4
Internet, SQL ixmlwbiznesie Klienci Nr Nazwisko Telefon encje atrybuty Produkty Id Nazwa Cena Anna Pankowska - I&E 5 Internet, SQL ixmlwbiznesie Klienci Nr Nazwisko Telefon encje atrybuty ograniczenia Produkty Id Nazwa Cena Anna Pankowska - I&E 6
Internet, SQL ixmlwbiznesie Klienci Zamowienia Nr Nazwisko Telefon Nr Id Data encje atrybuty ograniczenia powiązania Produkty Id Nazwa Cena Anna Pankowska - I&E 7 Internet, SQL i XML wbiznesie konieczność integracji danych oraz aplikacji w ramach firmy i między firmami EDI Electronic Data Interchange rozwiązanie XML technologia do budowania rozwiązań integracyjnych i swobodnej wymiany danych Anna Pankowska - I&E 8
Zastosowanie XML w rozwiązaniach typu business-to-consumer (B2C) handel elektroniczny dane składowane w bazie relacyjnej, a prezentowane na stronach WWW XML jako pośrednik dane XML mogą być wyświetlane w oparciu o różne arkusze stylów na różnych urządzeniach klienckich (HTML - przeglądarki, WML - komórki) Anna Pankowska - I&E 9 Zastosowanie XML w rozwiązaniach typu business-to-enterprise (B2E) wewnętrzne aplikacje oparte na technologiach internetowych dostęp do dowolnych danych i wykonywanie na nich operacji za pomocą przeglądarek obsługujących XML (np: Microsoft Internet Explorer) aplikacje mogą stosować XML jako neutralny sposób opisu i wymiany danych Anna Pankowska - I&E 10
Zastosowanie XML w rozwiązaniach typu business-to-business (B2B) procesy biznesowe między partnerami handlowymi XML jako idealny sposób do opisu dokumentów wymienianych między firmami (zamówienia, faktury itp) Anna Pankowska - I&E 11 Wykorzystanie relacyjnych baz danych do zarządzania dokumentami XML-owymi Zagadnienia: przechowywanie i przetwarzanie dokumentów XML-owych w relacyjnej bazie danych rozpowszechnianie danych relacyjnych w postaci dokumentów XML-owych Anna Pankowska - I&E 12
Wykorzystanie relacyjnych baz danych do zarządzania dokumentami XML-owymi Zalety wykorzystania RSBD: RSBD są techniką dojrzałą, sprawdzoną i rozwijaną od wielu lat dostarczają szereg przydatnych rozwiązań dotyczących zarządzania pamięcią, współbieżnością, odtwarzania, wersjonowania Anna Pankowska - I&E 13 Wykorzystanie relacyjnych baz danych do zarządzania dokumentami XML-owymi Zalety rozpowszechniania danych w postaci dokumentów XML: powszechność, uwolnienie od ograniczeń sprzętowo-programowych dane mogą być strukturalizowane w postaci najbardziej wygodnej dla użytkownika Anna Pankowska - I&E 14
Wykorzystanie relacyjnych baz danych do zarządzania dokumentami XML-owymi Dokumenty XML > dane relacyjne: problemy opracowanie schematu relacji odpowiedniego do składowania dokumentów XML-owych (dowolne zagłębienia, rekursje, referencje) translacja zapytań zjęzyka semistrukturalnego do relacyjnego optymalizacja zapytań Anna Pankowska - I&E 15 Wykorzystanie relacyjnych baz danych do zarządzania dokumentami XML-owymi Dane relacyjne -> dokumenty XML: problemy powiązania między tabelami brak typów konieczność uwzględniania kolejności elementów Anna Pankowska - I&E 16
Reprezentacja encji w XML encja Klienci w relacyjnej bazie danych Klienci Nr 112 113 Nazwisko Kowalski Jaworska Telefon 8345035 5343534 Anna Pankowska - I&E 17 Reprezentacja encji w XML encja Klienci w dokumencie XML -zapomocą atrybutów <klienci> <klient Nr= 112 Nazwisko= Kowalski telefon= 8345035 /> <klient Nr= 113 Nazwisko= Jaworska telefon= 5343534 /> </klienci> Anna Pankowska - I&E 18
Reprezentacja encji w XML encja Klienci w dokumencie XML -zapomocą elementów <klienci> <klient> <Nr> 112 </Nr> <Nazwisko> Kowalski </Nazwisko> <telefon> 8345035 </telefon> </klient> <klient> <Nr> 113 </Nr> <Nazwisko> Jaworska </Nazwisko> <telefon> 5343534 </telefon> </klient> </klienci> Anna Pankowska - I&E 19 Reprezentacja encji w XML encja Klienci w dokumencie XML -rozwiązanie mieszane <klienci> <klient Nr = 112 > Kowalski <telefon> 8345035 </telefon> </klient> <klient Nr = 113 > Jaworska <telefon> 5343534 </telefon> </klient> </klienci> Anna Pankowska - I&E 20
Reprezentacja powiązań wxml powiązanie w relacyjnej bazie danych Zamowienia NrZam Data Klient 1002 01.02.2002 112 1003 03.04.2002 113 PozycjeZamowien NrPoz 1 2 1 NrZam NrProd Cena Ilosc 1002 40 120 4 1002 30 156 2 1003 10 320 7 Anna Pankowska - I&E 21 Reprezentacja powiązań wxml powiązanie w XML -zagnieżdżenie elementów <zamowienia> <zamowienie NrZam= 1002 Data= 01.02.2002 Klient= 112 > <pozycja NrPoz= 1 NrProd= 40 Cena= 120 Ilosc= 4 /> <pozycja NrPoz= 2 NrProd= 30 Cena= 156 Ilosc= 2 /> </zamowienie> <zamowienie NrZam= 1003 Data= 03.04.2002 Klient= 113 > <pozycja NrPoz= 1 NrProd= 10 Cena= 320 Ilosc= 7 /> </zamowienie> </zamowienia> Anna Pankowska - I&E 22
Konkretne rozwiązania w oparciu o narzędzie: Microsoft SQL Server 2000 Anna Pankowska - I&E 23 Transformacja danych relacyjnych do XML instrukcja SELECT... FOR XML -trybraw -trybauto -trybexplicit składnia polecenia: SELECT lista_atrybutow FROM tabele_zrodlowe WHERE warunki_wyszukiwania FOR XML RAW AUTO EXPLICIT [, XMLDATA] [, ELEMENST] [, BINARY BASE64] Anna Pankowska - I&E 24
SELECT... FOR XML tryb RAW zapytania w trybie RAW zwracają po jednym elemencie XML dla każdego rekordu tabeli każdy element otrzymuje nazwę row każdy element posiada po jednym atrybucie dla każdego pobranego pola tabeli każdy atrybut nazywa się tak jak pole tabeli Anna Pankowska - I&E 25 SELECT... FOR XML tryb RAW przykład zapytanie: select NrZam, NrProd, Cena from PozycjeZamowien where NrZam = 1002 for xml raw odpowiedz: <row NrZam="1002" NrProd="40" Cena="120.0000"/> <row NrZam="1002" NrProd="30" Cena="156.0000"/> Anna Pankowska - I&E 26
SELECT...FOR XML tryb AUTO każdy element otrzymuje nazwę od nazwy tabeli, z której został wybrany przykład: zapytanie select NrZam, Klient from Zamowienia for xml auto odpowiedz <Zamowienia NrZam="1002" Klient="112"/> <Zamowienia NrZam="1003" Klient="113"/> Anna Pankowska - I&E 27 SELECT...FOR XML tryb AUTO użycie opcji ELEMENTS dane XML zostaną zwrócone w postaci elementów przykład: select NrZam, Klient from Zamowienia zam for xml auto, elements <zam> <NrZam> 1002 </NrZam> <Klient> 112 </Klient> </zam> <zam> <NrZam> 1003 </NrZam> <Klient> 113 </Klient> </zam> Anna Pankowska - I&E 28
SELECT...FOR XML tryb EXPLICIT składnia zapytania jest najbardziej skomplikowana, ale zapewnia największą kontrolę nad powstałym fragmentem XML odpowiedź powstaje w oparciu o tymczasową tabelę uniwersalną,która zawiera po jednej kolumnie dla każdego rodzaju danych oraz kolumny Tag(identyfikuje znacznik XML) i Parent (nadelement) Anna Pankowska - I&E 29 SELECT...FOR XML tryb EXPLICIT sposób zdefiniowania danych narzucają nazwy atrybutów w tabeli uniwersalnej NazwaElementu!NumerZnacznika!NazwaAtrybutu!Dyrektywa dyrektywy: -element -xml -hide - xmltext -cdata - ID, IDREF, IDREFS z opcja XMLDATA Anna Pankowska - I&E 30
SELECT...FOR XML tryb EXPLICIT przykład: select 1 as Tag, null as Parent, nazwisko as [nazwisko!1] from klienci for xml explicit <nazwisko>kowalski</nazwisko> <nazwisko>jaworska</nazwisko> Tag Parent nazwisko!1 ----------- ----------- -------------------- 1 NULL Kowalski 1 NULL Jaworska Anna Pankowska - I&E 31 SELECT...FOR XML tryb EXPLICIT przykład: select 1 as Tag, null as Parent, nr as [klient!1!id], nazwisko as [klient!1], telefon as [klient!1!telefon!element] from klienci for xml explicit <klient Id="112"> Kowalski <telefon>8345035</telefon> </klient> <klient Id="113"> Jaworska <telefon>5343534</telefon> </klient> Tag Parent klient!1!id klient!1 klient!1!telefon!element ----------- ----------- ----------- ----------------- ------------------------ 1 NULL 112 Kowalski 8345035 1 NULL 113 Jaworska 5343534 Anna Pankowska - I&E 32
SELECT...FOR XML tryb EXPLICIT przykład: select 1 as Tag, null as Parent, NrZam as [zamowienie!1!id], Data as [zamowienie!1!data!element], Nazwisko as [zamowienie!1!klient!element] from zamowienia, klienci where zamowienia.klient = klienci.nr for xml explicit <zamowienie id="1002"> <Data> 2002-01-02 </Data> <Klient> Kowalski </Klient> </zamowienie> <zamowienie id="1003"> <Data> 2002-03-04 </Data> <Klient> Jaworska </Klient> </zamowienie> Anna Pankowska - I&E 33 SELECT...FOR XML tryb EXPLICIT przykład: select 1 as tag, null as parent, nazwisko as [Klient!1!nazwisko], null as [zamowienie!2!numer], null as [zamowienie!2!data!element] from klienci where nr = 112 union all select 2 as tag, 1 as parent, nazwisko, nrzam, data from zamowienia, klienci where zamowienia.klient = klienci.nr and nr = 112 for xml explicit <Klient nazwisko="kowalski"> <zamowienie numer="1002"> <data>2002-01-02</data> </zamowienie> <zamowienie numer="1022"> <data>2002-01-12</data> </zamowienie> </Klient> Anna Pankowska - I&E 34
SELECT...FOR XML tryb EXPLICIT przykład: select 1 as tag, null as parent, null as [klienci!1], null as [klient!2], null as [klient!2!id], null as [klient!2!telefon!element] union all select 2 as Tag, 1 as Parent, null, nazwisko, nr, telefon from klienci for xml explicit <klienci> <klient Id="112"> Kowalski <telefon>8345035</telefon> </klient> <klient Id="113"> Jaworska <telefon>5343534</telefon> </klient> </klienci> Anna Pankowska - I&E 35 Podsumowanie zapytania FOR XML pozwalają na elastyczne pobieranie danych relacyjnych z SQL Servera w postaci XML umożliwia to generowanie dokumentów biznesowych wymienianych między firmami dalszym krokiem jest napisanie oprogramowania umożliwiającego połączenie z serwerem bazodanowym i pobranie wynikowych dokumentów XML (ODBC, ADO) Anna Pankowska - I&E 36
Składowanie dokumentów XMLowych w relacyjnej bazie danych przykład firma umożliwia klientom składanie zamówień za pośrednictwem internetu; przesłany dokument jest składowany w bazie danych Anna Pankowska - I&E 37 Przetwarzanie i podział dokumentu XML dokument XML sp_xml_preparedocument tabela select * from OpenXML Anna Pankowska - I&E 38
Przygotowanie dokumentu za pomocą sp_xml_preparedocument declare @idoc int declare @doc varchar(1000) set @doc =' <root> <klient nazwisko="kowalski"> <zamowienia> <numer> 1002 </numer> <numer> 1022 </numer> </zamowienia> </klient> <klient nazwisko="jaworska"> <zamowienia> <numer> 1003 </numer> </zamowienia> </klient> </root>' exec sp_xml_preparedocument @idoc OUTPUT, @doc Anna Pankowska - I&E 39 Generowanie zestawu rekordów za pomocą funkcji OpenXML SELECT * FROM OPENXML (@idoc, '/root/klient',1) WITH ( nazwisko varchar(15)) nazwisko --------------- Kowalski Jaworska Anna Pankowska - I&E 40
Generowanie zestawu rekordów za pomocą funkcji OpenXML SELECT FROM * into ludzie OPENXML (@idoc, '/root/klient/zamowienia',3) WITH ( nazwisko varchar(15) '../@nazwisko', numer int ) nazwisko numer --------------- ----------- Kowalski 1002 Jaworska 1003 Anna Pankowska - I&E 41 Tworzenie tabeli krawędziowej za pomocą funkcji OpenXML SELECT FROM * into ludzie OPENXML (@idoc, 'root') id parentid localname prev text ---- ---------- ------------ -------------------- ---------- 0 NULL root NULL NULL 2 0 klient NULL NULL 3 2 nazwisko NULL NULL 4 2 zamowienia NULL NULL 5 4 numer NULL NULL 6 4 numer 5 NULL 7 0 klient 2 NULL 8 7 nazwisko NULL NULL 9 7 zamowienia NULL NULL 10 9 numer NULL NULL 11 3 #text NULL Kowalski 12 5 #text NULL 1002 13 6 #text NULL 1022 14 8 #text NULL Jaworska 15 10 #text NULL Anna Pankowska - I&E 1003 42