II.ZH
témaköre:
I.rész
Papíros
feladatok (Semmilyen segédeszköz nem
használható!)
(45 perc) A papíros
feladatokra
kapható 24 pontból legalább 8 pontot
kell
elérni. Feladattípusok:
P1.feladat (6 pont)
- alapfogalmakra
vonatkozó (vizsga belépőhöz
hasonló) kérdések Tankönyv 6.5., 7.1-7.4., 8.1-8.2., és a
gyakorlatok SQL DDL, DML anyaga:
- Megszorításokkal kapcsolatos
kérdések. Adatok
módosítása
nézettáblákon
keresztül. Továbbá a Tankönyv 9.3-9.4.
fejezetei, és a
gyakorlatok PL/SQL anyaga:
- PL/SQL alapok, tárolt
eljárások és
függvények, kurzorral történő
módosítások. P2.feladat (6
pont)- Tankönyv
5.3-5.4. fejezetei:
- Lekérdezések
kifejezése Datalogban, vagy adott
relációs
algebrai
kifejezések átírása
Datalog programmá,
vagy nem-rekurzív Datalog
programok
átírása relációs
algebrába. P3.feladat
(6 pont)
- Tankönyv
10.2. fejezete:
- Rekurzív lekérdezések
kifejezése
rekurzív
Datalog programmal, és negációmentes
(monoton és
lineáris)
rekurzív
Datalog programok átírása az
SQL-99
szabvány
WITH
RECURSIVE
utasítása
segítségével
(papíron). P4.feladat
(6 pont)
- 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).
II.rész
Gépes
feladatok (csak az Oracle on-line dokumentáció
használható!)
(45 perc) A gépes feladatokra kapható 24
pontból legalább 8 pontot kell elérni. Feladattípusok: G1-G2. feladat (6 - 6
pont) - Oracle:
teljes 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 G3-G4. feladat (6 - 6
pont) - Oracle:
PL/SQL
- 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.
Korábbi
60 perces gépes
mintafeladatsor
a II.ZH-hoz
-- Megj.: az idén 45 perces négy papíros + 45
perces
négy gépes feladat lesz,
ezért csak az itt szereplő 2-5.feladatokhoz
hasonló gépes feladatok várhatóak,
az 1.feladat és 6.feladat kimarad (helyette
erről elméleti kérdés lesz, lásd fent!) 1.feladat SQL
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,
_, _, _, _)