VII. Témakör: Objektumrelációs adatbázisok

1-2. gyak.
>> Beadandó modellezési feladatok
>> 7.1. E/K és UML modellezési mintapéldák

3.gyak.
>> 7.2. Absztrakt adattípusok használata (OBJECT)
>> 7.3. Kollekció: Dinamikus tömbök (VARRAY)

4.gyak.
>> 7.4. Metódusok. Objektumtáblák és OID-ek (OBJECT)
>> 7.5. Kollekció: Beágyazott táblák (NESTED TABLE)

5.gyak.
>> 7.6. Nagyméretű objektumok használata (LOB: Large Object)
>> 7.7. Hierarchikus lekérdezések az Oracle-ben
>> 7.8. Rekurzió az SQL99-ben (Papíros feladat!)
>> 7.9. Védelmi lehetőségek, felhasználók, szerepkörök és jogosultságok

Tk1 - ÚJ! Ullman-Widom: Adatbázisrendszerek. Alapvetés (Második, átdolgozott kiad),
          Megjelent: Panem, 2008. november (bővítések pl.UML, UDT, JDBC, PHP, XML)
Tk2 - Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása, Panem, 2001.
Tk3 - Elmasri-Navathe:Fundamentals of Database Systems (5th Edition), 2007.
Tk4 - Loney: ORACLE DATABASE 10g Teljes referencia, Panem, 2006.
______________________________________________________
1-2. gyak. (II.13-20)
 - Modellezés. E/K, UML, EER modell

>> Beadandó modellezési feladatok
>> 7.1. E/K és modellezési mintapéldák

Tankönyv, Tk1.>> 4.fejezet Magas szintű adatbázismodellek
1.gyak. E/K modell és leképezése relációs modellre, Tk1. 133-181.o.
2.gyak. UML modell és leképezése obj.relációs modellre, Tk1. 181-195.o.

Beadandó modellezési feladatok (szabadon választható!)
-- Több lépcsős feladat (a kapott pontok az 1zh pontjaihoz számítanak),
1-2.gyak. E/K modell és leképezése relációs modellre, Tk1. 4.1-4.6.fej., 133-181.o.
2-3.gyak.UML modell és leképezése obj.relációs modellre, Tk1. 4.7-4.8.fej.181-195.o
3-5.gyak. Megvalósítása az Oracle obj.relációs adatb.kezelővel, Tk1. 10.3-10.5.fej.

1-20.feladatötleteket >> lásd cIRF_feladat1.txt  (szabadon változtatható!)
A feladatok kiosztása >> lásd cIRF.pdf (és a feladatokra kapott részpontok)

7.1. Modellezési mintapéldák:

71uml_01
         Oracle minta alaptáblák sémái, lásd az Oracle dokumentáció:
         -- Samples Schemas (10.2)      HTML      PDF  
         Feladatok: Írd át E/K diagrammá, majd UML diagrammá!
         -- HR-séma
         -- HR+OE sémákhoz hasonló lásd KissA_EA_E/Kmodell 20/61.o.(jelszóval)
     
71uml_02
        Tanulmányi osztály >> lásd HajasCs_Órai mintadatbázissémák

71uml_03
       Orvosi adatbázis >> lásd KósaB_EA_E/Kmodell 26/36.o. (jelszóval)
 
_______________________________________________________
3-4. gyak. (II.27-III.5)  - Objektumrelációs alapok.

Objektumrelációs lekérdezések

Tk1. >> 10. fejezet Objektumrelációs modell, felhasználó által definiált típusok

Segédanyagok:

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

Feladatok:
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.

3.gyak.
>> 7.2. Absztrakt adattípusok használata (OBJECT)
>> 7.3. Kollekció: Dinamikus tömbök (VARRAY)

4.gyak.
>> 7.4. Metódusok. Objektumtáblák és OID-ek (OBJECT)
>> 7.5. Kollekció: Beágyazott táblák (NESTED TABLE)

7.2. Absztrakt adattípusok használata (OBJECT)
72udt_01
-- Adjuk meg, hogy hány különböző országból vannak vevőink (oe.customers).

72udt_02
-- 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) 

72udt_03
-- 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) vagyis Név: összefűzve a vezeték-és utónevet,
     Foglalkozás: nem a kódot, hanem a nevet. A táblák összekapcsolásának felderítésében
     segítenek a definiált idegen kulcsok, lásd dba_constraints
   
72udt_04
-- 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).

72udt_05
-- Az OE.CUSTOMERS tábla alapján a vevők címeiben szereplő városok közül melyik
     a legészakabbra fekvő város? (Város)

7.3. Kollekció: Dinamikus tömbök (VARRAY)

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

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

7.4. Metódusok. Objektumtáblák és OID-ek (OBJECT)

74udt_01
-- 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.

74udt_02
-- Deklaráljuk az alábbi típusoknak megfelelő típusokat:
    a.) NevTipus, amely tartalmazza a családi nevet, utónevet és valamilyen megszólítást.
    b.) CimTipus, amely három komponensből áll, attribútumai irányítószám, város és utca.
    c.) SzemelyTipus, amely tartalmazza a személy nevét, címét és a házasság dátumát,
         valamint a hivatkozásokat azokra a személyekre, akik az ő férjük vagy feleségük.
         A deklarációban használjuk az a.) és b.) részben definiált típusokat.
    d.) Egészítsük ki a b.) részben szereplő CimTipus definícióját egy UtcaNev eljárással,
         amely az utcanevet szedi ki az utca komponensből, mint például ’Fő út 48’ esetén
         'Fő út' jelenti az utcanevet (vagyis a házszámot, a számokat vágjuk le a végéről).
          Definiáld a metódust (PL/SQL segítségével add meg az eljárást).
    e.) Hozzunk létre egy HanyHonapjaHazas függvényt a SzemelyTipus tagfüggvényeként,
         amelynek visszatérési értéke, hogy a személy mennyi ideje házas hónapokban megadva.

7.5. Kollekció: Beágyazott táblák (NESTED TABLE)

75udt_01
-- 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.
-- Ellenőrzésképpen adjuk meg ugyanezt a lekérdezést az eredeti két táblára megfogalmazva.

_______________________________________________________
5. gyak. (III.12)  - LOB, Rekurzió az SQL-ben (SQL3 szabvány)

>> 7.6. Nagyméretű objektumok használata (LOB: Large Object)
>> 7.7. Hierarchikus lekérdezések az Oracle-ben
>> 7.8. Rekurzió az SQL99-ben (Papíros feladat!)
>> 7.9. Védelmi lehetőségek, felhasználók, szerepkörök és jogosultságok

7.6. Nagyméretű objektumok használata (LOB: Large Object)

Segédanyagok:
>> Nikovits Tibor: LOB_adatok.txt
>> Oracle doksik: Large Objects 10g (10.2)    HTML     PDF

76lob_01
-- File I/O műveletek, LOB oszlopok
-- A medusa gépen levő /tmp/INFOKEZ3/Moricz_Rokonok.txt állományból egy tetszőleges
   1000 karakter hosszúságú részt irassatok ki a képernyőre egy plsql programmal,
   valamilyen beépített Oracle package-ek használatával. Az Oracle package-ek segítségével
   olvasni tudjátok az állományt annak ellenére, hogy nincs op.rendszer azonosítótok a gépre.

_______________________________________________________
7.7. Hierarchikus lekérdezések az Oracle-ben


Segédanyagok:
>> Nikovits Tibor: hiera_lekerd.txt
>> Oracle doksik: Hierarchikus.pdf   

77hier_01
--  Listázzuk ki az emp tábla alapján a főnökökhöz tartozó beosztottak nevét és részlegüket.
a.) Az emp tábla önamagára való hivatkozásával (többtáblás lekérdezés sorváltozókkal).
b.) A CONNECT BY utasításrész használatával, a hierarchikus szerkezetet 'KING'-től bejárva.
c.)  Ellenkező irányból járjuk be a hierarchikus szerkezet egy ágát, például 'SMITH'-től kezdve.

7.8. Rekurzió az SQL99-ben (Papíros feladat!)

Segédanyagok:
>> Tk1./10.2.fejezet: Tk1_102_Rekurzio.pdf

77rek_02
-- Tegyük fel, hogy az alábbi reláció
                     Járatok(légitársaság, honnan, hova, indulás, érkezés)
    azt tartalmazza, hogy melyik légitársaság melyik városból melyik városba mikor indít járatokat.
-- Mely (x, y) várospárokra lehetséges egy vagy több átszállással eljutni x városból y városba?
    Tegyük fel, hogy nemcsak az érdekel minket, hogy el tudunk-e jutni az egyik városból a másikba,
    hanem az is, hogy utazásunk során az átszállások is ésszerűek legyenek, vagyis ha több járattal
    utazunk és átszállásra van szükségünk, akkor az érkező járatnak legalább egy órával a rá következő
    indulás előtt meg kell érkeznie. Feltehetjük, hogy nincs egy napnál hosszabb utazás!
    a.) Írjuk fel erre a rekurzív Datalog szabályokat!
    b.) Írjuk át ezt a rekurziót az SQL-99 szabvány szerint! (Ezt is papíron!)
_______________________________________________________
7.9. Védelmi lehetőségek, felhasználók, szerepkörök és jogosultságok

Segédanyagok:
>> Oracle doksik: Jogosultsag.pdf     

_______________________________________________________

Lap tetejére        Gyak oldalára        Vissza a Kezdőlapra