Adatbázis rendszerek 4. előadás Redundancia, normalizálás Molnár Bence Szerkesztette: Koppányi Zoltán
HF tapasztalatok
HF tapasztalatok [ABR] az email címbe! Ne emailbe küldjük a házikat, töltsétek fel a weboldalra. Olvassátok hanem el a mintákat, és a hibalistát
Hibalista Az adatbázis kapcsolódik? témája Feladat megfogalmazása érthető, jól körülhatárolt? Input, Output adatok megfelelőek, valósságosak, nem csak helyet töltenek ki (pl. speciális lekérdezések)? Output adatok levezethetőek az Input adatokból? Az Input egymáshoz? adatok építőmérnöki logikailag szakmához kapcsolódnak
Hibalista A feladat lehetőséget ad-e 4 entitás kialakítására? Az adatok nyers, de érthető formátumban vannak? Kulcsok és azonosítók létrehozása később történik, ahogy az adatok normalizálása és a dekompozíció is (adatok táblákba rakása, azok darabolása). A nyers adatok tartalmaznak-e legalább 100 rekordot? Túl sok nyers adat csatolása a feladatot átvevőkre helyez nagy terhet! Ha több állományban találhatóak a nyers adatok, azok egy fájlba tömörítendőek. Új verzió feltöltésekor a korábbi (és még aktuális) állományok is becsomagolandóak, hiszen mindig csak az utolsó verzió érhető el!
Adat generálás Pilot projekthez (vagy HF) Teszteléshez váratlan adatok Excel RAND() / VÉL() RANDBETWEEN() / VÉLETLEN.KÖZÖTT() Webes generátorok Máshonnan szerzett adatok
Nyers adatok feldolgozása Normalizált adatbázisból SQL lekérdezés Átalakítandó, de kezelhető táblázatos formátum Copy-paste, Import Átalakító lekérdezés Hibák keresése lekérdezéssel PDF, kép Karakterfelismerő Weboldalak Kézi klikkelgetéssel kinyerhető értékek Programozói ismeretekkel automatizálható Folyó szöveg Emberi feldolgozás
Adat beolvasás Excel CSV Elválasztó Idézőjel Karakter kódolás különleges karakterek Sorvége Üres mezők PDF Copy - Paste Text to columns (Szövegből oszlopok) OCR Optikai karakter felismerés
A relációs adatbázis séma kérdései
Egy rossz tábla! érvénytelen érték (nincs kulcs) Név Utónév Életkor ID Szem.Ig Gipsz Jakab Jakab 23 1 101 Hallgató Bálint Béla -1 2 102 Gipsz Jakab Jakab 23 1 101 redundancia (ha kulcs lenne, akkor is dupla kulcs szerepel)
Egy rossz tábla! duplikált sor inkonzisztencia Név Utónév Életkor ID Szem.Ig Gipsz Jakab Jakab 23 1 101 Hallgató Bálint Béla -1 2 102 Gipsz Jakab Jakab 23 1 101 Vezeték névre nem tudunk keresni
Mikre kell odafigyelni? Konzisztencia biztosítása: az adatbázis ne tartalmazzon egymásnak ellentmondó tényeket Adatok érvényességének biztosítása: az adatok csak a megfelelő halmazból vehetnek fel értékeket Redundancia: valamely tényt vagy a többi adatból levezethető mennyiséget többszörösen tároljuk Többszörösen tároljuk az adatokat Nehéz az adatokat konzisztensen tartani Duplikált sorok szükséges) Duplikált adatok szükséges) tárolásának tárolásának elkerülése (ha ez elkerülése (ha ez
Hogyan küszöbölhető ki? Konzisztencia biztosítása: normalizálás Adatok érvényességének biztosítása: attribútumok típusának kiválasztása Redundancia normalizálás Duplikált előírása Duplikált csökkentése, megszüntetése: sorok tárolásának elkerülése: kulcs adatok tárolásának elkerülése: megfelelő tervezés, normalizálás
Redundancia, adatbázis anomáliák
Redundancia A redundancia a következőeket okozhatja Módosítási anomália Beszúrási anomália Törlési anomália
Módosítási anomália Név Kiss Pista Kiss Pista Nagy Péter Életkor 23 23 21 MitVett? Csoki Sör Sör Kiss Pista nevét meg akarom változtatni, és azt az összes előforduló helyen meg kell tennem!
Beszúrási anomália Név Kiss Pista Kiss Pista Nagy Péter Életkor 23 22 21 MitVett? Csoki Sör Sör Kiss Pista felvételénél elrontjuk a bevitelt és véletlenül 22-t viszünk be életkornak. Ekkor nem tudhatjuk biztosan hány éves Pista.
Törlési anomália Név Kiss Pista Kiss Pista Nagy Péter Életkor 23 23 21 MitVett? Csoki Sör Sör Ha valami okból kitöröljük Kiss Pista sorait, akkor az eddig már felvitt adatokat (pl. életkor) elveszítjük!
Redundancia elkerülése A redundancia elkerülésére a tervezés során a táblákat normalizálni kell. Az egyes normalizálási lépések esetén azt mondjuk, hogy akkor az adatbázis egy meghatározott normál formán van. Előtte azonban ismerkedjünk meg a funkcionális függőségekkel!
Funkcionális függőségek
Funkcionális függőség Ha a reláció valamely 2 sora megegyezik valamilyen attribútum(ok)-on (A), és abból következnek (egyértelműen meghatároz) más attribútum(ok) (B) akkor azt mondjuk hogy B funkcionálisan függ A-tól. Név Kiss Pista Kiss Pista Életkor 23 23 Név Életkor Jelölés Vétel Csoki Sör
Funkcionális függőség - Kulcs Vegyük észre, hogy a funkcionális függőség a kulcs fogalom általánosítása: Amennyiben egy vagy több attribútum funkcionálisan meghatározza az összes többi attribútumot, akkor az szuperkulcs Ha ez a halmaz minimális, akkor kulcsról beszélünk
Funkcionális függőség - Példa Adjuk meg a következő relációk függőségi halmazait! Dolgozók(SzemIg., Név, Jövedelem, Beosztás)
Funkcionális függőség - Példa Adjuk meg a következő relációk függőségi halmazait! Dolgozók(SzemIg., Név, Jövedelem, Beosztás) SzemIg. Név, Jövedelem, Beosztás
Funkcionális függőség - Példa Adjuk meg a következő relációk függőségi halmazait! Dolgozók(SzemIg., Név, Jövedelem, Beosztás) SzemIg. Név, Jövedelem, Beosztás Beosztás Jövedelem (?) Eredmények(TantárgyNév, Neptun-kód, Név, Osztályzat)
Funkcionális függőség - Példa Adjuk meg a következő relációk függőségi halmazait! Dolgozók(SzemIg., Név, Jövedelem, Beosztás) SzemIg. Név, Jövedelem, Beosztás Beosztás Jövedelem (?) Eredmények(TantárgyNév, Neptun-kód, Név, Osztályzat) TantárgyNév, Neptun-kód Osztályzat
Normál formák
Első normál forma (1NF) Minden sora különböző (van kulcs) Van egy kulcs, amitől az összes többi attribútum funkcionálisan függ Ekkor a kulcs lehet a reláció összes attribútuma is Oszlopok Minden száma és sorrendje minden sorban azonos oszlopnak csak egy attribútuma lehet Minden attribútum egyszerű Ennek eldöntése tervezési kérdés nem mindig egyértelmű
Második normál forma (2NF) Második normál forma definíciója: Első normál formán vagyunk + Minden nem kulcs attribútum teljesen függ a kulcstól, de nem függ a kulcs bármely részhalmazától Teljesen függ: az attribútum a egyetlen részhalmazától sem függ Ha egy attribútumú a összetett) akkor rendben kulcs (azaz kulcs nem
Dekompozíció (2NF) Neptun ABCD1 ABCD2 ABCD1 Neptun ABCD1 ABCD2 SzemIg. 100AA 101AA 100AA ZH 1 1 2 Eredmény 4 5 3 SzemIg. 100AA 101AA Neptun ABCD1 ABCD2 ABCD1 ZH 1 1 2 Eredmény 4 5 3
Harmadik normál forma (3NF) Harmadik normál forma definíciója: Második normál formán vagyunk + Minden olyan attribútuma, mely nem része a kulcsnak, funkcionálisan teljesen függ a kulcstól, és csak attól. (Nincs tranzitív függőség) Tranzitív függés esetén minden, nem kulcs mező függ a kulcstól, de van olyan mező, esetleg mezők, amely a kulcson kívül más mezőtől is függnek.
Dekompozíció (3NF) VételID 1 2 VételID 1 2 Vétel Csoki Sör Vétel Csoki Sör Ár 100 300 Termék Csoki Sör Ár 100 300
Magasabb normál formák A gyakorlatban a 3NF már elegendő A legtöbb esetben ez már redundancia mentességet biztosít BCNF, A 4NF, 5NF magasabb normál formák hátrányai: Nehezen átlátható az adatbázis szerkezete Bonyolult lekérdezések Csökkenti a lekérdezések hatékonyságát
A gyakorlat A teljesség kedvéért megemlíthető, hogy bizonyos műveletek hatékonyabb végrehajtása érdekében egyes esetekben a tervezők inkább lemondanak a tisztaságról, áttekinthetőségről, s összevonnak egy relációba olyan adatokat is, amelyek a normalizálás elmélete szerint külön relációkban kellene helyet foglalniuk.
Esettanulmány
WebDLT Web alapú fotogrammetria Ha egy pontot két képen azonosítani tudok, annak térbeli koordinátája számítható Képkoordináták és egyéb adatok tárolása adatbázisban MySQL DBMS + PhpMyAdmin + PHP + HTML + CSS
Input: Felhasználói adatok Képkoordináták (2D) Számítási eredmények Output: Képenkénti pontok adott projekten belül 3D pontok adott projekten belül Minősítő számok megjelenítése
E/K diagram
Relációs adatbázis séma
Teljes séma
Lekérdezések πprid,pname(σuid=10(projects projects_users)) πpoints_2d.pid(σpid=100&phid=200&prid=2(points_2d points)) σeid=100&prid=2(edges edges.pid1=points.pidpoints)
ABR Házirendszer
Ötletek
Források Wikipedia http://www.kobakbt.hu/jegyzet/adatbaziselmelet/ora4_index.htm l http://support.microsoft.com/kb/283878/hu http://www.fuvesi.com/adatbazisok/normalformak.html http://www.tankonyvtar.hu/en/tartalom/tamop425/0005_25_adat bazis_kezeles_scorm_03/361_mezk_viszonya_a_relcis_adatbzis_ tbliban.html
Köszönöm a figyelmet!