Skip navigation

Kulcsok meghatározása

Á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ó.

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?

Definíció

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ő.

Algoritmus az X attibútumhalmaz lezártjának kiszámítására

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.

Példa

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}

Állítás

Egy K attribútumhalmaz akkor és csak akkor szuperkulcs, ha K+ =A.

Bizonyítás:

Belátható, hogy K→A akkor és csak akkor teljesül, ha K+ =A.

Kulcs meghatározása

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}.

Megjegyzés

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.

  • Ne vegyünk ki olyan attribútumot, amely nem szerepel a függőségekben! Ez ugyanis azt jelenti, hogy őt másképpen nem tudjuk hozzávenni az attribútumhalmazhoz.
  • Ne vegyünk ki olyan attribútumot, amely csak előfordul valamely függőség bal oldali halmazában, de a jobb oldaliban nem. Ez azt jelenti ugyanis, hogy nem tudjuk hozzávenni a halmazhoz.