ADATBÁZISOK-1 ELŐADÁS     [prog.inf: IP-08AB1E]  
  ELTE, 2015/2016-os tanév II.félévében [2016.febr]
 
 
   
   Előadás:  Hétfő 10:15-11:45  (90') Déli ép. 0-821 Bolyai terem (Nincs katal)
   Gyakorlatok: [1] Csüt. 8:30-10:00[2] Csüt. 12:15-13:45 [link: AB1GY.html]
   Tudnivalók: az előadásról és a vizsgáról, követelmények, részletek [itt:]
   Tankönyv: Jeffrey D. Ullman, Jennifer Widom: Adatbázisrendszerek Alapvetés 
                                     Második átdolgozott kiadás, Panem, 2009. (a kék könyv)
   
   Az előadásokon olyan sorrendben szerepel a tananyag, ahogy a gyakorlatok
   ezt megkívánják. Kérem, hogy az aktuális előadás pdf-t mindig frissítse (F5-el)
   ugyanis még fejlesztem a tananyagot! Ha hibát vagy hiányosságot talál benne,
   kérem, hogy azt e-mailben jelezze és javítom. Köszönöm a visszajelzéseket!  
   
   Témakörök:
   ea+gyak:I. ADATBÁZISOK LEKÉRDEZÉSE: 1.EA | 2.EA | 3.EA | 4.EA | 5.EA | 6.EA
   gyak: II. ADATBÁZISOK PROGRAMOZÁSA: 7.EA (és lásd még PL/SQL-1-2-3-4)
   csak ea: III. ADATBÁZISOK TERVEZÉSE: 8.EAModellek | 9-12.EA: RelTervezes.pdf
    
   Információ a vizsgákról: A vizsgaalkalmakra a Neptunban kell jelentkezni,
   a Neptun 24 órával a vizsga kezdete előtt zárja le a vizsga-jelentkezéseket.
   A vizsgaidőszakban minden héten van vizsgaalkalom meghirdetve a Neptunban:
    (1) 2016.05.18. Szerda 10h 0-821 Bolyai terem  [vizsgalap-2016-05-18.pdf
    (2) 2016.05.25. Szerda 10h 0-821 Bolyai terem  [vizsgalap-2016-05-25.pdf]
    (3) 2016.06.01. Szerda 10h 0-821 Bolyai terem  [vizsgalap-2016-06-01.pdf]
    (4) 2016.06.08. Szerda 10h 0-821 Bolyai terem  [vizsgalap-2016-06-08.pdf]
    (5) 2016.06.15. Szerda 10h 0-821 Bolyai terem  [vizsgalap-2016-06-15.pdf]
    (6) 2016.06.22. Szerda 12h 0-821 Bolyai terem, figyelem! nem 10h, hanem 12h!
    (7) 2016.06.29. Szerda 10h 0-821 Bolyai terem, ez csak javító- vagy utóvizsga!
   
   -->> Vizsgatételek (ez a rögzített tananyag, amit a vizsgára tudni kell, fix)
   -->> Ellenőrző kérdések és feladatok (ez csak minta, folyamatosan frissítem)
   Adatbázisok-1 kurzus Vizsgatételekben négy fő témakörbe osztottuk az anyagot
   és ennek megfelelően vannak csoportosítva a vizsgán is a kérdések négy lapra,
   minden lapon 3-3 kérdés szerepel. Egy kérdés lehet egyszerű típusfeladat is.
   Az írásbeli vizsgán négy lapon 12 ellenőrző kérdésre 80 perc áll rendelkezésre
   (kb. 20 perc egy lap), kérdésenként 5 pont kapható, részpontok is szerezhetők.
   Összesen kapható 60 pontból legalább 20 pontot kell elérnie a sikeres vizsgához.
   Ponthatárok: 20p-tól elégséges, 30p-tól közepes, 40p-tól jó, 50p-60p jeles.
   -->> Vizsgaeredmények/részpontok (név-> kód) hallgato/[jelszóval] [itt:.pdf]
  
   Az előadások tananyaga/diasorozata:
 
   1.EA: 2016.02.08. --- Relációs adatmodell, relációs algebra, egyszerű select
      >>>  1.előadás.pdf  
   > Tk.2.1. Strukturált és félig-strukturált adatmodellek áttekintése
   > Tk.2.2. A relációs modell alapjai, sémák, sorok, előfordulás, kulcsok
   > Tk.2.3. Egyszerű relációsémák definiálása SQL-ben, kulcsok megadása
   > Tk.2.4. Relációs algebra egytáblás műveletei: vetítés és kiválasztás   
   > Tk.6.1. Egyszerű egytáblás lekérdezések az SQL-ben, select utasítás
       select, from és where záradékai, nullérték, műveletek nullértékekkel,
       az ismeretlen igazságérték (U), háromértékű (T, F, U) logika.
       --- 1.GYAK: Egyszerű táblák (most még megszorítások nélkül) létrehozása, 
       --- milyen típusúak lehetnek az attribútumok az Oracle gyakorlatokon
       --- ismerkedünk meg. Egyszerű lekérdezések: Oracle Példatár 1.fejezete 
    
   2.EA: 2016.02.15. --- Rel.algebrai lekérdező nyelv, rel.algebra átírása SQL-re
      >>>  2.előadás.pdf
   > Tk.2.4. Egy algebrai lekérdező nyelv, relációs algebráról teljes áttekintés
   > Tk.2.4. Relációs algebrai feladatok (Tk.2.4.1.feladat) Termékek feladatai
      relációs algebrai kifejezésekkel, kifejezőfák átírása SQL lekérdezésekre
   > Tankönyv feladatai: Termékek-feladatok.pdfCsatahajók-feladatok.pdf  
   > Tankönyv feladataihoz a scriptek: create Termékekcreate Csatahajók
      --- 2.GYAK: Oracle Példatár 1.fejezete (folyt. kifejezések, sorfüggvények)
        
   3.EA: 2016.02.22. --- Relációs algebra kiterjesztése egytáblás teljes SELECT 
      >>>  3.előadás.pdf
   > Tk.5.1. Relációs algebra kiterjesztése multihalmazokra (az SQL-hez)
   > Tk.5.2. Kiterjesztett műveletek, összesítések, csoportosítás
   > Tk.6.4.3.-6.4.7. Relációkra vonatkozó műveletek, összesítő függvények 
       és csoportosítás az SQL-ben, group by és having záradék
       --- 3.GYAK: Oracle Példatár 2.fejezete (Egytáblás csoportosító lekérdezések,
       --- group by, having és order by záradékok) [4.GYAK: I.ZH Példatár 1-2.fej.]
       
   4.EA: 2016.02.29. --- Több táblára vonatkozó lekérdezések, alkérdések
      >>>  4.előadás.pdf
   > Tk.7.1.-7.4. Megszorítások, kulcs, külső kulcs, hivatkozási épség
   > Tk.6.2. Több relációra vonatkozó lekérdezések az SQL-ben, szemantika
   > Tk.6.4.1.-6.4.2. Ismétlődések kezelése, Halmazműveletek az SQL-ben
   > Tk.6.3. Alkérdések és összekapcsolások, külső összekapcsolások az SQL-ben
      --- 4.GYAK: I.ZH Egytáblás lekérdezések Példatár 1-2.fej. feladatai
   
   5.EA: 2016.03.07. --- Áttekintés: SQL DML, Adatbázis-kezelő rendszerek
   > Kieg.: Példák rel.algebrai lekérdezések -> átírása SQL-be: 2.előadás.pdf  
   > Ismétlés: Külső összekapcsolások az SQL-ben: 4.előadás.pdf (4.EA vége)
      >>>  5.előadás.pdf  
   > Tk.6.5. Táblák tartalmának módosítása: DML-utasítások (insert, delete, update)
   > Tk.1.fej. Az adatbázis-kezelő rendszerek (ABKR) felépítése, alapfogalmak
       --- HF 5-6.GYAK: Oracle Példatár 3.fejezete (Többtáblás lekérdezések)
   Megj.: március 14-15 hétfő-és-kedd (két nap) nemzeti ünnep, nincs oktatás
   
   6.EA: 2016.03.21.  --- Logika a relációkhoz. Rekurzió a Datalogban és SQL-ben
      >>>  6.előadás.pdf
   > Tk.5.3.-5.4. Logika a relációkhoz. A relációs algebra és a Datalog összevetése
   > Tk.10.2. Az Eljut-feladat. Rekurzió (csak a nem-monoton rekurzió) az SQL-ben.  
      -- Vizsgára csak az SQL-99 szabvány WITH RECURSION utasítása kell (papíron)
      -- Oracle gépes-megoldások nincs a vizsgán, csak a gyakorlaton próbáljuk ki:
      -- az Eljut-feladathoz a Jaratok táblát létrehozó script: create_jaratok_tabla.txt
      --- HF 5-6.GYAK: Oracle Példatár 3.fejezete (Többtáblás lekérdezések)
   Megj.: március 23-29 szerdától-keddig (egy hét) tavaszi szünet, nincs oktatás 
       
   II. ADATBÁZISOK PROGRAMOZÁSA TÉMAKÖR
   7.EA: 2016.04.04.  --- SQL-2003/PSM szabvány a gyakorlatban: Oracle PL/SQL
      >>> 7.előadás.pdf    --- és a gyakorlaton: Oracle PL/SQL.pdf
  > Motiváció: Tk.10.2. Az Eljut-feladat SQL/PSM-ben (PL/SQL-ben)
  > Tk.9.3. SQL/PSM: Osztott változók, lekérdezések és kurzorok
  > Tk.9.4. Progr.alapok, tárolt eljárások és függvények, kivételkezelés  
     -- Adatbázisok-1 vizsgán választhat menyiket ismerteti (elég az egyik szerint)
     -- (1) vagy Ullman-Widom Tankönyv 9.3.-9.4. SQL/PSM fejezete alapján,
     -- (2) vagy a 9-12.gyakorlatokon begyakorolt Oracle PL/SQL alapján, ehhez
   > Oracle PL/SQL segédanyagok: ebben az eduPLSQL mappában  
      -- itt a plsql_ fájlok forrása: innen  -- és a PL/SQL könyvhöz a scriptek: itt
      -- Tankönyvtár: PL/SQL programozás Oracle 10g-ben (Gábor A.-Juhász I.)
   > Oracle 11gR2 Online Docu: -- Tanszéki szerveren    -- Oracle oldalán --
      -- SQL Language Reference: HTML   PDF (2009.10)    HTML   PDF (2014.07)
      -- PL/SQL Language Refer.:  HTML   PDF (2010.03)    HTML   PDF (2014.12)
      -- Az Oracle doksikban szereplő példák kipróbálásához: createHRtables
   > Gyakorlás: Oracle Példatár 8-10.fejezet feladatai --- Feladatok.pdf
   
   PL/SQL--1/4: blokk, deklaráció, utasítások, vezérlési szerkezetek, select into 

   > PL/SQL blokk szerkezete, változóhasználat >> 2.fej. Alapok
      [1_deklarációs_rész] 2_végrehajtható_rész [3_kivételkezelő_rész]
     
      PL/SQL alapjai
      >> példa-2-24 deklarációk-és-értékadás
      >> példa-2-25 select-into (itt a 2-25 példában blokk: begin ... end; /
            át kell tenni az end;-et a végére!) SELECT INTO-t akkor használjuk,
            ha a lekérdezés pontosan egy sort ad, ha a lekérdezés több sorral
            tér vissza, akkor  kurzort kell használni, lásd köv.gyakorlat anyagát).
      >> példa6-1 DML utasítások a programban, implicit kurzor
      >> példa-6-4 implicit kurzor attribútumok
   
      Vezérlési szerkezetek a PL/SQL-ben 4.fej. Control Statements
      >> példa-4-5 if-then-elsif utasítás,
      >> példa-4-6 egyszerű case utasítás, és itt írjuk át grade := 'B' -> '&B'
            helyettesítési változóra, aminek a felhasználó adja meg az értékét!
      >> példa-4-10 alap LOOP ciklus utasítás EXIT WHEN kilépés a ciklusból
      >> példa 4-14 FOR ciklus utasítás
      >> példa 4-27 WHILE ciklus utasítás
   
      >> Oracle PL/SQL.pdf (és összefoglalók) plsql_01_bevezetes.pdf,
           02_vezerlo_utasitasok.txt02_tipusok.pdf03_dml.pdf05_valtozok.pdf
      --- Ez volt az előkészítés az Eljut feladat megoldásához: 
   
   PL/SQL--2/4: Rekurzió, az "Eljut feladat" megvalósítása PL/SQL-ben       
   > Az "Eljut feladat" megvalósítása PL/SQL-ben
     -- Az Eljut-feladat a Tankönyv (Ullman-Widom kék könyv) 10.2 szakaszára épül
     -- Adott Jaratok(legitarsasag, honnan, hova, koltseg, indulas, erkezes) táblában
        repülőjáratok adatait tároljuk (honnan-hova várospárok). Azt keressük, hogy
        Dallasból mely városokba tudunk eljutni (közvetlenül vagy egy/több átszállással). 
     -- Ezzel a scripttel jaratok_tabla.txt készítsünk saját táblát, ami alapján dolgozunk.
   
   > Rek1.feladat: Mely (x, y) várospárokra lehetséges egy vagy több átszállással
      eljutni x városból y városba? -- Ehhez készítsünk egy Eljut(honnan, hova) táblát, 
      a sorait a járatok tábla alapján PL/SQL programmal töltsük fel (ciklust szervezni, 
      az insert 2.alakja: több sor felvitele alkérdéssel/járatok és eljut táblák alapján).
      >>> (csak ha kell, egy kis segítség, további ötletek és a megoldás vázlata: itt)

   > Rek2.feladat: Mely (x,y) város párokra hány átszállással és milyen költségekkel
      lehetséges egy vagy több átszállással eljutni x városból y városba? -- Ehhez is
      készítsünk Eljut2(honnan, hova, atszallas, koltseg) táblát, a sorait programmal.
    >> Papíron megoldandó feladat: Fejezzük ki az SQL-1999-es szabvány SELECT
         WITH RECURSIVE utasítással, hogy mely mely városokba (hova) tudunk eljutni
         'DAL' (Dallas)-ból legfeljebb 3 átszállással és legfeljebb 5000 költségből.
          >>> (csak ha kell, egy kis segítség WITH RECURSIVE papíros részéhez itt)
      
   > Rek3.feladat: Tegyük fel, hogy nemcsak az érdekel, hogy el tudunk-e jutni az
      egyik városból a másikba, hanem az is, hogy utazásunk során az átszállások is
      ésszerűek legyenek, ez azt jelenti, hogy ha több járattal utazunk, akkor nézni
      kell átszálláskor az érkező járatnak legalább egy órával a rákövetkező indulás
      előtt meg kell érkeznie. (Tegyük fel, hogy nincs egy napnál hosszabb utazás!)
     
   > Rek4.feladat: A fenti feladatokat oldjuk meg PL/SQL-ben úgy is, hogy ne csak
      a várospárokat, hanem a teljes útvonalat is listázzuk ki.
         
   PL/SQL--3/4: Több sort visszaadó lekérdezések, kurzorok használata  
   > Oracle PL/SQL, ehhez Oracle 11gR2 doc PL/SQL Language Reference
      -- Az Oracle doksikban szereplő példák kipróbálásához: createHRtables
     DML utasítások a PL/SQL-ben, kurzorok >> 6.fej. Static SQL/Cursors
      >> példa6-1 DML utasítások a programban, implicit kurzor
      >> példa-6-4 implicit kurzor attribútumok,
      >> példa-6-7 explicit kurzorok deklarálása és használata, lásd 5.feladat,
      >> példa-6-11-től 6-14 explicit kurzor attribútumok, lásd 6.feladat,
      >> példa-6-17 paraméteres kurzorok, lásd 7-8.feladat, 
      >> példa-6-43 for update kurzor módosításhoz, lásd 9-10.feladat.
      >> (összefoglaló) (volt:03_sql_dml.pdf), 13_kurzorok.pdf, pl03_cursor.txt 
                
   PL/SQL--4/4: Tárolt eljárások és függvények használata, kivételkezelés 
   > PL/SQL eljárások és függvények >> 8.fej. PL/SQL Subprograms
      >> példa2-19 Alprogramok (már itt is volt: 2.fej. Alapok)
      >> példa4-1 IF-THEN utasítás (már itt is volt: 4.fej. Utasítások)
      >> (összefoglaló) plsql_06_alprogramok.pdf, pl06_procedura_fv.txt
   > PL/SQL kivétel- és hibakezelés >> 11.fej. PL/SQL Error Handling
      >> példa-11-5 és tábla-11-2 előre definiált kivételek
      >> példa-11-8 felhasználó által definiált kivételek
      >> (összefoglaló) plsql_07_kivetelek.pdf, pl05_exception.txt
   > (összefoglalásként) plsql_13_kurzorok.pdf
-- -- -- -- --      
  
   III. ADATBÁZISOK TERVEZÉSE TÉMAKÖR   
   8.EA:  2016.04.11. --- Tervezés: E/K-modell, E/K-diagram átírása relációkká 
      >>>  8.ea:Modellek.pdf  
   > Tervezés (előadáson: Tk.3-4.fej.) és progr. PL/SQL (gyak.: Példatár 8-10.fej.)
   > Tk.4.1.-4.4. Az egyed-kapcsolat (E/K) modell elemei
   > Tk.4.5.-4.6. E/K diagram átírása relációs modellé  
   
   9.EA: 2016.04.18. --- Relációs adatbázisok tervezése, normalizálás --1.rész 
      >>>  9.ea:RelTervezes.pdf  -- Attribútum halmaz lezártjáig jutottunk 30.oldalig
   > Tk.3.3.1-3.3.2. Bevezetés a relációs adatbázissémák tervezésébe
   > Tk.3.1. Funkcionális függőségek
   > Tk.3.2. Funkcionális függőségekre vonatkozó szabályok
       Attribútumhalmazok lezárása, Funkcionális függőségek vetítése
   
   10.EA: 2016.04.25. --- Relációs adatbázisok tervezése, normalizálás --2.rész 
      >>>  9.ea:RelTervezes.pdf  -- folyt. 30.oldaltól 60.oldalig jutottunk
   > Tk.3.3.3-3.3.4. Boyce-Codd normálforma és BCNF-ra való felbontás
   > Tk.3.4. Chase-teszt a felbontás veszteségmentességének ellenőrzésére
   
   11.EA: 2016.05.02. --- Relációs adatbázisok tervezése, normalizálás --3.rész 
      >>>  9.ea:RelTervezes.pdf  -- folyt. 60.oldaltól végig
   > Tk.3.4. Függőségek megőrzése
   > Tk.3.5. Harmadik normálforma definíciója, 3NF-szintetizáló algoritmus
         
   12.EA: 2015.12.07. --- 12.EA: Összefoglalás (vizsgatételek) és kitekintés 
   > ÖSSZEFOGLALÁS
        >>> Vizsgatételek
       -- >> Vissza a lapnak az elejére: Információ a vizsgákról 
     
   > KITEKINTÉS: Adatbázisok kurzusokhoz rövid ismertető és könyvajánló:
     
                 
          -- Ullman-Widom       -- Molina-Ullman-Widom   -- Abiteboul-AlicesBook
     
     --- BSc Adatbázisok-1 témakörben (Hajas Csilla -- Adatbázisok-1 előadás)
     (1) Ullman-Widom 1.-4.fejezet Relációs adatbázisok modellezése
     (2) Ullman-Widom 5.-9.fejezet Relációs adatbázisok programozása
     (3) Ullman-Widom 10-12.fejezet Haladó témák közül csak 10.2 Rekurzió,
           (a többi haladó témakört MSc kurzusokon tanuljuk, lásd lentebb) 
   
      --- BSc Adatbázisok-2 témakörben (Kiss Attila -- Adatbázisok-2 előadása)
     (4) Molina-Ullman-Widom 1.-5.fejezet Adattárolás, Indexstruktúrák
     (5) Molina-Ullman-Widom 6.-7.fejezet Lekérdezések végrehajtása
     (6) Molina-Ullman-Widom 8.fejezet Naplózás, helyreállítás
     (7) Molina-Ullman-Widom 9.fejezet Konkurenciavezérlés. Tranzakciókezelés
     
      --- BSc Adatbázisok-1 kurzus alapvető célja az SQL és PL/SQL megismerése,
          Oracle Online Dokumentation: Az SQL és PL/SQL feladatok megoldásához
          hasznos az SQL Language Reference és a PL/SQL Language Reference
   
     --- BSc Adatbázisok-2 kurzuson további dokumentációknak vesszük hasznát
           >> Alapfogalmak -- Oracle Database Concepts, itt lásd például Indexek
           >> Hangolás -- Oracle Database Performance Tuning Guide
   
     --- Információs rendszerek MSc szakirány bemutatása: InfoMSc.pdf (Kiss Attila)
   
     --- MSc Tudáskezelő rendszerek projektlabor --> BSc-sek is csatlakozhatnak!
   
     --- BSc és MSc: IT technológiák és architektúrák nagyvállalati környezetben
          amely ingyenes! kredites! Oracle szeminárium --> Oracle Junior Program
   
     --- MSc Az adatbázisrendszerek elméleti alapjai 
     (8) Relációs algebra, relációs kalkulusok és a Datalog bővebben 
     (9) Relációs sématervezés magasabb normálformák  
     (10) Molina-Ullman-Widom 10.fejezet Osztott adatbázisok
  
     --- MSc Korszerű adatbázisok kurzus
     (11) Ullman-Widom 11-12.fej. A félig-strukturált adatmodell 
     (12) Gráfadatbázisok
     (13) BigData, Hadoop  
 
     --- MSc Információs rendszerek fejlesztési módszertana kurzus
     (14) Információs rendszerek fejlesztése. Adatmodellezés
   
     --- MSc Térinformatikai adatbázisok kurzus
     (15) Ullman-Widom 10.4.-10.5. Objektum-relációs adatbázisok
     (16) Térinformatikai adatformátumok, térbeli elemzések
   
     --- MSc Adattárházak és adatbányászat kurzus
     (17) Ullman-Widom 10.6.-10.7. OLAP, adattárházak --> Adattárházak (Kiss Attila)
     (18) Molina-Ullman-Widom 11.fejezet OLAP, adatbányászat --> Adatbányászat
            -- Adatbányászat magyar nyelven -- Digitális Tankönyvtár:
            >> Bevezetés az adatbányászatba (Tan-Steinbach-Kumar könyve)
            >> Előadásfóliák (Tan-Steinbach-Kumar könyvhöz, Ispány Márton fordítása)
         !! A mai utolsó előadáson erről a témáról egy kis kitekintés --> 1.ea: Bevezetés 
         -- és a fontosabb algoritmusok PL/SQL forráskódja elérhető: Oracle Data Mining
               
   VIZSGATÉTELEK                                                                            
                                                      //Elméleti alapok              //és az SQL
  I.rész: Egyszerű lekérdezések   //Alap relációs algebra     //Egytáblás lekérdezések
 II.rész: Összetett lekérdezések  //R.alg, Datalog, Rekurzió //Többtáblás lekérdezések
 III.: Modellezés és megvalósítás //E/K diagram->rel.mod.  //SQL DDL, DML utasítások
 IV.: Tervezés és programozás    //Függőségek, normálformák //Oracle PL/SQL (PSM)
   
   -- >> Vissza a lapnak az elejére: Információ a vizsgákról 
   
-- I. RÉSZ/ELMÉLETI ALAPOK: ALAP RELÁCIÓS ALGEBRA ÉS SQL

 1. A relációs adatmodell alapjai: Reláció, séma és előfordulás,
     attribútumok és sorok, kulcsok, külső kulcsok, hivatkozási épség.
     (Tankönyv 2.2. szakasz, 22-29.oldal, illetve 2.5. szakaszból részek)
 2. Relációs algebra--1.:
     Relációs algebrai alapműveletek, kifejezések felépítése, kifejezésfa.
     (2.4. szakasz, 39-61.)
 3. Relációs algebra--2.:
     Lekérdezések kifejezése alap relációs algebrában és átírása SQL SELECT
     utasításra. Tankönyv 2.4. szakasz feladatai, Tankönyv TERMÉKES példái.
   
-- I. RÉSZ/SQL:  EGYSZERŰ (EGYTÁBLÁRA VONATKOZÓ) LEKÉRDEZÉSEK 

 4. Relációsémák definiálása SQL-ben, a CREATE TABLE utasítás,
     megszorítások, kulcsmegszorítás, hivatkozási épség megadása,
     PRIMARY KEY, UNIQUE, REFERENCES. (2.3. és 2.5. szakasz, 30-35.)
 5. Az SQL adatbázisnyelv 6.1. Select--1.
     Egyszerű lekérdezések, SQL SELECT egy relációra: WHERE záradék
     feltételének megadására, speciális értékekre, adattípusokra és logikai
     kifejezések megadására milyen lehetőségek vannak? Hiányzó értékek,
     műveletek nullértékekkel, az ismeretlen (unknown) igazságérték,
     logikai műveletek eredménye háromértékű logika esetén. 
     Az eredmény rendezése: ORDER BY záradék. (6.1.szakasz, 258-271.)
 6. Az SQL adatbázisnyelv 6.4. Select--2.
    Ismétlődések megszüntetése: DISTINCT (6.4.1. szakasz 298.o.)
    Függvények használata a lekérdezésekben, sorfüggvények (típusok).
    Csoportosítás: GROUP BY záradék, összesítő függvények, nullértékek
    kezelése, csoportokra vonatkozó feltételek: HAVING  záradék.
    A záradékok sorrendje. (6.4.3-6.4.7 szakaszok, 300-305.)
  
-- II. RÉSZ/SQL: ÖSSZETETT (TÖBB TÁBLÁRA VONATKOZÓ) LEKÉRDEZÉSEK 

 7. Az SQL adatbázisnyelv 6.2. Select--3.
     Többrelációs lekérdezések, direkt szorzat és összekapcsolások a
     FROM záradékban. Attribútumok megkülönböztetése, sorváltozók.
     A lekérdezések kiértékelésének szabvány szerinti alapértelmezése. 
     (6.2.1-6.2.4. szakaszok, 273-280.)
 8. Az SQL adatbázisnyelv 6.2., 6.4. Select--4.
     Halmazműveletek az SQL-ben: UNION, INTERSECT, EXCEPT .
     Ismétlődések kezelése halmazműveletek során: UNION és UNION ALL,
     INTERSECT [ALL], EXCEPT [ALL]. (6.2.5., 280-281. és 6.4.2., 298-299.)
 9. Az SQL adatbázisnyelv 6.3. Select--5.
     Összekapcsolások és külső összekapcsolások az SQL FROM záradékban.
     (6.3.6.-6.3.8. szakaszok, 290-295.) 
10. Az SQL adatbázisnyelv 6.3. Select--6.
     Alkérdések a FROM listán, a WHERE és a HAVING záradékokban,
     korrelált alkérdések alakja, kiértékelése.
     (6.3.1.-6.3.5. szakaszok, 284-290.)
    
-- II. RÉSZ/ELMÉLETI ALAPOK: REL.ALGEBRA ÉS DATALOG, REKURZIÓ
11. A kiterjesztett relációs algebra
     Relációs algebrai műveletek kiterjesztése multihalmazokra.
     További algebrai műveletek, ismétlődések megszüntetése,
     az ismétlődések kezelése halmazműveletek során, összesítések
     (aggregáló függvények), csoportosítás, kiterjesztett vetítés,
     rendezés,  külső összekapcsolások (5.1.-5.2. szakasz, 217-236.)
12. Logika a relációkhoz. Datalog alapjai. Relációs algebra és Datalog.
      Lekérdezések kifejezése alap relációs algebrában és átírása  
      Datalog szabályokká. (5.3.-5.4. szakasz, 236-253.)
13. Rekurzió az SQL-99-es szabványban:
      Az Eljut feladat (Tankönyv példája, az előadáson is szerepelt).
      Az SQL-99-es szabvány WITH RECURSIVE utasítása (záradék).
      Az Eljut feladat megoldása SQL-ben. (10.2. szakasz, 467-474.)
             
-- III. RÉSZ/SQL: MEGVALÓSÍTÁS -- SQL DDL és SQL DML UTASÍTÁSOK

14. Adatbázis-kezelő rendszerek áttekintése, ACID-tranzakciók
      (1.2. szakasz 5-13.oldal)
15. Táblák tartalmának megváltoztatását szolgáló SQL DML utasítások:
      INSERT, DELETE, UPDATE (6.5 szakasz, 307-312.)
16. Megszorítások az SQL-ben: kulcsok, idegen kulcsok és hivatkozási
      épség. A hivatkozási épség fenntartására vonatkozó lehetőségek
      megadása SQL-ben a hivatkozott táblára vonatkozó módosítások miatt.
      Megszorítások ellenőrzésének késleltetése. (7.1. szakasz, 329-337.)
17. Attribútumokra és sorokra vonatkozó megszorítások: NOT NULL, CHECK. 
     (7.2-7.4. szakasz, 338-360.)
18. Nézettáblák létrehozása és használata az SQL-ben, adatok módosítása
      nézettáblákon keresztül. Tárolt nézettáblák. (8.1-8.2., 361-370.)
    
-- III. RÉSZ/ELMÉLETI ALAPOK: E/K MODELL ÉS ÁTÍRÁSA RELÁCIÓKRA
19. Az egyed-kapcsolat modell. Egyedhalmazok attribútumok, kapcsolatok.
      E/K modell, séma, előfordulás, diagram. E/K-kapcsolatok típusai, szerepek,
      kapcsolatok attribútumai. Alosztályok, "az-egy" ("isa") kapcsolat és jelölése. 
      Megszorítások modellezése, kulcsok és a kulcsok jelölése az E/K modellben,
      hivatkozási épség, megszorítások. Gyenge egyedhalmazok fogalma, jelölése.
      (4.1.-4.4. szakaszok, 133-165.)
20. Az E/K diagram átírása relációs modellé. Osztályhierarchia ("isa") átalakítása
      relációkká, a három megközelítés összehasonlítása: E/K-típusú, objektumelvű,
      és nullértékek használatával való átírás. (4.5-4.6. szakaszok, 165-181.)
            
-- IV. RÉSZ/SQL: SQL/PSM SZABVÁNY A GYAKORLATBAN: ORACLE PLSQL
21. SQL programnyelvi bővítése. Alapok, végrehajtható utasítások,
       feltételes utastások, ciklusok, SQL DML utasítások a programban.
      Az Eljut feladat (lásd 11.tétel) iterációs megoldása SQL/PSM-ben
      (az előadáson szerepelt) vagy az Oracle PL/SQL gyakorlat alapján. 
22. SQL lekérdezések használata programozási környezetben. 
      Az SQL utasítások és a programozási nyelvek összekapcsolásának
      a típuseltérés problémája. Egyetlen sort eredményező lekérdezések és
      az osztott változók használata. Sorhalmazt eredményező lekérdezések
      és a kurzorok (CURSOR) definiálása és a használata, FETCH utasítás.
      Kurzor FOR ciklus (PSM: Tankönyv 9.3-9.3.7. szakasz, 401-412.,
      9.4.4-9.4.6. szakasz, 421-425., vagy Oracle PL/SQL gyak. alapján)
23. Sémában tárolt eljárások és függvények létrehozása, használata,
      csomagok, hiba- és kivételkezelés, triggerek. (Tankönyv 9.4.1-9.4.3.
      416-421., 9.4.7-9.4.8., 415-431. vagy Oracle PL/SQL gyak. alapján) 
  
-- IV. RÉSZ/ELMÉLETI ALAPOK -- RELÁCIÓS SÉMATERVEZÉS, NORMÁLFORMÁK
24. Relációs adatbázisok tervezési elmélete--1.
      Funkcionális függőség, kulcs, szuperkulcs, függőségi rendszerek, implikáció
      (következés) és levezetés definíciója, szétvághatósági és összevonási szabály.
      Attribútumhalmaz lezárása és algoritmusa, levezetési szabályok teljes halmaza
      (az ún. Armstrong-axiómák), funkcionális függőségi rendszerek ekvivalenciája,
      függőségi halmazok lezárása, minimális bázis (vagy más néven minimális fedő).
      Függőségi rendszerek vetítése. (3.1.-3.2. szakaszok, 69-87.oldal)
25. Relációs adatbázisok tervezési elmélete--2.
      Anomáliák funkcionális függőségek miatt. Relációk felbontása, dekompozíciója.
      Boyce-Codd normálforma, BCNF dekompozíció algoritmusa, BCNF-ra
      való felbontás tulajdonságai. (3.3.szakasz, 90-97. oldal.)
26. Relációs adatbázisok tervezési elmélete--3.
      A felbontásra vonatkozó három elvárás. Veszteségmentes összekapcsolás és
      Chase-teszt a veszteségmentesség ellenőrzésére. Függőségek megőrzése.
      (3.4. szakasz, 98-106.oldal)
27. Relációs adatbázisok tervezési elmélete--4.
      Harmadik normálforma (elsődleges attribútum és 3NF definíciója),
      a minimális függőségi rendszer (minimális bázis, vagy minimális fedő),
      3NF felbontás szintetizáló algoritmus, 3NF felbontás tulajdonságai.
      (3.5. szakasz, 108-111.oldal)