ADATBÁZISOK 4. gyakorlat: Redundanciák, funkcionális függőségek
Példa: szállodai adattábla vendég kód vendég név 200005 Pécsi Ádám 333230 Tóth Júlia 200005 Pécsi Ádám 123777 Szép László lakcím Budapest, Vár u. 2. Szeged, Retek u. 9. Budapest, Vár u. 2. Pécs, Király u. 11. szoba szám ágyak száma érkezés távozás 104 2 2014. 03. 01. 2014. 03. 04. 210 3 2014. 09. 10. 2014. 09. 16. 121 2 2014. 08. 02. 2014. 08. 05. 210 3 2015. 02. 13. 2015. 02. 19. A vendégkódhoz egyértelműen hozzárendelhető a vendég neve és lakcíme. A szobaszámhoz egyértelműen hozzárendelhető az ágyak száma. Redundáns tárolás!
Funkcionális függőség Legyen R(A 1,, A n ) egy relációséma, és P, Q {A 1,, A n }. P-től funkcionálisan függ Q, ha bármely R feletti T tábla esetén valahányszor két sor megegyezik P-n, akkor megegyezik Q-n is. Jelölés: P Q Példa: vendég kód vendég név 200005 Pécsi Ádám 333230 Tóth Júlia 200005 Pécsi Ádám 123777 Szép László lakcím Budapest, Vár u. 2. Szeged, Retek u. 9. Budapest, Vár u. 2. Pécs, Király u. 11. {vendégkód} {vendégnév, lakcím} szoba szám ágyak száma érkezés távozás 104 2 2014. 03. 01. 2014. 03. 04. 210 3 2014. 09. 10. 2014. 09. 16. 121 2 2014. 08. 02. 2014. 08. 05. 210 3 2015. 02. 13. 2015. 02. 19. {szobaszám} {ágyak száma}
Funkcionális függőség Legyen R(A 1,, A n ) egy relációséma, és P, Q {A 1,, A n }. P-től funkcionálisan függ Q, ha bármely R feletti T tábla esetén valahányszor két sor megegyezik P-n, akkor megegyezik Q-n is. Jelölés: P Q Példa: vendég kód vendég név 200005 Pécsi Ádám 333230 Tóth Júlia 200005 Pécsi Ádám 123777 Szép László lakcím Budapest, Vár u. 2. Szeged, Retek u. 9. Budapest, Vár u. 2. Pécs, Király u. 11. {vendégkód} {vendégnév, lakcím} szoba szám ágyak száma érkezés távozás 104 2 2014. 03. 01. 2014. 03. 04. 210 3 2014. 09. 10. 2014. 09. 16. 121 2 2014. 08. 02. 2014. 08. 05. 210 3 2015. 02. 13. 2015. 02. 19. {szobaszám} {ágyak száma}
Szuperkulcs, kulcs Legyen X = {A 1, A 2,, A n } attribútumhalmaz. Az R(A 1, A 2,, A n ) sémában a K X halmaz szuperkulcs, ha K X. A minimális szuperkulcsot kulcsnak nevezzük.
Példa: színházműsor nyilvántartása SZÍNHÁZ(színháznév, megye, település, író, cím, műfaj, dátum, időpont) Az alábbi funkcionális függőségeket feltételezzük: {színháznév} {megye, település} {település} {megye} {író, cím} {műfaj} {színháznév, dátum, időpont} {megye, település, író, cím, műfaj} Mely attribútumok alkotják a séma kulcsát? Milyen redundanciák jellemzik a sémát?
Példa: színházműsor nyilvántartása SZÍNHÁZ(színháznév, megye, település, író, cím, műfaj, dátum, időpont) {színháznév} {megye, település} {település} {megye} {író, cím} {műfaj} {színháznév, dátum, időpont} {megye, település, író, cím, műfaj} {színháznév, dátum, időpont} szuperkulcs az utolsó függés miatt, és semelyik valódi részhalmaz sem szuperkulcs. Tehát ez egyben kulcs is, és nincs más kulcs. Az első három függés szerint a megye, település, műfaj adatok redundánsak.
Attribútumhalmaz lezártja X attribútumhalmaz lezártja az összes X- től függő attribútumból áll, jelölés: X + Számítása: Legyen X (0) := X i-edik iteráció: keressünk olyan P Q függést, ahol P X (i), de Q X (i). Ha találunk ilyet, akkor X (i+1) := X (i) Q. Ha nem találunk ilyen függést, akkor megállunk, és X + := X (i).
Példa Az R(A, B, C, D, E) relációsémában az alábbi funkcionális függőségeket feltételezzük: {C} {A} {B} {C,D} {D,E} {C} Határozzuk meg a {B} + halmazt!
Példa R(A, B, C, D, E) {C} {A} {B} {C,D} {D,E} {C} X (0) = {B}
Példa R(A, B, C, D, E) {C} {A} {B} {C,D} {D,E} {C} X (0) = {B} X (1) = {B} U {C,D} = {B,C,D}, mert {B} {C,D}
Példa R(A, B, C, D, E) {C} {A} {B} {C,D} {D,E} {C} X (0) = {B} X (1) = {B} U {C,D} = {B,C,D}, mert {B} {C,D} X (2) = {B,C,D} U {A,C} = {A,B,C,D}, mert {C} {A}
Példa R(A, B, C, D, E) {C} {A} {B} {C,D} {D,E} {C} X (0) = {B} X (1) = {B} U {C,D} = {B,C,D}, mert {B} {C,D} X (2) = {B,C,D} U {A,C} = {A,B,C,D}, mert {C} {A} X (3) = X (2), tehát {B} + = {A,B,C,D}
Kulcs meghatározása (általános eset) R reláció attribútumhalmazát jelölje X. Először legyen K egy szuperkulcs. Például K := X, ez mindig szuperkulcs. K-ból sorra elhagyunk attribútumokat, és mindig ellenőrizzük, hogy K + = X teljesül-e.
Megjegyzések P Q bal oldal jobb oldal A továbbiakban feltesszük, hogy a függéshalmaz függései teljesen nemtriviálisak, azaz P Q =. Ha egy attribútum semelyik függés jobb oldalán sem szerepel, akkor biztosan része a kulcs(ok)nak. Ha egy attribútum szerepel valamely függés jobb oldalán, de nem szerepel egyetlen függés bal oldalán sem, akkor biztosan nem lehet része a kulcs(ok)nak.
Feladat Az R(A, B, C, D, E, F, G) relációsémában az alábbi funkcionális függőségeket feltételezzük: {A} {D,E} {C,E} {B,F} {D,F} {G} Határozzuk meg a séma kulcsát!
Feladat Az R(A, B, C, D, E, F, G, H, I) relációsémában az az alábbi funkcionális függőségeket feltételezzük: {A,B} {C,D} {B,C} {F} {E} {G} {B} {H, I} {H} {C, I} Határozzuk meg a séma kulcsát!
Feladat Az R(A, B, C, D, E, F, G) relációsémában az alábbi funkcionális függőségeket feltételezzük: {A} {B,C,D} {D,E} {G} {D} {C} {B} {A,F} Határozzuk meg a séma kulcsát!