Adatbázis használat I. 1. gyakorlat
Tudnivalók Nagy Gabriella nagy.gabriella@nik.uni-obuda.hu BA. 306. szoba www.orakulum.com => Adatbázis-kezelés => AKT (Adatbázis-Kezelés Technológiája) 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 2
Ismétlés: normalizálás Mi is az az adatbázis? redundancia? anomáliák? Normalizálás Cél: a redundancia megszüntetése. Jegyzet: http://www.agt.bme.hu/szakm/adatb/db3.ht m#p3.5 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 3
FF példa Jani bácsi székgyártó kisiparos szeretne adatbázist készíttetni. 1. Tárolnánk a székek megnevezését, típusát, színét, méretét, árát, a készlet nagyságot. 2. Tároljuk a vásárlók adatait is: név, cím, telefonszám, törzsvásárló-e. 3. Nyilvántartjuk a rendeléseket: ki, mikor, mit rendelt. 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 4
FF példa 1. lépés: az ősmodell sémája székvásárlás <megnevezés, típus, szín, méret, ár, készlet, név, cím, telszám, törzsvásárló, dátum, mennyiség> A megnevezés, a szín és a típus együtt azonosítja a széket, a név és a telszám a vásárlót. Adott típusú szék többféle színben kapható, de ezek mérete és ára megegyezik. 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 5
FF példa 2. lépés: függőségek felírása {név, telszám} => {cím, törzsvásárló} {megnevezés, típus, szín} => {méret, ár, készlet} DE: {megnevezés, típus} => {méret, ár}!!!! 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 6
FF példa És a vásárlások? (Mi az ősreláció kulcsa?) {név, telszám, megnevezés, típus, szín} => {dátum, mennyiség, stb.} vagy {név, telszám, megnevezés, típus, szín, dátum} => {mennyiség, stb.} 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 7
FF példa 3. lépés: normalizálás 1NF: oké, mert minden adatunk elemi. 2NF: nem oké! A {megnevezés, típus, szín} => {méret, ár, készlet} függőség sérti, mert a méret és az ár csak a bal oldal egy részétől függ, nem az egésztől, tehát itt szétbontás (dekompozíció) következik: {megnevezés, típus} => {méret, ár} és {megnevezés, típus, szín} => {készlet} 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 8
FF példa 2NF folytatás: hasonló módon persze a vásárlásos nagy függőségünket is szét kell szedni. Így ezek maradnak: {név, telszám, megnevezés, típus, szín} => {dátum, mennyiség} {megnevezés, típus} => {méret, ár} {megnevezés, típus, szín} => {készlet} {név, telszám} => {cím, törzsvásárló} 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 9
FF példa 3NF oké, mert ezekben már nincs tranzitív függés. BCNF oké. 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 10
FF példa Eredmény: vásárlás<név, telszám, megnevezés, típus, szín, dátum, mennyiség> szék<megnevezés, típus, méret, ár> készlet<megnevezés, típus, szín, készlet> vásárló<név, telszám, cím, törzsvásárló> Elsődleges kulcsok, idegen kulcsok... 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 11
Lekérdezések Kérdezzük le az emp tábla tartalmát! SELECT * FROM emp; 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 12
Lekérdezések Kérdezzük le a dept tábla tartalmát! SELECT * FROM dept; 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 13
Lekérdezések Az emp táblából csak a dolgozó nevét, fizetését és jutalékát szeretnénk látni. SELECT ename, sal, comm FROM emp; 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 14
Lekérdezések Nézzük most a nevet, munkakört és a felvétel dátumát! SELECT ename, job, hiredate FROM emp; 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 15
Lekérdezések Lássuk az azonosítót és a nevet, de nevezzük át az oszlopokat! SELECT empno AS Azonosító, ename AS Név FROM emp; 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 16
Lekérdezések Szeretnénk tudni, ki keres sokat, és milyen munkakörben. SELECT ename, job, sal FROM emp WHERE sal > 2000; 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 17
Lekérdezések és ki kap jutalékot? Mennyit? SELECT ename, job, comm FROM emp WHERE comm > 0; 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 18
Lekérdezések Rendezzük a táblázatunkat fizetés szerinti növekvő sorrendbe! SELECT * FROM emp ORDER BY sal; 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 19
Lekérdezések és csökkenő sorrendbe? SELECT * FROM emp ORDER BY sal DESC; 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 20
Lekérdezések Akkor most rendezzünk belépési dátum szerint! SELECT * FROM emp ORDER BY hiredate ASC/DESC; 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 21
ed aaa Előre megírt lekérdezés futtatása @aaa De hol van ez az aaa.sql? 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 22
Vége! Mára ennyit, a következő órán: kiszárthelyi, feladatterv leadása! 2011. 02. 08. nagy.gabriella@nik.uni-obuda.hu 23