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 időpontja:
- lásd A tanrendben szereplő hetek: utolsó gyak. máj.15 (kedd) és máj.18 (péntek)
- lásd még Előzetes tudnivalók a zárthelyi dolgozatokról
   
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.
(4-5 pontos feladatok) - Rekurzív lekérdezések Datalogban és SQL3 szabványban.
1.feladat  - 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.
2.feladat  - Tankönyv 6.5., 7.1-7.4., 8.1-8.2. fejezetei: 
- Megszorításokkal kapcsolatos kérdések. Adatok módosítása nézettáblákon keresztül. 
3.feladat  - 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, például 8gyak#3.3.Kurzor (3a_hibás_mo)
4.feladat  - 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).
   
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.
1-6.feladat (5-6-7 pontos gépes feladatok) - 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.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.feladat SQL 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.feladat SQL 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.feladat PL/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.feladat PL/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.feladat PL/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, _, _, _, _)
     
Vissza az AB1 gyakorlat oldalára             Vissza a Kezdőlapra