650 likes | 807 Views
Adatbázis-kezelés. Adatbázis-kezelés . Középszint: 1-2 tábla SQL-nyelv és lekérdező-rács használata Űrlap és jelentés készítés Emelt szint: több tábla (kapcsolatok) több elméleti háttér több alkotó jellegű probléma. Lekérdezés típusok: Választó Frissítő Törlő Táblakészítő
E N D
Adatbázis-kezelés • Középszint: • 1-2 tábla • SQL-nyelv és lekérdező-rács használata • Űrlap és jelentés készítés • Emelt szint: • több tábla (kapcsolatok) • több elméleti háttér • több alkotó jellegű probléma
Lekérdezés típusok: • Választó • Frissítő • Törlő • Táblakészítő • Hozzáfűző • Kereszttáblás • Függvények: alapfüggvények 4-5 fajta
Árpád-ház • Milyen, ha csak elméleti feladat? • Egy, kevés rekordú adattábla • SQL lekérdezés • 2 értelmezés • 2 alkotás • Érettségin gyakorlat, gépes megoldás • Milyen szoftver? • Emelt szintű, de a feladat nehézsége közepes. • Feladatgyűjteményben sok pontból áll.
Megoldás előkészítése • Adatbázis létrehozása • Adattábla importálása (szoftver függet-lenség biztosítása!) • Kulcs beállítása • Mezőtípusok vizsgálata • Lekérdezések mentése adott néven (!) • Űrlap és jelentés készítés
Endre SELECT Gyermek, Meddig-Mettől AS [Uralkodás ideje] FROM Család WHERE Gyermek like '*Endre*'; Szűrés és számított értékek
Gyerekek SELECT Szülő, Count(Gyermek) AS [Gyerekek száma] FROM Család GROUP BY Szülő; Csoport alkotás
HosszSorrend SELECT Gyermek, Meddig-Mettől AS [Uralkodás ideje] FROM Család WHERE Király ORDER BY Meddig-Mettől DESC; Rendezés számított értékek alapján
Béla apja SELECT Szülő FROM Család WHERE Gyermek='IV. Béla';
István nagyapja SELECT Szülő AS Nagyszülő FROM Család WHERE Gyermek=(SELECT Szülő FROM Család WHERE Gyermek='IV. István'); Allekérdezés
Királyok száma SELECT Count(Gyermek) AS [Királyok száma] FROM Család WHERE ( (Mettől<1000) and (Meddig>=1000)) or ((Mettől<=1099) and ((Meddig>1099)) or (Mettől>=1000) and (Meddig<=1099)) and Király; Többféle megoldás van
Géza utániak SELECT Count(Gyermek) AS [királyok száma] FROM Család WHERE Mettől>=(SELECT Meddig FROM Család WHERE Gyermek='II. Géza') and Király; Összetett szűrés
8. és 9. feladat • Űrlap • Jelentés készítés • Varázsló használata kényelmes • Oldal beállítások (fejléc, lábléc tartalma) • Tulajdonság változtatás Szoftverek alkalmasak-e?
Párbajtőr feladat • közép szintű feladat • adatbevitel, illetve konvertálás • a választó lekérdezések dominálnak • függvények használata • csoportosítás • 2 jelentéskészítés • standard feladatsor
Párbajtőr pontozási útmutató Adatbázis létrehozása 1 pont Adattábla importálása 1 pont Kulcs beállítása 1 pont
A: SELECT Név, Év, Helyszín FROM Egyéni WHERE Helyezés=1 ORDER BY Év; 1 pont
B: SELECT Év, Helyszín, Helyezés FROM Egyéni WHERE Név='Kulcsár Győző'; 1 pont
C: SELECT Név, Helyezés FROM Egyéni WHERE Helyszín='Atlanta' ORDER BY Helyezés; 1 pont
D: SELECT Count(*) AS [Érmek száma] FROM Egyéni WHERE Ország='MA'; 1+1 pont
E: SELECT Név, Count(*) AS [Helyezések száma] FROM Egyéni WHERE Ország='MA' GROUP BY Név; 1+1 pont
F: SELECT Név, Count(*) AS [Aranyérmek száma] FROM Egyéni WHERE Helyezés=1 GROUP BY Név HAVING Count(*)>1; 1+1 pont
G: SELECT Ország, Count(*) AS [Aranyérmek száma] FROM Egyéni WHERE Helyezés=1 GROUP BY Ország; 1+1 pont
H: SELECT Helyszín, Count(Helyszín)/3 AS [Olimpiák száma] FROM Egyéni GROUP BY Helyszín HAVING Count(Helyszín)>3; 1+1 pont
I: jelentés 1 pont J:SELECT Ország, Helyezés, Count(*) AS Darab FROM EgyéniGROUP BY Ország, Helyezés ORDER BY Ország; 1+1 pont J: jelentés 1 pont Összesen: 20 pont
Verseny feladat • Emelt szint • Adatbázis létrehozás, táblák definiálása • Adatfeltöltés idő szükséglet • Lekérdezésekhez melyik tábla kell? • Kapcsolatok • Függvények használata • Csoportosítás és allekérdezés használata
Adatbázis létrehozása 1 pont • Versenyző tábla: mezőnevek és adattípusok 1 pont • Eredmény tábla: mezőnevek és adattípusok 1 pont
Iskola tábla: mezőnevek és adattípusok 1 pont • Versenyző tábla adatainak felvitele 1 pont • Eredmény tábla adatainak felvitele 1 pont • Iskola tábla adatainak felvitele 1 pont
A: SELECT Versenyző.Név, sum(eredmény.pontszám) AS összpontszám FROM Versenyző, Eredmény WHERE Versenyző.VersenyzőAZ=Eredmény.VersenyzőAZ GROUP BY Versenyző.Név ORDER BY sum(eredmény.pontszám); 5 pont
B: SELECT FelSorszám, Max(Pontszám) AS [Maximális pontszám] FROM Eredmény GROUP BY FelSorszám; 2 pont
C: SELECT Iskola.Iskolanév, Iskola.Város, Count(Versenyző.IskolaAZ) AS [Indulók száma] FROM Versenyző, Iskola WHERE Iskola.IskolaAZ = Versenyző.IskolaAZ GROUP BY Versenyző.IskolaAZ, Iskola.Iskolanév, Iskola.Város; 2 pont
D: SELECT Versenyző.Név FROM Versenyző, Eredmény WHERE (Versenyző.VersenyzőAZ = Eredmény.VersenyzőAZ) and (Pontszám=0) GROUP BY Versenyző.Név ORDER BY Versenyző.Név; 3 pont
E: SELECT DISTINCT Versenyző.Név, Iskola.Iskolanév, Iskola.Város, Iskola.Utca, Iskola.Házszám FROM Versenyző, Eredmény, Iskola WHERE (Versenyző.VersenyzőAZ = Eredmény.VersenyzőAZ) and (Iskola.IskolaAZ=Versenyző.IskolaAZ) and (Pontszám>10); 2 pont
F: SELECT Név, Iskola.Iskolanév FROM Versenyző, Iskola, Eredmény WHERE (Versenyző.IskolaAZ=Iskola.IskolaAZ) and (Versenyző.VersenyzőAZ = Eredmény.VersenyzőAZ) and (Iskola.Város<>'Budapest') and (FelSorszám='I') and Pontszám= ( SELECT Max(Pontszám) FROM Versenyző, Eredmény,Iskola WHERE (Versenyző.VersenyzőAZ = Eredmény.VersenyzőAZ) and Versenyző.IskolaAZ=Iskola.IskolaAZ) and (FelSorszám='I') and (Iskola.Város<>'Budapest')); 5 pont
A jelentés a versenyzők összpontszámairól 2pont • Jelentést a versenyzők adatairól iskolánként 2 pont Összesen: 30 pont
Királyok • Középszintű feladat • Hasonlít az Árpád-ház feladathoz • Egyszerűbb lekérdezések a fele • Függvény, allekérdezés van • Csoport alkotás nincs • Jelentéskészítés
Névsor SELECT * FROM Uralkodó ORDER BY Név 2 pont
Lászlók SELECT Név, Végső-Kezdő AS [Uralkodásuk ideje] FROM Uralkodó WHERE Név Like '*László*' And Név Not Like '*Ulászló*‘ 3 pont
HosszSor SELECT Név FROM Uralkodó ORDER BY Végső-Kezdő DESC 2 pont
Istvánok száma SELECT Count(*) AS [Istvánok száma] FROM Uralkodó WHERE Név like '*István*‘ 2 pont
Budai udvar SELECT Név FROM Uralkodó WHERE (Kezdő<= 1347) and (1347 <= Végső) 2 pont
Királyok száma SELECT Count(*) AS [Királyok száma] FROM Uralkodó WHERE ((Kezdő<1300) and (Végső>=1300)) or ((Kezdő<=1399) and (Végső>1399)) or ((Kezdő>=1300) and (Végső<=1399)) 3 pont
Mátyás előtt SELECT Count(*) AS [Királyok száma Mátyás előtt] FROM Uralkodó WHERE Végső < (SELECT Kezdő FROM Uralkodó WHERE Név='Mátyás') 4 pont
10 évnél többet uralkodók jelentés • Lászlók jelentés 2 pont
Nobel-díj • középszintű • nagyon jó ötlet • importálásnál már van probléma (,) • nevek alakja szokatlan • QBE-ráccsal könnyen megoldható feladatok
magyar: SELECT * FROM nobel WHERE ország='H'; Bárány: SELECT díj, ország FROM nobel WHERE név like '*Bárány*';
Wigner: SELECT díj, évszám, ország FROM nobel WHERE név like '*Wigner*'; NL: SELECT név FROM nobel WHERE ország="NL";
dijak: SELECT TOP 1 díj, count(*) FROM nobel GROUP BY díj ORDER BY 2 DESC; hiany: SELECT évszám, díj FROM nobel WHERE név = '-';
egyszer: SELECT ország, count(*) FROM nobel GROUP BY ország HAVING count(*)=1; rangsor: SELECT ország, count(*) FROM nobel WHERE ország not like '-' GROUP BY ország ORDER BY 2 DESC;
1939: SELECT név, díj, évszám FROM nobel WHERE évszám between 1901 and 1939 ORDER BY évszám, díj;