ELTE, 3PTM, IKP-AB1G/5-9. csoport
ADATBÁZIS-KEZELÉS gyakorlat
dr. Hajas Csilla (gyakorlat vezető)
2006/2007. tanév I./őszi/ félév


Ez az oldal az ELTE IK hallgatói számára tartalmaz csak szervezési információt.
Kérdések, megjegyzések e-mailben (Hajas Csilla):
sila@inf.elte.hu
 

1. INFORMÁCIÓ
1.1. Rövid tematika
1.2. A tantárgy felvétele
1.3. A gyakorlati jegy szerzése
1.4. Pontozás és ponthatárok
1.5. Az adatbázisok elérése
1.6. Az SQL*PLUS használata
1.7. Vizsgával kapcs. információ

2. ELŐZETES TEMATIKA
2.1. Az órai példa-adatbázis sémák
2.2. Lekérdezés (+SQL SELECT)
2.3. Géptermi Zh
(2006.nov.8-9.)
2.4. Beadandó feladat
(okt.25-dec.7.)
2.5. Tervezés (+SQL DDL, DML)
2.6. Megvalósítás (+SQL DCL)
2.7. Javító Zh, Gyak.UV
(dec.20.)

4. HASZNOS LINKEK
4.1. Ajánlott irodalom
4.2. Többi gyak.vez. oldalai
4.3. Adatbázisok magyar linkek
4.4. Adatbázisok angol ny.linkek
4.5. SQL gyak. angol ny.linkek
4.6. Oracle Online Documentation

3. ZH EREDMÉNYEK (3 kar kóddal)
I.(órai+p) | II.(zh,bead) | III.(gy.jegy)
5.(csüt. 8:30-10:00) ó+p5 | zh5 | gyj5
6.(pé. 16:00-17:30) ó+p6 | zh6 | gyj6
7.(sze.12:15-13:45) ó+p7 | zh7 | gyj7
8.(csü.14:00-15:30) ó+p8 | zh8 | gyj8
9.(csü.16:00-17:30) ó+p9 | zh9 | gyj9

   

Budapest, 2006. szept. 4. (1. Információ. 2.2/2.5-2.6. Tematika. 4. Linkek.)
+ kiegészítések és pontosítások: 2.1. Órai példa adatbázis sémák (okt.4.)
1.3. Gyak.jegy min.köv. pontosítása, 2.3-2.4. Zh és Bead. infó (okt.18.)
2.3. Zh minta feladatsor megoldással, 2.3-2.4. infó pontosítása (okt.26.)
Beadandó feladatok hac.txt kiosztása a kod sorrendjében kod.txt (nov.3.)

2.3. Zh jav. pontozási elvek (nov.16.), 2.4. Bead. jav. szempontok (nov.27.)
2.7. Jav.ZH, Gyak.UV előzetes információ (feladattípusok) (nov.29.)
1.7. Vizsganapok (dec.5.), 2.7. Jav.ZH, Gyak.UV időpontja és helye (dec.7.)
3. Eredmények: Gyak.jegyek (az utolsó gyakorlaton lezárva, dec.13-14.)
  
Utolsó módosítás: 2006. dec.20. (3. Javító zh, gyakorlati UV eredménye)
  
URL: http://people.inf.elte.hu/sila/                 dr. Hajas Csilla

 


1. INFORMÁCIÓ A GYAKORLATRÓL

1.1. Rövid tematika

A gyakorlatok laborban gépes környezetben vannak, csak az első 30 percben
az aktuális előadás témakörét, kérdéseit dolgozzuk fel „táblás” feladatokkal:

·        relációs adatmodell, relációs lekérdező nyelvek

·        relációs algebra, algebrai optimalizálás

·        relációs kalkulusok, tartománykalkulus, sorkalkulus

·        biztonságos kalkulusok és relációs algebra ekvivalenciája

·        adatmodellezés, egyed/kapcsolat modell, átírása relációs modellbe

·        relációs adatbázisséma-tervezés algoritmusai, normálformák

·        fizikai fájlszervezés, indexstruktúrák


Az adatbázis-kezelés gyakorlatok további 60 perce „gépes” ORACLE 10g
SQL*Plus környezetben, ahol az SQL megismerése és gyakorlása a cél:

·        az SQL lekérdező nyelve, csoportosítás, összekapcsolások,

·        beágyazott lekérdezések és kiértékelésük, optimalizálás

·        az SQL adatdefiníciós nyelve, táblák, nézettáblák, indextáblák

·        az SQL adatkezelő nyelve, az adatok karbantartása

·        az SQL vezérlő nyelve, jogosultságok kezelése, tranzakció-kezelés

1.2. A tantárgy felvétele és az előfeltételek

Az ETR-en keresztül lehet jelentkezni. Felhívom a figyelmet arra, hogy
az ETR később ellenőrzi az előfeltételeket, amelyek:

·        Algoritmusok és adatszerkezetek I. (Fekete István honlapja)

·        Logikai alapok a programozáshoz (Pásztorné Varga Katalin honlapja)


A gyakorlat az előadással párhuzamosan van meghirdetve, és az előadáshoz
kapcsolódik, kérem, hogy csak azok vegyék fel a gyakorlatot, akik az előadást
is felvették. Másrészt mivel érvényes gyakorlati jegy nélkül a hallgató nem
vizsgázhat, az előadást csak azok vegyék fel, akik a gyakorlatot is felvették
(vagy ebben a félévben, vagy korábban már teljesítették a gyakorlatot, ebben
az utóbbi esetben a gyakorlatot nem kell és nem is lehet újból felvenni).

A gyakorlatok a PC5 (2.em.108) laborban vannak, amely kicsi (max.20 fős),
fontos, hogy a gyakorlat alatt mindenki tudjon gépet is használni, ezért csak
ahhoz a gyakorlati csoporthoz tud bejárni, amelyre az ETR-ben bejelentkezett.


1.3. A gyakorlati jegy szerzése, követelmények

A gyakorlatokon jelenléti ív készül. Gyakorlati jegyet csak az szerezhet, aki
részt vesz a gyakorlatokon (legalább 7 alkalommal), megírta a géptermi Zh-t,
valamint beküldte a beadandó feladatot. Azok, akik 6 alkalomnál többször
hiányoztak igazolatlanul nem kaphatnak gyakorlati jegyet (UV-val sem).
Valójában a „Hallgatói követelményrendszer” 85. (1c) pontja alapján az
„egyharmadot meghaladó távollét esetén a gyakorlati jegyet meg kell tagadni”.

Gyakorlati aktivitással, a gyakorlatokon a „táblás” feladatok megoldásával,
illetve az SQL-ben végzett „gépes” feladatok a helyes megoldásait értékelve
„órai plusz-pontokat” lehet szerezni. A gyakorlati jegyet ezen órai+pontok,
a gépes Zh-n valamint a beadandó feladatra kapott pontok alapján szerezhet,
ha teljesít bizonyos minimum feltételeket, mégpedig, hogy a gyakorlatokon
és a géptermi zh-n is megvan a minimális 12 pontja (ami a gépes Zh-n elérhető
pontok negyedének, illetve az órai+pontok harmadának felel meg).
 
Segédeszközök:
A „táblás” elméleti feladatokhoz egy oldalas elméleti összefoglaló (definíciók,
az algoritmusok absztrakt leírása) használható a feladatok megoldáshoz, ezekkel
az óra elején foglalkozunk, és mindenkinek van lehetősége, hogy előbb önállóan
átgondolja és megoldja („röpZh” keretében), a megoldást utána megbeszélünk.
A gyakorlatok második (nagyobb) felében gépes SQL feladatokat oldunk meg.
A „gépes” feladatokból előre egyeztetett időpontban (nov.8-9) gyakorlaton írunk
géptermi Zh-t, ahol csak az ablinux és itt az Oracle: SQL Reference használható.
A beadandó feladathoz minden használható, de csak önálló munkát értékelek.
 
Ha a géptermi Zh-n nem éri el a 12 pontot, akkor géptermi pótZh-n javíthat.
Ha az órai+pontok összege kisebb, mint 12 pont, de legalább 7 alkalommal
volt gyakorlaton, akkor gyakorlati UV-val szerezhet gyakorlati jegyet, de ha
6 alkalomnál többször hiányzott nem kaphat gyakorlati jegyet (UV-val sem).
A gyakorlati jegyet (ha teljesítette a fenti minimális követelményeket), a pontok
összesítése alapján számolom az alábbi táblázat szerint (csak az összpont számit,
pl. 42 (jeles) + 16 (elégséges) + 10 (elégséges) = 68 pontra jó(4) jegyet kap).


1.4. Pontozás és ponthatárok

 

elégséges(2)

közepes (3)

     jó (4)   .  

jeles (5)   . 

100% (max)

Gépes Zh

12 -

20 -

28 -

36 -

 48 pont

Órai+pont

12 -

18 -

24 -

30 -

 36 pont

Beadandó

 8 -

12 -

16 -

20 -

 24 pont

Összpont

32 -

50 -

68 -

86 -

108 pont

 
ahol az Órai+pont (max.36 pont = 8 x 4 pont + 4 x 1 pont) úgy jön, hogy 
15 héten 13 gyakorlat van (nincs a regisztrációs héten, nincs az őszi szünetben)
a13 gyakorlatból az egyiken géptermi Zh, a 12 gyakorlatból pedig 8 alkalommal
5-10 perces „röpZh”-t írunk az anyag „táblás” részéből, ahol 4-4 pont  érhető el,
mégpedig 0 pont = nem jelent meg, 1 pont = (csak) megjelent, 2p = elégséges,
3p = közepes, és 4 pont = ha jó ill. jeles. Alapvetően tehát az elméleti anyagból
papíron írt röpZh eredménye határozza meg az órai+pontot, mégis ha valaki a
gyakorlat gépes részénél az SQL feladatok megoldásában aktív, jó, akkor azon is
szerezhet órai+pontokat, de egy alkalommal csak max.4 pont érhető el. (szept.4.)

{%Új kieg.: okt.18.: Négy gyakorlaton nincs röpZh, a „jelenléti ív” alapján kaphat
1 pontot. Ezek a gyakorlatok: 1.(első), 13.(utolsó), 9.gyak (ekkor a röpZh helyett
a beadandó egyéni feladat EK modelljét beadni), a félév során még egy alkalommal
elmarad a röpZh (az idén a diák demonstrációk miatt ez a 6.gyak. okt.18-19-én.) %}
  
I. tábla: A gyakorlaton szerzett „órai +pontok” eredmény táblának fejléce:

#

KOD

eddigi

1.

2.

3.

4.

5.

6.

7.

9.

10.

11.

12.

13.

 

 

órai+

IX.

IX.

IX.

X.

X.

X.

X.

XI.

XI.

XI.

XII.

XII.

 

 

pontok

14.

21.

28.

05.

12.

19.

26.

16.

23.

30.

07.

14.

 

 

36p

1p

4p

4p

4p

4p

1p

4p

1p

4p

4p

4p

1p

  
Gépes Zh pontjai (max.48 pont = 4 x 12 pont), lásd 2.3. Géptermi Zh (nov.8-9.)
Beadandó pontjai (max.36 pont = 4 x 9 pont), lásd 2.4. Beadandó feladat (..-dec.7)
  
II. tábla: Géptermi Zh-n, Beadandó feladatokra kapott pontok táblának fejléce:

#

KOD

gépt

1f.

2f.

3f.

4f.

idő

bead

bead

1f.

2f.

3f.

4f.

idő

 

 

zh

join

join

csp

korr

+2

felad

fela

EK

ddl

dml

nzt

+3

 

 

össz

krd

csp

alkr

alkr

/-2

szám

össz

rel

crt

krb

lek

/-3k

 

 

48p

12p

12p

12p

12p

 

 

24p

9p

5p

5p

5p

 

  
III. tábla: Gyakorlati jegyek, pontok összesítése eredmény táblának fejléce:

#

KOD

ETR

gépt

gépt

órai+

röp

bead

bead

össz

előzt

gyak

jav

UV

 

 

gyak

zh

zh

pont

zh

fela

fela

pont

gyak

UV

gépt

elm

 

 

jegy

össz

jegy

össz

jegy

össz

jegy

 

jegy

jegy

zh

zh

 

 

 

48p

 

36p

 

24p

 

108p

 

 

48p

36p

  
{%Új kieg.: okt.26.: Az idén november 23-án lesz a Neumann nap (ami dékáni szünet),
ezért a 10.gyak. nov.22-én szerdán csak a beadandó feladat gépes megvalósításával
foglalkozunk (SQL DDL, DML), a nov.23-i csütörtöki csoportoknak ez házi feladat.
Elmarad a röpZh, ami már nem volt bekalkulálva, ezért a 10.gyak órai+pontjaiként
az összes röpZh-ra (vagyis a két későbbi röpZh-t is beszámítva) kapott pontok átlagát
számolom (egészekre kerekítve). A többi röpZh-t így egy hét csúszással írjuk meg. %}


1.5. Az adatbázisok elérése

Szerver: az ELTE-n két működő Oracle 10g adatbázist tudunk elérni:

·        oradb (nevű adatbázis a dbpc75 nevű gépen) 10.2-es verziójú,

·        ablinux (nevű gépen v10 nevű, alias ablinux adatbázis) 10.1-es.


Kliens: SQL*PLUS kliens program

1.            Az sqlplus kliens program a panda.inf.elte.hu (pandora, valerie)
gépeken fut, a használata:
sqlplus <usernév>/<jelszó>@<alias>    illetve
sqlplus <usernév>@<alias>
(esetén megkérdezi a jelszót).
Az <alias> helyére vagy az oradb vagy ablinux nevet írjuk be
Az adatbázisok távoli eléréséhez szükséges információ megtalálható
$ORACLE_HOME/network/admin/tnsnames.ora nevű állományban.

2.            Grafikus felületű SQL*PLUS programoknál a bejelentkezéskor
három input mezőben kell megadnunk a fenti három adatot:
<usernév> <jelszó> és <alias> (vagy az oradb vagy ablinux).  
00-807 Adatbázis-laborbeli
gépekről Windows „SQL Plus” ikonnal,
az asztalon van egy „SQL Plus” ikon vagy Start > Program >„sqlplusw
(korábban ezt használtuk, de a PC5 laborban ebben a félévben nincs).

3.            Az idén egy új felületen keresztül is el lehet érni az adatbázisokat,
az iSQL*PLUS webes kliens programmal. Bejelentkezéskor a 2-hez
hasonlóan, három mezőt kell kitöltenünk, a harmadik <connect identifier>
mezőbe vagy az oradb vagy ablinux adatbázis-nevet adjuk meg.
Elérhetősége: az „Információs Rendszerek Tanszék” kezdőoldalán:
http://ablinux.inf.elte.hu innen van rámutató link, azt kövesse, jelenleg:
http://ablinux.inf.elte.hu:5560/isqlplus/ 
http://medusa.inf.elte.hu:5561/isqlplus/
Ez a felület kísérleti jelleggel üzemel, így amikor épp nem elérhető,
akkor a „hagyományos módszert” tudjuk használni (lásd a fenti 1.pont).


Oracle azonosító: minden hallgatónak, aki felvette a gyakorlatot mindkét
adatbázisban az ETR EHA kódból lett generálva <usernév> (.ELTE nélkül).
Ha nem tud bejelentkezni valamelyik adatbázisba, akkor e-mailben forduljon
Nikovits Tiborhoz: nikovits@ullman.inf.elte.hu, akinek a honlapján megtalálhatja

Oracle eléréséhez az aktuális információt, lásd Adatbázisok elérhetősége
A kezdeti jelszó megváltoztatása az alábbi SQL utasítással lehetséges:
ALTER USER <usernév> IDENTIFIED BY <új_jelszó>;
A beállításokat mindkét adatbázisban (ablinux, oradb) végezzük el!

{%Új kieg.: okt.25.: Az ablinux-on hardver és operációs rendszer csere miatt
a rendszergazdák új adatbázis-kezelőt telepítettek, a korábbi azonosítókat a
félév eleji kezdeti jelszóval hozták létre, kérjük változtassa meg a jelszavát!
%}


1.6. Az SQL*PLUS használata

Az SQL*PLUS használatáról (ha pandorás gépekről jelentkezik be)
lásd SQL*PLUS parancsok (sqlplus.pdf) (M.Á.), illetve
Oracle Online Doku: SQL*Plus User's Guide and Reference
Kilépés: SQL>EXIT (vagy QUIT)
Puffer vagy fájl tartalmának szerkesztése: SQL>EDIT (vagy ED) <fájlnév>[.sql]
Fájl betöltése a pufferbe: SQL>GET <fájlnév>[.sql]
Pufferben levő parancs futtatása: SQL>RUN (vagy /)
Parancsfájl futtatása: SQL>START <fájlnév>[.sql] (vagy @<fájlnév> .sql nélkül)
 
A félév első felében a (SELECT) lekérdezésekhez a pufferben levő parancsot
(az utolsót) szerkesztjük és azt az egyet futtatjuk (RUN), elemezzük a választ,
a félév második felében (SQL DDL, DML, DCL) script programokat írunk
és azt futtatunk (@fájlnév - végrehajtja a fájlban található parancsokat).
 
A környezeti paraméterek beállítása (ha a pandorás gépekről lép be)
Beállíthatjuk, melyik editort használjuk: DEFINE _editor=/usr/bin/joe
(vagy amit szeretnénk emacs, joe, pico, vim), dátum- és oldal-formátumot:
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD';
SET PAGESIZE 40
SET LINESIZE 150
SET AUTOCOMMIT ON
érdemes egy-két beállítást megadni az aktuális könyvtárban található login.sql
scriptben, ami az sqlplus minden indításakor lefut és aktiválódnak a beállítások.

Az órai példa adatbázis használata, lásd 2.1. Az órai példa-adatbázis sémák
A táblák szerkezete: DESC <usernév>.<táblanév> , mások tábláira ebben a formában
lehet hivatkozni, egyszerűsítésként szinonimát hozhatunk létre: CREATE SYNONYM.


1.7. Vizsgával kapcsolatos előzetes információ

Előzetes információ (szept.4.)
Érvényes gyakorlati jeggyel az ETR-en keresztül lehet majd vizsgára jelentkezni!
Csak tájékoztatásul a tavalyi 2005-ös vizsgatematika: lásd: Tételjegyzék, de
az idei vizsgák menete is és az anyaga is az előadásoktól függően változhat!

{% Új kiegészítés (szept.29.)
Az idén megajánlott vizsgajegyet lehet szerezni két beadandó program
készítésével (és a megadott határidő előtt a feladatleírásban megadott
formában a megadott e-mail címre való beküldésével). A beadandó
programokkal kapcsolatos információ, feladatleírás: az előadó honlapján. %}

{% Új kiegészítés (dec.5.)
Akinek a fenti módon nem sikerül a megajánlott vizsgajegyet megszerezni,
az idén írásbeli vizsgával szerezhet vizsgajegyet. Időtartama: 2 óra.
Információ: az előadó honlapján. Az írásbeli vizsgán lesznek egyszerű feladatok,
valamint lesz tétel bizonyítása, kifejtős kérdés, ahol minél több definíciót, fogalmat,
állítást, példát kell leírni (bizonyítások nélkül), és algoritmus alkalmazása is lesz
egyszerű példára. Semmilyen segédeszközt nem lehet használni!

VIZSGANAPOK (az ETR-ben lehet vizsgára jelentkezni)
A vizsganapokon 9 órától írásbeli: Déli tömb 0-822 Mogyoródi terem,
1.) 2006. december 22. (16. hét, péntek),
2.) 2007. január 9. (19. hét, kedd),
3.) 2007. január 16. (20. hét, kedd),
CSAK UV1.) 2007. január 23. (21. hét, kedd),

illetve az utolsó vizsganapon másik teremben: Északi tömb 1.71. terem,
CSAK UV2.) 2007. február 2. (22.hét, péntek). %}


2. A GYAKORLATOK ELŐZETES TEMATIKÁJA

A feladatokat és megoldásait a gyakorlatokon tárgyaljuk, itt csak azt soroltam fel,
hogy az adott héten milyen feladattípusokkal foglalkozunk (mire lehet készülni).
Az [IA1/ 12.fej.] hivatkozás a „4.1. Ajánlott irodalom”/ megfelelő fejezetei.
A gyakorlatok „táblás” része az előadást követi, az előadáshoz igazodva változhat,
a gyakorlatok „gépes” részében Oracle 10g környezetben gyakoroljuk az SQL-t.

2.1. Az órai példa-adatbázis sémák

A félév első felében az SQL SELECT lekérdezésekben a ’SILA’ nevű
felhasználó az alábbi szerinti táblanévvel elérhető tábláit használjuk:
SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER='SILA'
ahol a táblák szerkezetét DESC[RIBE] SILA.<tabla_name> és a táblák
tartalmát SELECT * FROM SILA.<tabla_name> -el tekintheti meg, a
SILA.<tabla_name> felh.táblákat mindkét rendszerben használhatjuk.

Példa-adatbázisok sémája
Megj.: Az „Adatmodellezés”, „Adatbázisséma-tervezés” témaköröket
a félév során később tanulják, ezért most a félév elején egyszerűsített
szerkezetben adjuk meg a lekérdezésekben használt táblák szerkezetét.
(C: char, D: date, N: number, PK: primary key/azonosító, ref: kapcs.hiv.)

1. Példa: Egyetemi tantárgyfelvétel:
  

TANSZEK          . 
tsz            C   PK,
tmegnev   C,
tvez          C.




       ––– tsz –––


TANTARGY        . 
tkod         C   PK,

tnev          C,
tsz_felel    C   ref,
kredit         N,
ea_oszam   N,
gy_oszam   N.

             
             
             
    ––– tkod
             |
             |
           

            
             |
             |
           tsz –––


OKTATO           . 
okt        C   PK,
nev        C,
tsz         C   ref,
szoba    C,
email     C.





       ––– okt –––



TANREND        .  
kod          C   PK,

felev         C,
tkod          C   ref,
okt            C   ref,
ea_v_gyak C,
terem         C,
idop           C.

HALLGATO              . 
azon    C   PK,

vnev    C,   knev         C,
szak     C,   szuldat     D,
irszam C,  varos C, ut C,
odij      N,  tandij        N.


      ––– azon –––



FELVETTE
azon         C   ref
kod           C   ref
felvdat      D
jegy          N.

              |
              |
     ––– kod



2.2. Lekérdezés (+SQL SELECT) előzetes tematikája

Relációs algebra és kalkulusok, algebrai optimalizálás. Az SQL lekérdező nyelve: SELECT
 * Regisztrációs hét : szeptember 4-től 10-ig ETR-ben, lásd 1.2. A tárgy felvétele, előfeltétel
 * 1-7. gyak.: 2006. szeptember 11-től október 27-ig, a témaköröket lásd az alábbi táblázatban,
                      (a gyakorlatok elején pár perces röpdolgozatokat írunk a „táblás” feladatokból),
 * az őszi szünet: október 30-tól november 3-ig (nincs oktatás), az őszi szünet után:
 * 8. gyak.: Zh az SQL SELECT lekérdezésekből, lásd 2.3. Géptermi Zh (2006.nov.8-9.)
  

Dátum

Táblás feladatok, röpZh témák:

Gépes feladatok megoldása Oracle-ben:

1.gy.
IX.13.
IX.14.

Bevezetés. Adatbázis-kezelés,
relációs adatmodell, alapfogalmak.
Relációs algebra alapműveletei I.:
szelekció/kiválasztás, projekció/vetítés,
Descartes-szorzat, unió, különbség.
[AB1/ 3.1, 4.1.]
Példák lekérdezések kifejezésére
relációs algebrai alapműveletekkel,
pl. „kik tették-vették?”, „kik nem
tették-vették?” kérdések kifejezése.      

Oracle azonosítók igényléséhez az
adatok egyeztetése (ETR EHA kód).
Az SQL története (lásd wikipedia).

2. gy.
IX.20.
IX.21.

Relációs algebra alapműveletei II.: 
[AB1/ 4.1.]
Példák lekérdezések kifejezésére
relációs algebrai alapműveletekkel,
pl. max./min. értékek kifejezése az
alapműveletekkel.

A relációs algebrai alapműveletek
kifejezése SQL-ben
SELECT ... FROM ... WHERE ...
(röviden „SFW”), ahol a „where” keresési
feltételek: aritmetikai összehasonlítás,
összetett feltételek (NOT, AND, OR
logikai műveletek és  zárójelek).
SELECT DISTINCT (valódi projekció).
A SFW kiértékelése, rel.alg. értelmezése.
A teljes SELECT használata: SFW
{UNION | INTERSECT | MINUS} SFW.
Halmazműveletek rel. alg. értelmezése.

3. gy.
IX.27.
IX.28.

Relációs algebra műveletei III.:
az összekapcsolások [AB1/ 4.1.]
Példák származtatott műveletekre:
metszet, természetes összekapcsolás,
theta-, ill. félig-összekapcsolások.
Hiányos adatok tárolása, a NULL.
Példák külső összekapcsolásokra.

Táblák összekapcsolása SQL-ben I.
összetett keresési (kapcs.) feltételekkel
SQL példák a WHERE kifejezésre:
BETWEEN ... AND ..., LIKE ’minta’,
IN értéklista, IS [NOT] NULL.
Kiválasztott sorok rendezése, ORDER BY

4.gy.
X.04.
X.05.

Relációs algebra műveletei IV.:
a hányados (alapműveletekkel kif.)
Példák hányadosra [AB1/ 4.1.9.feladat],
„minden”, „legalább”, „legfeljebb”
jellegű lekérdezések kifejezésére
relációs algebrában.

Alkérdések I. a WHERE utasításrészben:
[NOT] IN (SFW),
THETA [ANY | ALL] (SFW),
[NOT] EXISTS (SFW)
.
Táblák összekapcsolása SQL-ben II.
WHERE
záradékban egymásba ágyazott
IN (SFW)
alkérdésekkel kifejezve.
Egymásba ágyazott lekérdezések
kiértékelése (egyszerű típus, ha a belső
SELECT önmagában kiértékelhető).

5.gy.
X.11.
X.12.

Heurisztikákon alapuló
algebrai optimalizálás.
[AB2/ 7.2.-7.3.]
Relációs algebrai kifejezések
reprezentálása kifejezésfával
relációs algebrai azonosságokon ill.
heurisztikus szabályokon alapuló
átalakításával hatékonyabb relációs
algebrai lekérdezéseket reprezentáló
végrehajtási terv kialakítása,
lásd Segédanyag(.rtf)

Alkérdések II. a WHERE utasításrészben:
A hányados kifejezése SQL-ben I.
NOT EXISTS (SFW)
alkérdésben másik
NOT EXISTS (SFW) alkérdéssel.
Egymásba ágyazott lekérdezések
kiértékelése (korrelált típus, ha a belső
SFW külső SFW-re hivatkozást tartalmaz).
Táblák összekapcsolása SQL-ben III.
CROSS JOIN
; NATURAL JOIN;
JOIN USING
... ; JOIN ON ...
Hiányos adatok: IS [NOT] NULL.
Külső összekapcsolás
[LEFT | RIGHT | FULL] OUTER JOIN;
illetve WHERE feltételben (+).

6.gy.
X.18.
X.19.

Relációs kalkulusok, DRC, TRC.
Korábbi relációs algebrai lekérdezések
kifejezése DRC-ben és TRC-ben.

Származtatott adatok, sor-függvények:
karakteres: SUBSTR, LOWER, UPPER,
numerikus: ABS, MOD, ROUND, TRUNC,
dátum: ADD_MONTHS, MONTHS_BETWEEN,
konverziós: TO_CHAR, TO_DATE,
TO_NUMBER, egyéb (null kezelése: NVL).
Csoportosítás, csoport-függvények:
SFW [GROUP BY ... [HAVING ...]]
csoport-függvények: AVG, COUNT, SUM,
MAX, MIN, STDDEV, VARIANCE.

7.gy.
X.25.
X.26.

Relációs kalkulusok, DRC, TRC.
Formulák reprezentálása fákkal,
max. konjunkcióláncok megállapítása,
biztonságosság eldöntése.
Biztonságos DRC, TRC lekérdezések
átírása relációs algebrába.
Beadandó feladatok kiosztása
(e-mailben október végén), lásd
2.4. Beadandó feladat (okt.25-dec.7-ig)

Alkérdések III. és csoportosítások.
Alkérdések a WHERE ill. HAVING
utasításrészben. (Alkérdések a FROM
utasításrészben - INLINE nézet).
Halmazműveletek selectek között.
UNION [ALL], INTERSECT, MINUS
A hányados kifejezése SQL-ben II.
NOT EXISTS (SFW) alkérdésben (SFW)
MINUS (SFW) halmazművelettel.
GYAKORLÁS: zh minta feladatsor


2.3. Géptermi Zh (2006.nov.8-9.) előzetes információ

Előzetes információ (okt.18.)
Géptermi zárthelyi dolgozat: SELECT (4 db 12 pontos feladat)
1. táblák összekapcsolása, sorok kiválasztása, beépített függvények, 12 pont,
2. táblák összekapcsolása, csoportképzés (group by), csoportfüggvények, 12 pont
3. csoportképzés (group by), csoportok szűrésével (having), alkérdéssel, 12 pont
4. egymásba ágyazott korrelált lekérdezések, 12 pont.
{%Új kieg.: okt.26.: Zh minta megoldással: okt25.txt (okt.25-26 gyak. feladatsora) %}

(okt.18.) Zh időpontja: nov. 8-9-i gyakorlat (az ETR szerinti csoportbeosztásban),
a gyakorlat helyén: PC5 (2.em.108) laborban (amely max.20 fős, mivel fontos, hogy
a géptermi zh alatt mindenki tudjon gépet használni, ezért csak abban a csoportban
tudja megírni a géptermi zh-t, amelyre az ETR-ben bejelentkezett (kivéve azt a 3 főt
akik a csüt.14h gyakorlatról a kevésbé zsúfolt csüt.16h gyakorlatra lettek átirányítva).

Az ülésrend és az, hogy ki melyik feladatsort írja, így a „sila” nevű felhasználó
mely feltöltött adattábláihoz lesz a zh alatt jogosultsága, az eddig szerzett pontok
alapján dől el, vagyis az eddigi órai +pontok alapján sorbarendezzük a hallgatókat,
akik eddig a legtöbb pontot érték el kerülnek belülre az ablak mellé, és így sorban,
végül, akik eddig a legkevesebb pontot érték el ülnek kívül (a tábla felőli oldalon).
Ülésrend a zh alatt, az eddig szerzett órai +pontok alapján, lásd kod.txt

Segédeszköz: A géptermi zh alatt csak az ablinux gép használata megengedett,
a kiosztott feladatlapon a feladatokon kívül rajta lesz a táblák neve és szerkezete,
valamint az ablinux gép elérése: http://ablinux.inf.elte.hu (Információs Rendszerek
Tanszék honlapja), innen megnyithatja http://ablinux.inf.elte.hu/oradoc10/index.htm
Oracle online dokumentációt, ebből pl. az SQL Reference használható a zh alatt,
viszont a tanszék oktatóinak a honlapjait és segédanyagokat nem lehet megnyitni!
A tanszéki honlapon rámutató linket talál az iSQL*PLUS webes kliens programra,
amivel grafikus környezetben dolgozhat http://ablinux.inf.elte.hu:5560/isqlplus/
az isqlplus leállása esetén egy másik link http://medusa.inf.elte.hu:5561/isqlplus/
vagy a panda.inf.elte.hu gépen futó sqlplus kliens programmal is dolgozhat.

Csak önálló munkát értékelek! E-mailezni vagy egyéb módon üzengetni a
zh alatt tilos! Az adatbázison kiadott minden művelet AUDITÁLVA lesz,
ha olyan műveletet találunk, amellyel másoknak jogtalan előnyöket biztosíthat,
vagy ha valaki nem megengedett segédeszközt használ, akkor a géptermi zh-t
nem tudom értékelni (vagyis a géptermi zh 0 pontos, pótZh-t kell később írnia).

A kiosztott feladatlapot be kell adni, írja rá a nevét és az ETR_azonosítóját (EHA-kód).
A feladatlapon konkrét kérdések is találhatók az eredményekkel kapcsolatban, a választ
a feladatlap kitöltésével kell megadni (az eredményt, ha az legfeljebb 3 sorból áll,
de ha nagyobb, akkor csak azt, hogy az eredménytáblának hány különböző sora van).
A feladatlapon a feladatokon kívül rajta lesz a táblák neve és szerkezete („sila” nevű
felhasználó feltöltött adattáblái, amelyek csak select jogokkal a zh alatt elérhetőek),
valamint az alábbi információ is a lapon lesz feladatok megoldásának a beadásáról: 

A feladatok megoldását az SQL lekérdezéseket egy szövegfájlba kell összemásolni.
Kérem, hogy a fájlban a feladatlapon megadott kérdések sorrendjét kövesse valamint
megjegyzésekkel világosan különítse el, hogy melyik rész melyik feladathoz tartozik.
Egy feladat megoldása egyetlen SELECT lekérdezésből álljon ( - nem használható
sem PL/SQL, sem nézettábla, sem from utáni alkérdés). Alkérdéseket csak WHERE ill.
HAVING utasításrészben használhatja. A lekérdezés eredménye pontosan a kérdésre
adott válasz (nem több, nem kevesebb, nem más). Csak az adott táblák használhatók,
feltesszük, hogy csak select lekérdezési jogunk van (nem hozhatunk létre nézettáblát).
A feladat pontozásánál figyelembe veszem a gyorsaságot is, aki hamarabb befejezte
és elküldte a zh-t, az több pontot kap, mint aki csak később adta be. Egy feladathoz
csak egy SELECT megoldást adjon be, ha nem sikerült teljesen megoldani a feladatot,
akkor a legutolsó verzióját adja be, ugyanis részpontokat számolok a megoldásokra.

A fájl neve ehakod1.txt legyen, ahol az ehakod helyére írja be a saját EHA-kódját,
vagyis az ETR azonosítóját (.ELTE nélkül). Az ehakod után az 1-es számjegy jelzi,
hogy ez a szövegfájl a géptermi zh megoldása (2-es jelöli majd a beadandóra a fájlt).
Ha kész van a feladatokkal, bemásolta az SQL lekérdezéseket egyetlen szövegfájlba,
akkor ezt az ehakod1.txt fájlt a feladatlapon megadott módon anonymous FTP-vel
(pl. Total Commander / Hálózat / új FTP kapcsolat) töltse fel az ablinux.inf.elte.hu
gépre (névtelen kapcsolódás, ekkor nem kell jelszót megadni, csak kétszer klikkelni),
azonban a fájlt csak egyszer küldheti át, az nem írható felül, nem is nyitható meg!

Az eredményt és a feladatok megoldását a nov.15-16-i gyakorlatokon beszéljük meg,
(lehet „reklamálni” is). A végleges eredmény egy héten belül elérhető lesz a honlapon.
Javító zh időpontját, azt, hogy a vizsgaidőszak első hetében pontosan mikor írjuk meg
a géptermi pótzh-t, azt az illetékesekkel (akit érint) az utolsó gyakorlaton egyeztetjük.

{% Új kiegészítés (nov.16.)
Gondolatok a zh feladatok pontozásáról: A géptermi zh feladatok kijavítása során
igyekeztem egységesíteni a részpontozást, hasonló hibákért azonos pontlevonás jár.
Talán utólag is tanulságos (előre még nem lehet felsorolni, milyen hibákat ejthetnek).
Négy különböző szintű feladat volt, mégis mindre egységesen 12 pontot adtam, uis
csoportonként különbözhet a feladatok erőssége, amit igyekeztem kiegyensúlyozni, ahol
az egyik feladat nehezebb, ott egy másik feladat könnyebb. Az elégségeshez egy feladat
megoldása (12 pont) kell, és a jeleshez is elég három feladatot (36 pont) megoldani.

Hiányos vagy hibás megoldásokra részpontokat adok az alábbiak szerint:
10 pont: Ha a megoldás (SELECT lekérdezés) jó, de nem futatta le, vagy más okból
nem írta rá a feladatlapra a választ, vagy hibás választ adott (pl. DISTINCT hiányzik,
emiatt nem arra válaszolt, hogy hány különböző sorból áll az eredménytábla, -2 pont).
4 pont (a teljes 12-ből, illetve részpontokra az adható részpontok harmadát kaphatja),
súlyosabb hiba esetén (ha például több táblát használ, de nem kapcsolja őket össze,
illetve ha hibásan használja a csoportfüggvényeket).
10 pont (2 pont levonás), ha a megoldás függ a programozási környezet beállításától,
például nem használt a lekérdezésben konverziós függvényeket, dátumformátumot.

Ha más feladatot vagy részfeladatot old meg, akkor a megoldott feladat nehézségétől,
bonyolultságától függően kaphat részpontot: 4 pont (12-ből) ha olyan jellegű, mint
(„nem szállít piros cikket” helyett „szállít nem piros cikket” részkérdésre válaszol)
ill. 2 pont (12-ből), ha („szállít minden lila cikket” helyett csak „szállít lila cikket”).
50%-ot vontam le ha pl. ha a legnagyobb értéket keressük, olyan lekérdezést vártam,
amely az eredménytáblában csak a legnagyobb értéket adja vissza, volt aki a max fv.
helyett csak order by-al lerendezte az eredményt, és a lapra kiírta a legnagyobbat.
Teljes pontszám jár, ha jó a megoldás, csak nem olvasta el figyelmesen az útmutatót,
például feltételeztük, hogy SELECT jogosultságunk van, nem készíthetünk nézeteket,
és kértem, hogy ne használjon from utáni alkérdést sem (a nézet szemlélet, később lesz).
Gyorsaság: aki jóval előbb adta be +2 pont, de aki csak az óra után adta be –2 pont. %}


2.4. Beadandó feladat (okt.25-dec.7-ig) előzetes információ

Előzetes információ (okt.18.)
Beadandó tervezési feladat és gépes megvalósítás (SQL DDL, DML)
Feladatok: gyakorlatokon elvégezhető, tervezés 9 pont, és a gépes rész 3x5=15 pont.
Tervezés: papíron kell beadni, legyen minél teljesebb, átgondolt, és áttekinthető.
1. Egyed-kapcsolat modell és átírása relációs modellre (9.gyak. nov.15-16.), 9 pont.
Gépes megvalósítás: SQL DDL, DML utasítások egy szövegfájlban összemásolva,
itt nem az 1.feladat megvalósítását kérem, csak abban a témakörben, egyszerűsítve.
2. Táblák létrehozása: elég két tábla, de az egyik elsődleges kulcs, not null, unique
megszorításokkal, a másik pedig külső kulcs hivatkozási integritási megszorítással
kapcsolódjon az első táblához. Elég 3-4 oszlopot megadni, de ne csak karakteres
típusú legyen, hanem numerikus és dátum is. Írjon be 6-7 adatsort. (9.nov.15-16.), 5 pont.
3. DML: Adatok karbantartása, INSERT, DELETE, UPDATE (10.gyak. nov.22-23.), 5 pont.
4. Nézettáblák létrehozása, lekérdezések nézeten keresztül (11.gyak. nov.29-30.), 5 pont.

Témakör: szabadon választható feladat is lehet, amennyiben okt. 25 szerda 10h-ig
e-mailben elküldi az ötletét a saját tervezési megvalósítási témára, csak a feladat új
legyen, aktuális (mai hírek), semleges (vagyis nem lehet sem politikai sem vallási). 
Lehet például kultúra, szórakozás, sport, gazdaság, termelés, oktatás, banki hitelek,
kötvények (pl. 2006. januártól a babakötvény bevezetése), környezetvédelem,
biztosítások, az egyetemi szabályzatok, hallgatói követelményrendszer, tandíjak,
hallgatói csoportosulások (pl. kortárs segítő csoport) programjai, stb. témakörben.

Feladatok kiosztása: október 25-26-i gyakorlatokon sorsolással osztjuk ki, hogy
ki milyen feladatot dolgoz ki, ez lehet szabadon választott is (ha e-mailben okt. 25
szerda 10h-ig küldött be ötletet, hogy mivel szeretne foglalkozni) ha nincs, akkor
kap, ill. október végén (az őszi szünet elején) e-mailben küldöm ki a feladatokat.
Feladatok, lásd hac.txt  Feladatok kiosztása a KOD sorrendjében, lásd kod.txt

Beadási határidő:
A géptermi Zh után a 9-11. gyakorlatokon foglalkozunk a feladatok kidolgozásával:
1. Tervezési feladatot papíron, a 9. gyakorlaton (nov.15-16) lehet beadni, erre kap
még egy nem-végleges pontot, ha elfogadja, akkor rendben van, ha javítani szeretne,
akkor a javított EK modellt legkésőbb a 11. gyakorlaton (nov.29-30) kell beadnia. 
2-4. SQL DDL, DML a gépes rész beküldési határideje: a 12. gyak. (dec. 6-7).

Gyorsasági és késedelmi plusz/mínusz pontok
A pontozásnál a gyorsaságot is figyelembe veszem, aki a 11. gyak. végén (nov.29-30)
beküldi a fájlt, az plusz 3 pontot kap. Aki december 4 hétfő délig, az is kap +2 pontot.
A határidő lejárta után még át lehet ftp-ni a megoldást, de pontlevonással jár a késés: 
A 12. gyakorlaton (dec. 6-7-én ) ftp-vel beküldve számít a „normál” határidőnek,
ekkor max.15 pontot szerezhet a gépes 2-4 feladatokkal. Határidő után, minden napi
(déli 12h időpontra számolva a napokat) késedelem 3 pont levonással jár, vagyis
legkésőbb a szorgalmi időszak utolsó hete hétfő délig lehet beküldeni a beadandót,
mert az utolsó gyakorlaton le kell zárnom a gyakorlati jegyeket.
 
Ha kész van, az SQL feladatok megoldását egy szövegfájlba kell összemásolni.
A teljes és végleges megoldást küldje be, csak egyszer, és egyetlen szövegfájlban.
Kérem, hogy a fájlban megjegyzésekkel világosan különítse el, hogy melyik rész
melyik feladathoz (2-3-4 feladat), azon belül melyik részfeladathoz tartozik.
Minden egyes részfeladat elé írjon be megjegyzést, hogy mit csinál pontosan az
a részfeladat (pl. milyen nézettáblát hoz létre, mely sorokat törli, változtatja, stb).

A 2.feladatban a táblákat a szükséges megszorításokkal együtt hozza létre, 
(elsődleges kulcs, külső kulcs, not null, ezek feltétlenül szerepeljenek, de a többi
megszorítást is érdemes kipróbálni). Az adatok bevitele ne függjön a környezeti
paraméterek beállításától (pl. használjuk a to_date függvényt dátum típusú érték
megadásánál), az egyedi azonosítók generálásához létrehozhatunk szekvenciát.

A 3-4. feladatokban pedig használjon alkérdéseket, nézeteket, minél érdekesebb,
ötletesebb a feladat, amit megold, annál jobb pontot érhet el, kérem, hogy ennél
a két feladatnál különösen figyeljen a „kommentezésre”, szövegesen is adja meg,
hogy milyen szabadon választott részfeladatot old meg. A 3. feladatban legyen
három részfeladat (INSERT, DELETE, UPDATE) mind a háromra egy-egy példa.
A 4. feladat is legalább három részből álljon, legyen egyszerű nézet (kombinálható
a 3. feladattal, ezen a nézeten keresztül próbáljuk ki a 3. feladat DML utasításokat),
legyen összetett nézet is, aminek segítségével komplex érdekesebb lekérdezéseket
dolgozzon ki: create view nezettabla … . felhasználásával  select … from nezettabla ...

A fájl neve ehakod2.txt legyen, ahol az EHA-kód helyére írja be (.ELTE nélkül) a
saját ETR azonosítóját, most 2-es jelzi, hogy ez a szövegfájl a beadandó megoldása.
Ezt az ehakod2.txt fájlt anonymous FTP-vel másolja be az ablinux.inf.elte.hu-ra,
hasonló módon, mint a géptermi zh-nál, csak most a sila alkönyvtárba, azonban
most is a fájlt csak egyszer küldheti át, az nem írható felül, nem is nyitható meg!
vagyis akkor küldje be a fájlt, ha már készen van minden feladattal, mert ez már
a végleges, nem adhatja be újból!

{% Új kiegészítés (dec.7.)
Az ablinux.inf.elte.hu gépre csak ELTE IP címről engedi meg az FTP-t, például
a Lovardából vagy Adatbázis laborból működik, azonban vannak laborok, ahonnan
a tűzfal miatt nem lehet az ablinuxra ftp-ni (vagy otthoni nem ELTE IP cimről sem).
Ebben az esetben a pandora (panda) gépekről az mc („Midnight Commander”-rel)
menüből „FTP link…” ablinux.inf.elte.hu és itt a sila alkönyvtárba lépjünk be, és
ide másoljuk be (küld majd egy hibaüzenetet, hogy már nem módosíthatja a fájlt,
csak „skip”-el menjünk tovább, mert sikeresen feltette a fájlt). Vagy egyszerűen,
a pandáról (ftp ablinux.inf.elte.hu) (login: anonymous) (passwd: <e-mail-cím>)
(cd sila) (put ehakod2.txt) (bye). Vagy bármilyen anonymous ftp-vel felrakható.

A határidő körül naponta leszedem a beküldött fájlokat (kiürítem az alkönyvtárat).
Ha valamilyen okból nem tudta ftp-vel áttenni az ehakod2.txt fájlt az ablinux-ra,
akkor (végső esetben) küldje át e-mailben csatolt fájlként a sila@inf.elte.hu
e-mail címemre. Subject: ehakod2.txt legyen (mint a csatolt fájl neve).
Az eredmények II. tábla utolsó „idő” oszlopában jelölöm, hogy időben megkaptam:
vagyis „o.k.”: ha megkaptam (normál határidőben), plusz pontok: aki előbb beküdte,
mínusz pontok: aki határidő után adta be (minden nap késés nagyobb pontlevonás). %}

Az eredmények egy héten belül elérhetők lesznek a honlapon. Az utolsó héten a
13. gyakorlaton (dec.13-14-én) véglegesítjük a gyakorlati jegyeket. A beadandóból
nincs javítás, csak egy nehezített géptermi zh-t lehet újraírni, lásd 2.7. Javító Zh.

{% Új kiegészítés (nov.27.)
A beadandó feladatok „elbírálásának” szempontjai:
Négy feladat van, az első tervezési feladat 9 pontos, a további három gépes feladat
mind 5 pontos (vagyis 9 + 3*5, össz. 24 pont). Különösen az első tervezési feladatnál
nehéz értékelni, számszerűsíteni az eredményt. Figyelembe veszem, hogy mennyire
mélyült el a feladatban, mennyire értette meg a „valóságot”, amit modellez, mennyire
jól szűrte ki a lényeges elemeket (egyedosztályokat, kapcsolatokat, tulajdonságokat),
milyenek az elnevezések (elég „beszédesek”, nem használ különböző objektumoknak
azonos nevet, vagy azonos objektumnak különböző neveket), és áttekintve mennyire
felel meg az EK modell a feladat célkitűzésének, ilyen és hasonló szempontok alapján
az 1. feladat EK modellre 5 pontot szerezhet, 2 pont az EK modell leképezése relációs
modellre, 2 pont az így nyert adatbázis séma „minősége” (konzisztens, nincs anomália).
2-4. feladatra a korábban részletezett részfeladatok megoldása alapján kap pontot,
a 2. feladatnál például nézem, hogy milyen megszorításokkal hozta létre a táblákat,
a 3-4 feladatoknál azt is nézem, hogy mennyire nehéz, érdekes a feladat, amit megold,
mennyire jól olvasható, vagyis érthetően van „kommentezve”, és hasonló szemplontok.
Most is figyelembe veszem a gyorsaságot, lásd Beadási határidő plusz/mínusz pontok.
2-4 feladatoknál a követelményeknek teljesen megfelelő megoldás az 5-5pont, és aki az 
alapkövetelményekhez képest többet adott be (pl. trigger, saját függvény) az +2 pont. %}


2.5. Tervezés (+SQL DDL, DML) előzetes tematikája

Adatmodellezés, relációs adatbázis-sématervezés algoritmusai. Az SQL DDL, DML.
 * 9-12 gyak.: 2006. november 13-tól december 3-ig: A beadandó feladat kidolgozása,

    lásd 2.4. Beadandó feladat „megvalósítás” az alábbi témakörök „gépes” feladatai,
    valamint most is lesznek pár perces röpdolgozatok a „táblás” feladatokból, kivéve:
 * 9.gyak.: a beadandó feladat 1. E/K modellezési feladatának megoldása és beadása
 * 10.gyak.: a csütörtöki csoportoknak, nov.23-án elmarad (Neumann nap, dékáni szünet).
  

Dátum

Táblás feladatok:

Gépes feladatok Oracle-ben:

9.gy.
XI.15.
XI.16.

Nincs röpZh (de helyette a beadandó
feladat 1. tervezési „táblás” részét
kell papíron elkészíteni és beadni)
Az egyed-kapcsolat modell [AB1/ 2.2.],
megszorítások modellezése [AB1/ 2.5.],
leképezése relációs adatmodellbe,
relációs sémák célszerű összevonásai
[AB1/ 3.3., 3.4.2.]
Beadandó feladatok adatmodellezésre,
saját adatmodell kialakítása, SQL-ben
saját táblák, integritási feltételek
létrehozása és a táblák feltöltése
adatokkal (lásd: gépes feladatok).

Zh feladat megoldások megbeszélése.
SQL DDL. Adatdefiníciós nyelv.
CREATE, DROP, ALTER
    [TABLE|VIEW|INDEX]
Adattípusok és megszorítások.
Feladatok saját táblák kialakítására:
CREATE TABLE táblák létrehozása
CONSTRAINT megszorítások megadása.
ALTER TABLE táblák szerkezetének,
illetve megszorításainak módosítsa,
DROP TABLE táblaszerkezet törlése.

10.gy.
XI.22.
XI.23.

Nincs röpZh (XI.23. Neumann nap)
A relációs adatbázisséma-tervezés
ismertebb algoritmusai [IA1/ 12.fej.]
Adott R relációs séma, F funkcionális
függőségi halmazra határozzuk meg
R kulcsait (az X attribútum-halmaz
lezártját kiszámoló algoritmussal).
Adjuk meg az F egy minimális fedését.
Adott R, F-re adott d dekompozíció
veszteségmentességét döntsük el.
Adott R, F-re adott d dekompozíció
függőségőrzését ellenőrizzük.

SQL DML. Adatkezelő nyelv.
INSERT, DELETE, UPDATE.
INSERT adatok felvitele a táblákba
(a fenti megszorításoknak eleget tevő
értékek megadásával illetve selecttel
másik táblákból töltve fel a táblát),
UPDATE adatok módosítása,
DELETE a tábla teljes tartalmának törlése,
ill. egy vagy több sor törlése (vigyázat:
ne legyen hivatkozási megszorítási hiba).

11.gy.
XI.29.
XI.30.

Mai röpZh (10. gyak. témaköréből)
Normalizálás.  [IA1/ 12.fej.]
Adjuk meg (adott R, F esetén) az R
Boyce-Codd normálformába való
veszteségmentes dekompozícióját
a naív illetve javított algoritmussal.
Adott R, F-re adjuk meg az R
harmadik normálformába való
veszteségmentes és függőségőrző
dekompozícióját (ehhez alkalmazzuk
F egy minimális fedését ill. kulcsait
kiszámoló algoritmust).

Az Oracle adatbázis táblái: adatszótár,
felhasználói táblák, nézettáblák, stb.
SQL DDL. Nézettáblák (előnyei). 
CREATE VIEW egyszerű és összetett
nézettáblák létrehozása,
ALTER VIEW létező nézetek felülírása,
DROP VIEW nézettáblák törlése.
DML: az adatok karbantartása
(adatok felvitele, módosítása, törlése)
és lekérdezése a nézeteken keresztül.


2.6. Megvalósítás (+SQL DCL) előzetes tematikája

Fizikai fájlszervezés. Az SQL DDL, DCL. Indexek, jogosultságok, tranzakció-kezelés.
 * 12-13 gyak.: 2005. december 4-től december 17-ig,
 * 12.gyak. 2.4. Beadandó feladat gépes rész beküldésének végső beadási határideje,
    (valamint most is lesz pár perces röpdolgozatok a „táblás” normalizálási feladatokból),
 * 13.gyak.: az utolsó gyakorlaton a gyakorlati jegyek beírása, javító zh-k megbeszélése.
  

Dátum

Táblás feladatok:

Gépes feladatok Oracle-ben:

12.gy.
XII.6.
XII.7.

Mai röpZh (11. gyak. témaköréből)
Fizikai fájlszervezés, blokkszervezés,
indexstruktúrák. [AB2/ 4.Indexstruktúrák]

Beadandó gépes feladatok beküldése.
SQL DDL. Indextáblák Mikor jó és
mikor nem az indexek használata?
CREATE INDEX indextábla létrehozása,
ALTER INDEX módosítása,
DROP INDEX törlése.
SQL DCL. Adatvezérlő nyelv
Jogosultságok kezelése az SQL-ben
GRANT, REVOKE.
Tranzakció-kezelés alapjai az SQL-ben
COMMIT, ROLLBACK, SAVEPOINT.

13.gy.
XII.13.
XII.14.

Gyakorlati jegyek lezárása és beírása.

Kitekintés (gyakorlatok felsőbb éven)
Inf.-kez.I.: SQL beágyazott használata
procedurális progr. nyelvekben, pl-ul
C++, ADA befogadó nyelvekben.
PL/SQL (Oracle saját nyelve, az SQL
procedurális kiterjesztése).
Inf.-kez.II.: Oracle megvalósítás, dba,
Inf.-kez.III.: Oracle további részletek,
Inf.-kez.IV.: XML és Adatbányászat,
és Specik: pl. Oracle 4GL, Designer.


2.7. Javító Zh, Gyak.UV (dec.20.) előzetes információ

Előzetes információ (nov.29.)
Javító géptermi Zh és a Gyak.UV időpontja: a vizsgaidőszak elején,
a pontos időpontot az utolsó gyakorlaton egyeztetjük, hogy ne ütközzön más
vizsgákkal, bár előzetesen (remélem jó az időpont) már lefoglaltam a labort.
2006.dec. 20. szerda, PC5 (2.em.108) labor (ahol a gyakorlataink voltak),
10:00-11:30 javító géptermi Zh (90 perc),
10:00-12:30 gyak.UV (90’ + 60’ = 150 perc).

Javító géptermi Zh:  
Ha a géptermi Zh-n nem érte el a 12 pontot, vagy javítani szeretne, akkor
géptermi javító Zh-t írhat. Aki nem írt korábban, annak az itt szerzett pont
a géptermi Zh pontja. Aki megírta korábban, az egy jegyet javíthat/ronthat.
Ha több jegyet szeretne javítani, az is lehetséges, ha a géptermi zh után úgy
dönt, hogy gyak.uv-val folytatja, akkor elégtelen gyak.jegyet kap, és aznap
a gyak.uv-n „tiszta lappal” indul, és meg kell írnia a másik elméleti zh-t is.
Gépes feladatok: 5 feladat lesz, 1-4 feladat mint 2.3. Géptermi Zh feladatai,
csak most ezek 9 pontot érnek, és lesz egy 5.feladat 12 pontos (nézettáblák).
Pontozás: 4 feladat x 9 pont + 1 feladat x 12 pont = összesen 48 pont.

Gyakorlati UV:
Ha az órai+pontok összege kisebb, mint 12 pont, pedig járt gyakorlatra
(legalább 7 alkalommal volt, vagyis nincs 6-nál több igazolatlan hiányzása),
akkor gyakorlati UV-val szerezhet gyak.jegyet. Ha 6 alkalomnál többször
hiányzott igazolatlanul, akkor nem kaphat gyakorlati jegyet (UV-val sem).
A gyakorlati UV két részből áll:
 I. géptermi zh (90 perc: 4 SELECT feladat x 9p + 1 NÉZET x 12p = 48 p.)
II. elméleti zh (60 perc a gépes zh után: 4 „táblás” feladat x 9 pont = 36 p.)
Ha november elején megírta a géptermi zh-t, és annak elfogadja a pontjait,
akkor nem kell megírnia a javító géptermi zh-t, csak a 60 perces elméleti zh-t.
 
IV. tábla: Javító géptermi Zh és Gyakorlati UV eredmény táblának fejléce:

#

KOD

ETR

jav

1f.

2f.

3f.

4f.

5f.

elm

1f.

2f.

3f.

4f.

gyak

 

 

gyak

ZH

join

join

csp

korr

nzt

ZH

rel

alg

drc

f.f.

UV

 

 

jegy

össz

krd

csp

alkr

alkr

krb

össz

alg

opt

trc

NF

jegy

 

 

 

48p

9p

9p

9p

9p

12p

36p

9p

9p

9p

9p

 


Segédeszközök:
Géptermi Zh-n az ablinux és itt az Oracle: SQL Reference használható.
Elméleti feladatokhoz a gyakorlati UV-n nem használható segédeszköz.
(a gyakorlatokon lehetett használni definíciókból és algoritmusokból álló
elméleti összefoglalót, de sem a vizsgán sem a gyakorlati UV-n nem lehet).

3. ZH EREDMÉNYEK

I.(órai+p) | II.(zh,bead) | III.(gy.jegy)
5.(csüt. 8:30-10:00) ó+p5 | zh5 | gyj5
6.(pé. 16:00-17:30) ó+p6 | zh6 | gyj6
7.(sze.12:15-13:45) ó+p7 | zh7 | gyj7
8.(csü.14:00-15:30) ó+p8 | zh8 | gyj8
9.(csü.16:00-17:30) ó+p9 | zh9 | gyj9


4. HASZNOS LINKEK

4.1. Ajánlott irodalom

Az előadásokhoz ajánlott irodalom (ami az előadáson elhangzott, az szükséges és elegendő)

[AB1]
[AB2]
[IA1]



Ullman-Widom: Adatbázisrendszerek. Alapvetés, Panem, 1998.
Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása, Panem, 2001.
Iványi Antal (szerk.): Informatikai algoritmusok I., ELTE Eötvös Kiadó, 2004.
12. fejezet Relációs adatmodell tervezés (Demetrovics János és Sali Attila)

 


Adatbázisokkal kapcsolatos további irodalom

[IA2]

[De1]
[De2]
[De3]
[Ga]
[Ha]
[Ro]
[Sa]

Iványi Antal (szerk.): Informatikai algoritmusok II., ELTE Eötvös Kiadó, 2005.
30. fejezet Lekérdezés átírás relációs adatbázisokban (Demetrovics J. és Sali A.)
Demetrovics-Denev-Pavlov: A szám.tud. matematikai alapjai, (7. fejezet), 1999.
Békéssy-Demetrovics: Előadások adatbázis szerkezetekből, ELTE, 1999.
Békéssy-Demetrovics: Adatbázis-szerkezetek, Akadémia, 2005.
Gajdos Sándor: Adatbázisok, Műegyetemi, 2004.
Halassy Béla: Adatmodellezés, Adatbázis-tervezés könyvei, Számok, 1980-as évek.
 Rolland: Adatbázis-rendszerek, Panem, 2002.
Sályi-Szelezsán: Adatbázisok, Számalk, 1991.


Oracle, SQL kézikönyvek magyarul (és angolul lsd. 4.5. Oracle Online Documentation)

[AC]
[K1]
[K2]
[L1]
[L2]
[S1]
[S2]

Abbey-Corey-Abramson: ORACLE8i Kézikönyv kezdőknek, Panem, 2001.
Kende-Kotsis-Nagy: Adatbáziskezelés az Oracle rendszerben, Panem, 2002.
Kende-Nagy: Oracle példatár(Oracle 9i és 10g verziókhoz), Panem, 2005.
Koch-Loney: ORACLE8i Teljes referencia, Panem, 2001.
Loney: ORACLE DATABASE 10g Teljes referencia, Panem, 2006.
Stolnitcki Gyula: SQL kézikönyv, ComputerBooks, 1994.
Stolnitcki Gyula: SQL programozóknak, ComputerBooks, 2003.


4.2. Többi gyakorlat vezető oldalai az ELTE-n

·        Kiss Attila (ELTE, IKP-ABE előadó) Adatbázis-kezelés beadandó

·        Nikovits Tibor (Oracle rendszergazda): Adatbázisok elérhetősége

 

·        Kósa Balázs (ELTE, 2006. ősz) Adatbázis-kezelés gyakorlat

·        Molnár András (ELTE, 2006. ősz) Adatbázis-kezelés gyakorlat

·        Nikovits Tibor (ELTE, 2006. ősz) Adatbázis-kezelés gyakorlat

·        Sidló Csaba (ELTE, 2005. ősz) Adatbázis-kezelés gyakorlat

4.3. Adatbázisok oktatása magyar nyelvű linkek

·        Márton Ágnes (Debrecen) Adatbázisrendszerek (SQLelm.pdf)

·        Katona Endre (Szeged) Adatbázisok (előadási jegyzet.pdf)

·        Katona Gyula (BME) Adatbázisok (az előadások tartalma,.ps,.pdf)

·        Siki Zoltán (BME) Adatbáziskezelő rendszerek (és jegyzet.htm)

 

·        Adatbázisrendszerek Oktatási anyagok Tempus-97 (fóliák.doc)
Hajas Csilla: Relációs algebra, A relációs kalkulusok, SQL 1-2. rész,
Nikovits Tibor: Az adatok fizikai szervezése, Lekérdezések optimalizálása

·        Magyar nyelvű [doksi.hu]-a tudás birodalma: http://www.doksi.hu/
itt: Doksik/Informatika/Adatbázisok alatt: ea_gyak_vizsga_anyagok.rar
(Megj.: az interneten levő anyag több sajtóhibát tartalmaz, mint a könyv!)

4.4. Adatbázisok oktatása angol nyelvű linkek

·        Jeffrey D. Ullman honlapján található oktatási anyag

·        Stanford University CSC145 Introduction to Databases (Slides/Ullman)

·        Stanford University CSC145 Introduction to Databases (Oracle Guide)

·        Stanford University CSC145 Introduction to Databases (Slides/Widom)

 

·        Norfolk State University CSC 420 Database Principles and Design

·        Norfolk State University CSC 422 Database Implementation

4.5. További angol nyelvű linkek az SQL gyakorlásához

·        SQL feladatok, megoldások: http://sqlzoo.net/

·        SQL Tutorial: http://www.sql-tutorial.net/

·        Wikipédia: http://en.wikipedia.org
Search: Tuple calculus, Domain calculus, Relational algebra, stb.,
lásd 1.gyak.: Az SQL története: http://en.wikipedia.org/wiki/SQL


4.6. ORACLE honlap és Oracle Online Documentation

·        Oracle honlap link:   ORACLE  és  ORACLE Magyarország

·        Angol nyelvű Oracle Online Documentation (SQL Reference)

 itt az ELTE-n:
Oracle honlapon:

Oracle 9i
Oracle 9i

Oracle 10g
Oracle 10g

  

   Javaslat: http://ablinux.inf.elte.hu/oradoc10/index.htm Oracle online dokumentációból
   az adatbázis-kezelést megalapozó SQL gyakorlatainkhoz az SQL Reference az érdekes.



 Lap tetejére                   Kezdőlapra