XML Adatbziskezels Oracle XML n n Az XML
XML Adatbázis-kezelés (Oracle)
XML n n Az XML (e. Xtensible Markup Language) eredetileg a „dokumentumvilágból” és nem az „adatbázisvilágból” (értsd: dokumentumokkal illetve adatbázisokkal foglalkozó tudományos közösség) emelkedett ki, mint a dokumentumok formájának egységesítésére történő javaslat. Ennek nyomait a nyelv máig őrzi: q q q az attribútumok és elemek különbözősége, aminek az adatbázisok szempontjából vajmi kevés jelentősége van, az elemek alapértelmezett esetben rendezetten helyezkednek el, ami az adatbázisok esetében ritkán alapkövetelmény (az attribútumok sorrendje viszont lényegtelen), a típusok bevezetése is csupán később történt meg (XMLSchema), valamint a kulcs, idegen kulcs jellegű megszorítások is hiányoztak kezdetben a nyelvből (sőt még most is hiányoznak).
XML (példa) <konyv nyelv=” Magyar”> <cim>Létbátorság</cim> <szerzo>Paul Tillich</lang> </konyv> vagy. . . <konyv> <cim>Létbátorság</cim> <szerzo>Paul Tillich</lang> <nyelv>Magyar</nyelv> </konyv>
Példa (XML dokumentum) <? xml version=” 1. 0” ? > <konyvek> <konyv nyelv=” magyar”> <cim>Létbátorság</cim> <szerzo>Paul Tillich</lang> <ar>2400</ar> </konyv> <konyv nyelv=”magyar” megjegyzes=”nem beszerezheto”> <cim>En es Te</cim> <szerzo>Martin Buber</szerzo> </konyvek>
Példa (gráf ábrázolás) konyvek konyv cim Letbatorsag szerzo Paul Tillich konyv ar 2500 cim szerzo megjegyzes En es Te Martin Buber nem elerheto
Féligstrukturált adatok és W 3 C n n n Az XML megjelenésével szinte egy időben kezdődött a féligstrukturált adatok kutatása, ami a korábbi relációs modell helyett gráfokat használ az adatok reprezentálásának modelljeként, s így nagyobb rugalmasságot biztosít. A két világ, a dokumentum- és az adatbázisvilág, hamar egymásra talált. A World Web Consortium (W 3 C) (többek között a html kiötlője) szabványokat kezdett el kidolgozni az XML adatok egységes kezelésére vonatkozóan. A legfontosabb javaslataik: q q q XML, XMLDOM XPath XSLT XQuery XSLT
XPath I. n n A dokumentumokban való navigáláshoz a W 3 C által javasolt eszközök (XSLT, XQuery stb. ) többsége az XPath nyelvet használja. Az XPath kifejezések építőkövei a lokációs lépések (location steps). Egy-egy lokációs lépés: egy axis-ból, egy pont ellenőrzésből (node test) és egy predikátumból áll. Az axisok lehetnek: q q n n n attribute self, parent, child ancestor, ancestor-or-self, descendant-or-self following-siblings, preceding-sibling, followings, precedings. Példa: child: : item[position()=1]. A lokációs lépések „egymásba fűzésével” lokációs ösvények (locations paths) készíthetők. Példákhoz lásd az XML_XPath_pelda. html fájlt.
XPath II. n Rövidített szintaxis: q q n n ha nem szerepel semmi axis-ként, az a child axis-t jelenti, . a self axis-nak felel meg, a. . pedig a parent axis-nak, @ az attribute axis-t helyettesíti, // a descendant-or-self: : node() helyett áll. Példákhoz ismételten lásd az XML_XPath_pelda. html fájlt. Bővebben lásd: W 3 Schools oldal XPath leírását.
Oracle XML DB n n n Az XML adatok kezelésére az Oracle egy külön komponenst készített, az Oracle XML DB-t. Az XML adatok tárolására az XMLType típust fejlesztették ki. Az XMLType típus tulajdonképpen egy objektumtípus. Jellemzői: q q n tábla és tábla oszlopa is lehet XMLType típusú, ugyanúgy használható, mint bármelyik másik típus, pl. szerepelhet PL/SQL eljárás paramétereként, függvény visszatérési értékeként stb. , csak jól formázott (well-formed) XML dokumentumok lehetnek ilyen típusúak, legfontosabb metódusai: extract(), extract. Value(), exists. Node(), xml. Sequence(), update. XML(), ezek a függvények azonban önállóan is léteznek. Alapesetben az XML dokumentumok CLOB-ként (Character Large Object) tárolódnak.
extract(), extract. Value(), exists. Node() n n n Az extract() azt a pontot vagy pontokat adja vissza, amelyek illeszkednek a függvényben megadott XPath kifejezésre. A függvény az XMLType egy metódusaként is használható. Az exists. Node() függően szolgáltat igaz vagy hamis értéket (1 vagy 0), hogy a megadott XPath kifejezésre illeszkedik pont vagy sem. Segítségével olyan feltételeket fogalmazhatunk meg többek között a WHERE feltételben, melyeknek kifejezése különben bonyodalmas lenne. Az extract. Value() annak az attribútumnak, elemnek a szöveges értékét szolgáltatja vissza, ami illeszkedik a függvényben megadott XPath kifejezésre. Példákhoz lásd az XML_XPath_pelda. html fájt.
XMLSequence() n n Az extract() függvény sok esetben dokumentum helyett dokumentum-töredékeket (document fragments) ad vissza, vagyis olyan XML elemeket, amelyeket „nem fog össze” egy közös gyökér, hanem függetlenek egymástól. Az XMLSequence() függvény minden egyes ilyen fragmentet XMLType típusú objektummá alakít, majd veszi ezek kollekcióját. A table() függvénnyel aztán a kollekció virtuális táblává alakítható. Példákhoz lásd az XML_XPath_pelda. html fájlt.
Feladatok I. n A kolcsonzesek tábla felett adjuk meg a következő lekérdezéseket. q q q q q Adjuk meg a gyökérelemet és annak tartalmát. Adjuk meg a táblában szereplő neveket. Adjuk meg az összes attribútumot és azok értékét. Adjuk meg a Gipsz Jakab által kölcsönzött könyvek címeit. Adjuk meg a második kölcsönző által kölcsönzött cd-k közül az elsőt. Adjuk meg azokat, akik kölcsönöztek dvd-t, de nem kölcsönöztek könyvet. Adjuk meg azon könyveket melyeknek a nevében szerepel az ‘s’ betű (kicsi vagy nagy). Adjuk meg azokat, a könyveket, amelyeket legalább ketten kölcsönöztek. Adjuk meg hány gyermeke van a kolcsonzesek elemnek.
Feladatok II. n A levelezes tábla felett adjuk meg a következő lekérdezéseket. q q q Adjuk meg Melák kiknek küldött email-t. Adjuk meg, hogy Luca összesen hány email-t küldött. Adjuk meg ki írt olyan email-t, amelyben szerepel a Melak szó. Adjuk meg Luca válaszként küldött email-jeinek (subject RE: -vel kezdődik) szövegét. Adjuk meg azon email-ek szövegét, amelyekre választ is küldtek. A válaszok szövegét is adjuk meg.
- Slides: 13