Adatbáziskezelés
Funkcionális függ ˝oségek
Katona Gyula Y.
Katona Gyula Y. Adatbáziskezelés 1 / 29
Relációs sémák tervezése
Relációs adatbázistervezés nagy el ˝onye: van elméleti alap Kérdés(ek):
I Mik a jó relációk?
I Milyen relációkat érdemes tárolni?
I Hogyan alakíthatunk tetsz ˝oleges sémákat jókká?
Cél: El akarunk kerülni kellemetlen jelenségeket, anomáliákat
Katona Gyula Y. Adatbáziskezelés 2 / 29
Anomáliák
Módosítási anomália:pl. ha a Termék(Termel ˝o, Cím, Terméknév, Ár) reláció esetén egy termel ˝o címe több sorban is el ˝ofordul, változáskor mindenhol át kell írni. Hiba esetén inkonzisztencia.
Beszúrási anomália:Nem tudunk beszúrni adatot, ha az egyik attribútum hiányzik, mert nem ismerjük (és nem lehet NULL).
Törlési anomália:Csak egész sorok törölhet ˝ok, így elveszhetnek hasznos adatok.
Pl. ha egy termel ˝o épp nem termel semmit, kitöröljük a címét is.
Katona Gyula Y. Adatbáziskezelés 3 / 29
Mikor jó egy relációs séma?
A relációk, tárolás jósága attól függ, hogy milyen megkötések vannak az adatokon.
Megszorítások két osztálya:
Értékfügg ˝o: Pl. ÁR≥0, ÉLETKOR egész≤1000, NÉV karaktersor, CÍM6=NULL, (típusleírások)
Értékfüggetlen:TERMÉKNÉV, TERMEL ˝O kulcs;∀TERMEL ˝O-nek egy címe van, egy TERMEL ˝O azonos nev ˝u termékéb ˝ol csak egy árú van
Utóbbiak: az attribútumok mennyire függenek egymástól =⇒funkcionális függ ˝oség
Katona Gyula Y. Adatbáziskezelés 4 / 29
Funkcionális függ ˝oségek
Jelölések: R(A1, . . . ,An)reláció,Xattribútum halmaz =⇒X⊆R X={Ai1,Ai2, . . . ,Aik}helyettX=Ai1Ai2. . .Aik
Definíció
Y ⊆Rfunkcionálisan függX⊆R-t ˝ol, (jelölés: X →Y ), ha R bármely két sorára igaz, hogy ha ˝ok megegyeznek X -en, akkor Y -on is megegyeznek.
Pl.X =TERMEL ˝O, TERMÉKNÉV;Y=ÁR =⇒X→Y
Katona Gyula Y. Adatbáziskezelés 5 / 29
Függések típusai
Azok az érdekes összefüggések, amik minden ilyen attribútumokkal rendelkez ˝o táblában mindig fenn kell, hogy álljanak: axiómaszer ˝u feltételek, az adatbázis bármely változása esetén is fennállnak =⇒érdemi függés
Azok, amik csak véletlenül, csak egy pillanatban állnak fenn =⇒eseti függés (ezek nem érdekelnek, például lehetséges hogy egy adott pillanatban minden ár csak egyszer szerepel és ekkor úgy t ˝unik, mintha
Ár→Termék érvényes függés lenne)
Katona Gyula Y. Adatbáziskezelés 6 / 29
Relációs séma definíciója
Tehát az érdemi függések megadása modellezési kérdés: a séma megadásakor döntjük el, hogy milyen függéseket akarunk fenntartani mindenáron.
Ezentúl a relációs sémának része lesz a függ ˝oségek halmazaFis =⇒(R,F) Vagyis megadjuk, hogy mik a séma attribútumai és mik az érdemi függései.
Katona Gyula Y. Adatbáziskezelés 7 / 29
Funkcionális függ ˝oségek, példák
R(TERMEL ˝O, TERMÉKNÉV, ÁR, CÍM)
TERMEL ˝O, TERMÉKNÉV→TERMEL ˝O, TERMÉKNÉV, ÁR, CÍM TERMEL ˝O→CÍM
S(NÉV, CÍM, VÁROS, IRÁNYÍTÓSZ, TELEFON) CÍM, VÁROS→IRÁNYÍTÓSZ
IRÁNYÍTÓSZ→VÁROS
Katona Gyula Y. Adatbáziskezelés 8 / 29
Funkcionális függések
Egy adott reláció adott állapotából nem következik semmilyen érdemi függés.
Viszont látszódhat olyan, hogy mi nem függhet mit ˝ol.
X →Yteljesülhet úgy is, hogy az adott relációban nincs is két olyan sor, amik X-en megegyeznek.
X-nek ésY-nak nem kell diszjunktaknak lenniük
A séma megadása csak a keretet jelenti, beleértve a függeseket is, ha ezt feltöltjük adatokkal, akkor kapunk egy a sémára illeszked ˝o relációt. Ar reláció akkor illeszkedik az(R,F)sémára ha az attribútumai azR-ben adottak és teljesülnek benne azF függések.
Katona Gyula Y. Adatbáziskezelés 9 / 29
Logikai következmény
Kérdés
Ha adott egy F függéshalmaz és egy reláció, amiben F függései igazak, akkor milyen további függések lesznek még biztosan igazak?
Például: ha HALLGATÓ, TÁRGY→GYAKORLAT és GYAKORLAT→GYAKVEZ, akkor HALLGATÓ, TÁRGY→GYAKVEZ.
Azaz általánosabban: haXY →ZésZ →W, akkor attól függetlenül, hogy mi a reláció és miX,Y,Z,W, igaz lesz, hogyXY →W.
Katona Gyula Y. Adatbáziskezelés 10 / 29
Logikai következmény
Definíció
Adott(R,F)relációs séma. Az X→Y függéslogikai következménye(szemantikai következménye) F -nek, ha az X→Y minden olyan r relációban teljesül, ahol F függései mind teljesülnek.
Jelölése: F|=X →Y
Azaz ez a fogalom azt adja meg, hogy mely függéseknek kell szükségszer ˝uen teljesülniük minden olyan sémában/relációban, aholF függései fennállnak.
Hogyan lehetne ezeket meghatározni, illetve eldönteni, hogy egy függés ilyen-e?
Katona Gyula Y. Adatbáziskezelés 11 / 29
Levezethet ˝oség
Kérdés
Hogyan lehet eldönteni, hogy egy függés logikai következménye-e egy F függéshalmaznak?
Felveszünk axiómákat, és azok segítségével próbálunk új függéseket levezetni F-b ˝ol. Azt nézzük, hogy mely függések vezethet ˝ok leF-b ˝ol.
Persze ehhez az kell, hogy pontosan azokat lehessen levezetniF-b ˝ol, amik logikai következményei neki.
Levezethet ˝oség jele:F`X→Y
Katona Gyula Y. Adatbáziskezelés 12 / 29
Logikai következmény vs. levezethet ˝oség
Mindjárt bevezetünk axiómákat (ezekkel pedig levezethet ˝oséget) és azt lehet belátni, hogy |= ⇐⇒ `.
(Pl. logikában így van.)
|=⇒ `:Teljességi tétel, azaz ami igaz az levezethet ˝o.
` ⇒ |=:Igazság tétel, azaz csak igaz dolgok vezethet ˝ok le.
Katona Gyula Y. Adatbáziskezelés 13 / 29
Armstrong axiómák
Definíció
Egy X→Y függ ˝oség akkor vezethet ˝o le egy adott F függ ˝oséghalmazból, ha az alábbi axiómák véges sokszori ismételt alkalmazásával F -b ˝ol megkapjuk X→Y -t. Jele:
F `X→Y .
1 Reflexivitás: HaX,Y ⊆RésY ⊆X, akkorX→Y.
2 Kiegészítési tulajdonság: HaX,Y⊆RésX→Y, akkorXW→YWigaz tetsz ˝olegesW ⊆R-re.
3 Tranzitivitás: HaX,Y,Z⊆R,X→YésY →Z, akkorX→Z.
Katona Gyula Y. Adatbáziskezelés 14 / 29
Igazságtétel bizonyítása (` ⇒ | =)
Azt kell belátni, hogy ha egy függés (esetleg több lépésben) levezethet ˝oF-b ˝ol a három axióma segítségével, akkor ez a függés logikai következménye isF-nek, azaz minden olyan relációban, aholFminden függése teljesül, ott teljesül a levezetett függés is.
Ehhez elég azt belátni, hogy külön-külön, az egyes axiómák egyszeri használatakor ez igaz.
Vagyis mindhárom axiómát meg fogjuk most nézni.
Katona Gyula Y. Adatbáziskezelés 15 / 29
Igazságtétel bizonyítása (2)
1 Reflexivitás: Azt kell belátni, hogy mindenr relációban, mindenY ⊆X ⊆R attribútumhalmaz eseténX→Yigaz, azaz har bármely két adott sora megegyezikX-en, akkor megegyeznekY-on is. De mivelY ⊆X, ezért nyilván megegyeznekY-on, haX-en megegyeztek.
2 Kiegészítési tulajdonság: Az kell, hogy ha egyR-re illeszked ˝orrelációbanX →Y igaz, akkorXW→YWis igaz lesz. Vegyünk két sortr-ben, ami megegyezik XW-n. Ekkor ezek megegyeznekX-en ésW-n is, külön-külön. MivelX →Y, így megegyeznekY-n is, tehátYW-n is.
Katona Gyula Y. Adatbáziskezelés 16 / 29
Igazságtétel bizonyítása (3)
1 Tranzitivitás: Az kell, hogy ha egyR-re illeszked ˝orrelációbanX →Y ésY →Z igaz, akkorX→Z is igaz lesz. Vegyünk két sort, ami megegyezikX-en. Mivel X →Y, megegyeznekY-n is. De mivelY →Z, megegyeznekZ-n is.
Vagyis készen vagyunk, mert mindhárom axiómára igaz, hogy az axióma bal oldalának logikai következménye a jobb oldala, így az axiómák véges sokszori alkalmazása esetén is igaz lesz, hogy a kiindulási függéshalmaz logikai következménye a levezetett függés.
Katona Gyula Y. Adatbáziskezelés 17 / 29
Példa
HaR(Város,Utca,Irányítószám)ésF ={VU→I,I→V}, akkorF `IU→VIU (és mivel`⇒|=-t már láttuk, ezértF |=IU→VIU).
i) I→V: ezF-beli
ii) IU→VU: kiegészítveU-val iii) IU→IVU: kiegészítveI-vel
Katona Gyula Y. Adatbáziskezelés 18 / 29
Levezethet ˝o szabályok
Néhány további szabály, ami levezethet ˝o az axiómákból (és az igazságtétel miatt igazak is.) Mivel ezek levezethet ˝ok az axiómákból, ezeket is használhatjuk mostantól levezetések során.
[Unió szabály]{X→Y, X→Z} `X→YZ i) X→Y: ezF-beli
ii) XZ →YZ: kiegészítveZ-val iii) X→Z: ezF-beli
iv) X→XZ: kiegészítveX-vel v) X→YZ: iv) és ii) + tranzitivitás
Katona Gyula Y. Adatbáziskezelés 19 / 29
Levezethet ˝o szabályok
[Áltranzitiv szabály]{X →Y, YW →Z} `XW →Z i) X→Y: ezF-beli
ii) XW→YW: kiegészítveW-val iii) YW→Z: ezF-beli
iv) XW→Z: ii) és iii) + tranzitivitás
Katona Gyula Y. Adatbáziskezelés 20 / 29
Levezethet ˝o szabályok
[Felbontási szabály] Tegyük fel, hogyZ ⊆Y, ekkor{X →Y} `X →Z i) X→Y: ezF-beli
ii) Y →Z: reflexivitás
iii) X→Z: i) és ii) + tranzitivitás
Katona Gyula Y. Adatbáziskezelés 21 / 29
Teljességi tétel
Az igazságtétel fordítottja: azazF |=X→Y ⇒F `X →Y. Ez is igaz, nem bizonyítjuk.
Katona Gyula Y. Adatbáziskezelés 22 / 29
Függéshalmaz lezárása
Definíció
Ha F egy függéshalmaz, akkor a lezártja (jele F+) az F -b ˝ol levezethet ˝o összes függés:
F+={X→Y|F `X →Y}
Jó:mert|=⇐⇒ `miatt ez éppen azF-b ˝ol szükségszer ˝uen következ ˝o összes függést adja meg.
Gond:nagyon nagy lehet
Pl.R(A1, . . . ,An,B1, . . .Bn)ésF={Ai→Bj|1≤i,j≤n}, akkor ez legalább 2ndb függésmertF+-ban benne van mindenAi1. . .Aik →Bj1. . .Bjl, azaz
(2n−1) (2n−1)≈22neleme van.
Katona Gyula Y. Adatbáziskezelés 23 / 29
Attribútumhalmaz lezárása
Ezért ehelyett valami mást nézünk, amit könnyebb lesz meghatározni és jól közelíti F+-t:
Definíció
Ha X egy attribútum halmaz(R,F)-ben, akkor Xlezártja X+(F) ={A∈R|F `X →A}, azaz azon attribútumok, amik függnek X -t ˝ol.
Nyilván igaz, hogyX⊆X+(F)⊆R
Katona Gyula Y. Adatbáziskezelés 24 / 29
Attribútumhalmaz lezárása
Lemma
(Fontos!!!) F`X →Y ⇐⇒Y ⊆X+(F)
=⇒: Tegyük fel, hogyF `X →Y és legyenA∈Y.
F `X→A, hiszen vegyükX→Y levezetését és alkalmazzuk a felbontási szabályt a végén.
Definíció szerint ekkorA∈X+(F). Ez mindenA∈Y-ra igaz.
⇐=: LegyenY =A1. . .Ak ⊆X+(F).
Így definíció szerint∀Ai ∈Y-raF`X→Ai.
EkkorX→Ylevezetése: vesszük azAi-k levezetését és a végén alkalmazzuk az uniós szabálytk−1-szer.
Katona Gyula Y. Adatbáziskezelés 25 / 29
Fontos lemma következménye
Ha minden X-re ismerjük/ki tudjuk számítaniX+(F)-et, akkor tetsz ˝olegesX →Y függésr ˝ol eldönthet ˝o, hogyF+-beli-e vagy sem,
mertX→Y∈F+pontosan akkor teljesül (definíció szerint), haF `X→Y, de ez meg az el ˝obbi lemma szerint pontosan akkor van, haY ⊆X+(F)
Mindjárt látjuk, hogyX+(F)kiszámolására lesz gyors algoritmus.
Katona Gyula Y. Adatbáziskezelés 26 / 29
X
+(F ) kiszámítása
Algoritmus:
X0=X, ... Xi=. . . ,
Xi+1=Xi∪ {A∈R|van olyanU→V∈F, hogyU⊆XiésA∈V}, ...
X+(F) =Xutolsó, (amikor már nem n ˝o)
Ezt persze be kéne látni, de ezt most kihagyjuk :)
Katona Gyula Y. Adatbáziskezelés 27 / 29
Példa
R(A,B,C,D), F ={A→B, B→C, BC→D}, A+(F) =?
X0={A}, X1={A,B}, X2={A,B,C}, X3={A,B,C,D}=Xutolsó
Katona Gyula Y. Adatbáziskezelés 28 / 29
Kulcs
Definíció Definíció:
X⊆Rszuperkulcsaaz(R,F)sémának, ha F`X→R. Másképpen, ha R=X+(F).
X⊆Rkulcsaaz(R,F)sémának, ha szuperkulcs és nincs olyan valódi részhalmaza, ami szuperkulcs.
Példa:
F ={TERMEL ˝O, TERMÉKNÉV→ÁR;TERMEL ˝O→CÍM}
X=TERMEL ˝O, TERMÉKNÉV
=⇒ X+(F) =TERMEL ˝O, TERMÉKNÉV, ÁR, CÍM TERMEL ˝O+(F) =TERMEL ˝O, CÍM
TERMÉKNÉV+(F) =TERMÉKNÉV
=⇒ X kulcs
Katona Gyula Y. Adatbáziskezelés 29 / 29