Sapientia - Erdélyi Magyar Tudományegyetem (EMTE) Csíkszereda TOK 2017 Az adatbázistervezés elől- és hátulütői Dr. Illyés László 1 1
Sapientia - Erdélyi Magyar Tudományegyetem (EMTE) Csíkszereda Tartalom 1. 1-1 hez kapcsolat 2. Az SQL nyelv ereje (és veszélyei) 3. A redundancia több arca 4. Az adatbázis karbantartása – triggerek, megszorítások 5. Gondolkodási folyamat egy adatbázis felépítésekor – az idő faktor 2 2
3. Olyan attribútumok, amelyek alkalmazás-függőek 1. 1-1 hez kapcsolat 0. Használattól függ 1. Olyan attribútumok leválasztása, amelyek sok helyet foglalnak el – BLOB 2. Olyan attribútumok, amelyek biztonsági szempontból nem azonosak minden alkalmazásban (fizetés, jelszó) 3. Olyan attribútumok, amelyek alkalmazás-függőek 4. Olyan attribútumok, amelyek kommunikáció-függőek 3 3
Az érzékeny vagy nagy helyet foglaló attribútumok elkülönítése 4
Mobil alkalmazásnál a hangot egy szerverről tölti le 5
2. Az SQL nyelv ereje – és veszélyei UPDATE kolcsonzes SET visszahoz='2017/05/06' WHERE leltarszam='0027695' 6
1. Minden kiszámítható attribútum redundáns 3. a redundancia több arca 3. a redundancia több arca 1. Minden kiszámítható attribútum redundáns 2. Minden logikailag levezethető attribútum redundáns 7
8
Logikailag levezethetőség A könyvtári alkalmazásban a példánynál két attribútum redundáns: az elérhető - logikai és a lejárat dátum attribútumok Logikailag megadható, hogy: 1. Azon példányok, amelyeknek létezik olyan sora a kölcsönzésben, amelynél a visszahoz dátum nem NULL, nem elérhetők 2. Ugyanezen pédányoknál a lejárat dátuma egyenlő a határidő dátumával a kölcsönzésből 9
4. Az adatbázis karbantarthatósága – triggerek, megszorítások UPDATE konyvadat SET id=3 WHERE id=1; (ON UPDATE CASCADE) INSERT INTO kolcsonzes(datum, hatarido, leltarszam, torzsszam) VALUES ('2017/04/12', '2017/05/12', '0024534', 1956); UPDATE peldany SET elerheto=0,lejarat='2017/05/12' WHERE leltarszam='0024534'; 10
Trigger, ami megvalósítja DROP TRIGGER IF EXISTS kikolcsonzes; delimiter // CREATE TRIGGER kikolcsonzes AFTER INSERT ON kolcsonzes FOR EACH ROW BEGIN UPDATE peldany SET lejarat=NEW.hatarido,elerheto=0 WHERE peldany.leltarszam=NEW.leltarszam; END;// delimiter ; 11
5. Gondolkodási folyamat egy adatbázis felépítésekor – az idő faktor 12