ELTE,
IP-08abctAB1G,
BSc Adatbázisok-1, 2011/2012/II.félév
Előzetes információ az II.ZH-ról
és
mintafeladatsor a II.ZH-hoz
II.ZH
témaköre: I.rész
Papíros
feladatok (Semmilyen segédeszköz nem
használható!) (30 perc) A papíros
feladatokra
kapható18 pontból legalább 9 pontot
kell
elérni.
Az alábbi feladattípusokból (de nem
mindből, csak háromból) leszek feladatok: 1.feladattípus
- Tankönyv
4.1-4.6. fejezetei:
- Adott E/K diagram
átírása relációs
modellé, egyedhalmazok
és kapcsolatok
átírása
relációkká, összevonások, gyenge egyedhalmazok
kezelése, valamint
osztályhierarchia ("isa")
átalakítása relációkká
(a
háromféle
megközelítésben). 2.feladattípus
-
Tankönyv 5.3-5.4. fejezetei:
- Lekérdezések
kifejezése Datalogban, ellenőrizni a szabályok biztonságosságát.
Relációs algebrai kifejezések
átírása Datalogba. 3.feladattípus -
Tankönyv 6.5-6.6. fejezetei:
- Táblák tartalmának
megváltoztatása, a tranzakciókezelés alapjai. 4.feladattípus -
Tankönyv 7.1-7.4., 8.1-8.2. fejezetei:
- Megszorítások.
Nézettáblák. 5.feladattípus -
Tankönyv 9.1-9.4. fejezetei:
- PL/SQL alapok, tárolt
eljárások és
függvények, kurzorral történő
módosítások.
Programrészlet
értelmezése,
hibák javítása, lásd 8gyak#3.3.Kurzor
(3a_hibás_mo) 6.feladattípus -
Tankönyv 10.2. fejezete:
- Rekurzív lekérdezések
kifejezése
rekurzív
Datalogban és
WITH RECURSIVE utasítással SQL3
szabványban. II.rész
Gépes
feladatok (csak az Oracle on-line dokumentáció
használható!)
(60 perc) A gépes feladatokra kapható
36
pontból legalább 12 pontot kell elérni. Gépes feladattípusok -Oracle:
teljes SQL és PL/SQL
- SQL DDL (táblák,
megszorítások,
nézetek),
- SQL DML (insert, delete, update),
- SQL SELECT további lehetőségei,
például
CONNECT BY
- PL/SQL hivatkozási és komplex
típusok, (implicit
és explicit) kurzorok,
- PL/SQL tárolt eljárások
és
függvények, kivételkezelés,
- Datalog programmal adott lekérdezések
kifejezése
PL/SQL programmal.
Gépes
mintafeladatsor a II.ZH-hoz: 1.feladatSQL
DDL (táblák,
megszorítások) és DML
(insert)
a) Írjon szkript programot, amely új
adattáblát hoz létre az emp
és
dept táblákból
myemp és mydept néven. Ha
már
léteznek ilyen nevű
táblák, akkor előbb
azokat törölje.
Véglegesítse az
adattáblákat (commit).
A létrehozott
táblákat lássa el az alábbi
megszorításokkal:
- Legyen az empno elsődleges kulcs a
myemp
táblában, és
- legyen a deptno elsődleges kulcs a
mydept
táblában és idegen kulcs a myemp
táblában, amely a
hivatkozási épséget
biztosítja oly
módon, hogy egy osztály
törlése
esetén törlődjenek ennek az
osztálynak a
dolgozói is.
- Egy új dolgozó csak az
adott 700
és 7000 USD
értéktartománybeli
fizetést
kaphasson.
b) Ellenőrizze ezeket a megszorításokat sikeres
(megfelelő rekord felvitele)
és sikertelen
(hibás rekord)
adatbeviteli kísérletekkel, majd
állítsa vissza
az eredeti táblatartalmakat
(rollback).
Véglegesítse az
adattáblákat (commit).
A további feladatok ezekre a myemp és mydept
táblákra vonatkoznak.
2.feladatSQL
DDL
(nézetek) és DML (delete, update)
Lásd az 1.feladatban létrehozott
táblákat
(az emp és dept táblákból
készítettünk
saját myemp és mydept
táblákat). A
feladatok megoldása során hozzon létre
és
használjon megfelelő
nézettáblákat,
amelyeket a feladatmegoldás után
töröljön.
a) Írjon szkript programot, amely a myemp
táblából törli a legjobban
fizetett
Dallas-i dolgozót.
b) Írjon szkript programot, amely a myemp
táblában
megnöveli 'BLAKE' nevű
dolgozó beosztottjainak
fizetését az
átlagfizetésük 20%-ával.
A törlés és az
adatmódosítás
sikerességéről
listázással győződjön meg, majd
állítsa vissza az eredeti
táblatartalmat.
3.feladatSQL
SELECT (hierarchikus
lekérdezések, CONNECT BY)
a) Hierarchikus lekérdezéssel
jelenítsük meg
a myemp táblából 'FORD' beosztottjait
b) egy másik lekérdezéssel pedig Ford
közvetlen és közvetett főnökeit,
feletteseit.
4.feladatPL/SQL
(kurzorok, függvények)
Írjon PL/SQL függvényt, amely a myemp
tábla alapján kiszámolja a
paraméterként
kapott nevű dolgozónak és a
közvetlen
beosztottjainak az átlagfizetését. Ha
az adott
dolgozónak nincs beosztottja, akkor
értelemszerűen a
dolgozó fizetését adja vissza.
Hívjuk meg a függvényt (egy PL/SQL
blokkból
írassuk ki az értékét)
'BLAKE'-re.
5.feladatPL/SQL
(kurzorok, tárolt eljárások,
kivételkezelés)
Írjon PL/SQL tárolt
eljárást, amely a myemp
táblában megnöveli
minden Dallas-i
telephelyű dolgozók fizetését a
saját
fizetésének a
20%-ával, feltéve, hogy
a fizetése
3000 USD alatt van. Ha 3000 USD-nél több lenne,
akkor
csak írjon ki egy szöveget.
6.feladatPL/SQL
(rekurzív Datalog átírása
PL/SQL-be, az
Eljut
feladat)
Az alábbi Datalog programot írjuk át
PL/SQL-be,
használjuk a myemp táblát.
felettese(x, y)
<- myemp(x, 'FORD', _, y, _, _, _, _)
felettese(x, y) <- felettese(x,
z) AND myemp(z,
_, _, y,
_, _, _, _)