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)
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) HTMLPDF
>> 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.
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.
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
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.
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