Databaser, efterår 2002 Funktionel afhængighed Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk
Funktionel afhængighed Funktionel afhængighed på relation R: A 1 A 2 A n -> B Antagelse om at (begrænsning) hvis to tupler har samme værdier for alle attributter A 1 A 2 A n så har de samme værdi for attributten B (kan formuleres som A 1 A 2 A n bestemmer B eller B beskriver A 1 A 2 A n ) Eksempel person(pnr, navn, gade, gadenr, postnr, by) herom kan måske antages nogle af: pnr -> navn postnr -> by postnr -> pnr {gade, gadenr} -> pnr {postnr, gade, gadenr} -> pnr Troels Andreasen 2
LK-DB eksempel p(pid, navn, virksomhed, gid, land, kkode) skema forekomst PID NAVN VIRKSOMHED GID LAND KKODE ---- ---------------------------- ------------------------ ------- -------- ----- 668 Kodein "Dak" Nycomed Danmark 227070 Danmark 7 671 Pinex Alpharma 229060 1 679 Treo Lundbeck 229084 Danmark 7 682 Kodimagnyl "Dak" Nycomed Danmark 229086 Danmark 7 1004 Japansk encephalitisvaccine Statens Serum Institut 315323 Danmark 7 1243 Cipramil Lundbeck 243058 Danmark 7 1454 Treosulfan "Medac" Medac 291010 Sverige 2183 Pinex Comp. Alpharma 229086 1 pid -> navn, pid -> virksomhed, pid -> gid, navn -> virksomhed virksomhed -> navn {virksomhed,gid} -> navn virksomhed -> land virksomhed -> gid Hvilke er overholdt? Hvilke er rimelige antagelser? Hvilke andre? Troels Andreasen 3
Funktionel afhængighed Funktionel afhængighed (FD) = egenskab ved relation vedrører intensionen (skema-niveau) eller ekstensionen (forekomst-niveau)?... Tjaaa I praksis kun relevant som begrænsning (intension) noget som designeren formulerer sammen med (som en del af) skemaet afspejler normal virkelige fænomener MEN, vi kan ved at se på forekomst (ekstension) konstatere at en FD IKKE HOLDER se på antydninger af at FD s HOLDER (Data Mining/Knowledge Discovery) Troels Andreasen 4
Funktionel afhængighed, eksempel Eksempel kursus lærer tekst ------ ----- ----- K1 L1 T1 K2 L2 T2 K2 L2 T3 K2 L2 T4 K3 L3 T5 K3 L3 T6 K3 L3 T7 hvilke af følgende er ikke overholdt: kursus -> lærer kursus -> tekst kursus -> kursus kursus -> lærer tekst {kursus, lærer} -> tekst tekst -> kursus tekst -> lærer tekst -> tekst tekst -> {kursus,lærer,tekst} Troels Andreasen 5
Notation, funktionel afhængighed Flere attributter på højresiden, som forenkling af: kursus -> lærer kursus -> tekst til kursus -> {lærer, tekst} Drop evt. parenteser: I stedet for kursus -> {lærer, tekst} {kursus, lærer} -> tekst kan blot skrives kursus -> lærer tekst kursus lærer -> tekst Troels Andreasen 6
Nøgle, definition (ved funktionelle afhængigheder) {A 1, A 2,, A n } er nøgle i relation R, hvis entydig A 1 A 2 A n -> B, GÆLDER for hver attribut B i relationen R minimal A 1 A k-1 A k+1 A n -> B, GÆLDER IKKE for noget k (dvs. ingen ægte delmængde af {A 1, A 2,, A n } er entydig) Supernøgle {A 1, A 2,, A n } i relation R {A 1, A 2,, A n } indeholder en nøgle dvs en supernøgle er entydig, men ej nødvendigvis minimal Primær nøgle udvalgt nøgle (markeres normalt ved understregning) Troels Andreasen 7
nøgle Entydig Minimal Udvalgt Supernøgle X Nøgle X X Primærnøgle X X X Kandidatnøgle Synonym for nøgle, dvs. kandidat til valg som primærnøgle Troels Andreasen 8
Nøgle, eksempel Eksempel flyafgang(destination, tid, antalpladser, flytype) hvis (destination, tid) er en nøgle hvad gælder så? den er entydig, dvs. at? destination tid -> antalpladser gælder destination tid -> flytype den er minimal, dvs. at? destination -> tid antalpladser flytype tid -> destination antalpladser flytype gælder gælder ikke gælder ikke Troels Andreasen 9
Eksempel Studerende ( Fornavn, Efternavn, Personnr, Fag ) Nøgle (2 attributter) Nøgler {Fornavn, Efternavn} og {Personnr} Supernøgle {Personnr,fag} Nøgle Supernøgle Troels Andreasen 10
Eksempler fra side 3: p(pid, navn, virksomhed, gid, land, kkode) fra side 5: kursusplan(kursus, lærer, tekst) Nøgler i disse? Troels Andreasen 11
Hvordan bestemmes Nøgle og FD s? Vi kan antage en nøgle K for vores relation R Hermed er OGSÅ antaget FD s at K A for hver attribut A i R. Og hermed er K den eneste nøgle. Eller, vi kan antage nogle FD s og herfra slutte en eller flere nøgler (jvf. definition af nøgle) F.eks. Hvis vi antager for R(A,B,C) at A -> B og B -> C Så er A en nøgle Troels Andreasen 12
Ræsonnering med FD s Udfra A -> B og B -> C kan vi slutte A -> C Vi kan sige at mængderne {A -> B, B -> C, A -> C} og {A -> B, B -> C} er ækvivalente Gælder dette også?: {A -> B, B -> C} ækvivalent med? {A -> B, A -> C} Troels Andreasen 13
Ræsonnering med FD s Om at slutte nye FD s udfra givne FD s F og E mængder af FD s på relation R herom kan det være interessant at konstatere E følger af F tilladte forekomster af R for F er også tilladte forekomster af R for E F ækvivalent med E F og E bestemmer samme mængde af tilladte forekomster af R To måder at ræsonnere på algoritme logik for FD s vi fokuserer på denne Troels Andreasen 14
Ræsonnering med FD s (funktionelle afhængigheder) Vi skal primært fokusere på Afslutningen X+ af en mængde af attributter X (fordi det er vejen til afledte FD's) Afledte FD s af F I analysen kan det også være brugbart at fokusere på Afslutningen F+ af en mængde af FD s F om F og E er ækvivalente om F overdækker E om F er minimal om F er minimal overdækning af E Troels Andreasen 15
Afslutning af mængde af attributter Afslutning X+ af mængde af attributter X under mængde af FD s F svarer til mængden af attributter der kan bestemmes ud fra X altså X -> X+ er en FD Algoritme til beregning af X+ sæt X+ = X hvis Y -> A er med i F og Y delmængde af X+ tilføj A til X+ gentag trin 2 indtil intet mere kan tilføjes til X+ Eksempel X = {A, B}, F = {A -> E, B -> C, C -> D} Troels Andreasen 16
Eksempel, Afslutning X+ A B, BC D. A + = AB. C + =C. (AC) + = ABCD. A C B D Troels Andreasen 17
Eksempel, Afslutning X+ Eksempel X = {A, B}, F = {A -> E, B -> C, C -> D} sæt X+ = X = {A,B} pga. A -> E tilføj E: X+ = {A,B,E} pga. B -> C tilføj C: X+ = {A,B,E,C} pga. C -> D tilføj D: X+ = {A,B,E,C,D} slut - intet mere kan tilføjes Troels Andreasen 18
Afledte FD s af F Problem givet mængde af funktionelle afhængigheder F for relation R Hvilke nye afledte FD s kan sluttes fra F Princip for bestemmelse af nye FD s: Hvis vi har FD s X1 A1, X2 A2,, Xn An, holder så også FD Y B? Start med at antage at to tupler har samme Y. Brug givne FD s til at aflede Y+ og dermed hvilke øvrige attributter de må have samme værdi for. Hvis B er blandt disse så JA ellers NEJ Troels Andreasen 19
Afledte FD s af F Algoritme (bestemmelse af afledte FD s) givet mængde af FD s F for relation R for hver delmængde X af attributter i R beregn X+ omskriv X -> X+ til FD s med enkelt-attribut højreside eliminer FD s som følger af andre, dvs: trivielle FD's (højre side er en delmængde af venstre) samt XY -> Z hvis X -> Z gælder Eksempler, udvid med afledte FD s F = {A -> B, B -> C} F = {AB -> C, C -> D, D -> A} Troels Andreasen 20
Eksempel, Afledte FD s af F Udvid F = {A -> B, B -> C} med afledte FD s A+ = ABC (tilføj A -> C) B+ = BC C+ = C (BC)+ = BC alle andre mængder indeholder A F udvidet til: {A -> B, B -> C, A -> C} Troels Andreasen 21
Eksempel, Afledte FD s af F Udvid F = {AB -> C, C -> D, D -> A} med afledte FD s A+ = A B+ = B C+ = ACD (tilføj C -> A) D+ = AD (AB)+ = ABCD (tilføj AB -> D) (AC)+ = ACD (AD)+ = AD (BC)+ = ABCD (BD)+ = ABCD (tilføj BD -> C) (CD)+ = ACD (ACD)+ = ACD alle andre mængder indeholder AB, BC eller BD F udvidet til: {AB -> C, C -> D, D -> A, C -> A, AB -> D, BD -> C} Troels Andreasen 22
Ræsonnering med funktionelle afhængigheder Afslutningen F+ af en mængde af FD s F = mængden F, samt mængden af de funktionelle afhængigheder der kan sluttes udfra F F overdækker E (E er dækket af F) hvis: F+ E+ F og E er ækvivalente hvis: F+ = E+ Troels Andreasen 23
Ræsonnering med funktionelle afhængigheder F er minimal hver FD i F har enkelt-attribut højreside der findes ingen FD: X -> A så {F (X -> A)} er ækvivalent med F (altså vi kan ikke fjerne noget fra F uden at ændre på F+) der findes ingen X Y og FD: X -> A så {F (Y -> A) (X -> A)} er ækvivalent med F (altså vi kan ikke erstatte X -> A med Y -> A i F uden at ændre på F+) Minimal overdækning af F en minimal mængde Fmin som overdækker F bemærk: ikke entydig Troels Andreasen 24
Logisk ræsonnering med FD s Logik for funktionel afhængighed logisk konsekvens X -> Y kan sluttes fra F hvis enhver ekstension, der overholder F, også overholder X -> Y beviselighed om anvendelse af slutnings-regler for udledning af funktionelle afhængigheder Notation F mængde af funktionelle afhængigheder specificeret på relation R F = X -> Y X -> Y kan sluttes fra F Troels Andreasen 25
Logisk ræsonnering med FD s Tre vigtige slutnings-regler for funktionelle afhængigheder fra X Y slut X -> Y (refleksivitet) {X -> Y} ı= XZ -> YZ (udvidelse) {X -> Y, Y -> Z} ı= X -> Z (transitivitet) Et system, der omfatter disse er Sundt FD s som vi kan slutte ved brug af reglerne holder Fuldstændigt FD s som holder kan vi slutte ved brug af reglerne Tre supplerende slutnings-regler for funktionelle afhængigheder {X -> YZ} ı= X -> Y (dekomposition) {X -> Y, X -> Z} ı= X -> YZ (additivitet) {X -> Y, WY -> Z} ı= WX -> Z (pseudotransitivitet) Troels Andreasen 26