Adatbázis-kezelés 2
Időtartam
Tevékenység / Lépés
Tanári szerep
Tanulói szerep
0-5. perc
Szervezési feladatok és motiváció: Valós probléma felvetése. „Képzeljétek el, hogy egy webshopot üzemeltettek. A főnök kéri a tegnapi rendelések listáját, de a vásárlók nevei az egyik, a termékek a másik táblában vannak. Hogyan oldjuk meg?”
Problémafelvető, facilitátor.
Figyelés, ötletelés, a valós életbeli hasznosság felismerése.
5-10. perc
Előzetes tudás aktiválása: Gyors ismétlés a táblakapcsolatokról. Mi az az elsődleges kulcs (Primary Key) és az idegen kulcs (Foreign Key)?
Kérdések feltétele (irányított beszélgetés).
Válaszadás, az előző órák (Adatbázis 1) fogalmainak felidézése.
10-15. perc
Órai célkitűzés és előkészülés: A gyakorlati környezet előkészítése. A mintaadatbázis (pl. XAMPP/MySQL vagy SQL Server Management Studio) elindítása és az órai SQL szkript importálása.
Ellenőrzi, hogy mindenkinél fut-e a szerver és betöltött-e az adatbázis.
A fejlesztői környezet megnyitása, a mintaadatbázis betöltése.
Időtartam
Tevékenység / Lépés
Módszertan / Eszközök
Tanulói tevékenység
15-30. perc
Új ismeret: Az INNER JOIN:
1. Halmazelméleti megközelítés (Venn-diagram felrajzolása a táblára).
2. A szintaktika bemutatása kivetítőn (SELECT ... FROM tabla1 INNER JOIN tabla2 ON...).
Tanári magyarázat vizuális támogatással (okostábla/projektor).
Jegyzetelés, az elméleti háttér és a szintaxis megértése.
30-45. perc
Vezetett gyakorlás (Közös kódolás):
Közösen megoldunk 2-3 feladatot a mintaadatbázison (pl. „Listázzuk ki a diákok nevét és a hozzájuk tartozó osztályfőnököket!”). Képernyőmegosztás használata.
Demonstráció, hibakeresés. A tanár „hangosan gondolkodva” írja a kódot.
A kód párhuzamos gépelése, futtatása, a hibák azonnali jelzése.
45-55. perc
(Szünet vagy lazító/átvezető szakasz a két óra között)
-
-
55-65. perc
Új ismeret: Csoportosítás (GROUP BY):
Hogyan számoljuk meg, melyik osztályba hány diák jár? A COUNT() függvény és a GROUP BY záradék összekapcsolása az előző JOIN lekérdezéssel.
Magyarázat, a gyakori szintaktikai hibák (pl. hiányzó oszlop a GROUP BY-ból) hangsúlyozása.
Megfigyelés, kérdések megfogalmazása.
65-80. perc
Önálló munkavégzés (Differenciált feladatmegoldás):
A diákok kapnak egy 3 feladatból álló feladatlapot. (1. alap JOIN, 2. JOIN + GROUP BY, 3. Szorgalmi/Kihívás: 3 tábla összekapcsolása).
Mentorálás. A tanár körbejár, figyeli a képernyőket, elakadásoknál rávezető kérdéseket tesz fel.
Önálló problémaelemzés, kódolás, tesztelés és hibajavítás.
Az értékelés fókuszpontjai:
- Formatív (fejlesztő) értékelés az óra közben:
- A tanár a „Közös kódolás” és az „Önálló munkavégzés” során folyamatosan monitorozza a diákok haladását.
- Szóbeli megerősítés adása („Jó az irány, de nézd meg a táblák összekapcsolási feltételét az ON után!”).
- Ha egy hibát sokan elkövetnek (pl. aggregált mezőre tesznek
WHEREfeltételtHAVINGhelyett), a tanár megállítja az önálló munkát és frontálisan tisztázza a problémát.
- Szummatív/Diagnosztikus értékelés az óra végén (80-87. perc):
- Módszer: Egy gyors, játékos, 5 kérdéses Kahoot / Quizizz teszt, vagy egy digitális űrlap, amely a kulcsfogalmakra kérdez rá (pl. „Melyik kulcsszóval szűrünk a csoportosítás után?” -> HAVING).
- Eredmény: A tanár azonnali képet kap arról, hogy az osztály hány százaléka értette meg a logikát.
- Lezárás (87-90. perc):
- Az órai önálló feladatok feltöltése a felhőbe / Google Classroomba (ez alapján a tanár a következő órára javítva differenciálhat).
- Rövid összefoglalás: mit tanultunk ma (több tábla adataiból csináltunk egyetlen listát).
- Kitekintés a következő órára (pl. alkérdések / subqueries).
Az önálló munkavégzés (65-80. perc) során a diákok eltérő tempóban fognak haladni, ezért a differenciálás elengedhetetlen a sikerélmény és a folyamatos fejlődés biztosításához.
- Támogatás a lemaradóknak (Felzárkóztatás): Számukra biztosítsunk kinyomtatott ER-diagramot (táblakapcsolati ábrát), hogy vizuálisan is lássák a kulcsokat. Alkalmazhatunk "lyukas kód" módszert, ahol a lekérdezés váza adott, csak a kulcsszavakat (pl.
ON,JOIN) vagy a táblaneveket kell behelyettesíteniük. - Kihívás a gyorsabbaknak (Tehetséggondozás): Aki hamar végez az alapfeladatokkal, ne maradjon tétlen. Kapjon "bónusz" feladatokat, amelyekhez önálló kutatás szükséges (például a
HAVINGzáradék használata a csoportosítás utáni szűréshez), vagy kapcsoljon össze három táblát. - Munkaformák variálása: Érdemes páros programozást (pair programming) is bevetni, ahol egy stabilabb tudású és egy bizonytalanabb diák dolgozik együtt egy gépen.
Mintaadatbázis a feladatokhoz
Képzeljünk el egy egyszerű webshopot két táblával:
Vevoktábla oszlopai: id (PK), nev, varosRendelesektábla oszlopai: id (PK), vevo_id (FK), datum, osszeg
Gyakorló feladatok
Az alábbi két feladat a fokozatosság elvére épül, így lefedi az órai anyagot.
1. Feladat (Alap szint – Csak JOIN)
- A probléma: Listázzuk ki az összes vásárló nevét és a hozzájuk tartozó rendelések dátumát!
- Fejlesztési cél: A két tábla sikeres összekapcsolása az idegen kulcs alapján.
- Megoldás:
SQL
SELECT Vevok.nev, Rendelesek.datum
FROM Vevok
INNER JOIN Rendelesek ON Vevok.id = Rendelesek.vevo_id;
2. Feladat (Haladó szint – JOIN és GROUP BY kombinálása)
- A probléma: Számítsuk ki, hogy az egyes vásárlók (név szerint csoportosítva) eddig összesen mekkora összegben vásároltak a webshopban!
- Fejlesztési cél: Az aggregáló függvény (
SUM) és aGROUP BYzáradék együttes alkalmazása egy többtáblás lekérdezésben. - Megoldás:
SQL
SELECT Vevok.nev, SUM(Rendelesek.osszeg) AS teljes_koltes
FROM Vevok
INNER JOIN Rendelesek ON Vevok.id = Rendelesek.vevo_id
GROUP BY Vevok.nev;