Relációs adatbázisok logikai tervezése
Tervezés sémadekompozícióval
- Er-alapú tervez, számos megoldás, melyik a legjobb?
- reláció további tulajdonságai: milyen ügyesek voltunk az ER-diagramm megalkotása során
- relációk tetszőleges számú attrb tartalmazhatnak
- a rendszerben található valamennyi adatot beépíthetjük egyetlen sémába(univerzális séma)
- egyetlen tábla írja le az egész rendszert
- felhasználónak kényelmes, nem kell tudnia melyik adatot melyik reláció tartalazza
- nem kell a táblák összekapcsolásával vesződni
- csak válogatni
- tárolás tekintetében ez nem előnyös (tárolási + adatmanpilucáiós hatékonyság szemp.)
- sok felesleges adatot tart.
- lassítja a rendszer működését, a háttértárat és a mem.-t foglalja
- ellentmondásossá/ következetlenné teheti az db-t
- sok felesleges adatot tart.
- de nem minden többször tárolt adat felesleges
- barna, mint szemszín lehet sokszor
- egy embernek a szemszíne sokszor felesleges
- redundancia: adatbázis és reláció (ua, csak reláció helyett adatb)
- szállítók címe
- kikövetkeztethető adat: származtatott adat
- a redundanciát csökkenthetjük, ha az adatbázist alkalmas módon több, egyenként kevesebb attribútumot tartalmazó relációból alakítjuk ki
Anomáliák
- a redundáns relációknak megfelelő adattárolással kapcsolatban előforduló egy sor kellemetlen jelenség
Módosítási anomália
- az ilyen szitu: többletmunka, logikai ellentmondások keletkezésének lehetősége
- em: vki címe megváltozik (tudás elem v inf megváltozik a környezetünkben), (ezt át kell vezetni) de egy helyen elmulasztjuk
- később különböző helyekről többféle címet is kiolvashatunk
- tm: - egy inf morzsa több adatelemere van leképezve
- blokk műveletek (lehet mind különböző blokkban van), egy helyen kell átírni v 1000+, nem tudjuk mennyi idő átírni
- nincs felső korlát, nem tudjuk mennyi idő alatt lehet végrehajtani
Beszúrási anomália
- vmelyik attb értéke más, amit újonnan viszünk be: információ vesztés, pl.: cimek
- nem tudtunk tetszőleges adatokat nyilvántartásba venni, ha nem ismert egy másik adat, amivel a tárolandó adat meghatározott kapcsolatban áll
- nem tudunk a relációba olyan elemet felvenni, amelynek olyan mezője kitöltetlen, amely a reláció definíciója miatt nem lehet kitöltetlen
- ez a helyzet a kulcsmezőkkel
Törlési anomália
- csak egy attribútum értékét szeretnénk törölni, akkor előfordulhat, hogy ez valamiért nem lehet
- úgy szabadulhatunk meg, ha az egész sort töröljük
- ilyenkor elveszíthetünk olyan adatokat/információkat is, amelyekre még szükségünk lehet
- a probléma megoldható a relációk függőleges felbontásával(vertikális dekompozíció)
- a felbontás egyértelműnek tűnik, de számos probléma felmerülhet
Adatbázis kényszerek
- azokat a szabályokat értik, amelyek segítségével az db-unk tartalmát olyan módon lehet jellemezni/korlátozni, hogy az valamely tervezésnek, ill elképzelt/elvárt feltételeknek megfeleljen
- értékfüggő kényszerek: egy adott attb értéke melyik tartományba esik
- értékfüggetlen kényszerek
- tartalmazási függőség: egy oszlopban található értékek, egy másik oszlop részhalmazát képzik. Tehát nem lehet bármit odaírni. pl: idegen kulcs
- funkcionális függőség (fg szerűen attb meghatározzák más attb értékeit)
- többértékű függőség: bizonyos attb értkei nem egyértelműen határozzák meg más sttb értékeit, hanem egy értékhalmazból vehetnek fel értékeket ezek a másik attbk, de ez nem lehet tetszőleges
- join függés
Funkcionális függőségek
- adatbázis hatékony működése központi kérdés: relációkon belüli redundancia csökkentése
- jegyzet példában 2 ok miatt alakulhat ki:
- a szállító nevét több sorban is fel kell használnunk az általa szállított különböző tételek azonosításához
- minden sorban, ahol megjelent egy szállító neve, törvényszerűen megjelent ugyanaz a lakcím is, ami nyilván felesleges ahhoz, hogy tudjuk, hol lakik a szállító
- a NÉV attb értéke egyértelműen meghatározza a CÍM attb értékét.
- a jelenség megfelelő matematikai konstrukció: funkcionális függőség
- szoros kapcsolatban van az implikáció műveletével
- A: az R sémára illeszkedő bármely r reláció bármely két t,t' sorára t[X]=t'[X]
- B: t[Y]=t'[Y]
- adott R sémára értelmezett ff gyakran egyetlen halmazba gyűjtjük: FˇR
Megjegyzések
1
- definíció szerinti teljesüléshez nem követelmény, hogy legyen egy R sémára illeszkedő bármely r reláción valóban legyen két olyan t t' sor, amelyre fenáll, hogy t[X]=t'[X] (A nak nem kell igaznak lennie)
- ha nincs ilyen az X->Y akkor is fennálhat
- ekkor nem lehet ellenőrizni, hogy B állítás igaz-e
2
- feltétel: bármely r(R)-re
- gyakori az, hogy egy adott r(R) relációban minden olyan t,t′ sorra, melyre t[X] = t′[X] fennáll t[Y ] = t′[Y ] is
- eseti funkcionális függőség
- eredeti : érdemi funkcionális függőség
- valóság modellezése: érdemi ff
- egy működő rendszer használata során: az adatok elemzéséhez az eseti f lehet nagyobb szerepe
- eseti függőség >= érdemi függőségek
3
- a funkcionális függőségek meghatározása egyfajta modellezési kérdés
- egy adott pillanatból nem eldönthető, hogy mely güggőségek állnak fel, legfeljebb csak arra következthetünk, hogy melyek nem
4
- a ff egy relációban csak akkor okoznak redundanciát, amennyiben valamely X->Y ff mellett a relációnak valóban van legalább két olyan eleme, amelyek X-ben azonosak
- ha X(szuper) kulcs, akkor a feltétel garantáltan soha nem fog teljesülni
- ill az is előfordulhat, hogy R sémára véletlenül csak olyan elemeket illesztünk, amelyek mellett az X értékek különbözőek
Determináns
- determináns
- teljes függés
- részleges függés
Relációs sémák kulcsai
- megadjuk egy relációs sémán értelmezett kulcs matemaitikai definícióját
- *kulcs
szuperkulcs
- egy kulcs minimális volta: minimális kulcs
- egyszerű kulcs: egy attribútum
- összetett kulcs: több attrb
- kulcsok néhány fontos tul:
- a kulcsa a relációnak egy és csakis egy elemát határozza meg
- egy kulcs attribútumai nem lhetnek NULL-értékűek
- Minden relációs sémának van kulcsa
Elsődleges kulcs
Idegen kulcs
További tulajdonságok
- a megadottakon kívül más funkc f is igazak lehetnek
- triviális függőség: amikor az adatok egy valóságos helyzetbelu jelentését írjuk le ff-kel
- Ha egy R séma attribútumhalmazai X és Y , akkor mindig fennállnak ezen a sémán az X∪Y → Y vagy az X∪Y → X függőségek is. Hiszen minden R sémára illeszkedő r relációban ∀t,t′ ∈ r(R) elemekre, ha t[X ∪ Y ] = t′[X ∪ Y ], akkor t[Y ] = t′[Y ], valamint t[X] = t′[X] egyaránt törvényszerűen fennáll
- Ha azonban több függőség is ismert, vagy a sémának számos attribútuma van, akkor már nem nyilvánvaló annak a megválaszolása, hogy mi az adott FR függőségek mellett még fennálló függőségek teljes rendszere
- cél: össze függ előáll jól használható módszer
- a módszer ún következtetési szabályok, axiómák alkalmazása lesz
- elvárások
- csak olyan függőségeket leheseen velük előállítani, amelyek igaza
- meg lehessen kapni minde igaz ff-et, amelyek egy adott függőséghalmazban található függőségekkel nincsenek ellentmondásban
Relációs sémák normálformái
- ahhoz, hogy az anomáliákat elkerülhessük, a relációink sémái meghatározott feltételeket kell, hogy teljesítsenek
- ezeket a feltételeket normálformáknak nevezik
- a normálformák megszorítások a relációs séma tulajdonságaira vonatkozóan annak érdekében, hogy a sémára illeszkedő relációkkal végzett műveletek során egyes nemkívánatos jelenségeket elkerülhessük
A nulladik normálforma(0NF)
- minden olyan relációs sémát ilyen alakúnak tekintünk, amelyben legalább egy attb nem atomi abban az értelemben, hogy az attb értéke nem tekinthető egyetlen egységnek
- azaz egyes részeihez külön is hozzá akarunk férni
- 0NF-ben van az a reláció pl amelyik ismétlődő csoportot tartalmaz az attb között
Az első normálforma(1NF)
- 1NF
- ez még nem a redundancia csökkentését szolgálja
- egyszerűen kiindulási alapot teremt
- ha ez teljesül, akkor a sémáink normalizáltak
A második normálforma(2NF)
- elsődleges és másodlagos attribútumok
- 2NF
- célja a redundancia csökkentése
- ha megsértjük a 2NF definícióját és lehetővé tesszük másodlagos attb-nak részkulcstól való függését is, akkor ebben a másodlagos attban az attb értékek redundáns tárolása megvalósulhat
- def következményei:
- Ha minden kulcs egyszerű, akkor 1NF ⇒ 2NF
- Ha nincsenek másodlagos attribútumok, akkor 1NF ⇒ 2NF.
- Tétel
A harmadik normálforma(3NF)
- *triviális függés
- tranzitív függés
- 3NF 1,2
- az első def szemléletesebb, ha redundanciscsokkentést tarjuk szem előtt
- felesleges ugyanis egyazon relációban tárolni az X,Y,A attbkat
- minden olyan sorban, amelyben X és Y értékeit rendeljük egymáshoz, meg kell adnunk A értékét is, amelyeknek azonosnak kell lennie minden olyan sorban, ahol Y értéke azonos
- Y értéke azonos lehet kül X-ekre is
- Y->A így nyilván redundanciát okoz
- a 2. def szerint könyebb ell, hogy telj 3NF kritáriumait
- A def szerint minden F+-beli függőségen ellenőrizni kellene a feltételt
A Boyce-Codd normálforma(BCNF)
- a 3NF def csak amásodlagos attrb kulcstól való tranzitív függést zárja ki
- tartalmazhat még redundanciát
Armstrong axiómái a funkcionális függőségekről
- Adottak az R sémán az X,Y,Z attribútumhalmazok
-Ha X ⊆ Y , akkor Y → X (reflexivitás vagy triviális függőség).
-Ha X → Y és Y → Z, akkor X → Z (tranzitivitás).- Ha X → Y , akkor XZ → YZ (bővíthetőség).
- igazság tétel
- teljesség tétel
Az axiómák következményei
- X → Y és X → Z ⊨ X → YZ (egyesítési szabály).
- X → Y és WY → Z ⊨ XW → Z (pszeudotranzitivitás)
- X → Y és Z ⊆ Y ⊨ X → Z (dekompozíciós/felbontási szabály)
Attribútumhalmaz lezártja
- bizonyos attrb értékei mellett milyen más attrb értékeit tekinthetjük még ismertnek
- kihasználva a FF
- alg meghatározható: X(i+1) = X(i) ∪ {A|∃V ⊆ X(i) , V → U ∈ F és A ∈ U}
Függőséghalmaz lezártja
click to edit
- a normálforma definíciókból és viszonyukból az következik, hogy egy reláció redundanciáját, az okozhatja, ha az attr tranzitívan függnek a kulcsoktól
- célszerű BCNF sémákat kial
- BCNF sémák esetén elég csak akulcsattribútumok értékeinek egyediségét biztosítani, a többi atrb értékét már tetsz vihetjük fel
- a redundancia minél alacsonyabb szinten tartása tehát kritikus az ún tranzakció kezelő rendszereknél
- valóságban más szempontok is vannak, ezért nem lesz mód h mindig ilyet alakítsunk ki
Tervezés ER-diagramból
- Er-diagrammot relációs sémákká kíséreljük meg átalakítani
- az átalakítás teljes, ha megmondjuk, hogy az ER-diagram elemeit hogyan kell a relációs adatmodell megengedett adatstruktúráiba transzformálni
1
- az egyedhalmazokat olyan relációs sémával ábrázoljuk, amely tartalmazza az entitáshalmaz össze attribútumát
- a reláció minden egyes n-ese az entitáshalmaznak pontosan egy példányát fogja azonosítani
- ha az entitáshalmazok között olyan is van, amelynek egyes attrb egy entitáshalmaz egy isa kapcsolaton keresztül meghatározza, akkor a specializált entitáshalmazhoz rendelt relációs sémába az általánosabb entitáshalmaz attb is fel kell venni
2
- a kapcsolattípusokat olyan relációs sémákká alakítjuk, amelyek attb között szerepel a kapcsolatban résztvevő összes entitáshalmaz kulcsa is
- feltételezzük, hogy a két entitáshalmaz vmely kulcsattribútuma nem azonos nevű még akkor sem, ha az entitáshalmazok megegyeznek
- névkonfliktus esetén az attb átnevezéssel kell megkül
- az így kapott relációban minden egyes n-es olyan entitáspéldányokat rendel egymáshoz, amelyek a szóban forgó kapcsolatban vannak egymással
- a kapcsolatok relációs sémékba átalakítására a kapcsolat funkcionalitása és egyéb tulajdonságai fgben számos más lehetőség is van, amelyek adott esetben jobbak is lehetnek a bemutatott, egészen általános módszeről
- idegen kulcsos megvalósítás