ELTE, IP-08abctAB1G, BSc Adatbázisok-1, 2012/2013/I.félév
Előzetes információ az II.ZH-ról és mintafeladatsor a II.ZH-hoz

   
II.ZH időpontja: lásd: tanrendi hetek: 12.gyak. dec.7 (péntek) és dec.11 (kedd)
- 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ó!)
(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.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, _, _, _, _)
   
Fel a lap tetejére                          Vissza az AB1gyak oldalára (főmenü)