Adatbázisok elmélete 12. el ˝ oadás
Katona Gyula Y.
Budapesti M ˝uszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz.
I. B. 137/b
kiskat@cs.bme.hu
http://www.cs.bme.hu/˜kiskat
2005
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 1/19
Relációs sémák tervezése
Van elméleti alap =⇒érv a relációs technika mellett (Objektumosnak nincs ilyen.)
Kérdés:
• Mik a jó relációk?
• Milyen relációkat érdemes tárolni?
• Hogyan alakíthatunk tetsz ˝oleges relációkat jókká?
Cél:El akarunk kerülni kellemetlen jelenségeket,anomáliákat:
• Módosítási anomália:pl. ha aTermé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.
Relációs sémák tervezése
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ÍM,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óbbi:az attribútumok mennyire függenek egymástól =⇒funkcionális függ ˝oség
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 3/19
Funkcionális függ ˝ oségek
Jelölés: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),haRbármely két sorára igaz, hogy ha ˝ok megegyeznekX-en, akkorY-on is megegyeznek.
Pl.X=TERMEL ˝O, TERMÉKNÉV;Y=ÁR =⇒X→Y Megjegyzések:
• Azok az érdekes összefüggések, amikmindenilyen attribútumokkal rendelkez ˝o táblában 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, csakegy 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)
• 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.
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 4/19
Funkcionális függ ˝ oségek
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 NÉV, CÍM, VÁROS→TELEFON
• 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, amikX-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.Arreláció akkor illeszkedik az(R,F)sémára ha az attribútumai azR-ben adottak és teljesülnek benne azFfüggések.
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 5/19
Logikai következmény
Kérdés:ha adott egyFfüggéshalmaz és egy reláció, amibenFfüggései igazak, akkor milyen további függések lesznek még biztosan igazak?
Például:haHALLGATÓ, TÁRGY→GYAKORLATésGYAKORLAT→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 X,Y,Z,W, igaz lesz, hogyXY→W.
Definíció.Adott(R,F). AzX→Yfüggéslogikai következménye(szemantikai következménye)F-nek, ha azX→Yminden olyanrrelációban teljesül, aholFfü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, aholFfüggései fennállnak.
Hogyan lehetne ezeket meghatározni, illetve eldönteni, hogy egy függés ilyen-e?
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 6/19
Logikai következmény
Felveszünk axiómákat, és azok segítségével próbáljuk levezetni. Persze ehhez az kell, hogy pontosan azokat lehessen levezetniF-b ˝ol, amik logikai következményei neki.
Levezethet ˝oség jele:F`X→Y
Tehát bevezetünk axiómákat, levezethet ˝oséget és belátjuk, hogy |= ⇐⇒ `. (Pl. logikában így van.)
|=⇒ `: Teljességi tétel,ami igaz az levezethet ˝o.
` ⇒ |=: Igazság tétel,csak igaz dolgok vezethet ˝ok le.
Definíció.EgyX→Yfügg ˝oség akkor vezethet ˝o le egy adottFfügg ˝oséghalmazból, ha az axiómák ismételt alkalmazásávalF-b ˝ol megkapjukX→Y-t.Jele:F`X→Y.
Armstrong-axiómák
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 ˝oleges W⊆R-re.
3. Tranzitivitás:HaX,Y,Z⊆R,X→YésY→Z, akkorX→Z.
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 7/19
Igazságtétel bizonyítása
Bizonyítás: (Igazság tétel)
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álata ilyen függést ad.
1. Reflexivitás:Azt kell belátni, hogy mindenrrelációban, mindenY⊆X⊆R
attribútumhalmaz eseténX→Yigaz, azaz harbá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→Yigaz, akkorXW→YWis igaz lesz. Vegyünk két sortr-ben, ami megegyezikXW-n. Ekkor ezek megegyeznekX-en ésW-n is, külön-külön. MivelX→Y, így megegyeznekY-n is, tehát YW-n is.
√
3. Tranzitivitás:Az kell, hogy ha egyR-re illeszked ˝orrelációbanX→YésY→Zigaz, akkorX→Zis igaz lesz. Vegyünk két sort, ami megegyezikX-en. MivelX→Y, megegyeznekY-n is. De mivelY→Z, megegyeznekZ-n is.
√
Példa
Állítás.HaR(Város,Utca,Irányítószám)ésF={VU→I,I→V}, akkorF`IU→V IU (és mivel
√
`⇒|=-t már láttuk, ezértF|=IU→V IU).Bizonyítás:
i) I→V: ezF-beli
ii) IU→VU: kiegészítveU-val iii) IU→IVU: kiegészítveI-vel
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 9/19
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).
Állítás(Unió szabály).{X→Y, X→Z} `X→Y Z Bizonyítás:
i) X→Y: ezF-beli
ii) XZ→Y Z: kiegészítveZ-val iii) X→Z: ezF-beli
iv) X→XZ: kiegészítveX-vel v) X→Y Z: iv) és ii) + tranzitivitás
Levezethet ˝ o szabályok
Állítás(Áltranzitiv szabály).{X→Y, YW →Z} `XW→Z Bizonyítás:
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
Állítás(Felbontási szabály).Tegyük fel, hogyZ⊆Y, ekkor{X→Y} `X→Z Bizonyítás:
i) X→Y: ezF-beli ii) Y→Z: reflexivitás
iii) X→Z: i) és ii) + tranzitivitás
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 11/19
Lezárás
Definíció.HaFegy függéshalamaz, akkor alezártjaF+azF-b ˝ol levezethet ˝o összes függés:
F+={X→Y|F`X→Y}
Jó:mert ha majd belátjuk|=⇐⇒ `-t, akkor kiderül, hogy 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 ezn2db függés F+-ban benne van mindenAi1. . .Aik→Bj1. . .Bjl, azaz(2n−1) (2n−1)≈22neleme van.
Ezért ehelyett valami mást nézünk, amit könnyebb lesz meghatározni és jól közelítiF+-t:
Definíció.HaXegy attribútum halmaz(R,F)-ben, akkorlezártja X+(F)={A∈R|F`X→ A}, azaz azon attribútumok, amik függnekX-t ˝ol.
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 12/19
Attribútumhalmaz lezárása
Állítás.X⊆X+(F)⊆R
Lemma.(Fontos!!!)F`X→Y⇐⇒Y⊆X+(F)
Bizonyítás: =⇒: Tegyük fel, hogyF`X→Yés legyenA∈Y.
F`X→A, hiszen vegyükX→Ylevezeté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.
√
Következménye:Ha minden X-re ismerjük/ki tudjuk számítaniX+(F)-et, akkor tetsz ˝oleges X→Yfü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)
Megjegyzés:Majd látjuk, hogyX+(F)kiszámolására lesz gyors algoritmus.
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 13/19
Teljességi tétel
Tétel(Teljességi tétel).HaF|=X→Y, akkorF`X→Y.
Bizonyítás: Tegyük fel indirekt, hogy van olyanX→Yfüggés ésFfüggéshalmaz, hogy X→Ynem vezethet ˝o leF-b ˝ol (F0X→Y), noha logikai következménye neki (F|=X→Y).
Ez utóbbi azt jelenti, hogy minden olyan relációban, amibenFfügg ˝oségei teljesülnek, ha X-en megegyezik két sor, akkor azok megegyeznekY-on is.
Úgy jutunk ellentmondásra, hogy konstruálunk egy olyanrrelációt, aholFfügg ˝oségei teljesülnek, deX6→Y, ami ellentmondF|=X→Y-nak.
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 14/19
Bizonyítás (folyt.)
r X+(F)
z }| { X
A1 . . . .
z }| {
. . . An t1 1 1 1 1 1 1 1. . . .1 1 1 1 1 1 1 t2 0 0 0 1 1 1 1. . . .1 1 1 1 0 0 0
Tehátrkét soros reláció,X+(F)-en megegyezik a két sor, a többin különbözik.
Állítás.r-ben teljesülnekFfüggései.
Bizonyítás: LegyenU→V∈F.
HaU*X+(F) =⇒U→Vigaz, hiszen nincs olyan két sor, amiU-n megegyezik.
HaU⊆X+(F), akkor lemma miattF`X→U.
Tranzitivitás miattF`X→V. Lemma =⇒V⊆X+(F),V-n megegyezik a két sor.
√
Állítás.r-ben nem igazX→Y.
Bizonyítás: MivelF0X→Y, ezért a fontos lemma miattY*X+(F), azazYkilógX+(F)-b ˝ol, abból a részb ˝ol, ahol a két sor egyenl ˝o.
Vagyis a két sor egyenl ˝oX-en, de nem egyenl ˝oY-on, ígyX→Ynem igazr-ben.
Tehátrtényleg olyan, hogy benneFminden függése fennáll, deX→Ynem, ami bizonyítja, hogyF6|=X→Y.
Következmény.`és|=felcserélhet ˝o.
ADATBÁZISOK ELMÉLETE12.EL ˝OADÁS 15/19
Kulcs
Definíció.X⊆Rszuperkulcsaaz(R,F)sémának, haF`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
=⇒ Xkulcs
X
+(F) kiszámítása
Algoritmus:
X0=X, .. . Xi=. . . ,
Xi+1=Xi∪ {A∈R|van olyanU→V∈F, hogyU⊆Xiés A∈V}, ..
.
X+(F)=Xutolsó,(amikor már nem n ˝o)