Adatbázis használat I. 5. gyakorlat
Tudnivalók • Jövő hétre a normalizálást hozni vagy emailben beküldeni! • 7. héten (= két hét múlva!) nagyZH + FF checkpoint: adattáblák feltöltése, megszorítások
2010. 03. 11.
[email protected]
2
DML és DDL utasítások • DML: Data Manipulation Language – sorok beszúrása, módosítása, törlése
• DDL: Data Definition Language – táblák létrehozása, módosítása, törlése
2010. 03. 11.
[email protected]
3
Tranzakciók • SAVEPOINT ittmentettünk; – mentési pont létrehozása
• ROLLBACK TO ittmentettünk; – visszagörgetés
• COMMIT; – véglegesítés
2010. 03. 11.
[email protected]
4
DML: beszúrás • Helyezzünk el a dept táblába egy újabb részleget! INSERT INTO dept (deptno, dname, loc) VALUES (50, 'SAJTKÉSZÍTŐK', 'BUDAPEST'); • Ami érdekes: – sorrend – minden értéket megadunk? 2010. 03. 11.
[email protected]
5
DML: beszúrás • Kellene dolgozó is abba a részlegbe: vegyünk fel „SAJTKUKAC” munkakörbe egy 1111-es azonosítójú személyt! INSERT INTO emp (empno, deptno, job) VALUES (1111, 50, 'SAJTKUKAC');
2010. 03. 11.
[email protected]
6
DML: módosítás • Legújabb dolgozónknak nem adtunk nevet... és ami számára nagyobb baj, fizetést sem. UPDATE emp SET ename='ÖDÖN', sal=500 WHERE empno=1111; • Fontos a feltétel megadása, különben mindenhol átírja!!! 2010. 03. 11.
[email protected]
7
DML: módosítás • Adjunk Ödönnek jutalékot is! (10) UPDATE emp SET comm=10 WHERE empno=1111;
2010. 03. 11.
[email protected]
8
DML: törlés • A cég felszámolta sajtkészítő üzletágát, szegény Ödönt elbocsátották. Töröljük a táblából! DELETE FROM emp WHERE empno=1111; • Körültekintően határozzuk meg a feltételt! (Vagy legalább hozzunk létre előtte egy mentési pontot :P) 2010. 03. 11.
[email protected]
9
DML: törlés • Töröljük a sajtkészítők részlegét a dept táblából! DELETE FROM dept WHERE deptno=50;
2010. 03. 11.
[email protected]
10
DDL: tábla létrehozása • Egyszerűbb eset: tábla létrehozása egy lekérdezés eredménye alapján: CREATE TABLE emp2 AS SELECT * FROM emp;
2010. 03. 11.
[email protected]
11
DDL: tábla létrehozása • Most azokat másoljuk át új táblába, akiknek 2000 dollárnál több a fizetése! CREATE TABLE emp3 AS SELECT * FROM emp WHERE sal>2000;
2010. 03. 11.
[email protected]
12
DDL: tábla létrehozása • Teljesen új tábla létrehozása: CREATE TABLE újtábla (ezegyszám NUMBER(5,2), ezegyszöveg VARCHAR2(10), ezegydátum DATE); • Megjegyzés: a CHAR kötött hosszúságú! 2010. 03. 11.
[email protected]
13
DDL: módosítás • ALTER TABLE táblanév ADD (...); • ALTER TABLE táblanév MODIFY (...); • ALTER TABLE táblanév DROP COLUMN oszlopnév; – CASCADE CONSTRAINTS: csak óvatosan!
• ALTER TABLE táblanév RENAME COLUMN Réginév TO Újnév; 2010. 03. 11.
[email protected]
14
DDL: módosítás • Adjunk hozzá egy új oszlopot a másolattáblánkhoz (Színe)! Legyen mindenkinek a kedvenc színe a kék! ALTER TABLE emp3 ADD (színe VARCHAR(10)); UPDATE emp3 SET színe='kék'; 2010. 03. 11.
[email protected]
15
DDL: átnevezés, törlés RENAME emp3 TO emp23; DROP TABLE emp3;
2010. 03. 11.
[email protected]
16
VÉGE
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. 2010. 03. 11.
[email protected]
18
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. 2010. 03. 11.
[email protected]
19
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} !!!!
2010. 03. 11.
[email protected]
20
FF példa • És a vásárlások? (Mi az ősreláció kulcsa?) {név, telszám, megnevezés, típus} => {dátum, mennyiség, stb.} vagy {név, telszám, megnevezés, típus, dátum} => {mennyiség, stb.}
2010. 03. 11.
[email protected]
21
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} 2010. 03. 11.
[email protected] 22
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ó} 2010. 03. 11.
[email protected]
23
FF példa • 3NF oké, mert ezekben már nincs tranzitív függés. • BCNF oké.
2010. 03. 11.
[email protected]
24
FF példa • Eredmény: vásárlás
szék<megnevezés, típus, méret, ár> készlet<megnevezés, típus, szín, készlet> vásárló • Elsődleges kulcsok, idegen kulcsok... 2010. 03. 11.
[email protected]
25