08. ADATBÁZISOK (LEV.INFOTANÁR)
1.RÉSZ Relációs adatbázisok sématervezése (előadások)
- Funkcionális
függőségek (Tankönyv 3.1.-3.2.
szakaszok) 10.ea.pdf
- Boyce-Codd
normálforma (Tankönyv 3.3.-3.4. szakaszok) 11.ea.pdf
- Harmadik normálforma (Tankönyv 3.5.-3.6.
szakaszok) 12.ea.pdf
2.RÉSZ SQL DDL Feladatok:
>> SQL DDL, relációs
séma megadása =
sortípus + megszorítások:
6EA.pdf;
>>
Oracle:
SQL Language Reference
>> innen Data
Types; illetve Contraint;
1.) Dolgozo,
Osztaly, Fiz_Kategoria táblák, példa: createDolg+Constraints
Dolgozo (dkod,
dnev, foglalkozas,
fonoke, belepes, fizetes, jutalek, oazon)
Osztaly (oazon, onev,
telephely)
Fiz_Kategoria (kategoria,
also, felso)
Készítsünk drop table mytabla;
create table mytabla as select * from tabla;
másolatokat a
dolgozo
és osztaly táblákból
mydolgozo és myosztaly
néven,
véglegesítse az
adattáblákat (commit), majd a
létrehozott
táblákat lássa el
az alábbi
megszorításokkal, alter table
példák (mo_ell: megszorítások.txt)
- Legyen a dkod elsődleges kulcs a
mydolgozo
táblában, és
legyen az oazon
elsődleges kulcs a
myosztaly
táblában és idegen kulcs a
mydolgozo
táblában, amely a
hivatkozási épséget itt
úgy állítsa be, hogy
egy osztály
törlése
esetén törlődjenek ennek az
osztálynak a
dolgozói is.
- Egy új dolgozó csak az
adott 700
és 7000 USD
értéktartománybeli
fizetést
kaphasson.
- Ellenőrizze ezeket a
megszorításokat sikeres
(megfelelő rekord felvitele)
és sikertelen
(hibás rekord)
adatbeviteli kísérletekkel, majd
állítsa vissza
az eredeti
táblatartalmakat
(rollback).
-- -- -- -- --
2.) Készítsünk két
táblát az egyikben legyenek sportcsapatok
csapat_id,
név.
A másikban a
játékosok, id, név,
mezszám, csapat_id. A csapat
azonosító
legyen idegen kulcs. (lásd
még: create
table-példák.txt).
-- -- -- -- --
>> SQL DDL create view:
módosítható/nem-módosítható
nézettáblák: 7EA.pdf;
3.) Egyszerű/összetett
nézettáblák
létrehozása, melyik
módosítható/melyik nem?
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?
>> Például: Bonyolultabb
lekérdezés
megoldása
nézettáblák
segítségével
-- 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.
CREATE OR REPLACE VIEW osztaly_osszfiz
AS
SELECT onev, SUM(fizetes) ossz_fiz
FROM sila.dolgozo d, sila.osztaly o
WHERE d.oazon = o.oazon
GROUP BY onev;
CREATE OR REPLACE VIEW atlag_koltseg
AS
SELECT SUM(ossz_fiz)/COUNT(*) atlag
FROM osztaly_osszfiz;
SELECT * FROM osztaly_osszfiz
WHERE ossz_fiz >
(SELECT atlag FROM
atlag_koltseg)
-- -- -- -- --
>> WITH munkatáblák használata az SQL SELECT lekérdezésekben
>>
Oracle: SQL Language Reference
>> innen: Subquery
Factoring: Examples
4.) lásd a fenti
példát
nézettáblákra, ugyanezt
WITH-záradékkal is felírhatjuk
Példák WITH
munkatáblák használatára:
-- 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.
WITH
osztaly_osszfiz AS (
SELECT onev,
SUM(fizetes)
ossz_fiz
FROM sila.dolgozo
d,
sila.osztaly o
WHERE d.oazon =
o.oazon
GROUP BY onev),
atlag_koltseg AS (
SELECT
SUM(ossz_fiz)/COUNT(*)
atlag
FROM
osztaly_osszfiz)
SELECT * FROM osztaly_osszfiz
WHERE ossz_fiz > (SELECT atlag
FROM
atlag_koltseg)