Adatbázis-kezelés 2

  • miklóskuhn
Type of lesson / project plan
Lesson plan
Sector
Információs és kommunikációs technológiák
Topic, learning area
Informatika / Szoftverfejlesztés / Adatbázis-kezelés II. ; Haladó SQL lekérdezések (Többtáblás lekérdezések és aggregálás)
Vocational subject(s)
Competencies, skills to be developed
Kritikus gondolkodás és problémamegoldás
Produktivitás és számonkérhetőség
Professional competencies, skills to be developed
Adatkapcsolatok felismerése és leképezése, Hibamentes, szabványos SQL (DML) kód írása, Valós üzleti kérdések (pl. „kik azok a vásárlók, akik egy adott terméket vettek?”) átfordítása adatbázis-lekérdezéssé
Teaching method
egyéni és páros munka
General subject(s)
Learning and development goals
A diákok értsék az INNER JOIN, LEFT JOIN közötti különbséget. Tudják alkalmazni a GROUP BY záradékot és az aggregáló függvényeket (SUM, COUNT, AVG). Képessé válni önállóan összetett információk kinyerésére egy normalizált adatbázisból.
Duration
90 perc (2 tanítási óra)
Introductory part and preparation of the lesson / project plan

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.

Implementation plan for the lesson / project

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.

Used digital devices
Gemini
Evaluation plan

Az értékelés fókuszpontjai:

  1. 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 WHERE feltételt HAVING helyett), a tanár megállítja az önálló munkát és frontálisan tisztázza a problémát.
  2. 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.
  3. 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).
Differentiation

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 HAVING zá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.
Homework, project task

Mintaadatbázis a feladatokhoz

Képzeljünk el egy egyszerű webshopot két táblával:

  • Vevok tábla oszlopai: id (PK), nev, varos
  • Rendelesek tá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 a GROUP BY zá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;

Attached file