ADATBÁZIS-KEZELÉS
ELŐADÁS [FIZIKUS: if1c1i05] ELTE, 2015/2016-os tanév I.félévében [2015.szept] |
|
Előadás: Péntek 9:00-11:30 (3x 45', egy 15' szünettel) D.ép.2-123 (PC1 labor)
Tudnivalók az előadásról és a vizsgáról, vizsganapok, követelmények (1.ea-on).
Az előadás nem kötelező, de gépes laborban van gyakorlattal. Katalógus van.
Ellenőrzésre jelenléti ív (név-> 3kar-kód) elérése hallgato/[jelszóval] itt: .pdf
Órai diák:
>> Alapok: >> 1.EA >> 2.EA >> 3.EA >> 4.EA >> 5.EA >> 6.EA >>
--- 7.EA: okt.23. péntek ünnep és okt.26-30 őszi szünet után ---
>> 8.EA >> 9.EA >> 10.EA >> 11.EA >> 12-13.EA >> Vizsgatételek
A vizsga két részből áll: 1) beadandó feladat beküldése, 2) írásbeli dolgozat.
A vizsgára a Neptunban kell jelentkezni, legalább 24 órával a vizsga kezdete
előtt, és eddig kell beküldeni a kötelezően beadandó feladat gépes részét is.
Kötelező beadandó feladat: Saját feladat adatbázis tervezéshez az E/K modellt
(lásd 8.EA), (vagy az E/K diagram helyett UML osztálydiagramot is lehet rajzolni),
papíron ceruzával felrajzolva elegendő a vizsgára behozni, de a feladat leírását és
a megvalósítását SQL-ben DDL (create table/view/index), DML (insert, stb) script
(lásd 6.EA), és a saját táblákon alapuló lekérdezési feladatokat (lásd 2-5.EA SQL
SELECT utasítás és 10-11.EA PL/SQL programmal való lekérdezéseket) egyszerű
e-mailben (csak e-mailben, nincs csatolás) be kell küldeni 24 órával a vizsga előtt!
Vizsgatételek: 1-8. és 10-11. előadások anyaga, ehhez Tankönyv: Ullman-Widom
--- megj.: 9. és 12-13. előadások anyaga csak kitekintés, nem szerepel a vizsgán
Korábbi vizsgalapok: AB1vizsga jelszavas mappában (lásd 2015.évi beugrók rész)
Az írásbeli vizsgán 90 perc áll rendelkezésre, a kérdések alapvető fogalmakra,
tételekre, egyszerű típusfeladatokra vonatkoznak, rövid válasz/kérdésenként.
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ások gépes részéhez: Oracle adatbázisok elérése, SQL developer
Oracle Példatár feladatai: Feladatok.pdf (SQL: 1-6.fej., PL/SQL: 8-10.fej.)
-- Példatár feladataihoz scriptek: createEmpDept(en) vagy createDolg(hu)
Tankönyv feladatai: Termékek-feladatok.pdf, Csatahajók-feladatok.pdf
-- Tankönyv feladataihoz a scriptek: createTermékek, createCsatahajók
Oracle SQL segédanyagok: ebben az eduSQL mappában
-- lekérdezésekhez a scriptek: createHRsyn (elég szinonimákat használni)
-- később, DML-utasításokhoz: createHRtables (itt saját tábláink legyenek)
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)
1.EA: 2015.09.11. --- Relációs adatmodell alapismeretek, séma-előfordulás
>>> 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éma és megszorítások, előfordulás
> Tk.2.3. SQL DDL és DML áttekintése, relációsémák definiálása SQL-ben
> Tk.2.3.6. Kulcsok megadása és Tk.7.1.1. Idegen kulcsok megadása
Gépes része
> Ismerkedés, Oracle adatbázisok elérése, SQL Developer használata
> SQL DDL: relációséma, adattípusok, megszorítások: create table
> SQL DML: relációelőfordulás, táblák feltöltése adatsorokkal: insert
> Feladatok: A megadott scriptek segítségével hozzuk létre a további
gyakorlatokon használandó táblákat: szeret, Dolgozók, Termékek
> Példák: Oracle segédanyagok eduSQL mappa (ehhez: createHRsyn)
Bevezetés (HR séma táblái), Sample Schemas: Fig.4-1 HR és OE sémák
> További példák: Az OracleDoc Data Types fejezetének a segítségével
(vagy az ebből kivett oszloptípusok segédlettel) hozzunk létre táblákat.
> Example 2-1 CREATE TABLE utasítás alapján hozzunk létre saját táblát:
DROP TABLE MY_EMPLOYEES; CREATE TABLE MY_EMPLOYEES (...);
2.EA: 2015.09.18. --- Lekérdezések relációs algebrában és SQL-ben
>>> 2.előadás.pdf
> Tk.2.4. Egy algebrai lekérdező nyelv, relációs algebra áttekintés
> Tk.5.1-5.2. Vetítés és kiválasztás kiterjesztése, rendezési művelet
> Tk.6.1. Egyszerű (egy relációra vonatkozó) lekérdezések az SQL-ben
Select-From-Where utasítás, nullérték, műveletek nullértékekkel,
az ismeretlen igazságérték (U), háromértékű (T, F, U) logika.
> Tk.6.4.1. Ismétlődések megszüntetése. Tk.6.1.8. Az eredmény rendezése
Gépes része
> SELECT utasítás SELECT, FROM, WHERE és ORDER BY záradékai
> Oracle Példák (ehhez: createHRsyn)
>> 1.lecke (vetítés kiterjesztése, kifejezések),
>> 2.lecke (kiválasztás, kiválasztott sorok rendezése)
3.EA: 2015.09.21. --- Egy táblára vonatkozó lekérdezések az SQL-ben
>>> 3.előadás.pdf (csak 1-33.oldalig, 34.oldaltól Tk.6.2. köv.héten lesz)
> Tk.5.1. Relációs algebra kiterjesztése multihalmazokra (az SQL-hez)
> Tk.5.2. Kiterjesztett műveletek, kiterj.vetítés, csoportosítás, rendezé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
Gépes része
> SELECT utasítás SELECT, FROM, WHERE, GROUP BY, HAVING záradékai
> A sorfüggvények és csoportfüggvények használata kifejezésekben
> Oracle Példák
>> 3.lecke (sorfüggvények használata a SELECT és WHERE záradékban)
>> 4.lecke (összesítés, csoportosítás, group by és having záradékok)
> További példák, see Examples: SQL Language Reference >> 5 Functions:
Sorfüggvények: pl. Karakteres függvények: SUBSTR, RPAD, ..., INSTR, ...
pl. Dátum függvények: MONTHS_BETWEEN, ..., pl. Konverziós: TO_DATE, ...
pl. Null érték kezelése, helyettesítő érték megadása: NVL, COALESTE, ...
Figyelem! COALESTE példában: FROM product_information
mivel ez a tábla nem az HR, hanem OE sémában szerepel, ezért
itt ki kell írni a táblatulajdonost: FROM OE.product_information
(ugyanis csak a HR owner tábláihoz hoztuk létre a szinonimákat).
4.EA: 2015.10.02. --- Több táblára vonatkozó lekérdezések az SQL-ben
>>> 3.előadás.pdf (34.o-tól) -> Tk.6.2.Több relációs lekérdezések
>>> 4.előadás.pdf -> Tk.6.3. Alkérdések és összekapcsolások
> Tk.6.2. Több relációra vonatkozó lekérdezések az SQL-ben, szemantika
> Tk.6.2.5. és Tk.6.4.2. Halmazműveletek (egyesítés, metszet és különbség)
> Tk.6.3. Alkérdések és összekapcsolások az SQL-ben
Gépes része
> Oracle Példák
>> 5.lecke (összekapcsolások, külső összekapcsolások)
>> 6.lecke/1 (alkérdések)
5.EA: 2015.10.09. --- Több táblára vonatkozó lekérdezések az SQL-ben
>>> 5.előadás.pdf (33.o.-ig) -> Példák (relációs algebra és SELECT utasítás)
> Példák: Tk.2.4.14.Feladatok (Tk.54-57.o. 2.4.1.feladat) Termékek feladatai
relációs algebrai kifejezésekkel, kifejezőfákkal és átírva SQL lekérdezésekre
> Tankönyv feladatai: Termékek-feladatok.pdf, Csatahajók-feladatok.pdf
> Tankönyv feladataihoz a scriptek: create Termékek, create Csatahajók
Lekérdezések kifejezése először (papíron) természetes módon táblákkal,
a táblákon értelmezett műveletekkel gondolkodva, és relációs algebrában
kifejezőfákkal is felrajzolva, majd átírva SQL SELECT utasítással (gépnél)
többféle átírást, megoldási lehetőséget vizsgáljunk meg, vessünk össze!
>>> Megoldás (ellenőrzésre) Termékek-feladatok-megoldása.pdf
Gépes része
> Oracle Példák
>> 6.lecke/1 és 6.lecke/2 (alkérdések)
>> 7.lecke (halmaz- és multihalmaz műveletek)
6.EA: 2015.10.16. --- ABKR alapfogalmak, SQL DML és DDL utasításai
>>> 5.előadás.pdf (34.o-tól) -> Tk.1.fej. ABKR (DBMS), Tk.6.5. SQL DML
>>> 9.előadás.pdf -> Tk.7. és 8. fejezete
> Tk.6.5. SQL DML-utasításai: Táblák tartalmának módosítása
> Tk.7.1.-7.5. Megszorítások és triggerek
> Tk.8.1-8.2. és 8.5. Nézettáblák, tárolt nézettáblák
Gépes része
> Oracle Példák (ehhez: saját táblák létrehozása: createHRtables)
>> 1/8.lecke SQL DML-utasítások (insert, update, delete) és a tranzakciók
>> 1/9.lecke SQL DDL (táblák és megszorítások létrehozása)
>> 1/10.lecke SQL DDL (innen: most csak a nézettáblák létrehozása)
> Feladatok: Táblák és megszorítások (constraints), nézettáblák létrehozása.
Adatok karbantartása adattáblán illetve nézeten keresztül, és megfigyelni
ezek egymásra hatását: Hogyan hat a nézetek adatainak módosítása az
adattáblára, és az adatok módosítása hogyan jelenik meg a nézettáblában?
> További segédletek: create table, típusok, megszorítások, nezettáblák (.txt)
7.EA: 2015.10.23. --- Október 23. (péntek) ünnep (nincs előadás)
-- -- o ~ o ~ o~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o
-- -- 7.EA: okt.23.(péntek) ünnep és őszi szünet: okt26-tól- 30-ig (péntek)
-- -- o ~ o ~ o~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o ~ o
8.EA: 2015.11.06. --- Tervezés: E/K-modell, E/K-diagram átírása relációkká
>>> 8.előadás.pdf
> 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é
> Feladatok: E/K diagramok felrajzolása, majd átírása relációkká,
-- Tk.4.1-4.4. Feladatai, lásd Modellezési feladatok - E/K diagram
-- Tk.4.5-4.6 Feladatai alapján, lásd E/K_pl1.pdf és E/K_pl2.pdf
-- További feladatok, lásd EKpelda.pdf (ábra: EKpelda.png)
> További irodalom (elektronikusan is elérhető magyar nyelvű könyvek)
--- MEK könyvtár: Halassy Béla: Adatmodellezés, elmélet és gyakorlat
--- MEK könyvtár: Halassy Béla: Az adatbázistervezés alapjai és titkai
Gyakorlati rész: BEADANDÓ FELADAT
> Papíron beadandó adatmodellezési feladat megbeszélése (a vizsgára kell!)
> Saját feladat választása, az adatbázis tervezése: E/K diagram felrajzolása,
majd leképezése relációkra (lásd 8EA) és gépes megvalósítása az SQL-ben:
create table és insert utasításokból álló script (lásd 6.EA), továbbá a saját
táblákon alapuló lekérdezési feladatokat (lásd 2-5.EA SQL SELECT utasítás).
9.EA: 2015.11.13. --- Fizikai tervezés: indexek létrehozása és használata
>>> katalógusok, adattárolási kérdések, indexek, lásd gépes feladatok!
> [Tankönyv-2] Molina-Ullman-Widom: Adatbázisrendszerek megvalósítása
Indexstruktúrák (4.fej); Lekérdezések végrehajtása (7.fej) (nincs vizsgán)
Gépes része
> Gépes feladatok Ojektumokra, Adattárolásra és Indexekre
> Oracle Példák
>> 1/10.lecke SQL DDL (nézettáblák, indexek és szinonimák létrehozása)
>> 2/1.lecke SQL DDL (táblákhoz megszorítások, indexek létrehozása)
10.EA: 2015.11.20. --- I.rész: Rekurzió SQL-ben és II.rész: SQL programokban
>>> 7.előadás.pdf
> I.rész: Rekurzió. Az Eljut-feladat. Tankönyv 10.2. (Ullman-Widom kék könyv)
-- 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.
> Tankönyv 11.2 fejezetében adott SQL-1999 szabvány megoldás (csak papíron!)
WITH RECURSIVE eljut(honnan, hova) AS
(SELECT honnan, hova FROM jaratok
UNION
SELECT eljut.honnan, jaratok.hova
FROM eljut, jaratok
WHERE eljut.hova = jaratok.honnan)
SELECT hova FROM eljut WHERE honnan='DAL';
-- Megj.: itt fontos: UNION (halmaz) és UNION ALL (multihalmaz) közötti különbség!
> A fenti csak egy kis változtatással fut le az Oracle-ben! Oracle 11gR2 megoldás:
with eljut (honnan, hova) as
(select honnan, hova from jaratok
union all
select jaratok.honnan, eljut.hova
from jaratok, eljut
where jaratok.hova=eljut.honnan
)
SEARCH DEPTH FIRST BY honnan SET SORTING
CYCLE honnan SET is_cycle TO 1 DEFAULT 0
select distinct honnan, hova from eljut order by honnan;
-- További példák az Oracle SQL Language Reference 11.2.pdf dokumentációban:
>> Rekurzió with-utasítással: Recursive Subquery Factoring: Examples
>> ill. egy korábbi Oracle megoldás 2/7.lecke hierarchikus lekérdezések
>> SQL Lang.Ref: Hierarchical Queries, Hierarchical Query Examples
-- folytatás 10.EA II.része: SQL programokban: SQL/PSM, PL/SQL alapok
-- II.rész: Tk.9.fejezete SQL-2003/PSM a gyakorlatban: Oracle PL/SQL
Oracle PL/SQL, ehhez Oracle 11gR2 doc PL/SQL Language Reference
-- Az Oracle doksikban szereplő példák kipróbálásához: createHRtables
> 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]
>> 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).
>> (összefoglaló) plsql_02_tipusok.pdf, 03_sql_dml.pdf, 05_valtozok.pdf
> Vezérlési szerkezetek, utasítások a PL/SQL-ben >> 4.fej. Utasítások
>> 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
>> (összefoglaló) plsql_01_bevezetes.pdf, pl02_vezerlo_utasitasok.txt
> PL/SQL feladatok: --- ehhez, mint a DML-hez volt: createDolg (no constraint)
-- A PL/SQL blokk előtt minden alkalommal állítsuk be: SET SERVEROUTPUT ON
1.) Az első feladat: Írjuk ki PL/SQL blokkból: 'Szia Világ!', majd egészítsük ki,
kérjen be egy nevet, számot, dátumot és ezeket is írassuk ki a programból!
2.) Írjuk ki KING fizetését (olvasás táblából változóba), abban az esetben,
ha ismert, hogy pontosan egy KING nevű dolgozó szerepel a táblában!
-- Az "Eljut feladat" megvalósítása PL/SQL-ben
Ehhez hozzuk létre egy alábbi szerkezetű ELJUT táblát:
DROP TABLE Eljut;
CREATE TABLE Eljut(
honnan VARCHAR2(10),
hova VARCHAR2(10));
3.) Rek1.feladat: Írjunk egy olyan PL/SQL programot, ami feltölti az ELJUT táblát
a megfelelő város párokkal, ahol az első városból el lehet jutni a másodikba.
Mely (x, y) várospárokra lehet egy vagy több átszállással eljutni x-ból y-ba?
(Megoldás ötlete: ciklussal az insert 2.alakjára: több sor felvitele alkérdéssel)
>>> (csak ha kell, egy kis segítség, további ötletek és a megoldás vázlata: itt)
4.) 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)
11.EA: 2015.11.27. --- Lekérdezések, kurzorok használata a PL/SQL-ben
>>> Oracle PL/SQL (Oracle Junior előadás)
> Tankönyv 9.fejezete SQL-2003/PSM a gyakorlatban:
Oracle PL/SQL, ehhez Oracle 11gR2 doc PL/SQL Language Reference
> I.rész: DML utasítások a PL/SQL-ben, kurzorok >> 6.fej. Static SQL/Cursors
-- Az Oracle doksikban szereplő példák kipróbálásához: createHRtables
>> 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 feladatok: --- ehhez, mint a DML-hez volt: createDolg (no constraint)
-- A PL/SQL blokk előtt minden alkalommal állítsuk be: SET SERVEROUTPUT ON
1-2.) Lásd az előző heti gyakorlaton az első PL/SQL feladatokat!
3-4.) Lásd az Eljut-feladat megvalósítását PL/SQL programmal: Rek1 és Rek2.
5.) Írjuk ki a dolgozók nevét és fizetését!
-- több sort visszaadó lekérdezés, kurzor használata, lásd példa-6-7
6.) Írjuk ki a 3. 5. és 8. legnagyobb fizetésű dolgozó nevét, fizetését!
-- kurzor attribútumok, lásd példa-6-14
7.) Írjuk ki azon dolgozók nevét és fizetését, akik fizetése nagyobb mint
a felhasználó által megadott szám!
-- felhasználói/helyettesítő változók: &numerikus_valt, '&karakteres_valt'
8.) Írjuk ki azon dolgozók nevét, fizetését és osztálykódját, akik a felhasználó
által megadott osztályon dolgoznak! A felhasználó által megadott betű
legyen A, R, S (Accounting ...) a 10, 20, 30-as osztály esetén.
-- paraméteres kurzor, lásd példa-6-17
9.) Növeljük meg a hivatalnokok (CLERK) fizetését a saját fizetésük 20%-ával!
-- for update kurzor módosításhoz, lásd ugyanez a feladat: példa-6-43
10.) Módosítsuk a dolgozók nevét írjuk át, hogy csak a kezdőbetű legyen nagy,
a többi betű kicsi, továbbá a dolgozók fizetését is növeljük meg 2 %-kal!
-- for update kurzor módosításhoz, lásd példa-6-43
> II.rész: 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
> PL/SQL feladatok -- folytatás alprogramok, plusz hiba- és kivételkezelés
2.) Írjuk ki KING fizetését (olvasás táblából változóba és a képernyőre való kiíratás)
abban az esetben, ha pontosan egy KING nevű dolgozó szerepel a táblában,
viszont ha nincs ilyen nevű dolgozó vagy több ilyen is van, akkor azt írjuk ki!
-- Előre definiált kivételek: NO_DATA_FOUND, TOO_MANY_ROWS, lásd példa-11-5
11.) a.) Írjunk meg egy függvényt, ami az azonosító alapján visszaadja a nevet!
b.) Írjunk meg egy eljárást, ami az azonosító alapján egy OUT változóban
visszaadja a nevet! (alprogramok: függvények és eljárások/procedúrák)
12.) Írjunk meg egy függvényt, ami visszaadja a paraméterében levő magánhangzók
számát. Majd módosítsuk a fizetéseket ennek a függvénynek a segítségével.
(itt most a módosítást az UPDATE utasítással végezzük, és nem plsql-ben)
12-13.EA: 2015.12.04. és 2015.12.11. --- Összefoglalás+Kitekintés: további témák
> Konzultáció a 10-11.EA PL/SQL feladatairól, kérdés/válasz
> Konzultáció a vizsgára kötelező beadandó saját feladatról
> ÖSSZEFOGLALÁS -->> Vizsgatételek [--- 13.EA: Vizsgajegy megajánló dolgozat]
> Vizsganapok és fogadóóráim -->> elérhetőségem a vizsgaidőszakban
> Kitekintés: további témakörök, de ezek már nem szerepelnek a vizsgán
--- Oracle Online Dokumentation: Az SQL és PL/SQL feladatok megoldásához
--- hasznos az SQL Language Reference és a PL/SQL Language Reference
--- és ezeken kívül további két fontos dokumentációt is érdemes lapozgatni:
(01) Alapfogalmak Oracle Database Concepts
például Concepts (11g) 3.fej. Indexek vagy Concepts (10g) 5.fej.Indexek
(02) Hangolás Oracle Database Performance Tuning Guide
--- BSC Adatbázisok-1 témakörben (Hajas Csilla -- Adatbázisok-1 előadása)
(03) Tankönyv 3.fejezet Relációs adatbázissémák tervezése
>>> 10.előadás.pdf --- Tk.3.1.-3.2. Funkcionális függőségek, szabályok
>>> 11.előadás.pdf --- Tk.3.3.-3.4. VM Boyce-Codd normálformára bontás
>>> 12.előadás.pdf --- Tk.3.5. VM és FŐ 3NF-szintetizáló algoritmus
(04) Tankönyv 4.7.-4.10. Adatmodellezés: UML, ODL
(05) Tankönyv 5.3.-5.4. Logika a relációkhoz, Datalog >>> 6.előadás.pdf
--- BSC Adatbázisok-2 témakörben (Kiss Attila -- Adatbázisok-2 előadása)
(06) Molina-Ullman-Widom 1.-5.fejezet Adattárolás, Indexstruktúrák
(07) Molina-Ullman-Widom 6.-7.fejezet Lekérdezések végrehajtása
(08) Molina-Ullman-Widom 8.fejezet Naplózás, helyreállítás, lásd naplo.ppt
(09) Molina-Ullman-Widom 9.fejezet Konkurenciavezérlés, lásd konkurencia.ppt
--- MSC Korszerű adatbázisok, stb. témakörben további anyagok:
(10) Tankönyv 11-12.fej. A félig-strukturált adatmodell, XML, Xpath, Xquery
>>> XML (Kiss Attila habilitációs előadása)
(11) Tankönyv 10.6.-10.7. Az OLAP és az adattárházak
>>> Adattárházak (Kiss Attila -- Han 5.ea. előadásfóliák fordítása)
(12) Adatbányászat: Bevezetés (Kiss Attila -- Han 1.ea fóliák fordítása)
Adatbányászat: Bevezetés (Ispány Márton -- Kumar 1.ea fordítása)
--- Adatbányászat magyar nyelven --- Digitális Tankönyvtár:
>>> Bevezetés az adatbányászatba (Tan, Steinbach, Kumar)
>>> Előadásfóliák (Ispány Márton -- Kumar előadásfóliák ford.) -->> Slides
Az adatbányászati feladatok általában két fő kategóriába sorolhatók, ezek:
- Prediktív modellezés és előrejelző feladatok: osztályozás, regresszió
- Leíró-feltáró feladatok: klaszterezés, asszociációs elemzés, anomália keresés
VIZSGATÉTELEK
01. A relációs adatmodell alapjai: Reláció, relációséma és előfordulás,
attribútumok és sorok, kulcsok, külső kulcsok, hivatkozási épség.
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, FOREIGN KEY, REFERENCES.
(Tankönyv 2.2-2.3. szakasz, 22-35.oldal)
02. Egyszerű egytáblás lekérdezések, Relációs algebra vetítés és kiválasztás.
SQL SELECT egy relációra: WHERE záradék feltételének megadása,
speciális értékek, adattípusok és logikai kifejezések megadása, nullérték:
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.
(Tankönyv 2.4. és 6.1.szakasz, 258-269.)
03. Többtáblás lekérdezések, direkt szorzat, összekapcsolások és halmaz-
műveletek a relációs algebrában és az SQL FROM záradékban.
Attribútumok megkülönböztetése, sorváltozók. Az SQL lekérdezések
kiértékelésének szabvány szerinti alapértelmezése. Relációs algebrai
alapműveletek. Lekérdezések kifejezése relációs algebrában, kifejezésfa.
Relációkra (mint multihalmazokra) vonatkozó műveletek, ismétlődések
megszüntetése, ismétlődések kezelése halmazműveletek során.
(Tankönyv 2.4., 5.1. és 6.2. szakasz, 273-281.)
04. A relációk egészére vonatkozó műveletek, csoportosítás: GROUP BY
záradék, összesítő függvények és nullértékek kezelése, csoportokra
vonatkozó feltételek: HAVING záradék. Külső összekapcsolások.
Az eredmény rendezése: ORDER BY záradék. A záradékok sorrendje.
(Tankönyv 5.2. és 6.4. szakasz, 300-305.)
05. Alkérdések az SQL SELECT utasításban a FROM listán és a WHERE
és HAVING záradékokban, korrelált alkérdések alakja, kiértékelése.
(Tankönyv 6.3. szakasz, 284-290.)
06. Változtatások az adatbázisban. Táblák tartalmának megváltoztatását szolgáló
SQL DML utasítások: INSERT, DELETE, UPDATE (6.5 szakasz, 307-312.)
07. Az egyed-kapcsolat (E/K) diagram. Egyedhalmazok attribútumok, kapcsolatok.
Alosztályok, "az-egy" ("isa") kapcsolat és jelölése. Megszorítások modellezése,
kulcsok és a kulcsok, hivatkozási épség, megszorítások. Gyenge egyedhalmazok.
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. (Tankönyv 4.1-4.6. szakaszok, 133-181.)
08. Megszorítások az SQL-ben: kulcsok, idegen kulcsok, hivatkozási épség
fenntartása. 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.
Attribútumokra és sorokra vonatkozó megszorítások: NOT NULL,
CHECK. Megszorítások elnevezése. (Tankönyv 7.fejezete, 329-347.)
09. 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. Indexek. (Tankönyv 8.fejezete)
10. Rekurzió az SQL-99-es szabványban: WITH RECURSIVE utasítás
Az Eljut feladat (könyv példája, előadáson is szerepelt).
Az SQL-99-es szabvány WITH RECURSIVE utasítása.
Az Eljut feladat megoldása rekurzióval. (10.2. szakasz, 467-474.)
11. SQL programnyelvi bővítése, sémában tárolt függvények és eljárások.
(SQL/PSM szabvány vagy Oracle PL/SQL alapján) Sémában tárolt eljárások
és függvények létrehozása és használata, néhány egyszerű utasítás alakja.
(Tankönyv 9.4.1-9.4.3. szakasz, 416-421., 9.4.7-9.4.8. szakasz, 415-431.)
12. SQL lekérdezések használata programozási környezetben
(SQL/PSM szabvány vagy Oracle PL/SQL alapján) 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. Ciklusok használata.
(Tankönyv 9.3-9.3.7. szakasz, 401-412., 9.4.4-9.4.6. szakasz, 421-425.)