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!