A gyakorlat követelményei
- ZH: (20 pont, Adatbázisok elmélete: 40 pont) Az utosló gyakorlati foglalkozáson, irásban. Téma: PL/SQL, Triggerek. A ZH javítható, ekkor azonban már csak legfeljebb fele pontszám adható. Megjelenés fényképes igazolvánnyal. Javítási lehetőség a vizsgaidőszak első hetében, egy külön időpontban.
- Projektmunka (20 pont, Adatbázisok elmélete: nincs projektmunka) A hallgatók csoportmunkában (1-2-3 fő) kidolgoznak egy-egy teljes adatbázis-alkalmazást az SSADM tervezéstől a számítógépes implementációig.
- A félév teljesítéséhez minden részteljesítés felét el kell érni.
- Legfeljebb egy javító ZH írható, ekkor azonban a két ZH-ra együtt már csak legfeljebb 10 pont adható. A Javító ZH időpontja: 2010. május 19. (szerda) 10:00-11:00. Helye: Irinyi Kabinet 222-es terem.
Projektmunka
Rézletek:- Minimális SSADM követelmények: Szöveges feladatleírás, követelmény katalógus, Adatfolyam diagram(ok), Egyedmodell(ek), Funkció meghatározás, vagy egyed-esemény mátrix vagy szerep-funkció mátrix, Relációs adatelemzés (normalizálás, adattáblák leírása)
- Platform: A hallgatók választhatnak Oracle és PHP+MySQL között, egyeztetés alapján esetleg mást is, de Access-t nem. Oracle-ben való munkához az Oracle 10g Express Edition ingyenesen elérhető (esetleg regisztráció szükséges), PHP+MySQL-hez a LAMP, illetve Windows alatt az XAMPP csomag ajánlható.
- Értékelés: SSADM (33%), Adatbázis létrehozása (33%, PHP+MySQL megvalósításnál 20%). Plusz % adható: triggerek, PL/SQL modulok, nagy mennyisegű + valós adat kezelése, erre vonatkozó tesztek végrehajtása. Felhasználói felület (33%, PHP+MySQL megvalósításnál 20%). Plusz % adható: részletes (paraméterezhető) grafikus statisztikák készítése, nagy bináris objektumok (képek, fájlok, stb.) kezelése, kényelmes adatbeviteli és adatlekérési felületek kialakítása (űrlapok, nyomtatóra küldhető jelentések, testreszabható beviteli/lekérdezési felületek, stb).
- moodle (teszt, kérdések, válaszlehetőségek, válaszok)
- családfa (személyek, kapcsolatok, események, házasságok)
- csapatsportok (csapatok, versenyzők, mérkőzések, pontszerzők/góllövők)
- egyéni sportok (bajnokságok, versenyzők, résztvevők, mérkőzések)
- imdb (filmek, színészek, szereplések, filmstúdiók)
- publikációk (közlemények, szerzők, folyóiratok, kiadók)
- doodle (userek, szavazások, szavazatok)
- etr (oktatók, kurzusok, termek, hallgatók)
- Irinyi Kabinet órarendje (gyakorlatok, termek, időpontok)
- oktatói óratartás-igénybejelentő (oktatók, alkalmas időpontok)
- kurzusleírás-kezelő (oktatók, kurzusok, leírások)
- szakdolgozati témameghirdető(oktató, téma, hallgató, felvétel megerősítése)
- egyetemi leltár (eszközök, termek, használatra jogosultak)
- gyakorlatvezetővel előre egyeztetett saját téma
SSADM
Feladat: Dolgozók adatait nyilvántartó rendszer.- Dolgozó adatai: név, cím, fizetés, dolgozókód
- Login adatok: Usernév, jelszó, szerep(ek)
- A dolgozó csak lekérdezni tudja az adatait
- Az admin tud módosítani is
- Be- és kijelentkeztetés
- Jelszót csak az admin változtathatja meg
- Hibás jelszó esetén a rendszer hibaüzenetet küld
- Minden hónap végén autómatikusan készül egy jelentés a dolgozók adatairól és az összes kifizetésről. A jelentésből az admin és az irattár kap egy-egy példányt.
Készítsük el a folyamatok I/O diagramjait!
Készítsük el a folyamatok funkciómeghatározásait!
Készítsük el a feladat egyed-kapcsolat diagramját!
Készítsük el az egyed-esemény mátrixot!
Készítsük el a szerep-funkció mátrixot!
SQL*Plus
SQL*Plus segédanyag Segédanyagok:- tnsnames.ora
- Oracle dokumentáció SQL-hez és PL/SQL-hez a /pub/Adatbazisok/Adatb-alapu-rendsz könyvtárban.
- DEMO-1.sql script az EMP és DEPT táblák közvetlen létrehozásához.
- DEMO user összes táblájára a SELECT jog megadása.
- Változtassuk meg a jelszavunkat:
alter user user_name identified by new_password;
- Készítsünk sql fájlt amely kiírja azon táblák nevét amelyek több sort tartalmaznak mint az 1. paraméter! megoldás
- Írassuk ki a 1. paraméternél több táblával rendelkező felhasználókat! Rávezetésként meg lehet oldani a "kinek hány táblája van"-feladatot. megoldás
PL/SQL
PL/SQL - I: Alapok, Változók, Vezérlési szerkezetek, Gyűjtőtáblák, Kivételkezelés.
PL/SQL - II: Kurzorok, Alprogramok.
- Kérjen be két egész számot és döntse el, hogy az összegük páros-e vagy páratlan. megoldás
- Írjon PL/SQL programot, amely kiírja az emp tábla sorainak számát és az átlagfizetést. megoldás
- Írjon PL/SQL programot, ami létrehozza és feltölti a fibon nevű táblát a Fibonacci sorozat elemeivel. megoldás
- Határozzuk meg egy PL/SQL program segítségével a felhasználó által megadott telephelyen dolgozók bérösszegét. megoldás
- Hozzunk létre egy gyűjtőtáblát, tegyük bele az elemeket a demo.vevő táblából, adjuk hozzá még egy vevőt, módosítsuk a 22-es vevőt, töröljük ki a páratlan indexűeket, írjuk ki a tábla tartalmát. megoldás
- Írjunk egy PL/SQL programot amely a CLERK munkakörű embereknek megemelí a fietését 20%-al. Indokoljuk meg miért hibás ez program! Javítsuk ki ROWID használatával! Javítsuk ki FOR UPDATE és CURRENT OF használatával!
- Íjunk egy függvényt, amely paraméterében atadott számnál többet keresők átlagbérét adja vissza. Írjunk PL/SQL programot ami meghívja a függvényt és kiírja az eredményét. megoldás
- Az emp táblából hozzon létre egy dolgozó táblát. Egy PL/SQL blokkot tartalmazó szkript programmal segítsen az elnöknek (president), aki a karácsony alkalmából jutalmazni akarja dolgozóit (önmagát nem!) az alábbi módon: 1) minden beosztott (akinek nincs további beosztottja) kapja meg a saját fizetése 10%-át jutalomként, 2) minden főnök (akinek van legalább egy beosztottja) kapja meg fizetése 8%-át, ha kettőnél több közvetlen beosztottja van, és 4%-át, ha legfeljebb kettő közvetlen beosztottja van. A jutalmazást a jutalék (comm) növelésével oldja meg. megoldás
- A RAPID RALLY autóversenyre benevezett versenyzők adatbázis sémája: rally(név, nemzetiség, feladatkör, minősítés, partner). Készítsen PL/SQL programot, amely minden versenyzőhöz megkísérel az alábbi feltételeknek megfelelő partnert keresni: 1) a partnerek nemzetisége egyezzen meg, 2) a partnerek minősítése legyen 20 ponton belül, 3) a feladatkörök illeszkedjenek. Tötse fel a partner oszlopot a feltételeknek megfelelően. megoldás
Java tárolt eljárások
Java nyelvű tárolt eljárások készítésének lépései:- A java forráskódot vagy lokálisan írjuk meg és később töltjük fel a szerverre (A), vagy a szerveren hozzuk létre (B).
- Készítsük el a Java nyelvű forráskódot lokálisan, majd töltsük fel az Oracle szerverre!
public class Hello { public static void sayHelloTo(String name) { System.out.println("Hello " + name + "!"); } }
A szerverre való feltöltés a loadjava paranccsal történik, ami megtalálható a Oracle kliens bin könyvtárában. Paraméterezése: loadjava -user usernév/jelszó@database -verbose -force -resolve file.java. A fenti példa esetén:loadjava -user h123456/jelszó@ORACAB10 -verbose -force -resolve Hello.java
- Java forráskód létrehozása az Oracle szerveren:
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "Hello" AS public class Hello { public static void sayHelloTo(String name) { System.out.println("Hello " + name + "!"); } }; /
- Készítsük el a Java nyelvű forráskódot lokálisan, majd töltsük fel az Oracle szerverre!
- A forráskód a USER_SOURCE táblába kerül - soronként.
SELECT text FROM USER_SOURCE WHERE name = 'Hello';
- SQL*Plus-ban hozzuk létre a tárolt eljárást!
CREATE OR REPLACE PROCEDURE Hello( name IN VARCHAR2 ) AS LANGUAGE JAVA NAME 'Hello.sayHelloTo(java.lang.String)'; /
- Engedélyezzük a képernyőre való írást!
SET SERVEROUTPUT ON SIZE 1000000 CALL DBMS_JAVA.SET_OUTPUT(1000000);
- Hívjuk meg az eljárást!
CALL Hello('ber');
- Futtassuk le ezt a PL/SQL utasítást.
- Hozzuk létre az eljárást!
CREATE OR REPLACE PROCEDURE emplist AS LANGUAGE JAVA NAME 'EmpList.list()'; /
- Futtassuk az eljárást.
CALL emplist();
Triggerek
Trigger - I: Alapok.
Trigger - II: További példák.
- Hozzuk létre a RAPID RALLY autóversenyre benevezett versenyzők tábláját. Készítsünk triggert, amely minden beillesztett versenyzőhöz megkísérel alábbi feltételeknek megfelelő partnert keresni: 1) a partnerek nemzetisége egyezzen meg, 2) a partnerek minősítése legyen 20 ponton belül, 3) a feladatkörök illeszkedjenek. Tötse fel a partner oszlopokat(!) a feltételeknek megfelelően. megoldás, megoldás
- Hozzuk létre a ALVÓ LAJHÁR Sport Egyesület által szervezett bajnokság adatbázisát.
Készítsünk triggert amelyik minden új résztvevő csapathoz legenerálja a lejátszandó mérkőzéseket a mérkőzések táblában.
Minden csapat egy mérkőzést játszik az adott bajnokság többi csapatával. megoldás, megoldás
Írjunk másik triggert amelyik egy résztvevő törlése esetén törli annak a mérkőzéseit is. megoldás