II. Témakör
Adatbázisséma tervezés (E/K modell --> leképezése
rel.AB-sémára és a relációs tervezés: normalizálás) 

SQL SELECT, DDL, DML, DCL áttekintése

_______________________________________________________
7. gyak. (XI.06)
 - E/K modell, SQL DDL: CREATE TABLE

-  Az I.ZH feladatainak megbeszélése. Lekérdezések kifejezése TRC-ben is!
-  Lásd Az órai példa-adatbázissémák 1.példáját, részletesen: 
    E/K modell, és leképezése relációsémákra.
    SQL DDL.  Táblák és megszorítások (constraints) létrehozása.
    SQL DML. A megszorításoknak eleget tevő adatsorok felvitele.
-  A gépes feladatokhoz lásd Oracle adatbázisok ELTE-s elérése itt az 1.pontban  
   leírt egyszerűbb sqlplus kliens programot használjuk a panda.inf.elte.hu gépen. 

-  HF. nov.20-i gyakorlatra a 2. példa pelda2EK E/K modell javítgatása,
    és leképezése relációs sémákra (hasonlóan, mint a fenti 1.Példában)

    a táblák és megszorítások létrehozása: CREATE TABLE , INSERT
    (hasonlóan, mint a fenti 1.Példában). Ebben lesznek a 2Zh feladatai!

-  HF beküldéséről a részleteket, lásd Zh feladatok, beadandók beküldése
_______________________________________________________
8. gyak. (XI.13)
 - SQL SELECT  --> függvények, csoportosítás
megoldásokat lásd 03_sql.txt (jelszóval)

Feladatok az egyszerűsített egyetemi tantárgyfelvétel példában
-  lásd Az órai adatbázissémák 1. példáját (E/K modell, rel.sémák)
-  Hozzuk létre a tanar, hallg, targy, felv táblákat:
    CREATE TABLE,INSERT utasítások: 01_sql.txt (jelszóval)
-  Vizsgáljuk meg a táblák szerkezetét, integritási megszorításokat!
-  (ismétlő feladat a 2.gyak-ról) Rel. algebrai lapműveletek
    kifejezése SQL SELECT-tel lásd 02_sql.txt (jelszóval)

I. feladatcsoport: Rel. algebrai alapműveletek átírása SQL-be
a múlt heti anyag ismétléseként oldjuk meg relációs algebrában csak
az alapműveletek felhasználásával, és ezt irjuk át SQL SELECT-re.

1. feladat: Milyen tárgyakat vett fel Kiss Pál?
2. feladat: Milyen tárgyakat nem vett Kiss Pál?
3. feladat: Kinek a legnagyobb az ösztöndija?

Házi feladat (Rel.alg.alapműveletek átírása SQL-be)

HF1. Kik vettek fel legalább két tárgyat?
HF2. Kik vettek fel legfeljebb két tárgyat?
HF3. Kik vettek fel pontosan két tárgyat?

II. feladatcsoport: Where felt, csoportosítás, függvények
Új anyag: az SQL SELECT lekérdezési lehetősége bővebb, mint
amit a relációs algebrában láttunk. Erre végezzünk feladatokat:
SELECT  WHERE feltétele, GROUP BY csoportosítás,
és FÜGGVÉNYEK. (Az alkérdések a köv.héten lesznek.)

4. feladat: több tábla összekapcsolásából sorok kiválasztása minél
érdekesebb keresési feltételeket ill SQL függvényeket beleírva ...

Kik azok a hallgatók (+függvények) akiknek
- odija 10000 és 30000 között van (between and)
- a neve K betűvel kezdődik (like),
- vagy PTM vagy MAT szakosok (in),

5. feladat: Dátumfüggvények: a fentit folytatva:
- a 200_-es években íratkozott be (konv.fv, like)
- 2005.09.01 - 2006.12.31 között vizsgázott valamiből
   (between and) 

6. feladat: Csoportfüggvények a hallgató táblára készítsük el
   az odijra vonatkozó statisztikákat: hány sora van a táblának,
   ebből hány sorban van kitöltve a az odij oszlop, mennyi a
   legnagyobb és legkisebb odij, mennyi az átlag és összeg?

7. feladat: Group by, lásd az előző feladatot, csak most szak
   szerinti csoportositásban. Egészítsük ki having záradékkal,
   csak azokon a szakokon nézzük meg a statisztikákat, ahol
   kettőnél többen járnak.

HF: A függvényeknek utána nézhetünk az Oracle Online Docban.
Függvények, különös tekintettel a dátum és csoportfüggvényekre...

HF4. (dátum függvények) Hány naposak és hónaposak vagyunk?
HF5. (dátum függvények) Listázzuk ki hallgatókként, hogy hány
          napja ill. hány hónapja íratkoztak be az egyetemre?
HF6. (konverziós függvények) Listázzuk ki hallgatókként, hogy
          hány éve járnak egyetemre?
HF7. (csoport függvények) Melyek azok a szakok, amelyre 3-nál
          kevesebb hallgató jár?
HF8. (csoport függvények) Kik azok a hallgatók, akik 3-nál több
          tárgyat vettek fel?
_______________________________________________________
9. gyak. (XI.20)
 - SQL SELECT --> join, hányados, alkérdések
megoldásokat lásd 04_sql.txt (jelszóval)

HF. volt a 7.gyak.-on a nov.20-i gyakorlatra, az óra elején küld át!
-  HF beküldéséről (így kell majd a géptermi Zh megoldásait is küldeni)
    ha nincs kész, küldj üres fájlt, ha kész, akkor a megoldást küld el,
    a részleteket, lásd Zh feladatok, beadandók beküldése

I. feladatcsoport: ELŐZŐ HETI HF. MEGBESZÉLÉSE

II. feladatcsoport: AZ ÚJ ANYAG
SQL SELECT: WHERE-be beágyazott alkérdések:
      (a) t in (SFW)
      (b) t theta (SFW)
      (c) t theta ANY/ALL(SFW)
      (d) EXISTS (SFW)
valamint a relációs algebra származtatott műveletei, mint
      -  a metszet
      -  az összekapcsolások (join, stb, külső összekapcsolás)
      -  a hányados kifejezése SQL-ben.

1.feladat: Relációs algebra származtatott műveleteit fejezzük ki
   SQL-ben, kezdjük a metszettel (lásd múlt heti HF3)
   Az SQL-ben a metszet: (SFW) intersect (SFW)
   
  Kik vettek fel pontosan két tárgyat?
   
2.feladat: Természetes összekapcsolás kifejezése alkérdésekkel
   (eddig where-ben adtuk meg az összekapcsolási feltételeket)
   majd megnézzük az ANSI SQL kompatibilis JOIN szintaxissal,
   de a mai órán alkérdésekkel lesz: Alkérdések (a) t in (SFW)

  Kik vettek fel Adatbázisos tárgyat?

3.feladat: Alkérdések (b) t theta (SFW),
   ahol theta: = <> < <= > >= és
   a (SFW) pontosan egy sort ad vissza.

  Ki(k) a legkorábban beiratkozott hallgatók?

4.feladat: Alkérdések (c) t theta ANY/ALL(SFW),
   Az előző kérdést oldjuk meg így is...

   Ki(k) a legkorábban beiratkozott hallgatók?

5.feladat: Alkérdések (d) EXISTS (SFW)
  Relációs algebrai hányados kifejezése korrelált alkérdésekkel
   
  Kik azok a hazon (hallgatók), akik MINDEN tárgyat felvettek?
  vagyis Kik azok a hazon (.. felv f1), akikhez nincs olyan tárgy
  (not exists .. f2) amit ne vettek volna fel (not exists f3)

6.feladat: Alkérdések (d) EXISTS (SFW)  

  Kik azok a hazon (hallgatók), akik LEGALÁBB azokat a
  tárgyakat vették fel, mint a HAZON='KOPLAAT' vagyis
  átfogalmazva az előzőhöz hasonlóra:
  Kik azok, akik minden olyan tárgyat felvettek, mint amit
  a KOPLAAT felvett?

HF További feladatok beágyazott alkérdésekkel önálló gyakorlásra!
HF: A JOIN szintaxisnak utána nézhetünk az Oracle Online Docban.
_______________________________________________________
10. gyak. (XI.27)
 - SQL DDL, DML, DCL
Feladatokat és megoldásokat lásd 05_sql.txt (jelszóval)

Témakörök:
SQL SELECT  folyt.
-- ism. alkérdések
-- csoportosítás, DISTINCT a csop.fv-ben, NULL a csop.fv-ben,
-- NVL függvény,  függvények egymásba ágyazása
-- összekapcsolások: ANSI SQL kompatibilis szintaxis
-- külső összekapcsolások: Oracle 9i előtti és utáni szintaxis
SQL DDL
-- folyt. nézettáblák létrehozása
SQL SELECT
-- folyt. INLINE nézet
SQL DDL
-- foyt. nézettáblák használata
SQL DCL
-- jogosultságok kezelése, GRANT, REVOKE
-- tranzakciókezelés alapjai: mentési pontok, COMMIT, ROLLBACK
SQL DML
-- adatok karbantartása INSERT, DELETE, UPDATE
-- adatok karbantartása (nézeteken keresztül)
SQL SELECT
-- hierarchikus lekérdezések, a PRIOR művelet, CONNECT BY

Feladatok:
1.feladat: Azoknak a hallgatóknak az adatai, akik legalább azokat
               az  'adatbázis' tárgyat vették fel, amelyet  'Kovács Pál'
               is felvett (minden, vagyis a hányados kifejezése).

2.feladat: Mennyi hallgató van és hány különböző városból jöttek?

3.feladat: Adjuk meg az ösztöndíjak átlagát és összegét, de az összegbe
               számoljuk bele azokat is, akinek ismeretlen az ösztöndíja
               (valamilyen értékkel, ill. H.F. az átlagösztöndíjjal) (NVL)

4.feladat: A tárgyak adatai és az, hogy kik vették fel az adott tárgyat,
               melyek azok a tárgyak, melyeket nem vettek fel hallgatók
               (NOT IN helyett KÜLSŐ JOIN)
 
5.feladat: Melyek azok a tárgyak, amelyet a legtöbben vettek fel?
               (Zh-n: NÉZET-tel) Zh után:  FROM (SFW) INLINE nézettel.
               ZH-n csak WHERE és HAVING záradékban használhatunk 
               alkérdést, de FROM-ban nem: az INLINE nézet csak ZH után!

6.feladat: (ZH-n is lesz) egyszerű és összetett nézettáblák létrehozása és
               használata. Adatok karbantartása (INSERT, DELETE, UPDATE)
               adattáblán illetve nézeten keresztül, és nézni ezek egymásra hatását.

ZH-n nem szerepel, de vizsgán igen, ezért a ZH után XII.11-én lesz: : 
               Hierarchikus lekérdezések, a PRIOR művelet, CONNECT BY
               Feladatok relációs adatbázisok tervezésére (függőségek alapján)

ZH-ra kell(Kiss Attila honlapján) Az SQL nyelv részei (Oracle specifikusan)
               Hozd létre a saját mintatábláidat (lásd 11.gyak. Előzetes infó a ZH-ról)
_______________________________________________________
11. gyak. (XII.04)
 - II. ZH (géptermi SQL)

Előzetes információ a dec.4-i II. géptermi ZH-ról
1-3.f. SQL QL: Lekérdezések kifejezése SQL-ben 
                          (1-3.f-ban nézetek, inline nézet nékül megoldva)
4-5.f. SQL DDL: Adott E/K modell leképezése relációs modellre
                            Táblák, megszorítások, nézettáblák létrehozása
6-7.f. SQL DML: Adatok módosítása, sorok beillesztése, törlése

-  A géptermi Zh feladataihoz: lásd Az órai példa-adatbázissémák
    2.példájához a 7.gyak (nov.7-i) gyakorlaton volt kiadott HF-t:
    E/K modell, és leképezése relációsémákra.
    SQL DDL.  Táblák és megszorítások (constraints) létrehozása.
    SQL DML. A megszorításoknak eleget tevő adatsorok felvitele.
-  Mindenki a saját tábláiban tudja kipróbálni a lekérdezéseket.
-  A géptermi Zh feladatok beküldéséről a részleteket,
    lásd Zh feladatok, beadandók beküldése
-  Figyelem! A 16h-kor kezdődő csoport december 4-én a
   00-803 Programnyelvi laborban írja meg a géptermi Zh-t.

_______________________________________________________
12. gyak. (XII.11)
 -  Relációs adatbázis tervezési feladatok

Relációs adatbázisok tervezése függőségek alapján.
Feladatok az alapfogalmakra és algoritmusokra.
_______________________________________________________
PótZH (XII.18)
- az egyik ZH pótlása/javítása

Előzetes információ a dec.18-i javító/pót ZH-ról

-  Az egyik (és csak az egyik) Zh javítható (pótolható), de a pótzh-n
   nemcsak javíthat, hanem ronthat is (vagyis lecseréli ennek a Zh-nak
   a jegyét a pótZh-n elért jegyre). Ha pótZh után valamelyik Zh még
   mindig elégtelen, akkor gyakjegy uv-val szerezhet gyakorlati jegyet.
   lásd A gyakorlati jegy megszerzésének feltételei
_______________________________________________________

Budapest, 2007. szeptember 10.
Utolsó módosítás: 2007. nov.13.

dr. Hajas Csilla

Iroda: ELTE, Információs Rendszerek Tanszék, 2.503-as szoba,
Telefon: 2090-555/8475 mellék,         E-mail: sila@inf.elte.hu

ej Lap tetére            Gyak.oldalára            Kezdőlapra