Feladat
Jelen feladat során megtapasztalhatjuk az adatbázisok életszerű méreteit, ezúttal ugyanis
több mint másfél millió sorból álló adatbázistáblával találkozhatunk.

Az infojegyzet.hu által képzett adatbázis forrásául a
Meteostat adatfelülete
szolgált, mely hozzáférést biztosít a világ számos meteorológiai állomásának méréseihez.
Ezek közül mi hét magyarországi mérőállomás adataival fogunk dolgozni.
A feladatok megvalósításához három adatbázistáblára lesz szükségünk az alábbiak szerinti struktúrával.
|
7 adatsor
met_meropont
meteorológiai mérőpontok (7 magyarországi város)
|
|
| 1. | pid | mérőpont azonosítója (elsődleges kulcs) |
| 2. | pcode | mérőpont kódja a Meteostaton |
| 3. | phely | mérőpont városa |
| 4. | pgps | mérőpont GPS adatai (üres mezők) |
| |
|
27 adatsor
met_cond
időjárási helyzet megnevezések
|
|
| 1. | cid | időjárási helyzet kódja (elsődleges kulcs) |
| 2. | ccond_en | időjárási helyzet angol leírása |
| 3. | pkond_hu | időjárási helyzet magyar leírása |
| |
|
1.545.662 adatsor
met_adat
időjárási adatsorok 7 különböző magyarországi városban
2000-2025. között minden nap, óránként
|
|
| 1. | aid | sorszám (elsődleges kulcs) |
| 2. | apid | mérőpont azonosítója (idegen kulcs) |
| 3. | date | mérési adatok dátuma |
| 4. | hour | mérési adatok órája |
| 5. | temp | hőmérséklet [°C] |
| 6. | prcp | csapadék [mm] |
| 7. | wdir | szél iránya [°] |
| 8. | wspd | szélsebesség [km/h] |
| 9. | coco | időjárási helyzet kódja (idegen kulcs) |
| |
Ezek szerint tehát az adatbázisunk 7 magyar nagyváros időjárási adatait tartalmazza az elmúlt 26 évből,
óránként mérést alkalmazva. A vizsgált időszak kezdete 2000. jannuár 1., a vége pedig 2025. december 31.

Töltse le az adatbázis adatait a következő pontokban leírtaknak megfelelően!
1.
Hozzon létre a számítógépén egy mappát az adatfájlok letöltéséhez, és egyesével töltse le a folytatásban felsorolt fájlokat
a létrehozott mappába, ahonnan majd a phpMyAdminba impotálást elvégezheti! Letöltéshez
kattintson a hivatkozásokra
a jobb egérgombbal, és válassza a
Link mentése másként...,
vagy az ennek megfelelő funkciót!
2.
Saját
phpMyAdmin felületén
hozzon létre
egy
XY_meteostat nevű
adatbázist, ahol XY az ön nevének monogramját jelöli, ékezetek nélkül.
Azért szükséges az adatbázist saját névre létrehoznia, mert a későbbi feladatok között lesznek olyanok,
ahol az adatbázis tartalmát is módosítania kell - így munkája nem fog "összeveszni" mások munkájával, akik
még esetleg szintén az ön tanulói gépén dolgoznak.
3.
Importálja egyesével a létrehozott adatbázisba az előzőleg lementett
.sql fájlokat.
Ügyeljen rá, hogy az importálást az
alaptablak.sql fájllal kezdje, mert ennek a fájlnak az
utasításai hozzák létre az időjárási adatok táblájának a struktúráját is! A nagy fájlok importálása esetén
legyen türelmes: egy-egy adatfájl feldolgozása akár másfél percet is igénybe vehet az phpMyAdmin számára!

Mivel az
.sql fájlok mérete nagyobb, mint a webszerverek jellemző alapértelmezett fájlméret korlátja,
importálás előtt célszerű lehet
ellenőrizni saját fejlesztőkörnyezetünk beállításait,
és szükség esetén
módosítani a
xampp/php/php.ini
fájl alábbi sorainak paramétereit:
post_max_size = 8M -> post_max_size = 32M
upload_max_filesize = 2M -> upload_max_filesize = 32M
A módosított beállítások életbe lépéséhez a webszervert
újra kell indítani.
4.
A sikeres importálást követően a mappába mentett adatfájlokat, illetve
a mappát törölheti,
hiszen a továbbiakban már nem lesz rájuk szükség.
Kérdések, feladatok

A folytatásban, négy különböző blokkban, különböző feladatokat talál az alábbiak szerinti színekkel jelölve:
SQL lekérdezések készítése
Adatok megjelenítése webes felületen
API végpontok létrehozása
Adatbázis kiegészítése
SQL lekérdezések készítése

A phpMyAdmin felületen ismerkedjen meg az adattáblák szerkezetével, fedezze fel az azok között kialakítható
kapcsolatokat, majd ezt követően SQL lekérdezésekkel adjon választ az alábbi kérdésekre. Egy-egy kérdés
megválaszolása után a működő lekérdezést mentse el egy
.txt szöveges fájlba a kérdésekhez tartozó
sorszám feltüntetésével.

Az iskolai, idealizált tanpélda adatbázisokhoz képest egy élő, valós adatbázis gyakran tartalmaz hiányosságokat,
hibákat. Pl. nincs meg benne minden mérési eredmény, aminek meg kellene lennie, vagy éppen némely adat helyén NULL érték,
esetleg hibásan 0 értékű szám szerepel. Ezeket a problémás pontokat általában célszerű az érdemi munka előtt ellenőrizni,
hogy tudjuk, mit várhatunk el egyáltalán az adatbázisunktól, és mire kell majd vigyázni. A következő lekérdezések bevezető
kérdései ezt a fajta tájékozódást hivatottak segíteni.
1. Hány mérési adat tartozik az egyes városokhoz az adatbázisban? Jelenítse meg a létező, és a hiányzó adatok
számát is minden város esetén!
Elvileg minden városhoz 227.928 adatsornak kellene tartoznia, mert 2000-tól 2025-ig, a 26 év alatt ez ennyi:
(26 év x 365 nap/év + 7 szökőnap ) x 24 óra/nap = 227.928 óránkénti adatsor.
Ám a valóságban sajnos nem áll rendelkezésre minden adat. Fontos tudnunk, hogy mennyi hiányzik.
2. Határozza meg, melyik évben hány mérési adat áll rendelkezésre Budapest (vagy az önhöz legközelebbi város) esetén. Ebben a
feladatban is adja meg a hiányzó adatok számát is minden év vonatkozásában!
Egy év alatt 365 x 24 = 8760, szökőév esetén 8784 időjárási adatsort jelent az óránkénti mérés.
A kérdés éppen az, hogy az egyes években ezekből mennyi van meg, és mennyi nincs.
3. Az előző pontban vizsgált város esetén állapítsa meg, hogy léteznek-e olyan napok a vizsgált időszakban, amely napokon
az összes mérési adat hiányzik - vagyis egyetlen mérési adatunk sincsen aznap az adott helyszínen!
4. Vizsgálja meg, vannak-e olyan időpontok (vagyis órák bármely napon), amely időpontokban mind a 7 város esetén
hiányoznak a mérési adatok. Ha talál ilyen időpontokat, akkor határozza meg, hogy melyik az utolsó ilyen
dátum, illetve óra.
Az lehet a gondolatunk, hogy ha valamely város esetén egy adott időpontban hiányoznak a mérési adatok,
akkor ezen adatokat a legközelebbi város adataival helyettesítjük majd, ahol elérhetőek a mért értékek.
Ehhez azonban az kell, hogy országos szinten minden órában létezzen legalább 1 adatsorunk valahol.
Vajon tervezhetünk ezzel a lehetőséggel? Vagy ha nem, akkor mikor mutatkozik az utolsó ilyen hiányosság,
és honnantól tekinthetjük folyamatosnak az adatok rendelkezésre állását?
5. Adja meg, hogy az adatbázis szerint mennyi volt az éves összes csapadékmennyiség a különböző városokban
az egyes években. Ez alapján állapítsa meg, hogy mikortól tekinthetjük az adatbázis csapadékra vonatkozó
számait használható adatforrásként.
Annak megítélésére, hogy az adatbázisból kapott számok mennyire tekinthetőek hitelesnek,
összehasonlításként használja a
metnet.hu éves csapadékösszeg
térképeit.
Adatok megjelenítése webes felületen
Készítsen PHP programot, mely webes felületen táblázatos formában megválaszolja a következő kérdéseket!
6. Mikor mérték 2000. óta az egyes városokban a leghidegebbet, és a legmelegebbet? Hol mennyi volt ott ez a két érték?
7. Mennyi az egyes városok átlaghőmérséklete? Mennyivel térnek el ezek az értékek a teljes (országos) átlagtól?
8. A különböző városokban mely napokon volt a legnagyobb a hőingás? Mennyi volt ez, és milyen szélső értékekből adódott?
A napi hőingás a legmelegebb és a leghidegebb hőmérsékletek közti különbséget jelenti az adott napon.
API végpontok létrehozása
9. Készítsen API végpontot, mely egy adott dátum és város alapján megadja a kért helyszín aznapi időjárási adatait a múltból.
Bemenő paraméterezésként
- tegye kötelezővé a dátum megadását a 2000-01-01-től 2025-12-31-ig terjedő időtartamra (hibás paraméterérték esetén adjon az API a válaszában útmutatót a paraméterhez),
- tegye opcionálissá a helyszín megadását a fenti 7 város valamelyikeként (a paraméter hiánya esetén a teljes magyarországi adathamazból - mind a 7 város adataiból - dolgozzon; hibás paraméterérték esetén pedig a válaszban sorolja fel az opciókat az API).
Kimenetként adja meg az API a kért dátumra (és helyszínre) vonatkozóan az aznapi
- legalacsonyabb hőmérsékletet,
- legmagasabb hőmérsékletet,
- összes csapadékmennyiséget,
- és a legnagyobb jegyzett szélsebességet.
Adatbázis kiegészítése
10. Egészítse ki az adatbázis megfelelő tábláit úgy, hogy abban a jelenleg megtalálható 7 magyar város
mellett 3 szomszédos országunk 1-1 városának időjárási adatai is elérhetővé váljanak! Az új városok
például a következők lehetnek:
- Poprád
- Gyergyószentmiklós
- Rovinj
ám ha a szíve másként diktálja, egyéb városokat is választhat ezek bármelyike helyett. Ügyeljen azonban rá,
hogy 3 különböző szomszédos országból válassszon!
Az új városokhoz tartozó időjárási adatokat a
Meteostat adatfelületéről
szerezze be, és oldja meg az onnan beszerzett adatok átalakítását, és importálását
a meglévő MySQL adatbázisba.