Állítás
Egy K (⊆ A) attribútumhalmaz akkor és csak akkor szuperkulcs, ha K→A.
Bizonyítás:
A kulcs és a funkcionális függés definíciója alapján nyilvánvaló.
Egy K (⊆ A) attribútumhalmaz akkor és csak akkor szuperkulcs, ha K→A.
Bizonyítás:
A kulcs és a funkcionális függés definíciója alapján nyilvánvaló.
Felmerül a kérdés, hogy ha ismerjük a R(A,F) relációséma F függéshalmazát, meg tudjuk-e állapítani a kulcsokat?
Egy X attribútumhalmaz lezártja az F függőségi halmaz szerint X+ = {Ai | X→Ai }, vagyis az összes X-től függő attribútumokból áll. Pontosabban: X+ azon Ai attribútumokból áll, amelyekre az X→Ai függőség F-ből levezethető.
Az X = X(0) ⊂ X(1) ⊂ ... ⊂ X(n) = X+ halmazsorozatot képezzük. X (i) -ből X (i+1) előállítása: keressünk olyan F-beli P→Q függőséget, amelyre P ⊆ X(i) , de Q már nem része X(i) -nek!
Ha találunk ilyet, akkor X(i+1) := X(i) U Q, ha nem, akkor X(i) = X+, vagyis elértük a lezártat. Mivel A véges halmaz, így az eljárás véges sok lépésben véget ér.
Könnyen belátható, hogy a fenti módon generált X+ halmaz bármely eleme függ X-től. Annak bizonyításától, hogy X+ az összes X-től függő elemet tartalmazza, itt eltekintünk.
Tekintsük az R=(Z,F) sémát, ahol Z = {A, B, C, D, E}, és F tartalmazza az alábbi függőségeket:
{C} → {A}
{B} → {C,D}
{D,E} → {C}
Határozzuk meg a {B}+ halmazt!
X(0) = {B}
X(1) = {B} U {C,D} = {B,C,D}, mert {B} → {C,D}
X(2) = {B,C,D} U {A,C,D} = {A,B,C,D}, mert {C} → {A} és {B} → {C,D}
X(3) = X(2) , tehát
{B} + = {A,B,C,D}
Egy K attribútumhalmaz akkor és csak akkor szuperkulcs, ha K+ =A.
Belátható, hogy K→A akkor és csak akkor teljesül, ha K+ =A.
Először legyen K=A, ez mindig szuperkulcs. K-ból sorra elhagyunk attribútumokat, és mindig ellenőrizzük K+ =A teljesül-e.
A fenti R=(Z, F) séma esetén jól látható, hogy {B, E} szuperkulcs. Most vizsgáljuk meg, hogy Z-ből B-t illetve E-t elhagyva szuperkulcsot kapunk-e:
{A, C, D, E}+ = {A, C, D, E}
{A, B, C, D} + = {A, B, C, D}
Egyik esetben sem kaptunk szuperkulcsot, amiből az következik, hogy minden kulcsnak tartalmaznia kell B-t és E-t, vagyis az egyetlen kulcs {B,E}.
Célszerű úgy meghatározni a kulcsokat, hogy kezdetben minden attribútumot felveszünk az X halmazba, ez mindig szuperkulcs, majd egyenként elvesszünk belőle attribútumokat és ellenőrizzük, hogy a maradék attribútumhalmaz lezártja visszaadja-e az eredeti attribútumhalmazt.
Licensed under the Creative Commons Attribution Share Alike License 4.0