VI. Témakör (AB-szakirányon): UDT és XML

UDT (10.gyak)
>> 6.1. Objektumrelációs lekérdezések és a 8HF+

XML (11-12.gyak)
>> 6.2. Oracle 10.2g XPath alapismeretek és a 9HF+
>> 6.3. További XPath feladatok (papíron)
>> 6.4. Oracle 10.2g XQuery alapismeretek és a 10HF+
_____________________________________________________
10. gyak. (2008.XI.18/20)
 
UDT
>> UDT adattípusok az Oracle-ben (Nikovits Tibor EA alapján)
>> 6.1. Objektumrelációs lekérdezések (feladatok) és a 8HF+

6.1. Objektumrelációs lekérdezések

Feladatok - Nikovits Tibor Információkezelés gyakorlatai alapján

Ajánlott irodalom:
>>  Ullman-Widom: Adatbázisrendszerek. Alapvetés, Panem, 2008.
       Második, átdolgozott kiadás (megjelent: 2008. november. ÚJ!!!)
       10. fejezet Objektumrelációs modell, felhasználó által definiált típusok

Segédanyagok:

>> Nikovits Tibor EA: UDT.txt
>> Oracle Object-Relational Features 10g (10.2)    HTML     PDF
>> Object-Relational Features of Oracle by ..stanford.edu/~ullman..

Feladatok:
>> Objektumok (OBJECT) 1-3. és 6-7. feladatok
>> Dinamikus tömbök (VARRAY) 4-5. feladatok
>> Beágyazott táblák (NESTED TABLE) 8.feladat (8HF+)
 
A példa adatbázis tábláiból: hr.countries, hr.employees, oe.customers, oe.jobs
A táblák összekapcsolásának felderítésében segítenek a definiált idegen kulcsok.

61_udt_1
-- Adjuk meg, hogy hány különböző országból vannak vevőink (oe.customers).

61_udt_2
-- Adjuk meg, hogy melyik országból hány vevőnk van. (oe.customers, hr.countries)
    Az olyan ország is szerepeljen (ha van), amelyik nincs benne a hr.countries táblában.
    (Ország_azon, Országnév, VevőkSzáma)

61_udt_3
-- Adjuk meg azoknak a dolgozóknak a nevét és foglalkozását, akik vevőkkel foglalkoznak,
    valamint azt, hogy hány különböző országbeli vevővel foglalkoznak.
    (Név, Foglalkozás, OrszágokSzáma)

61_udt_4
-- Adjuk meg a Burt Spielberg nevű vevőnek a telefonszámait (külön sorokban).

61_udt_5
-- Adjuk meg azoknak a német vevőknek a nevét, akiknek legalább 2 telefonszámuk van.

61_udt_6
-- Adjuk meg azoknak az amerikai városoknak a neveit, amelyek az északi szélesség
    42. és 43. foka valamint a nyugati hosszúság 82. és 85. foka között helyezkednek el.
    lásd -> oe.customers.cust_geo_location tárolja a vevő városának földi elhelyezkedését.
    Az x és y attribútumokban van a földrajzi hosszúság (-180 - 180, a negatív számok
    Greenwich-től nyugatra) illetve szélesség (-90 - 90, a negatív számok az egyenlítőtől délre).

61_udt_7
-- Adjuk meg a nikovits.sokszogek tábla adatai alapján az egyes sokszögek kerületét
    vagyis oldalainak összhosszát. (Név, Kerület)
    Minden szükséges információt, típusokat, metódusokat a katalógusból nézzetek meg.

8HF+ Házi feladat (beadandó +pontért). Beküldése, lásd  Beadandók beküldése 
-- Hozzunk létre egy T táblát az OE.ORDERS, OE.CUSTOMERS táblák adatai alapján
    a következőképpen. A T táblában legyen benne a vevo neve (first name + last name),
    címe (cust_address), telefonszámai (VARRAY oszlopként), valamint az általa feladott
    rendelések adatai (beágyazott táblaként). A rendelések információi közül elég az
    azonosítót, dátumot és összértéket (order_id, order_date, order_total) tárolni.
-- Töltsük is fel adatokkal a T táblát a fenti két táblából.
    Az összes vevő összes rendelésével kerüljön bele a táblába.
-- Majd adjuk meg a T táblát lekérdezve azon vevők nevét és összes rendeléseik összértékét,
    akik címének városa Detriot vagy Indianapilis.
-- Ellenőrzésképpen adjuk meg ugyanezt a lekérdezést az eredeti két táblára megfogalmazva.
_____________________________________________________
11. gyak. (2008.XI.25/27)
 
XML
>> 6.2. Oracle 10.2g XPath alapismeretek
>> 6.3. További XPath feladatok (papíron)
>> 6.4. Oracle 10.2g XQuery alapismeretek

6.2. Oracle 10.2g XPath alapismeretek

Ajánlott irodalom:
>>  Ullman-Widom: Adatbázisrendszerek. Alapvetés, Panem, 2008.
       Második, átdolgozott kiadás (megjelent: 2008. november. ÚJ!!!)
       -- 11. fejezet A félig-struktúrált adatmodell. XML.
       -- 12. fejezet Programozási nyelvek az XML-hez. XPath. XQuery.
>> Oracle XML DB Developer's Guide10g (10.2)   HTML    PDF  
      (ez például 852 oldalas doksi, 781-800.o.>> B Appendix XPath)
>> W3C ajánlás XML:  http://www.w3.org/XML/  
      XPath 2.0: http://www.w3.org/TR/xpath20/  
      XQuery & XPath Data Model: http://www.w3.org/TR/xpath-datamodel/
>> W3Schools XML Tutorial:   W3Schools Tutorial     XML Tutorial
      XPath Tutorial:  XPath Tutorial   XQuery Tutorial: XQuery Tutorial

Segédanyagok: Nikovits Tibor összefoglalói és kidolgozott példái
>> XML dokumentum, XMLTYPE, adatok lekérdezése: xml_alapok.txt
>> A példák alapjául szolgáló XML dokumentum itt: xml_dok_pelda.txt
>> XPath nyelv, lokációs lépések, XPath kifejezések: xpath_alapok.txt 
  
Feladatok:
-- XPath kifejezések építőköveinek bemutatása: xpath examples  (www.zvon.org)
-- XPath példák (feladatok megoldásokkal) xpath_feladatok.txt
    A példák alapjául szolgáló XML dokumentum itt található: xml_dok_pelda.txt
    (Ezt nyomtassátok ki, mert fontos a csomópontok nevében a kis/nagybetű!)
--  1.) Adjuk meg a teljes dokumentumot
--  2.) Adjuk meg az összes csúcsot (az összes létező részfát)
--  3.) Adjuk meg az összes második csúcsot (az összes létező részfák 2. csúcsait)
--  4.) Adjuk meg az első kölcsönző nevét.
--  5.) Adjuk meg azokat a csomópontokat, amelyeknek van 'ar' attribútuma
--  6.) Adjuk meg a DVD csomópontok szöveges tartalmát nyitó és záró tagek nélkül
--  7.) Adjuk meg az összes előadót
--  8.) Adjuk meg a 2600-nál olcsóbb vagy 3800-nál drágább DVD-ket
--  9.) Adjuk meg azokat a csomópontokat, amelyeknek van 'eloado' vagy 'szerzo' attributuma
-- 10.) Adjuk meg azokat a csomópontokat, amelyeknek van 'cim' és 'szerzo' attributuma
-- 11.) Adjuk meg azokat a csomópontokat, amelyeknek nincs attribútuma
-- 12.) Adjuk meg a Shrek DVD csomópontját
-- 13.) Adjuk meg a 'Szep Holnap' című CD árát
-- 14.) Adjuk meg azoknak a CD-knek a címeit, amelyeknek ára legalább 3000
-- 15.) Adjuk meg a 'Shrek' DVD árát
-- 16.) Adjuk meg a Gipsz Jakab által kölcsönzött konyvek szerzőit
-- 17.) Adjuk meg azoknak a CD-knek az előadóit, amelyeket nem Gipsz Jakab kölcsönzött
-- 18.) Adjuk meg azoknak a nevét, akik kölcsönöztek Zorán CD-t
-- 19.) Adjuk meg azok nevét, akik kölcsönöztek könyvet
-- 20.) Adjuk meg azok nevét, akik kölcsönöztek könyvet vagy CD-t
-- 21.) Adjuk meg a Gipsz Jakab utáni kölcsönzők nevét
-- 22.) Adjuk meg a Gipsz Jakab utáni kölcsönző nevét
-- 23.) Adjuk meg az utolsó kölcsönző nevét
-- 24.) Kik azok, akik 2 könyvet kölcsönöztek
-- 25.) Kik azok, akik csak 1 féle dolgot kölcsönöztek
-- 26.) Mely csomópontok nevében van 'r' betű?
-- 27.) Mely csomópontnevek hossza 2?

9HF+ Házi feladat (beadandó +pontért). Beküldése, lásd  Beadandók beküldése 
-- 1.) Adjuk meg azoknak a CD-knek a címeit, amelyek előadójának neve 'Z' betűvel kezdődik.
-- 2.) Adjuk meg a CD-t is kölcsönző kölcsönzők közül az utolsónak a nevét.
-- 3.) Adjuk meg az utolsó kölcsönző nevét, feltéve, hogy ő kölcsönzött CD-t.
         (Ha nem kölcsönzött, akkor üres eredmény)
-- 4.) Adjuk meg azok nevét, akikre igaz, hogy az általuk kölcsönzött CD-k árainak összege
         több mint 3000.
-- 5.) Adjuk meg azok nevét, akikre igaz, hogy az általuk kölcsönzött összes dolog árainak összege
         kevesebb mint 8000.
-- 6.) Adjuk meg azok nevét, akikre igaz, hogy az általuk kölcsönzött CD-k átlagára több mint 2600. 
_____________________________________________________
13. gyak. (2008.XII.02/04)
 - XML - XQuery

6.3. További XPath feladatok (papíron)

Segédanyagok: Nikovits Tibor összefoglalói és kidolgozott példái
>> XML dokumentum, XMLTYPE, adatok lekérdezése: xml_alapok.txt
>> A példák alapjául szolgáló XML dokumentum itt: xml_dok_pelda.txt
>> XPath nyelv, lokációs lépések, XPath kifejezések: xpath_alapok.txt 
  
Feladatok:
>> Adott egy XML dokumentum xml_dok_pelda.txt (kolcsonzes tábla azon=1 sorában).
    (Ezt nyomtassátok ki a ZH-ra, mert fontos a csomópontok nevében a kis/nagybetű!)
>> Adjuk meg papíron, hogy az alábbi XPath kifejezések milyen eredményt szolgáltatnak.
-- 'descendant-or-self::Kolcsonzo[self::*/descendant::CD/@eloado="Zoran"]/@nev'
-- '//Kolcsonzo[.//CD/@eloado="Zoran"]/@nev'
-- '//Kolcsonzo[//CD/@eloado="Zoran"]/@nev'
-- '//CD[@eloado="Zoran"]/ancestor::*/@nev'
-- '//Kolcsonzo[@nev="Gipsz Jakab"]/following-sibling::*[1]/@nev'

6.4. Oracle 10.2g XQuery alapismeretek

Ajánlott irodalom:
>>  Ullman-Widom: Adatbázisrendszerek. Alapvetés, Panem, 2008.
       Második, átdolgozott kiadás (megjelent: 2008. november. ÚJ!!!)
       -- 11. fejezet A félig-struktúrált adatmodell. XML.
       -- 12. fejezet Programozási nyelvek az XML-hez. XPath. XQuery.
>> Oracle XML DB Developer's Guide10g (10.2)   HTML    PDF  
      (ez például 852 oldalas doksi, 781-800.o.>> B Appendix XPath)
>> W3C ajánlás XML:  http://www.w3.org/XML/  
      XPath 2.0: http://www.w3.org/TR/xpath20/  
      XQuery & XPath Data Model: http://www.w3.org/TR/xpath-datamodel/
>> W3Schools XML Tutorial:   W3Schools Tutorial     XML Tutorial
      XPath Tutorial:  XPath Tutorial   XQuery Tutorial: XQuery Tutorial

Segédanyagok: 
Nikovits Tibor összefoglalói és kidolgozott példái
>> A példák alapjául szolgáló XML dokumentum itt: xml_dok_pelda.txt
>> XQuery, FLWOR kifejezés: xquery_alapok.txt
  
Feladatok:
-- 1.) Igaz-e, hogy minden Kolcsonzo kölcsönzött DVD-t?
-- 2.) Hány kölcsönző van? Valójában a neveiket számoljuk meg.
-- 3.) Adjuk meg a kölcsönzők nevét és az általuk kölcsönzött CD-k árának összegét!
         (XML formátumban)

10HF+ Házi feladat (beadandó +pontért). Beküldése, lásd  Beadandók beküldése 
-- 1.) Mely CD-ket kölcsönözte ki Kis Virag?
-- 2.) Igaz-e, hogy minden kölcsönző kölcsönzött CD-t? (az eredmény igen vagy nem legyen)
-- 3.) Mennyi a kölcsönzött DVD-k árának összege? (string nélkül csúnyán írja ki)
-- 4.) Mennyi a legolcsóbb CD ára?
-- 5.) Adjuk meg az alábbi formában, hogy ki hány darab dolgot kölcsönzött.
         OSZLOP
         ----------------------------------------
         <Kolcsonzo nev="Gipsz Jakab" darab="4"/>
         <Kolcsonzo nev="Kis Virag" darab="3"/>
         <Kolcsonzo nev="Nagy Pal" darab="1"/>
-- 6.) Adjuk meg az alábbi formában, hogy ki milyen összértékű dolgokat kölcsönzött.
         OSZLOP
        -------------------------------------------
        <Kolcsonzo nev="Gipsz Jakab" össz="11500"/>
        <Kolcsonzo nev="Kis Virag" össz="8700"/>
        <Kolcsonzo nev="Nagy Pal" össz="2500"/>