Funkcinės priklausomybės ir raktai

Tarkime, kad R = (A1, A2,…, An) yra santykių schema, o X ir Y – du šios schemos atributų poaibiai. Sakoma, kad X su Y sieja funkcinė priklausomybė (FP) X Y , jeigu bet kuriame schemos R santykyje r(R) dviejuose kortežuose t1 ir t2 pasikartojant X-komponentams t1(X) ir t2(X) būtinai turi pasikartoti ir Y-komponentai t1(Y) ir t2(Y), t.y. jei t1(X) = t2(X), tai ir t1(Y) = t2(Y).

Paimkime schemą PREK ir funkcines priklausomybes KOMPL_NR KAINA, KOMPL_NR PAVADINIMAS, PAVADINIMAS KOMPL_NR (žr. 3.1 pav.). Nepriklausomai nuo to, kuriame mieste (VIETA) komplektas (KOMPL_NR) yra sandėliuojamas, komplekto kaina išlieka ta pati, t.y. pasikartojant KOMPL_NR-komponentui, būtinai pasikartoja ir KAINA-komponentas (žr. 3.1 lent.). 3.1 lentelėje ši priklausomybė nepažeidžiama ir modifikuojant lentelės duomenis tą priklausomybę negalima pažeisti. Tą patį galima pasakyti ir apie kitas funkcines priklausomybes. Funkcinių priklausomybių schemoje PREK galima nurodyti ir daugiau. Pavyzdžiui, teisingos yra funkcinės priklausomybės KOMPL_NR,VIETA KIEKIS ir KOMPL_NR,VIETA PAPILD_POZ (žr. 3.2 pav.).
Tarkime, kad R – santykio schema; A, B, C, D – jos atributai, o A B, B C – duotosios funkcinės priklausomybės. Galima nesunkiai įrodyti, kad FP A C logiškai seka iš pirmųjų dviejų. Paimkime du santykio r(R) kortežus t1 ir t2 (žr. 3.1 lentelę). Čia: t1 = , o t2 = . Kadangi t1(A) = t2(A) = a1 ir duota, kad A B, tai būtinai t1(B) turi sutapti su t2(B). Pateiktame santykyje r(R) taip nėra: t1(B) = b1, o t2(B) = b2. Tai reiškia, kad santykis neteisingas ir B-komponentus turime suvienodinti, pavyzdžiui, tokiu būdu: t1(B) = t2(B) = b1. Pradinėse sąlygose buvo duota, kad B C. Jeigu t1(B) = t2(B) = b1 , o t1(C) = c1 ir t2(C) = c2, tai Ckomponentus taip pat suvienodiname: t1(C) = t2(C) = c1. Todėl iš sąlygos t1(A) = t2(A) ir A B, B C seka, kad t1(C) = t2(C). Tai reiškia, kad teisinga yra A C. Ji logiškai seka iš dviejų ankstesniųjų ir gali būti išvesta pasinaudojant tranzityvumo taisykle.

Jeigu schemoje R yra užduota funkcinių priklausomybių aibė F , tai visas kitas FP galima išvesti taikant funkcinių priklausomybių išvedimo taisykles. Jeigu iš F taikant išvedimo taisykles galima išvesti X Y, tai šį faktą ateityje žymėsime X Y F+.
Parodysime, kad jei XYF+, tai X Y yra teisinga ir žymėsime F FT X Y. Mes norime įrodyti, kad jei X Y išvedama naudojant korektiškas taisykles, tai bet kuris santykis r(R), tenkinantis F turi tenkinti ir X Y. Pažymėję raidėmis X, Y, Z, W schemos R atributų poaibius, pateiksime šešias išvedimo taisykles, kuriose atributų poaibį X Z = W paprastumui žymėsime X,Z , o schemos W kortežą – x,z (atributų reikšmės atskirsime taip pat kableliu be tarpo).
Norint parodyti, kad šios taisyklės korektiškos (patikimos), reikia įsitikinti, kad bet koks santykis r(R), tenkinantis F, turi tenkinti ir FP iš F+ . Santykis r(R) tenkina X Y, jeigu santykis-projekcija Y (X=x (r)) kiekvienai x reikšmei turi ne daugiau kaip vieną kortežą. Panagrinėkime santykį prek (žr. 3.2 lentelę) su dviem kortežais t1 ir t2 tokiais, kad t1(KOMPL_NR) = t2(KOMPL_NR). Šioje schemoje KOMPL_NR KAINA yra užduota ir KAINA (KOMPL_NR=001027 (prek)) = <29.00>. Šios dvi operacijos prie bet kokių atributo KOMPL_NR reikšmių duoda ne daugiau kaip vieną kortežą (vieną arba nei vieno).

Atsiųsti pilną 3SK