Az Adatbáziskezelés oktatásának eszközei a Gábor Dénes Főiskolán... nem akkor alkottál tökéleteset,ha már nem tudsz mit hozzátenni,hanem ha már nem tudsz mit elvenni belőle. (Saint-Exupery) A GDF-n műszaki és gazdasági informatikusokat képzünk 8 szemeszterben. Mivel hallgatóink munka és család mellett tanulnak, valóban távoktatási jellegű tananyagokat kell számukra készítenünk minden tárgyból. A hallgatói létszám (min. 5000 hallgató évente) bizonyítja az ország 40 városában + 10 magyarlakta külföldi helyen, hogy a hallgatók és oktatók tananyagellátása profi módon működik. A szakmai igényesség azonos szintje érdekében minden tantárgyvezető igyekszik a tananyagát részletesen kidolgozni, szemléltető eszközökkel és útmutatásokkal ellátni. Az én tárgyam többek között az adatbáziskezelés, mely alapozó tantárgy. A tantárgy célja: A hallgatók megismertetése az adatbázisok és az adatbáziskezelő rendszerek fajtáival, az uralkodó relációs adatbázis tervezésével és SQL nyelvi eszközökkel való feldolgozásával. A gyakorlati háttér valamelyik, a konzultációs központ által biztosított - korszerű adatbáziskezelő rendszer, melyben a tipikus SQLfeladatok kivitelezése a cél. Az itt szerzett tudás belépőként szolgál a nagy, modern fejlesztőrendszerek technikáiba; hiszen az informatikus kénytelen naponta legalább felhasználóként adatokat kinyerni meglévő hatalmas adatbázisokból, legfeljebb pedig fejlesztőként alkalmazásokat készíteni adatbázisrendszerekhez. Kapcsolata más tárgyakkal: A Programozás alapjai után, de az OOP, a 4GL és Internetes alkalmazásfejlesztés előtt, valamint konkrét ABKR (Informix) fakultálása előtt. Ezen előadásban szeretném bemutatni a tantárgy tanításának didaktikai módszereit, és azok eszközeit. A tárgyból 35+21 (21+14) kontakt óra mellett olvasmányos tankönyvet, emészthető példatárat, felkészülést támogató útmutatót kapnak a hallgatók minta-vizsgasorokkal. Az előadás (324 felépített dia, rengeteg mintapéldával) vázlata a hálóról letölthető. 19 órás video-anyag kölcsönözhető, valamint az iskola 1. multimédiás segédlete: az SQL oktatólemez. 1
TEMATIKA: Az adatbázisok elmélete az információ fogalma, az adatfeldolgozás története az adatmodell alapelemei: egyed, tulajdonság, kapcsolat az adatmodellek típusai: hierarchikus (hálós), relációs, objektumos A relációs adatmodell az elnevezés matematikai indoklása a reláció kulcsai funkcionális függőség fogalma, sajátosságai speciális funkcionális függőségek normálformák normalizálás a redundanciamentes adattárolás eléréséig az adatbázis szerkezeti ábrája, dokumentálása Relációs adatbáziskezelő rendszerek történeti áttekintés relációs algebra műveletei relációs adatbáziskezelő rendszerek funkciói és segédfeladatai relációs adatbáziskezelő rendszerek fajtái SQL nyelv a nyelv mint szabvány és kapcsolata a 4GL fejlesztői eszközökkel adatbázis, táblák, adattípusok, kifejezések adatdefiníciós, lekérdező, vezérlő parancsok a beépített SQL megszorítások tranzakciók jogosultságok Bemutató a prezentációs készletből: 2
f Multimédia az oktatásban 2001 4.példa: SZÁLLODA Használható adatbázis Egy szálloda forgalmára készítünk adatbázist az alábbi bemenő bizonylat alapján: Cég adatai SZOBAFOGLALÁS 3 darab kétágyas zuhanyzós dátumtól - ig 1 darab egyágyas fürdőszobás dátumtól - ig Visszajelzést kérünk. Kelt (aláírás, pecsét) sztip SZTIPUS ár ágy szszám SZOBA sztip iktszám szszám FOGLALT tól ig cégazon CÉG név cím tel iktszám MEGREND cégazon kelt 2. 5. KIADÓ SOROZAT NINCS KIMITIRT SZERZŐ KÖNYV PÉLDÁNY UTALÁS FOGALOM KÖNYVTÁR ELŐJEGYZ KÖLCSÖNZ OLVASÓ FOGLALK 6. K Ö N Y V Katal Cím Kiadó Kezd Soroz 88011 A matematika AK1 12 problémái 91234 Búcsúkeringő EK1 180 91412 Az éden sárkányai EK1 55 92112 Matematikai MK1 25 zsebkönyv 92134 Az élet máshol van EK1 150 96212 Az utolsó három KT5 45 VE perc 96225 A természet számai KT5 45 VE 96226 Isten gondolatai KT5 45 VE 96654 Elfeledett ősök árnyai EK1 35 8. P É L D Á N Y Katal Alkatal Kikölcs Aktksz 96225 045.t. 2 96226 001.f. 0 96226 002.f. 0 96226 003.f. 0 96226 044.f. 0 96226 045.f. 0 96654 001.f. 11 SQL mintaadatbázisa: ISKOLA TANULO ETKEZES SEGELY TAGSAG NAPIDIJ JOGCIM KOR ld. Példatár 22.oldal 9. 15. 3
Beágyazott Select Esetek a.egyetlen értéket tartalmazó belső E-tábla b.több értéket tartalmazó belső E-tábla Ilyenkor használni kell az IN, ANY, ALL vagy EXISTS predikátumok valamelyikét. A predikátumok megadásának formátuma: predikátum (belső SELECT) SELECT nev, osztaly FROM tanulo, segely WHERE tanulo.azon=segely.azon and osszeg>(select AVG(osszeg) FROM segely); TANULO->NEV LOVAS LAJOS VARGA TEREZ BALOGH MIHALY TANULO->OSZTALY 1B 2A 2B egy értéket ad vissza az alselect egyszer hajtódik végre az alselect csak TANULObeli kimenetek vannak felesleges a Descartes-szorzat... 16. 17. SELECT nev,osztaly FROM tanulo WHERE azon IN (SELECT azon FROM segely WHERE osszeg>(select AVG(osszeg) FROM segely)); NEV LOVAS LAJOS VARGA TEREZ BALOGH MIHALY OSZTALY 1B 2A 2B egy legkülső SELECTet kap több értéket ad vissza az alselectje egyszer hajtódik végre az alselectje csak a TANULOból vetítünk ki nincs Descartes-szorzat 10.feladat: az egyes osztályok tanulói átlagosan heti hány órát töltenek (szak-, nyelv-, sport-)köri foglalkozással SELECT osztaly, AVG(horasz) FROM tanulo ta, tagsag tg, kor WHERE ta.azon=tg.azon AND tg.kor=kor.kor GROUP BY osztaly; G_OSZTALY AVG1 1A 6,00 1B 6,00 2B 5,00 2C 3,00 Hamis, mert csak a tagság létszámával oszt SELECT osztaly,horasz FROM tanulo ta, tagsag tg, kor WHERE ta.azon=tg.azon AND tg.kor=kor.kor; TA->OSZTALY KOR->HORASZ 1A 8 1A 4 1B 8 1B 4 2B 4 2B 6 2C 3 2C 3 2C 3 18. 23. 10.feladat: az egyes osztályok tanulói átlagosan heti hány órát töltenek (szak-, nyelv-, sport-)köri foglalkozással 1.lépés: osztályonként összesen hány óra foglalkozás 2.lépés: osztálylétszámok 3.lépés: közös táblából a számított adatok kiírása SELECT osztaly, SUM(horasz) FROM tanulo ta, tagsag tg, kor WHERE ta.azon=tg.azon and tg.kor=kor.kor GROUP BY osztaly SAVE TO TEMP korok(oszt,orasz); SELECT osztaly, COUNT(azon) FROM tanulo GROUP BY osztaly SAVE TO TEMP letszam(oszt,ossz); 24. 10.feladat: 3.lépés select * from letszam; OSZT OSSZ 1A 4 1B 2 2A 3 2B 3 2C 7 SELECT ko.oszt, orasz/ossz FROM korok ko, letszam le WHERE ko.oszt=le.oszt; KO->OSZT EXP1 1A 3,00 1B 6,00 2B 3,33 2C 1,29 select * from korok; OSZT ORASZ 1A 12,00 1B 12,00 2B 10,00 2C 9,00 25. 4
TRIGGER CREATE TRIGGER tr.név AFTER / BEFORE / INSTEAD OF UPDATE [OF attr.] / DELETE / INSERT ON tábla [REFERENCING OLD AS régi NEW AS új] WHEN feltétel SQL-műveletek [FOR EACH ROW] sorszintű: minden sorra utasításszintű: egyszer (OLD_TABLE, NEW_TABLE) Példa : lista program DECLARE lista CURSOR FOR SELECT osztaly,count(*) FROM tanulo GROUP BY osztaly; OPEN lista; sor=sqlcnt FETCH lista INTO moszt,mszam; while sor>0 kiírás moszt,mszam sor=sor-1 FETCH lista INTO moszt,mszam; end CLOSE lista; A lista lefutása: 1A 4 1B 2 2A 3 2B 3 2C 7 27. 29. Az elmélethez kapcsolódó gyakorlati konzultáción az MS ACCESS / Cloudscape (Informix) adatbáziskezelő rendszerben lehetőség van konkrét feladatok megoldására, melyek témájukban az adatbázis felépítését, az SQL lekérdezéseket, esetleg a jelentések témakörét ölelik fel. (illusztráció: a felülete teljesen megfelel valamennyi ABKR-nek) A tapasztalatok azt is mutatják, hogy a Hallgatók zömének gondot okoz az SQLlekérdezés logikája. Az SQL-oktatólemez tanulmányozásától ugrásszerű javulást remélhetnek, ui. a csak ebben fellelhető parancs-végrehajtás illusztrálása meggyőző magyarázat szokott lenni. Ez egy interaktív példatár, melyben mód van az egyes parancsok - megtekintésére az eredménytáblával, - elkészítésére a lépések részletezésével, - végrehajtására a lépések bemutatásával, - gyakorlására a lépések interaktív összeállításával. Természetesen bármikor lehívhatjuk a feladat kifejtését, az adatbázis ismertetését, a kapcsolati ábra megmagyarázását illetve a terjedelmes parancs részleteinek elméleti tárgyalását. 5
Bemutató: 6
Tapasztalatok: A mintasorokkal megtámogatott, lépésenként kialakított parancskészítés több hallgatónál bevált és sikeresen le tud vizsgázni. A parancsvégrehajtás bemutatása olyan igényes tanári fogás, amellyel sok kollégámon segítettem. Arra viszont nem vagyok büszke, hogy a gyakorlás nem nagyobb szabadságfokú. Ezzel a problémával több tantárgy is szembekerül, hacsak nem tartja kielégítőnek az unalmas, tesztjellegű önellenőrzést. Matematikailag ugyanis lehetetlen egy beolvasott teljes válaszról eldönteni, hogy az is jó-e; hiszen az összes tesztadatra lefuttatva kellene ugyanazt eredményeznie. Marad a tanár szerint leghatékonyabbnak vélt parancs összerakosgatásának módszere. Számonkérés: A tantárgyból elméleti [és gyakorlati] jegyet kell szerezni. Az elméleti vizsga írásban történik. Vizsga-minta : ld. melléklet. A gyakorlati jegy megszerzése számítógép előtt történik. A hallgatónak a helyszínen kapott lekérdezési, karbantartási feladatokat kell megoldania egy létező adatbázisból SQL-ben. Referenciák: - végzett hallgatóink, akik valóban megszerezték ezt a tudást, már nem az SQLálszakemberek táborát gyarapítják. PSZF diákjai ZMNE logisztikai tanszéke külső kollégák cégei Következtetés: Úgy gondolom, helyesen döntöttünk, hogy a fenti filozófiát követve oktatjuk hallgatóinkat, amikor alapozó ismereteket, általánosítható technikákat, időtálló módszereket tanítunk. Annak, hogy így tesszük, egyetlen magyarázata van: A dolgokat annyira egyszerűen kell magyarázni, amennyire csak lehet, de nem egyszerűbben. (Einstein) Kupcsikné Fitus Ilona okl. matematikus, főiskolai docens kupcsik@okk.szamalk.hu 7
melléklet GDF Gazd. Inf. minta GDF Műsz. Inf. minta Adott futárszolgálat nyilvántartását végezzük a fővárosban. Bizonyos cégek, magánemberek, intézmények a partnereink, akik kisebb sürgős küldemények más partnerhez való eljuttatását bízzák a szolgálatra. A szolgálat minden egyes küldeményt a megrendelő partner megbízásából partnertől partnernek szállíttat valamelyik futárával, akit telefonon ér el. Az adatbázis: f_szám azonosító kód cím FUTÁR KÜLDEMÉNY PARTNER CÍM f_név megrendelő név elnevezés f_tel kelt telefon kerület időpont cím utca kitől kinek f_szám A betűstílusok jelentése: EGYED, kulcs, egyéb tulajdonság. hszám I. Alapfogalmak: 1. Adja meg a külső kulcsokat a fenti adatbázisban! 2. Mi valósít kapcsolatot a FUTÁR és a KÜLDEMÉNY között? 3. Milyen a KÜLDEMÉNY : PARTNER kapcsolat? 4. Indokolja meg, hogy igaz-e az alábbi egyértelmű meghatározás: {megrendelő} {elnevezés} II. SQL-lekérdezések : 1. Ki járt ma a Rubin Business Center -ben 2. Hány küldeményt szállított összesen Jó Áron 3. Melyik partner nem rendelt nálunk az utóbbi fél évben III. Bővítse az adatbázist mintasorokkal az alábbi eseménynek megfelelően: Kovács Géza futár ma 8:30-kor indul a 2000/12345-ös küldeménnyel az Országos Levéltárból a Széchenyi Könyvtárba a Levéltár megbízásából. Adott patika vényeinek nyilvántartásáról van szó. A gyógyszerek különböző kiszerelésben kaphatók, tehát a konkrét kiszerelésű gyógyszernek van azonosító száma. Egy vényen -, mely a felvitelkor azonosítót kap - egy konkrét gyógyszer szerepel a felírt mennyiségben, de tartalmazza az orvos kódját és a beteg TAJ-számát is. Az orvos-kód ellenőrzésre, de a beteg TAJ-száma csak rögzítésre kerül a patikában. A gyógyszerért fizetendő darabár: a támogatás százalékával csökkentett egységár. A konkrét gyógyszerekből a lejárat dátuma előtt a fennmaradó készletet megsemmisítik. Az adatbázis: gy_szám kiszerel gy_szám lejárat azonosító kód szak KISZERELÉS GYÓGYSZER KÉSZLET VÉNY ORVOS SZAK leírás elnevezés készlet kelt név megnev tartalom kiszerel kód szak támogatás taj_sz egys_ár gy_szám mennyi A betűstílusok jelentése: EGYED, kulcs, egyéb tulajdonság. I. Alapfogalmak: 1. Adja meg a külső kulcsokat a fenti adatbázisban! 2. Mi valósít kapcsolatot a GYÓGYSZER és a KISZERELÉS között? 3. Milyen a GYÓGYSZER : VÉNY kapcsolat? 4. Indokolja meg, igaz-e az alábbi egyértelmű meghatározás: {kód, taj_sz} {mennyi} 5. Az adatbázis épségének megőrzése mellett mikor törölhető ki egy gyógyszer a törzsből? II. SQL-lekérdezések: 1. Milyen kiszerelésben (leírással és tartalommal) kapható Panadol 2. Naponta mennyit fizetett az 123456789 TAJ-számú beteg 3. Ma megsemmisítendő gyógyszerek listája (lejáratuk max. 7 nap múlva) III. Bővítse az adatbázis szerkezetét az egyes gyógyszerek hatóanyagainak nyilvántartásával! IV. Igazak-e az alábbi állítások: Ha az adattábla redundáns adatokat tartalmaz, akkor részleges függés van benne. Egy alselect csak 1 értéket adhat vissza. Rendelkezésre álló idő: 60 perc Elérhető pontszám: 4+6+2 pont Elégtelen: 40% alatt Rendelkezésre álló idő: 80 perc Elérhető pontszám: 5+6+3+1 pont Elégtelen: 40% alatt 8