E/K
diagram és
leképezése
relációs modellre és Oracle
megvalósítása Ullman-Widom:
Adatbázisrendszerek.
Alapvetés
(Második,
átdolg.kiad),
2009.
-- E/K modell és
leképezése
relációs modellre, [UW1] 4.1-4.6.fej., 133-181.o.
-- Megvalósítása az
Oracle relációs
adatbázis-kezelővel, vagyis
táblák és
megszorítások
létrehozása, [UW1] 2.3.,
2.5.fej és 7.1-7.4.fej.
és táblák
feltöltése a
megszorításoknak eleget tevő
sorokkal, [UW1]
6.5.fej.
-- II.ZH-án várható
feladat adott E/K modell (vagyis adott egy E/K diagram)
ezt kell leképezni
relációs
modellre (meg kell adni a relációs
adatbázissémát) Erre a következő
héten a 9.gyakorlaton
nézzünk majd példákat!
-- II.ZH-n az implementációra is lesz
feladat, valamelyik táblát
megszorításokkal
együtt létre kell
hozni az
Oracle-ben és 2-3 sort kell felvinni a
táblába.
SQL
ÁTTEKINTÉSE: SQL
DDL (CREATE
TABLE, CREATE
VIEW)
-- Táblák
és megszorítások
(constraints) létrehozása.
-- Egyszerű és összetett
nézettáblák
létrehozása. SQL DML (INSERT)
-- A
megszorításoknak eleget tevő új
adatsorok felvitele,
-- illetve új sorok felvitele meglévő
tábla adataiból. SQL DCL (jogok)
-- táblákhoz és a
nézetekhez jogok
kiadása/átadása: GRANT
és
visszavonása: REVOKE SQL
tranzakciókezelés --
tranzakciókezelés alapjai,
érvényesítés: COMMIT,
és visszagörgetés:
ROLLBACK
és mentési
pontok: SAVEPOINT SQL DML (INSERT, DELETE, UPDATE)
-- 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 a másik
irányban,
az
adatok módosítása hogyan
jelenik meg a nézetben?
-- Eközben
mentési pontokat adjunk meg, ahova
folyton
visszagörgetjük
(visszaállítjuk a táblák
eredeti állapotát).
További
gyakorló feladatok:
lásd Példatár
"5.fejezet. Adattáblák
létrehozása,
módosítása, tranzakciók,
megszorítások" DML- és DDL-
utasításokra feladatok
DELETE
-- Töröljük azokat a dolgozókat,
akiknek jutaléka NULL.
-- Töröljük azokat a dolgozókat,
akiknek a belépési dátuma 1982 előtti.
-- Töröljük azokat a dolgozókat,
akik osztályának telephelye DALLAS.
-- Töröljük azokat a dolgozókat,
akiknek a fizetése kisebb, mint az
átlagfizetés.
-- Töröljük a jelenleg legjobban kereső
dolgozót.
-- Töröljük ki azokat az
osztályokat, akiknek van olyan dolgozója,
aki
a 2-es fizetési
kategóriába esik (lásd még
SALGRADE táblát).
Adjuk meg azon osztályok
nevét, amelyeknek van olyan dolgozója,
aki
a 2-es fizetési
kategóriába esik)
-- Töröljük ki azon osztályokat,
amelyeknek 2 olyan dolgozója van, aki
a 2-es fizetési
kategóriába esik.
INSERT
- Vigyünk fel egy 'Kovacs' nevű új
dolgozót a 10-es osztályra a következő
értékekkel: dkod=1,
dnev='Kovacs', oazon=10,
belépés=aktuális dátum,
fizetés=a 10-es osztály
átlagfizetése. A többi oszop legyen NULL.
UPDATE
-- Növeljük meg a 20-as osztályon a
dolgozók fizetését 20%-kal.
-- Növeljük meg azok fizetését
500-zal, akik jutaléka NULL vagy a
fizetésük
kisebb az átlagnál.
-- Növeljük meg mindenkinek a
jutalékát a jelenlegi maximális
jutalékkal.
(NULL tekintsük 0-nak)
-- Módosítsuk 'Loser'-re a legrosszabbul kereső
dolgozó nevét.
-- Növeljük meg azoknak a dolgozóknak a
jutalékát 3000-rel, akiknek
legalább 2 közvetlen
beosztottjuk van.
Az ismeretlen (NULL) jutalékot
vegyük úgy, mintha 0 lenne.
-- Növeljük meg azoknak a dolgozóknak a
fizetését, akiknek van beosztottja
a minimális fizetéssel
-- Növeljük meg a nem főnökök
fizetését a saját osztályuk
átlagfizetésével
További
gyakorló feladatok:
lásd Példatár
"5.fejezet. Adattáblák
létrehozása,
módosítása, tranzakciók,
megszorítások"
DML-utasításokra feladatok
Nézetek,
inline
nézet, WITH utasítás az Oracle-ben
A lekérdezést adjuk meg
nézettáblák
létrehozásával valamint úgy
is, hogy
ne kelljen nézetet létrehozni, a
"nézet" csak a lekérdezés
idejére jön létre:
adjuk meg a lekérdezést INLINE
nézettel, majd ugyanez WITH-del is.
Figyelem! Ez az Oracle WITH
utasítás nem ugyanaz, mint az
előadáson
és a kék-Tk 10.2
fejezetében szereplő WITH RECURSIVE
utasítás!
Rekurzió az SQL-ben feladatokra a 9.gyakorlaton
nézzünk példákat!
Képezzük osztályonként az
összfizetést, vegyük ezen
számok átlagát, és adjuk
meg, hogy mely osztályokon nagyobb ennél az
átlagnál az összfizetés.
További
gyakorló feladatok:
lásd Példatár
"6.fejezet. Nézettáblák" feladatai
valamint "3.fejezet. Allekérdezések a FROM
utasításrészben" feladatai illetve
összetett feladatai és a
"7.fejezet. Összetett
SQL-feladatsorok" feladatai
Felső-N
elemzés ROWNUM segítségével
("toplista"
készítése)
Felső-N elemzés
(például a ZH-n is hasznos,
amikor túl nagy az eredménytábla
és csak az első 5 sorát kell beküldeni).
a felső 5
sor
kiíratása az alábbi módon:
SELECT *
FROM
(SELECT... FROM ...WHERE...
ORDER BY
<oszlop> DESC)
WHERE
ROWNUM <= 5
Megj:Példatár 6.fejezet
elméleti összefoglalóban szerepel:
"felső-N
analízis" Hierarchikus
lekérdezések az Oracle-ben (CONNECT
BY PRIOR)
Családfák. SFW
START WITH
... CONNECT BY PRIOR ...
Feladatok a hierarchikus lekérdezésekhez
- Táblák és feladatok: dolgozo_tabla.txt
Ehhez a táblák
létrehozása: create_dolgozo.txt
- Listázzuk ki az dolgozo
tábla
alapján a
főnökökhöz tartozó beosztottak
nevét
és osztályukat.
a.) A
dolgozo tábla
önamagára való
hivatkozásával
(többtáblás
lekérdezés sorváltozókkal).
b.) A CONNECT BY
utasításrész
használatával, a hierarchikus
szerkezetet 'KING'-től
felülről
lefelé bejárva.
c.) Alulról
felfelé járjuk be a
hierarchikus szerkezet egy
ágát 'SMITH'-től kezdve.
Megj:Példatár 3.fejezet
elméleti összefoglalóban "Hierarchikus adatszerkezet
megjelenítése" Kötelező
házi feladat: DML_feladatok.txt A hallgatóknak
minél több tapasztalatot kell
szerezniük az önálló
munkában,
ezért
kérem, hogy a mai gyakorlat órai feladatainak a
megoldását a gyakorlat
végén vagy
legkésőbb a
következő gyakorlatig küldje be emailben
"<ehakod>_8gy.txt" nevű
szöveges fájlban (ahol az <ehakod>
helyére a saját ETR
azonosító
kerüljön).