Adatbázis tervezés II
- Cél: az anomáliák és a redundancia megszüntetése
- Módosítási anomália
- Törlési anomália
- Beszúrási anomália
Relációk felbontása
relációt, attribútumokkal helyettesítsük és relácciókkal úgy, hogy
Veszteségmentes felbontás
-
Ha teljesül, akkor az előbbi összekapcsolásra azt mondjuk, hogy veszteségmentes. Itt egy sémájú relációt jelöl és attribútumainak részhalmazai az
-
jelentése: sorai az attribútumaira projektálva.
-
Látható, hogy mindig teljesül.
Boyce Codd normálforma
reláció BCNF normálformában van, ha minden nemtriviális funkciónális függőségre -ben szuperkulcs.
- Nemtriviális: nem része -nek
- Szuperkulcs: tartalmaz kulcsot (ő maga is lehet kulcs)
BCNF-re bontás:
- Adott reláció ls funkcionális függőségek.
- Van-e olyan ami sérti a BCNF-t?
- Ha van olyan következmény -ben, ami sérti a BCNF-t, akkor -beli funkcionális függőség is sérti
- Kiszámoljuk -t:
- Ha itt nem szerepel az összes attribútum, nem szuperkulcs
- dekomponálása felhasználásával:
- -t helyettesítsük az alábbiakkal:
- Projektáljuk a megfelelő -beli FF-eket a két új relációsémára
- -t helyettesítsük az alábbiakkal:
Miért működik a BCNF?
- esetén ha egy veszteségmentes felbontás, pedig veszteségmentes felbontása, akkor is veszteségmentes felbontás.
- Könnyen ellenőrizhrtő, hogy BCNF felbontás dián az veszteségmentes.
- Minden két attribútum séma BCNF normálformában van
- A fentiekkel igazolható:
- Az algoritmus valóban veszteségmentes felbontást ad, ám sajnos exponenciális lépésszámú is lehet a függődégek vetítése miatt.
Chase teszt veszteségmentességhez
Az -beli függőségeket használva egyenlővé tesszük azokat a szimbólumokat, amelyeknek ugyanazoknak kell lennie, hogy valamelyik függőség ne sérüljön.
- Ha a két egyenlővé teendő szimbólum közül az egyik index nélküli, akkor a másik is ezt az értéket kapja.
- Két indexes szimbólum esetén a kisebbik indexű értéket kapja meg a másik.
- A szimbólumok minden előfordulását helyettesíteni kell az új értékkel. Az algoritmus véget ér, ha valamelyik sor -vel lesz egyenlő, vagy több szimbólumot már nem tudunk egyenlővé tenni.
Ha szerepel a tablóban, akkor valóban -nek egy sora, és mivel -t tetszőlegesen választottuk, ezért a felbontás veszteségmentes.
Ha nem kapjuk meg -t, akkor viszont a felbontás nem veszteségmentes.
A harmadik normálforma
Motiváció
- Bizonyos FF halmazok esetén a felbontáskor elveszíthetünk függőségeket.
- és
- pl.:
- Két kulcs van: és
- megsérti a BCNF-t, tehát -re dekomponálunk
A probléma az, hogy és sémákkal nem tudjuk kikényszeríteni függőséget
3NF
-
3.normálformában (3NF) úgy módosul a BCNF feltétel, hogy az előbbi esetben nem kell dekomponálnunk.
-
Egy attribútum prím (elsődleges attribútum), ha legalább egy kulcsnak eleme.
-
nem-triviális FF, megsérti 3NF-t akkor és csak akkor, ha nem szuperkulcs és nem prím.
-
minden nem triviális függőségre igaz, hogy bal oldala szuperkulcs, vagy jobb oldala csak elsődleges attribútumokat tartalmaz
-
3NF feltétel és a BCNF feltétel közötti különbség a "vagy jobb oldala csak elsődleges attribútumokat tartalmaz"
3NF-re bontás
Minimális bázis létrehozása
- Jobb oldalak szétvágása.
- Próbáljuk törölni az FF-eket egymás után. Ha a megmaradó FF-halmaz nem ekvivalens az eredetivel, akkor nem törölhető az épp aktuális FF.
- Egymás után próbáljuk csökkenteni a baloldalakat, és megnézzük, hogy az eredetivel ekvivalens FF-halmazt kapunk-e.
A minimális bázis minden FF-re megad egy sémát a felbontásban.
- A séma a jobb- és baloldalak uniója lesz ( FF, séma) .
- Ha a minimális bázis FF-jei által meghatározott sémák ( FF, séma) között nincs szuperkulcs, akkor hozzáadunk a felbontáshoz egy olyan sémát, amely maga egy kulcs az relációra.
3NF vs BCNF
A dekompozícióknak három fontos tulajdonsága lehet:
- Veszteségmentes összekapcsolás (információ visszaállíthatóság)
- Függőségek megőrzése
- Anomáliák kiküszöbölése
Az (1) tulajdonság teljesül a BCNF esetében.
-
A 3NF (1) és (2)-t is teljesíti, de maradhat benne anomália (általában ez nem akkora baj)
-
A BCNF esetén (2) sérülhet, viszont (FF-ek okozta) anomália nem lehet benne